Эх сурвалжийг харах

msm: camera: common: DDK bazel framework

Add support for camera modules to be built,
with Bazel DDK framework for pineapple.

CRs-Fixed: 3378634
Change-Id: I9f1d7562ea3aad6e0c198e3818099fc9f6b4aa97
Signed-off-by: Soumen Ghosh <[email protected]>
Soumen Ghosh 2 жил өмнө
parent
commit
d52e57762a

+ 135 - 0
BUILD.bazel

@@ -0,0 +1,135 @@
+package(
+    default_visibility = [
+        "//visibility:public",
+    ],
+)
+
+load("//build/kernel/kleaf:kernel.bzl", "ddk_headers")
+
+ddk_headers(
+    name = "camera_uapi_headers",
+    hdrs = glob(["include/uapi/camera/**/*.h"]),
+    includes = [
+        "include/uapi/camera",
+        "include/uapi/camera/media",
+    ],
+)
+
+driver_header_globs = [
+    "drivers/**/*.h",
+    "drivers/camera_main.h",
+    "dt-bindings/msm-camera.h",
+]
+
+# Generated list with: find drivers -type f -name '*.h' -printf '"%h",\n' | sort -u
+driver_includes = [
+    "drivers",
+    "drivers/cam_cdm",
+    "drivers/cam_core",
+    "drivers/cam_cpas",
+    "drivers/cam_cpas/cpas_top",
+    "drivers/cam_cpas/include",
+    "drivers/cam_cre",
+    "drivers/cam_cre/cam_cre_hw_mgr",
+    "drivers/cam_cre/cam_cre_hw_mgr/cre_hw",
+    "drivers/cam_cre/cam_cre_hw_mgr/cre_hw/bus_rd",
+    "drivers/cam_cre/cam_cre_hw_mgr/cre_hw/bus_wr",
+    "drivers/cam_cre/cam_cre_hw_mgr/cre_hw/include",
+    "drivers/cam_cre/cam_cre_hw_mgr/cre_hw/top",
+    "drivers/cam_cust",
+    "drivers/cam_cust/cam_custom_hw_mgr",
+    "drivers/cam_cust/cam_custom_hw_mgr/cam_custom_csid",
+    "drivers/cam_cust/cam_custom_hw_mgr/cam_custom_hw1",
+    "drivers/cam_cust/cam_custom_hw_mgr/include",
+    "drivers/cam_fd",
+    "drivers/cam_fd/fd_hw_mgr",
+    "drivers/cam_fd/fd_hw_mgr/fd_hw",
+    "drivers/cam_icp",
+    "drivers/cam_icp/fw_inc",
+    "drivers/cam_icp/icp_hw/bps_hw",
+    "drivers/cam_icp/icp_hw/icp_hw_mgr",
+    "drivers/cam_icp/icp_hw/icp_hw_mgr/include",
+    "drivers/cam_icp/icp_hw/icp_proc",
+    "drivers/cam_icp/icp_hw/icp_proc/icp_common",
+    "drivers/cam_icp/icp_hw/icp_proc/icp_v1_hw",
+    "drivers/cam_icp/icp_hw/icp_proc/icp_v2_hw",
+    "drivers/cam_icp/icp_hw/include",
+    "drivers/cam_icp/icp_hw/ipe_hw",
+    "drivers/cam_icp/icp_hw/ofe_hw",
+    "drivers/cam_isp",
+    "drivers/cam_isp/isp_hw_mgr",
+    "drivers/cam_isp/isp_hw_mgr/hw_utils/include",
+    "drivers/cam_isp/isp_hw_mgr/hw_utils/irq_controller",
+    "drivers/cam_isp/isp_hw_mgr/include",
+    "drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw",
+    "drivers/cam_isp/isp_hw_mgr/isp_hw/include",
+    "drivers/cam_isp/isp_hw_mgr/isp_hw/ppi_hw",
+    "drivers/cam_isp/isp_hw_mgr/isp_hw/sfe_hw",
+    "drivers/cam_isp/isp_hw_mgr/isp_hw/sfe_hw/sfe_bus",
+    "drivers/cam_isp/isp_hw_mgr/isp_hw/sfe_hw/sfe_bus/include",
+    "drivers/cam_isp/isp_hw_mgr/isp_hw/sfe_hw/sfe_top",
+    "drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_csid_hw",
+    "drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_hw",
+    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw",
+    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe17x",
+    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus",
+    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/include",
+    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top",
+    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/include",
+    "drivers/cam_jpeg",
+    "drivers/cam_jpeg/jpeg_hw",
+    "drivers/cam_jpeg/jpeg_hw/include",
+    "drivers/cam_jpeg/jpeg_hw/jpeg_dma_hw",
+    "drivers/cam_jpeg/jpeg_hw/jpeg_enc_hw",
+    "drivers/cam_lrme",
+    "drivers/cam_lrme/lrme_hw_mgr",
+    "drivers/cam_lrme/lrme_hw_mgr/lrme_hw",
+    "drivers/cam_ope",
+    "drivers/cam_ope/ope_hw_mgr",
+    "drivers/cam_ope/ope_hw_mgr/ope_hw",
+    "drivers/cam_ope/ope_hw_mgr/ope_hw/bus_rd",
+    "drivers/cam_ope/ope_hw_mgr/ope_hw/bus_wr",
+    "drivers/cam_ope/ope_hw_mgr/ope_hw/top",
+    "drivers/cam_presil/inc",
+    "drivers/cam_req_mgr",
+    "drivers/cam_sensor_module/cam_actuator",
+    "drivers/cam_sensor_module/cam_cci",
+    "drivers/cam_sensor_module/cam_csiphy",
+    "drivers/cam_sensor_module/cam_csiphy/include",
+    "drivers/cam_sensor_module/cam_eeprom",
+    "drivers/cam_sensor_module/cam_flash",
+    "drivers/cam_sensor_module/cam_ois",
+    "drivers/cam_sensor_module/cam_res_mgr",
+    "drivers/cam_sensor_module/cam_sensor",
+    "drivers/cam_sensor_module/cam_sensor_io",
+    "drivers/cam_sensor_module/cam_sensor_utils",
+    "drivers/cam_sensor_module/cam_tpg",
+    "drivers/cam_sensor_module/cam_tpg/tpg_hw",
+    "drivers/cam_sensor_module/cam_tpg/tpg_hw/tpg_hw_v_1_0",
+    "drivers/cam_sensor_module/cam_tpg/tpg_hw/tpg_hw_v_1_2",
+    "drivers/cam_sensor_module/cam_tpg/tpg_hw/tpg_hw_v_1_3",
+    "drivers/cam_sensor_module/cam_tpg/tpg_hw/tpg_hw_v_1_4",
+    "drivers/cam_smmu",
+    "drivers/cam_sync",
+    "drivers/cam_utils",
+]
+
+ddk_headers(
+    name = "camera_src_headers",
+    hdrs = glob(driver_header_globs),
+    includes = driver_includes + [
+        ".",
+    ],
+)
+
+ddk_headers(
+    name = "camera_headers",
+    hdrs = [
+        ":camera_src_headers",
+        ":camera_uapi_headers",
+    ],
+)
+
+load(":camera_modules.bzl", "define_camera_module")
+
+define_camera_module()

