xref: /wlan-dirver/platform/wlan_platform_modules.bzl (revision d0fbd9bae5b942501dbe4a09a6f4934d0c38b5cf)
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