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