+ 87 - 0
Kconfig

@@ -0,0 +1,87 @@
+config SPECTRA_ISP
+	bool "enable camera ISP modele"
+	help
+	  This is enabling camera ISP module.
+	  IFE camera driver file be included.
+	  This will enable camera ISP driver to handle IFE driver.
+	  Core camera driver to handle VFE HW.
+
+config SPECTRA_ICP
+	bool "enable camera ICP modele"
+	help
+	  This is enabling camera ICP module.
+	  Camera ICP driver file be included.
+	  This will enable camera ICP driver to interact with,
+	  ICP FW. Which can control IPE and BPS HW.
+
+config SPECTRA_JPEG
+	bool "enable camera jpeg modele"
+	help
+	  This is enabling camera JPEG module.
+	  camera jpeg module will be functional.
+	  This module interact with jpeg HW for
+	  snapshot processing.
+
+config SPECTRA_CUSTOM
+	bool "enable camera custom modele"
+	help
+	  This is enabling camera custom module.
+	  camera cusotm hw feature.
+	  Basicaly oem can use this flag to modify or
+	  customized kernel driver.
+
+config SPECTRA_SENSOR
+	bool "enable camera sensor modele"
+	help
+	  This is enabling camera sensor module.
+	  sensor module files will be included to enable the driver.
+	  eeprom, flash, csiphy all other module will be included
+	  to make the sensor functional.
+
+config SPECTRA_USE_CLK_CRM_API
+	bool "enable camera cesta clk feature"
+	help
+	  This is enabling camera cesta feature.
+	  kernel clk driver api will cache the clk value
+	  send by camera hw and apply to CRM hw.
+	  CRM hw will consolidate and apply the clk to camera HW.
+
+config SPECTRA_USE_RPMH_DRV_API
+	bool "enable camera new ICC BW api"
+	help
+	  This is helping to set BW through kernel icc driver.
+	  Kernel icc driver do caching the bw information.
+	  icc driver will update the bw information RPMH,
+	  to apply proper bw voting for camera to mmnoc
+
+config SPECTRA_LLCC_STALING
+	bool "enable camera new LLCC staling feature"
+	help
+	  This will enable to call LLCC driver cache notification API
+	  and increment count API.
+	  Which will enable LLCC staling feature,based on counter
+	  invalidate the cache slice.
+
+config TARGET_SYNX_ENABLE
+	bool "enable HW synx"
+	help
+	  This is enabling HW syx feature.
+	  synx hw signaling external to camera,
+	  like EVA and other.
+	  This is to avoid sw signaling latency.
+
+config MSM_MMRM
+	bool "enable MSM MMRM"
+	help
+	  This is enabling mmrm api access.
+	  mmrm to cahce the clk voting.
+	  mmrm knows about all clients' clock rates.
+	  MMRM can decide whether new peak power usage is within allowed value
+
+config INTERCONNECT_QCOM
+	bool "enabling icc bus driver"
+	help
+		This is to access icc driver api.
+		To cache AB and IB vote will
+		use ICC kernel driver API.
+		So that ICC driver can consolidate the vote

