camera_modules.bzl 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
  2. load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
  3. load("//msm-kernel:target_variants.bzl", "get_all_variants")
  4. load("//msm-kernel:target_variants.bzl", "get_all_lunch_target_base_target_variants")
  5. def _define_module(target, variant, lunch_target=None):
  6. if lunch_target:
  7. tv = "{}_{}".format(target, variant)
  8. tvl = "{}_{}_{}".format(target, variant, lunch_target)
  9. ddk_mod_name = "{}_camera".format(tvl)
  10. defconfig = "{}_defconfig".format(lunch_target)
  11. else:
  12. tv = "{}_{}".format(target, variant)
  13. ddk_mod_name = "{}_camera".format(tv)
  14. defconfig = "{}_defconfig".format(target)
  15. deps = [
  16. ":camera_headers",
  17. ":camera_banner",
  18. "//msm-kernel:all_headers",
  19. "//vendor/qcom/opensource/securemsm-kernel:smcinvoke_kernel_headers",
  20. "//vendor/qcom/opensource/securemsm-kernel:smmu_proxy_headers",
  21. "//vendor/qcom/opensource/securemsm-kernel:{}_smcinvoke_dlkm".format(tv),
  22. "//vendor/qcom/opensource/securemsm-kernel:{}_smmu_proxy_dlkm".format(tv),
  23. "//vendor/qcom/opensource/mmrm-driver:{}_mmrm_driver".format(tv),
  24. ]
  25. if target == "pineapple":
  26. deps.extend([
  27. "//vendor/qcom/opensource/synx-kernel:synx_headers",
  28. "//vendor/qcom/opensource/synx-kernel:{}_modules".format(tv),
  29. ])
  30. ddk_module(
  31. name = ddk_mod_name,
  32. out = "camera.ko",
  33. srcs = [
  34. "drivers/cam_req_mgr/cam_req_mgr_core.c",
  35. "drivers/cam_req_mgr/cam_req_mgr_dev.c",
  36. "drivers/cam_req_mgr/cam_req_mgr_util.c",
  37. "drivers/cam_req_mgr/cam_mem_mgr.c",
  38. "drivers/cam_req_mgr/cam_req_mgr_workq.c",
  39. "drivers/cam_req_mgr/cam_req_mgr_timer.c",
  40. "drivers/cam_req_mgr/cam_req_mgr_debug.c",
  41. "drivers/cam_utils/cam_soc_util.c",
  42. "drivers/cam_utils/cam_packet_util.c",
  43. "drivers/cam_utils/cam_debug_util.c",
  44. "drivers/cam_utils/cam_trace.c",
  45. "drivers/cam_utils/cam_common_util.c",
  46. "drivers/cam_utils/cam_compat.c",
  47. "drivers/cam_core/cam_context.c",
  48. "drivers/cam_core/cam_context_utils.c",
  49. "drivers/cam_core/cam_node.c",
  50. "drivers/cam_core/cam_subdev.c",
  51. "drivers/cam_smmu/cam_smmu_api.c",
  52. "drivers/cam_sync/cam_sync.c",
  53. "drivers/cam_sync/cam_sync_util.c",
  54. "drivers/cam_sync/cam_sync_dma_fence.c",
  55. "drivers/cam_cpas/cpas_top/cam_cpastop_hw.c",
  56. "drivers/cam_cpas/camss_top/cam_camsstop_hw.c",
  57. "drivers/cam_cpas/cam_cpas_soc.c",
  58. "drivers/cam_cpas/cam_cpas_intf.c",
  59. "drivers/cam_cpas/cam_cpas_hw.c",
  60. "drivers/cam_cdm/cam_cdm_soc.c",
  61. "drivers/cam_cdm/cam_cdm_util.c",
  62. "drivers/cam_cdm/cam_cdm_intf.c",
  63. "drivers/cam_cdm/cam_cdm_core_common.c",
  64. "drivers/cam_cdm/cam_cdm_virtual_core.c",
  65. "drivers/cam_cdm/cam_cdm_hw_core.c",
  66. "drivers/cam_utils/cam_soc_icc.c",
  67. "drivers/camera_main.c",
  68. ],
  69. conditional_srcs = {
  70. "CONFIG_TARGET_SYNX_ENABLE": {
  71. True: ["drivers/cam_sync/cam_sync_synx.c"],
  72. },
  73. "CONFIG_QCOM_CX_IPEAK": {
  74. True: ["drivers/cam_utils/cam_cx_ipeak.c"],
  75. },
  76. "CONFIG_INTERCONNECT_QCOM": {
  77. True: ["drivers/cam_utils/cam_soc_icc.c"],
  78. },
  79. "CONFIG_SPECTRA_ISP": {
  80. True: [
  81. "drivers/cam_isp/isp_hw_mgr/hw_utils/cam_tasklet_util.c",
  82. "drivers/cam_isp/isp_hw_mgr/hw_utils/cam_isp_packet_parser.c",
  83. "drivers/cam_isp/isp_hw_mgr/hw_utils/irq_controller/cam_irq_controller.c",
  84. "drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_dev.c",
  85. "drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_soc.c",
  86. "drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_common.c",
  87. "drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_hw_ver1.c",
  88. "drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_hw_ver2.c",
  89. "drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_mod.c",
  90. "drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_lite_mod.c",
  91. "drivers/cam_isp/isp_hw_mgr/isp_hw/sfe_hw/cam_sfe_soc.c",
  92. "drivers/cam_isp/isp_hw_mgr/isp_hw/sfe_hw/cam_sfe_dev.c",
  93. "drivers/cam_isp/isp_hw_mgr/isp_hw/sfe_hw/cam_sfe_core.c",
  94. "drivers/cam_isp/isp_hw_mgr/isp_hw/sfe_hw/sfe_top/cam_sfe_top.c",
  95. "drivers/cam_isp/isp_hw_mgr/isp_hw/sfe_hw/sfe_bus/cam_sfe_bus.c",
  96. "drivers/cam_isp/isp_hw_mgr/isp_hw/sfe_hw/sfe_bus/cam_sfe_bus_rd.c",
  97. "drivers/cam_isp/isp_hw_mgr/isp_hw/sfe_hw/sfe_bus/cam_sfe_bus_wr.c",
  98. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/cam_vfe_soc.c",
  99. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/cam_vfe_dev.c",
  100. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/cam_vfe_core.c",
  101. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus.c",
  102. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_ver2.c",
  103. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_rd_ver1.c",
  104. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_ver3.c",
  105. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_camif_lite_ver2.c",
  106. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_top.c",
  107. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_top_common.c",
  108. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_top_ver4.c",
  109. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_top_ver3.c",
  110. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_top_ver2.c",
  111. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_camif_ver2.c",
  112. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_camif_ver3.c",
  113. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_rdi.c",
  114. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_fe_ver1.c",
  115. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_top/cam_vfe_camif_lite_ver3.c",
  116. "drivers/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe17x/cam_vfe.c",
  117. "drivers/cam_isp/isp_hw_mgr/cam_isp_hw_mgr.c",
  118. "drivers/cam_isp/isp_hw_mgr/cam_ife_hw_mgr.c",
  119. "drivers/cam_isp/cam_isp_dev.c",
  120. "drivers/cam_isp/cam_isp_context.c",
  121. ],
  122. },
  123. "CONFIG_SPECTRA_ICP": {
  124. True: [
  125. "drivers/cam_icp/icp_hw/icp_hw_mgr/cam_icp_hw_mgr.c",
  126. "drivers/cam_icp/icp_hw/ipe_hw/ipe_dev.c",
  127. "drivers/cam_icp/icp_hw/ipe_hw/ipe_core.c",
  128. "drivers/cam_icp/icp_hw/ipe_hw/ipe_soc.c",
  129. "drivers/cam_icp/icp_hw/icp_proc/icp_v1_hw/cam_icp_v1_dev.c",
  130. "drivers/cam_icp/icp_hw/icp_proc/icp_v1_hw/cam_icp_v1_core.c",
  131. "drivers/cam_icp/icp_hw/icp_proc/icp_v2_hw/cam_icp_v2_dev.c",
  132. "drivers/cam_icp/icp_hw/icp_proc/icp_v2_hw/cam_icp_v2_core.c",
  133. "drivers/cam_icp/icp_hw/icp_proc/icp_common/cam_icp_proc_common.c",
  134. "drivers/cam_icp/icp_hw/icp_proc/icp_common/cam_icp_soc_common.c",
  135. "drivers/cam_icp/icp_hw/icp_proc/cam_icp_proc.c",
  136. "drivers/cam_icp/icp_hw/bps_hw/bps_dev.c",
  137. "drivers/cam_icp/icp_hw/bps_hw/bps_core.c",
  138. "drivers/cam_icp/icp_hw/bps_hw/bps_soc.c",
  139. "drivers/cam_icp/icp_hw/ofe_hw/ofe_dev.c",
  140. "drivers/cam_icp/icp_hw/ofe_hw/ofe_core.c",
  141. "drivers/cam_icp/icp_hw/ofe_hw/ofe_soc.c",
  142. "drivers/cam_icp/cam_icp_subdev.c",
  143. "drivers/cam_icp/cam_icp_context.c",
  144. "drivers/cam_icp/hfi.c",
  145. ],
  146. },
  147. "CONFIG_SPECTRA_TFE": {
  148. True: [
  149. "drivers/cam_isp/isp_hw_mgr/isp_hw/ppi_hw/cam_csid_ppi_core.c",
  150. "drivers/cam_isp/isp_hw_mgr/isp_hw/ppi_hw/cam_csid_ppi_dev.c",
  151. "drivers/cam_isp/isp_hw_mgr/isp_hw/ppi_hw/cam_csid_ppi100.c",
  152. "drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_csid_hw/cam_tfe_csid.c",
  153. "drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_csid_hw/cam_tfe_csid_dev.c",
  154. "drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_csid_hw/cam_tfe_csid_core.c",
  155. "drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_csid_hw/cam_tfe_csid_soc.c",
  156. "drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_hw/cam_tfe_bus.c",
  157. "drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_hw/cam_tfe_core.c",
  158. "drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_hw/cam_tfe_soc.c",
  159. "drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_hw/cam_tfe.c",
  160. "drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_hw/cam_tfe_dev.c",
  161. "drivers/cam_isp/isp_hw_mgr/cam_tfe_hw_mgr.c",
  162. ],
  163. },
  164. "CONFIG_SPECTRA_JPEG": {
  165. True: [
  166. "drivers/cam_jpeg/jpeg_hw/jpeg_enc_hw/jpeg_enc_dev.c",
  167. "drivers/cam_jpeg/jpeg_hw/jpeg_enc_hw/jpeg_enc_core.c",
  168. "drivers/cam_jpeg/jpeg_hw/jpeg_enc_hw/jpeg_enc_soc.c",
  169. "drivers/cam_jpeg/jpeg_hw/jpeg_dma_hw/jpeg_dma_dev.c",
  170. "drivers/cam_jpeg/jpeg_hw/jpeg_dma_hw/jpeg_dma_core.c",
  171. "drivers/cam_jpeg/jpeg_hw/jpeg_dma_hw/jpeg_dma_soc.c",
  172. "drivers/cam_jpeg/jpeg_hw/cam_jpeg_hw_mgr.c",
  173. "drivers/cam_jpeg/cam_jpeg_dev.c",
  174. "drivers/cam_jpeg/cam_jpeg_context.c",
  175. ],
  176. },
  177. "CONFIG_SPECTRA_CRE": {
  178. True: [
  179. "drivers/cam_cre/cam_cre_hw_mgr/cre_hw/cre_core.c",
  180. "drivers/cam_cre/cam_cre_hw_mgr/cre_hw/cre_soc.c",
  181. "drivers/cam_cre/cam_cre_hw_mgr/cre_hw/cre_dev.c",
  182. "drivers/cam_cre/cam_cre_hw_mgr/cre_hw/top/cre_top.c",
  183. "drivers/cam_cre/cam_cre_hw_mgr/cre_hw/bus_rd/cre_bus_rd.c",
  184. "drivers/cam_cre/cam_cre_hw_mgr/cre_hw/bus_wr/cre_bus_wr.c",
  185. "drivers/cam_cre/cam_cre_hw_mgr/cam_cre_hw_mgr.c",
  186. "drivers/cam_cre/cam_cre_dev.c",
  187. "drivers/cam_cre/cam_cre_context.c",
  188. ],
  189. },
  190. "CONFIG_SPECTRA_SENSOR": {
  191. True: [
  192. "drivers/cam_sensor_module/cam_actuator/cam_actuator_dev.c",
  193. "drivers/cam_sensor_module/cam_actuator/cam_actuator_core.c",
  194. "drivers/cam_sensor_module/cam_actuator/cam_actuator_soc.c",
  195. "drivers/cam_sensor_module/cam_cci/cam_cci_dev.c",
  196. "drivers/cam_sensor_module/cam_cci/cam_cci_core.c",
  197. "drivers/cam_sensor_module/cam_cci/cam_cci_soc.c",
  198. "drivers/cam_sensor_module/cam_tpg/cam_tpg_dev.c",
  199. "drivers/cam_sensor_module/cam_tpg/cam_tpg_core.c",
  200. "drivers/cam_sensor_module/cam_tpg/tpg_hw/tpg_hw.c",
  201. "drivers/cam_sensor_module/cam_tpg/tpg_hw/tpg_hw_common.c",
  202. "drivers/cam_sensor_module/cam_tpg/tpg_hw/tpg_hw_v_1_0/tpg_hw_v_1_0.c",
  203. "drivers/cam_sensor_module/cam_tpg/tpg_hw/tpg_hw_v_1_2/tpg_hw_v_1_2.c",
  204. "drivers/cam_sensor_module/cam_tpg/tpg_hw/tpg_hw_v_1_3/tpg_hw_v_1_3.c",
  205. "drivers/cam_sensor_module/cam_tpg/tpg_hw/tpg_hw_v_1_4/tpg_hw_v_1_4.c",
  206. "drivers/cam_sensor_module/cam_csiphy/cam_csiphy_soc.c",
  207. "drivers/cam_sensor_module/cam_csiphy/cam_csiphy_dev.c",
  208. "drivers/cam_sensor_module/cam_csiphy/cam_csiphy_core.c",
  209. "drivers/cam_sensor_module/cam_eeprom/cam_eeprom_dev.c",
  210. "drivers/cam_sensor_module/cam_eeprom/cam_eeprom_core.c",
  211. "drivers/cam_sensor_module/cam_eeprom/cam_eeprom_soc.c",
  212. "drivers/cam_sensor_module/cam_ois/cam_ois_dev.c",
  213. "drivers/cam_sensor_module/cam_ois/cam_ois_core.c",
  214. "drivers/cam_sensor_module/cam_ois/cam_ois_soc.c",
  215. "drivers/cam_sensor_module/cam_sensor/cam_sensor_dev.c",
  216. "drivers/cam_sensor_module/cam_sensor/cam_sensor_core.c",
  217. "drivers/cam_sensor_module/cam_sensor/cam_sensor_soc.c",
  218. "drivers/cam_sensor_module/cam_sensor_io/cam_sensor_io.c",
  219. "drivers/cam_sensor_module/cam_sensor_io/cam_sensor_cci_i2c.c",
  220. "drivers/cam_sensor_module/cam_sensor_io/cam_sensor_qup_i2c.c",
  221. "drivers/cam_sensor_module/cam_sensor_io/cam_sensor_qup_i3c.c",
  222. "drivers/cam_sensor_module/cam_sensor_io/cam_sensor_spi.c",
  223. "drivers/cam_sensor_module/cam_sensor_utils/cam_sensor_util.c",
  224. "drivers/cam_sensor_module/cam_res_mgr/cam_res_mgr.c",
  225. "drivers/cam_sensor_module/cam_flash/cam_flash_dev.c",
  226. "drivers/cam_sensor_module/cam_flash/cam_flash_core.c",
  227. "drivers/cam_sensor_module/cam_flash/cam_flash_soc.c",
  228. "drivers/cam_sensor_module/cam_sensor_module_debug.c",
  229. ],
  230. },
  231. "CONFIG_SPECTRA_CUSTOM": {
  232. True: [
  233. "drivers/cam_cust/cam_custom_hw_mgr/cam_custom_hw1/cam_custom_sub_mod_soc.c",
  234. "drivers/cam_cust/cam_custom_hw_mgr/cam_custom_hw1/cam_custom_sub_mod_dev.c",
  235. "drivers/cam_cust/cam_custom_hw_mgr/cam_custom_hw1/cam_custom_sub_mod_core.c",
  236. "drivers/cam_cust/cam_custom_hw_mgr/cam_custom_csid/cam_custom_csid_dev.c",
  237. "drivers/cam_cust/cam_custom_hw_mgr/cam_custom_hw_mgr.c",
  238. "drivers/cam_cust/cam_custom_dev.c",
  239. "drivers/cam_cust/cam_custom_context.c",
  240. ],
  241. },
  242. "CONFIG_QCOM_BUS_SCALING": {
  243. True: ["drivers/cam_utils/cam_soc_bus.c"],
  244. },
  245. "CONFIG_CAM_PRESIL": {
  246. # Sources need to be available to specify
  247. # True: [
  248. # "drivers/cam_presil/presil/cam_presil_io_util.c",
  249. # "drivers/cam_presil/presil/cam_presil_hw_access.c",
  250. # "drivers/cam_presil/presil_framework_dev/cam_presil_framework_dev.c",
  251. # ],
  252. False: [
  253. "drivers/cam_presil/stub/cam_presil_hw_access_stub.c",
  254. "drivers/cam_utils/cam_io_util.c",
  255. ],
  256. },
  257. },
  258. copts = ["-Wno-implicit-fallthrough", "-include", "$(location :camera_banner)"],
  259. deps = deps,
  260. kconfig = "Kconfig",
  261. defconfig = defconfig,
  262. kernel_build = "//msm-kernel:{}".format(tv),
  263. )
  264. if lunch_target:
  265. dist_target_name = "{}_camera_dist".format(tvl)
  266. data = [":{}_camera".format(tvl)]
  267. else:
  268. dist_target_name = "{}_camera_dist".format(tv)
  269. data = [":{}_camera".format(tv)]
  270. copy_to_dist_dir(
  271. name = dist_target_name,
  272. data = data,
  273. dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
  274. flat = True,
  275. wipe_dist_dir = False,
  276. allow_duplicate_filenames = False,
  277. mode_overrides = {"**/*": "644"},
  278. )
  279. def define_camera_module():
  280. for (t, v) in get_all_variants():
  281. _define_module(t, v)
  282. for (lt, bt, v) in get_all_lunch_target_base_target_variants():
  283. _define_module(bt, v, lt)