wlan_platform_modules.bzl 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
  2. load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
  3. load("//msm-kernel:target_variants.bzl", "get_all_variants")
  4. _default_module_enablement_list = [
  5. "cnss_nl",
  6. "cnss_prealloc",
  7. "cnss_utils",
  8. "wlan_firmware_service"
  9. ]
  10. _cnss2_enabled_target = ["pineapple"]
  11. _icnss2_enabled_target = ["blair"]
  12. def _get_module_list(target, variant):
  13. tv = "{}_{}".format(target, variant)
  14. ret = []
  15. is_wlan_platform_enabled = False
  16. if target in _cnss2_enabled_target:
  17. ret.extend(["cnss2", "cnss_plat_ipc_qmi_svc"])
  18. is_wlan_platform_enabled = True
  19. if target in _icnss2_enabled_target:
  20. ret.extend(["icnss2"])
  21. is_wlan_platform_enabled = True
  22. if is_wlan_platform_enabled:
  23. ret.extend(_default_module_enablement_list)
  24. return [":{}_{}".format(tv, mod) for mod in ret]
  25. def _define_modules_for_target_variant(target, variant):
  26. tv = "{}_{}".format(target, variant)
  27. cnss2_enabled = 0
  28. plat_ipc_qmi_svc_enabled = 0
  29. icnss2_enabled = 0
  30. if target in _cnss2_enabled_target:
  31. cnss2_enabled = 1
  32. plat_ipc_qmi_svc_enabled = 1
  33. if target in _icnss2_enabled_target:
  34. icnss2_enabled = 1
  35. if cnss2_enabled:
  36. ddk_module(
  37. name = "{}_cnss2".format(tv),
  38. srcs = native.glob([
  39. "cnss2/main.c",
  40. "cnss2/bus.c",
  41. "cnss2/debug.c",
  42. "cnss2/pci.c",
  43. "cnss2/pci_platform.h",
  44. "cnss2/power.c",
  45. "cnss2/genl.c",
  46. "cnss2/*.h",
  47. "cnss_utils/*.h",
  48. ]),
  49. includes = ["cnss", "cnss_utils"],
  50. kconfig = "cnss2/Kconfig",
  51. defconfig = "cnss2/{}_defconfig".format(tv),
  52. conditional_srcs = {
  53. "CONFIG_CNSS2_QMI": {
  54. True: [
  55. "cnss2/qmi.c",
  56. "cnss2/coexistence_service_v01.c",
  57. "cnss2/ip_multimedia_subsystem_private_service_v01.c",
  58. ]
  59. },
  60. "CONFIG_PCI_MSM": {
  61. True: [
  62. "cnss2/pci_qcom.c",
  63. ],
  64. },
  65. },
  66. out = "cnss2.ko",
  67. kernel_build = "//msm-kernel:{}".format(tv),
  68. deps = [
  69. "//vendor/qcom/opensource/securemsm-kernel:{}_smcinvoke_dlkm".format(tv),
  70. ":{}_cnss_utils".format(tv),
  71. ":{}_cnss_prealloc".format(tv),
  72. ":{}_wlan_firmware_service".format(tv),
  73. ":{}_cnss_plat_ipc_qmi_svc".format(tv),
  74. "//msm-kernel:all_headers",
  75. ":wlan-platform-headers",
  76. ],
  77. )
  78. if icnss2_enabled:
  79. ddk_module(
  80. name = "{}_icnss2".format(tv),
  81. srcs = native.glob([
  82. "icnss2/main.c",
  83. "icnss2/debug.c",
  84. "icnss2/power.c",
  85. "icnss2/genl.c",
  86. "icnss2/*.h",
  87. "cnss_utils/*.h",
  88. ]),
  89. includes = ["icnss2", "cnss_utils"],
  90. kconfig = "icnss2/Kconfig",
  91. defconfig = "icnss2/{}_defconfig".format(tv),
  92. conditional_srcs = {
  93. "CONFIG_ICNSS2_QMI": {
  94. True: [
  95. "icnss2/qmi.c",
  96. ],
  97. },
  98. },
  99. out = "icnss2.ko",
  100. kernel_build = "//msm-kernel:{}".format(tv),
  101. deps = [
  102. ":{}_cnss_utils".format(tv),
  103. ":{}_cnss_prealloc".format(tv),
  104. ":{}_wlan_firmware_service".format(tv),
  105. "//msm-kernel:all_headers",
  106. ":wlan-platform-headers",
  107. ],
  108. )
  109. ddk_module(
  110. name = "{}_cnss_nl".format(tv),
  111. srcs = [
  112. "cnss_genl/cnss_nl.c",
  113. ],
  114. kconfig = "cnss_genl/Kconfig",
  115. defconfig = "cnss_genl/{}_defconfig".format(tv),
  116. out = "cnss_nl.ko",
  117. kernel_build = "//msm-kernel:{}".format(tv),
  118. deps = [
  119. "//msm-kernel:all_headers",
  120. ":wlan-platform-headers",
  121. ],
  122. )
  123. ddk_module(
  124. name = "{}_cnss_prealloc".format(tv),
  125. srcs = native.glob([
  126. "cnss_prealloc/cnss_prealloc.c",
  127. "cnss_utils/*.h",
  128. ]),
  129. includes = ["cnss_utils"],
  130. kconfig = "cnss_prealloc/Kconfig",
  131. defconfig = "cnss_prealloc/{}_defconfig".format(tv),
  132. out = "cnss_prealloc.ko",
  133. kernel_build = "//msm-kernel:{}".format(tv),
  134. deps = [
  135. "//msm-kernel:all_headers",
  136. ":wlan-platform-headers",
  137. ],
  138. )
  139. ddk_module(
  140. name = "{}_cnss_utils".format(tv),
  141. srcs = native.glob([
  142. "cnss_utils/cnss_utils.c",
  143. "cnss_utils/*.h"
  144. ]),
  145. kconfig = "cnss_utils/Kconfig",
  146. defconfig = "cnss_utils/{}_defconfig".format(tv),
  147. out = "cnss_utils.ko",
  148. kernel_build = "//msm-kernel:{}".format(tv),
  149. deps = [
  150. "//msm-kernel:all_headers",
  151. ":wlan-platform-headers",
  152. ],
  153. )
  154. ddk_module(
  155. name = "{}_wlan_firmware_service".format(tv),
  156. srcs = native.glob([
  157. "cnss_utils/wlan_firmware_service_v01.c",
  158. "cnss_utils/device_management_service_v01.c",
  159. "cnss_utils/*.h"
  160. ]),
  161. kconfig = "cnss_utils/Kconfig",
  162. defconfig = "cnss_utils/{}_defconfig".format(tv),
  163. out = "wlan_firmware_service.ko",
  164. kernel_build = "//msm-kernel:{}".format(tv),
  165. deps = ["//msm-kernel:all_headers"],
  166. )
  167. if plat_ipc_qmi_svc_enabled:
  168. ddk_module(
  169. name = "{}_cnss_plat_ipc_qmi_svc".format(tv),
  170. srcs = native.glob([
  171. "cnss_utils/cnss_plat_ipc_qmi.c",
  172. "cnss_utils/cnss_plat_ipc_service_v01.c",
  173. "cnss_utils/*.h"
  174. ]),
  175. kconfig = "cnss_utils/Kconfig",
  176. defconfig = "cnss_utils/{}_defconfig".format(tv),
  177. out = "cnss_plat_ipc_qmi_svc.ko",
  178. kernel_build = "//msm-kernel:{}".format(tv),
  179. deps = ["//msm-kernel:all_headers"],
  180. )
  181. copy_to_dist_dir(
  182. name = "{}_modules_dist".format(tv),
  183. data = _get_module_list(target, variant),
  184. dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
  185. flat = True,
  186. wipe_dist_dir = False,
  187. allow_duplicate_filenames = False,
  188. mode_overrides = {"**/*": "644"},
  189. log = "info"
  190. )
  191. def define_modules():
  192. for (t, v) in get_all_variants():
  193. _define_modules_for_target_variant(t, v)