+ 236 - 0
camera_modules.bzl

@@ -0,0 +1,236 @@
+load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
+load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
+
+def _define_module(target, variant):
+    tv = "{}_{}".format(target, variant)
+    deps = [
+        ":camera_headers",
+        "//msm-kernel:all_headers",
+    ]
+    if target == "pineapple":
+        deps.extend([
+            "//vendor/qcom/opensource/synx-kernel:synx_headers",
+            "//vendor/qcom/opensource/synx-kernel:{}_modules".format(tv),
+            "//vendor/qcom/opensource/securemsm-kernel:securemsm_kernel_headers",
+            "//vendor/qcom/opensource/securemsm-kernel:smmu_proxy_headers",
+            "//vendor/qcom/opensource/securemsm-kernel:{}_smcinvoke_dlkm".format(tv),
+            "//vendor/qcom/opensource/securemsm-kernel:{}_smmu_proxy_dlkm".format(tv),
+            "//vendor/qcom/opensource/mmrm-driver:{}_mmrm_driver".format(tv),
+        ])
+    ddk_module(
+        name = "{}_camera".format(tv),
+        out = "camera.ko",
+        srcs = [
+            "drivers/cam_req_mgr/cam_req_mgr_core.c",
+            "drivers/cam_req_mgr/cam_req_mgr_dev.c",
+            "drivers/cam_req_mgr/cam_req_mgr_util.c",
+            "drivers/cam_req_mgr/cam_mem_mgr.c",
+            "drivers/cam_req_mgr/cam_req_mgr_workq.c",
+            "drivers/cam_req_mgr/cam_req_mgr_timer.c",
+            "drivers/cam_req_mgr/cam_req_mgr_debug.c",
+            "drivers/cam_utils/cam_soc_util.c",
+            "drivers/cam_utils/cam_packet_util.c",
+            "drivers/cam_utils/cam_debug_util.c",
+            "drivers/cam_utils/cam_trace.c",
+            "drivers/cam_utils/cam_common_util.c",
+            "drivers/cam_utils/cam_compat.c",
+            "drivers/cam_core/cam_context.c",
+            "drivers/cam_core/cam_context_utils.c",
+            "drivers/cam_core/cam_node.c",
+            "drivers/cam_core/cam_subdev.c",
+            "drivers/cam_smmu/cam_smmu_api.c",
+            "drivers/cam_sync/cam_sync.c",
+            "drivers/cam_sync/cam_sync_util.c",
+            "drivers/cam_sync/cam_sync_dma_fence.c",
+            "drivers/cam_cpas/cpas_top/cam_cpastop_hw.c",
+            "drivers/cam_cpas/camss_top/cam_camsstop_hw.c",
+            "drivers/cam_cpas/cam_cpas_soc.c",
+            "drivers/cam_cpas/cam_cpas_intf.c",
+            "drivers/cam_cpas/cam_cpas_hw.c",
+            "drivers/cam_cdm/cam_cdm_soc.c",
+            "drivers/cam_cdm/cam_cdm_util.c",
+            "drivers/cam_cdm/cam_cdm_intf.c",
+            "drivers/cam_cdm/cam_cdm_core_common.c",
+            "drivers/cam_cdm/cam_cdm_virtual_core.c",
+            "drivers/cam_cdm/cam_cdm_hw_core.c",
+            "drivers/cam_utils/cam_soc_icc.c",
+            "drivers/camera_main.c",
+        ],
+        conditional_srcs = {
+            "CONFIG_TARGET_SYNX_ENABLE": {
+                True: ["drivers/cam_sync/cam_sync_synx.c"],
+            },
+            "CONFIG_QCOM_CX_IPEAK": {
+                True: ["drivers/cam_utils/cam_cx_ipeak.c"],
+            },
+            "CONFIG_INTERCONNECT_QCOM": {
+                True: ["drivers/cam_utils/cam_soc_icc.c"],
+            },
+            "CONFIG_SPECTRA_ISP": {
+                True: [
+                    "drivers/cam_isp/isp_hw_mgr/hw_utils/cam_tasklet_util.c",
+                    "drivers/cam_isp/isp_hw_mgr/hw_utils/cam_isp_packet_parser.c",
+                    "drivers/cam_isp/isp_hw_mgr/hw_utils/irq_controller/cam_irq_controller.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_dev.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_soc.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_common.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_hw_ver1.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_hw_ver2.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_mod.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_lite_mod.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/sfe_hw/cam_sfe_soc.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/sfe_hw/cam_sfe_dev.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/sfe_hw/cam_sfe_core.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/sfe_hw/sfe_top/cam_sfe_top.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/sfe_hw/sfe_bus/cam_sfe_bus.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/sfe_hw/sfe_bus/cam_sfe_bus_rd.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/sfe_hw/sfe_bus/cam_sfe_bus_wr.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/cam_vfe_soc.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/cam_vfe_dev.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/cam_vfe_core.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_ver2.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_rd_ver1.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_ver3.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_camif_lite_ver2.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_top.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_top_common.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_top_ver4.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_top_ver3.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_top_ver2.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_camif_ver2.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_camif_ver3.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_rdi.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_fe_ver1.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_camif_lite_ver3.c",
+                    "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe17x/cam_vfe.c",
+                    "drivers/cam_isp/isp_hw_mgr/cam_isp_hw_mgr.c",
+                    "drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c",
+                    "drivers/cam_isp/cam_isp_dev.c",
+                    "drivers/cam_isp/cam_isp_context.c",
+                ],
+            },
+            "CONFIG_SPECTRA_ICP": {
+                True: [
+                    "drivers/cam_icp/icp_hw/icp_hw_mgr/cam_icp_hw_mgr.c",
+                    "drivers/cam_icp/icp_hw/ipe_hw/ipe_dev.c",
+                    "drivers/cam_icp/icp_hw/ipe_hw/ipe_core.c",
+                    "drivers/cam_icp/icp_hw/ipe_hw/ipe_soc.c",
+                    "drivers/cam_icp/icp_hw/icp_proc/icp_v1_hw/cam_icp_v1_dev.c",
+                    "drivers/cam_icp/icp_hw/icp_proc/icp_v1_hw/cam_icp_v1_core.c",
+                    "drivers/cam_icp/icp_hw/icp_proc/icp_v2_hw/cam_icp_v2_dev.c",
+                    "drivers/cam_icp/icp_hw/icp_proc/icp_v2_hw/cam_icp_v2_core.c",
+                    "drivers/cam_icp/icp_hw/icp_proc/icp_common/cam_icp_proc_common.c",
+                    "drivers/cam_icp/icp_hw/icp_proc/icp_common/cam_icp_soc_common.c",
+                    "drivers/cam_icp/icp_hw/icp_proc/cam_icp_proc.c",
+                    "drivers/cam_icp/icp_hw/bps_hw/bps_dev.c",
+                    "drivers/cam_icp/icp_hw/bps_hw/bps_core.c",
+                    "drivers/cam_icp/icp_hw/bps_hw/bps_soc.c",
+                    "drivers/cam_icp/icp_hw/ofe_hw/ofe_dev.c",
+                    "drivers/cam_icp/icp_hw/ofe_hw/ofe_core.c",
+                    "drivers/cam_icp/icp_hw/ofe_hw/ofe_soc.c",
+                    "drivers/cam_icp/cam_icp_subdev.c",
+                    "drivers/cam_icp/cam_icp_context.c",
+                    "drivers/cam_icp/hfi.c",
+                ],
+            },
+            "CONFIG_SPECTRA_JPEG": {
+                True: [
+                    "drivers/cam_jpeg/jpeg_hw/jpeg_enc_hw/jpeg_enc_dev.c",
+                    "drivers/cam_jpeg/jpeg_hw/jpeg_enc_hw/jpeg_enc_core.c",
+                    "drivers/cam_jpeg/jpeg_hw/jpeg_enc_hw/jpeg_enc_soc.c",
+                    "drivers/cam_jpeg/jpeg_hw/jpeg_dma_hw/jpeg_dma_dev.c",
+                    "drivers/cam_jpeg/jpeg_hw/jpeg_dma_hw/jpeg_dma_core.c",
+                    "drivers/cam_jpeg/jpeg_hw/jpeg_dma_hw/jpeg_dma_soc.c",
+                    "drivers/cam_jpeg/jpeg_hw/cam_jpeg_hw_mgr.c",
+                    "drivers/cam_jpeg/cam_jpeg_dev.c",
+                    "drivers/cam_jpeg/cam_jpeg_context.c",
+                ],
+            },
+            "CONFIG_SPECTRA_SENSOR": {
+                True: [
+                    "drivers/cam_sensor_module/cam_actuator/cam_actuator_dev.c",
+                    "drivers/cam_sensor_module/cam_actuator/cam_actuator_core.c",
+                    "drivers/cam_sensor_module/cam_actuator/cam_actuator_soc.c",
+                    "drivers/cam_sensor_module/cam_cci/cam_cci_dev.c",
+                    "drivers/cam_sensor_module/cam_cci/cam_cci_core.c",
+                    "drivers/cam_sensor_module/cam_cci/cam_cci_soc.c",
+                    "drivers/cam_sensor_module/cam_tpg/cam_tpg_dev.c",
+                    "drivers/cam_sensor_module/cam_tpg/cam_tpg_core.c",
+                    "drivers/cam_sensor_module/cam_tpg/tpg_hw/tpg_hw.c",
+                    "drivers/cam_sensor_module/cam_tpg/tpg_hw/tpg_hw_common.c",
+                    "drivers/cam_sensor_module/cam_tpg/tpg_hw/tpg_hw_v_1_0/tpg_hw_v_1_0.c",
+                    "drivers/cam_sensor_module/cam_tpg/tpg_hw/tpg_hw_v_1_2/tpg_hw_v_1_2.c",
+                    "drivers/cam_sensor_module/cam_tpg/tpg_hw/tpg_hw_v_1_3/tpg_hw_v_1_3.c",
+                    "drivers/cam_sensor_module/cam_tpg/tpg_hw/tpg_hw_v_1_4/tpg_hw_v_1_4.c",
+                    "drivers/cam_sensor_module/cam_csiphy/cam_csiphy_soc.c",
+                    "drivers/cam_sensor_module/cam_csiphy/cam_csiphy_dev.c",
+                    "drivers/cam_sensor_module/cam_csiphy/cam_csiphy_core.c",
+                    "drivers/cam_sensor_module/cam_eeprom/cam_eeprom_dev.c",
+                    "drivers/cam_sensor_module/cam_eeprom/cam_eeprom_core.c",
+                    "drivers/cam_sensor_module/cam_eeprom/cam_eeprom_soc.c",
+                    "drivers/cam_sensor_module/cam_ois/cam_ois_dev.c",
+                    "drivers/cam_sensor_module/cam_ois/cam_ois_core.c",
+                    "drivers/cam_sensor_module/cam_ois/cam_ois_soc.c",
+                    "drivers/cam_sensor_module/cam_sensor/cam_sensor_dev.c",
+                    "drivers/cam_sensor_module/cam_sensor/cam_sensor_core.c",
+                    "drivers/cam_sensor_module/cam_sensor/cam_sensor_soc.c",
+                    "drivers/cam_sensor_module/cam_sensor_io/cam_sensor_io.c",
+                    "drivers/cam_sensor_module/cam_sensor_io/cam_sensor_cci_i2c.c",
+                    "drivers/cam_sensor_module/cam_sensor_io/cam_sensor_qup_i2c.c",
+                    "drivers/cam_sensor_module/cam_sensor_io/cam_sensor_qup_i3c.c",
+                    "drivers/cam_sensor_module/cam_sensor_io/cam_sensor_spi.c",
+                    "drivers/cam_sensor_module/cam_sensor_utils/cam_sensor_util.c",
+                    "drivers/cam_sensor_module/cam_res_mgr/cam_res_mgr.c",
+                    "drivers/cam_sensor_module/cam_flash/cam_flash_dev.c",
+                    "drivers/cam_sensor_module/cam_flash/cam_flash_core.c",
+                    "drivers/cam_sensor_module/cam_flash/cam_flash_soc.c",
+                    "drivers/cam_sensor_module/cam_sensor_module_debug.c",
+                ],
+            },
+            "CONFIG_SPECTRA_CUSTOM": {
+                True: [
+                    "drivers/cam_cust/cam_custom_hw_mgr/cam_custom_hw1/cam_custom_sub_mod_soc.c",
+                    "drivers/cam_cust/cam_custom_hw_mgr/cam_custom_hw1/cam_custom_sub_mod_dev.c",
+                    "drivers/cam_cust/cam_custom_hw_mgr/cam_custom_hw1/cam_custom_sub_mod_core.c",
+                    "drivers/cam_cust/cam_custom_hw_mgr/cam_custom_csid/cam_custom_csid_dev.c",
+                    "drivers/cam_cust/cam_custom_hw_mgr/cam_custom_hw_mgr.c",
+                    "drivers/cam_cust/cam_custom_dev.c",
+                    "drivers/cam_cust/cam_custom_context.c",
+                ],
+            },
+            "CONFIG_QCOM_BUS_SCALING": {
+                True: ["drivers/cam_utils/cam_soc_bus.c"],
+            },
+            "CONFIG_CAM_PRESIL": {
+                # Sources need to be available to specify
+                # True: [
+                #     "drivers/cam_presil/presil/cam_presil_io_util.c",
+                #     "drivers/cam_presil/presil/cam_presil_hw_access.c",
+                #     "drivers/cam_presil/presil_framework_dev/cam_presil_framework_dev.c",
+                # ],
+                False: [
+                    "drivers/cam_presil/stub/cam_presil_hw_access_stub.c",
+                    "drivers/cam_utils/cam_io_util.c",
+                ],
+            },
+        },
+        deps = deps,
+        kconfig = "Kconfig",
+        defconfig = "{}_defconfig".format(tv),
+        kernel_build = "//msm-kernel:{}".format(tv),
+    )
+
+    copy_to_dist_dir(
+        name = "{}_camera_dist".format(tv),
+        data = [":{}_camera".format(tv)],
+        dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
+        flat = True,
+        wipe_dist_dir = False,
+        allow_duplicate_filenames = False,
+        mode_overrides = {"**/*": "644"},
+    )
+
+def define_camera_module():
+    _define_module("pineapple", "gki")
+    _define_module("pineapple", "consolidate")

+ 11 - 0
pineapple_consolidate_defconfig

@@ -0,0 +1,11 @@
+CONFIG_SPECTRA_ISP=y
+CONFIG_SPECTRA_ICP=y
+CONFIG_SPECTRA_JPEG=y
+CONFIG_SPECTRA_CUSTOM=y
+CONFIG_SPECTRA_SENSOR=y
+CONFIG_SPECTRA_USE_CLK_CRM_API=y
+CONFIG_SPECTRA_USE_RPMH_DRV_API=y
+CONFIG_SPECTRA_LLCC_STALING=y
+CONFIG_TARGET_SYNX_ENABLE=y
+CONFIG_MSM_MMRM=y
+CONFIG_INTERCONNECT_QCOM=y

+ 11 - 0
pineapple_gki_defconfig

@@ -0,0 +1,11 @@
+CONFIG_SPECTRA_ISP=y
+CONFIG_SPECTRA_ICP=y
+CONFIG_SPECTRA_JPEG=y
+CONFIG_SPECTRA_CUSTOM=y
+CONFIG_SPECTRA_SENSOR=y
+CONFIG_SPECTRA_USE_CLK_CRM_API=y
+CONFIG_SPECTRA_USE_RPMH_DRV_API=y
+CONFIG_SPECTRA_LLCC_STALING=y
+CONFIG_TARGET_SYNX_ENABLE=y
+CONFIG_MSM_MMRM=y
+CONFIG_INTERCONNECT_QCOM=y