xref: /wlan-dirver/platform/wlan_platform_modules.bzl (revision 8ac798203cec505db517b2f01adbd062ba249128)
14ae0fef4SJeff Johnsonload("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
24ae0fef4SJeff Johnsonload("//build/kernel/kleaf:kernel.bzl", "ddk_module")
34ae0fef4SJeff Johnsonload("//msm-kernel:target_variants.bzl", "get_all_variants")
44ae0fef4SJeff Johnson
5dca762d8SSandeep Singh_default_module_enablement_list = [
6dca762d8SSandeep Singh    "cnss_nl",
7dca762d8SSandeep Singh    "cnss_prealloc",
8dca762d8SSandeep Singh    "cnss_utils",
9*8ac79820SVishal Miskin    "wlan_firmware_service",
10dca762d8SSandeep Singh]
11dca762d8SSandeep Singh
12*8ac79820SVishal Miskin_cnss2_enabled_target = ["anorak", "niobe", "pineapple", "sun"]
1302e22639SSandeep Singh_icnss2_enabled_target = ["blair", "pineapple", "monaco", "pitti", "volcano"]
144ae0fef4SJeff Johnson
154ae0fef4SJeff Johnsondef _get_module_list(target, variant):
164ae0fef4SJeff Johnson    tv = "{}_{}".format(target, variant)
174ae0fef4SJeff Johnson
184ae0fef4SJeff Johnson    ret = []
19dca762d8SSandeep Singh    is_wlan_platform_enabled = False
20dca762d8SSandeep Singh
21dca762d8SSandeep Singh    if target in _cnss2_enabled_target:
22dca762d8SSandeep Singh        ret.extend(["cnss2", "cnss_plat_ipc_qmi_svc"])
23dca762d8SSandeep Singh        is_wlan_platform_enabled = True
24dca762d8SSandeep Singh
25dca762d8SSandeep Singh    if target in _icnss2_enabled_target:
26dca762d8SSandeep Singh        ret.extend(["icnss2"])
27dca762d8SSandeep Singh        is_wlan_platform_enabled = True
28dca762d8SSandeep Singh
29dca762d8SSandeep Singh    if is_wlan_platform_enabled:
30dca762d8SSandeep Singh        ret.extend(_default_module_enablement_list)
314ae0fef4SJeff Johnson
324ae0fef4SJeff Johnson    return [":{}_{}".format(tv, mod) for mod in ret]
334ae0fef4SJeff Johnson
340a9f61aeSMohammed Ahmeddef _define_platform_config_rule(module, target, variant):
350a9f61aeSMohammed Ahmed    tv = "{}_{}".format(target, variant)
360a9f61aeSMohammed Ahmed    native.genrule(
370a9f61aeSMohammed Ahmed        name = "{}/{}_defconfig_generate_perf".format(module, tv),
380a9f61aeSMohammed Ahmed        outs = ["{}/{}_defconfig.generated_perf".format(module, tv)],
390a9f61aeSMohammed Ahmed        srcs = [
400a9f61aeSMohammed Ahmed            "{}/{}_gki_defconfig".format(module, target),
410a9f61aeSMohammed Ahmed        ],
420a9f61aeSMohammed Ahmed        cmd = "cat $(SRCS) > $@",
430a9f61aeSMohammed Ahmed    )
440a9f61aeSMohammed Ahmed    native.genrule(
450a9f61aeSMohammed Ahmed        name = "{}/{}_defconfig_generate_gki".format(module, tv),
460a9f61aeSMohammed Ahmed        outs = ["{}/{}_defconfig.generated_gki".format(module, tv)],
470a9f61aeSMohammed Ahmed        srcs = [
480a9f61aeSMohammed Ahmed            "{}/{}_gki_defconfig".format(module, target),
490a9f61aeSMohammed Ahmed        ],
500a9f61aeSMohammed Ahmed        cmd = "cat $(SRCS) > $@",
510a9f61aeSMohammed Ahmed    )
520a9f61aeSMohammed Ahmed    native.genrule(
530a9f61aeSMohammed Ahmed        name = "{}/{}_defconfig_generate_consolidate".format(module, tv),
540a9f61aeSMohammed Ahmed        outs = ["{}/{}_defconfig.generated_consolidate".format(module, tv)],
550a9f61aeSMohammed Ahmed        srcs = [
560a9f61aeSMohammed Ahmed            "{}/{}_consolidate_defconfig".format(module, target),
570a9f61aeSMohammed Ahmed        ],
580a9f61aeSMohammed Ahmed        cmd = "cat $(SRCS) > $@",
590a9f61aeSMohammed Ahmed    )
604ae0fef4SJeff Johnson
614ae0fef4SJeff Johnsondef _define_modules_for_target_variant(target, variant):
624ae0fef4SJeff Johnson    tv = "{}_{}".format(target, variant)
634ae0fef4SJeff Johnson
64dca762d8SSandeep Singh    cnss2_enabled = 0
65dca762d8SSandeep Singh    plat_ipc_qmi_svc_enabled = 0
66dca762d8SSandeep Singh    icnss2_enabled = 0
67dca762d8SSandeep Singh
68dca762d8SSandeep Singh    if target in _cnss2_enabled_target:
69dca762d8SSandeep Singh        cnss2_enabled = 1
70dca762d8SSandeep Singh        plat_ipc_qmi_svc_enabled = 1
71dca762d8SSandeep Singh
72dca762d8SSandeep Singh    if target in _icnss2_enabled_target:
73dca762d8SSandeep Singh        icnss2_enabled = 1
74dca762d8SSandeep Singh
750a9f61aeSMohammed Ahmed    print("tv=", tv)
76dca762d8SSandeep Singh    if cnss2_enabled:
770a9f61aeSMohammed Ahmed        module = "cnss2"
780a9f61aeSMohammed Ahmed        _define_platform_config_rule(module, target, variant)
790a9f61aeSMohammed Ahmed        defconfig = ":{}/{}_defconfig_generate_{}".format(module, tv, variant)
80*8ac79820SVishal Miskin        deps = [
81*8ac79820SVishal Miskin            ":{}_cnss_utils".format(tv),
82*8ac79820SVishal Miskin            ":{}_cnss_prealloc".format(tv),
83*8ac79820SVishal Miskin            ":{}_wlan_firmware_service".format(tv),
84*8ac79820SVishal Miskin            ":{}_cnss_plat_ipc_qmi_svc".format(tv),
85*8ac79820SVishal Miskin            "//msm-kernel:all_headers",
86*8ac79820SVishal Miskin            ":wlan-platform-headers",
87*8ac79820SVishal Miskin        ]
88*8ac79820SVishal Miskin        if target != "anorak":
89*8ac79820SVishal Miskin            deps.append("//vendor/qcom/opensource/securemsm-kernel:{}_smcinvoke_dlkm".format(tv))
90*8ac79820SVishal Miskin
914ae0fef4SJeff Johnson        ddk_module(
924ae0fef4SJeff Johnson            name = "{}_cnss2".format(tv),
934ae0fef4SJeff Johnson            srcs = native.glob([
944ae0fef4SJeff Johnson                "cnss2/main.c",
954ae0fef4SJeff Johnson                "cnss2/bus.c",
964ae0fef4SJeff Johnson                "cnss2/debug.c",
974ae0fef4SJeff Johnson                "cnss2/pci.c",
984ae0fef4SJeff Johnson                "cnss2/pci_platform.h",
994ae0fef4SJeff Johnson                "cnss2/power.c",
1004ae0fef4SJeff Johnson                "cnss2/genl.c",
1014ae0fef4SJeff Johnson                "cnss2/*.h",
1024ae0fef4SJeff Johnson                "cnss_utils/*.h",
1034ae0fef4SJeff Johnson            ]),
1044ae0fef4SJeff Johnson            includes = ["cnss", "cnss_utils"],
1054ae0fef4SJeff Johnson            kconfig = "cnss2/Kconfig",
1060a9f61aeSMohammed Ahmed            defconfig = defconfig,
1074ae0fef4SJeff Johnson            conditional_srcs = {
1084ae0fef4SJeff Johnson                "CONFIG_CNSS2_QMI": {
1094ae0fef4SJeff Johnson                    True: [
1104ae0fef4SJeff Johnson                        "cnss2/qmi.c",
1114ae0fef4SJeff Johnson                        "cnss2/coexistence_service_v01.c",
112*8ac79820SVishal Miskin                    ],
1134ae0fef4SJeff Johnson                },
1144ae0fef4SJeff Johnson                "CONFIG_PCI_MSM": {
1154ae0fef4SJeff Johnson                    True: [
1164ae0fef4SJeff Johnson                        "cnss2/pci_qcom.c",
1174ae0fef4SJeff Johnson                    ],
1184ae0fef4SJeff Johnson                },
1194ae0fef4SJeff Johnson            },
1204ae0fef4SJeff Johnson            out = "cnss2.ko",
1214ae0fef4SJeff Johnson            kernel_build = "//msm-kernel:{}".format(tv),
122*8ac79820SVishal Miskin            deps = deps,
1234ae0fef4SJeff Johnson        )
1244ae0fef4SJeff Johnson
125dca762d8SSandeep Singh    if icnss2_enabled:
1260a9f61aeSMohammed Ahmed        module = "icnss2"
1270a9f61aeSMohammed Ahmed        _define_platform_config_rule(module, target, variant)
1280a9f61aeSMohammed Ahmed        defconfig = ":{}/{}_defconfig_generate_{}".format(module, tv, variant)
1294ae0fef4SJeff Johnson        ddk_module(
1304ae0fef4SJeff Johnson            name = "{}_icnss2".format(tv),
1314ae0fef4SJeff Johnson            srcs = native.glob([
1324ae0fef4SJeff Johnson                "icnss2/main.c",
1334ae0fef4SJeff Johnson                "icnss2/debug.c",
1344ae0fef4SJeff Johnson                "icnss2/power.c",
1354ae0fef4SJeff Johnson                "icnss2/genl.c",
1364ae0fef4SJeff Johnson                "icnss2/*.h",
1374ae0fef4SJeff Johnson                "cnss_utils/*.h",
1384ae0fef4SJeff Johnson            ]),
1394ae0fef4SJeff Johnson            includes = ["icnss2", "cnss_utils"],
1404ae0fef4SJeff Johnson            kconfig = "icnss2/Kconfig",
1410a9f61aeSMohammed Ahmed            copts = ["-Wno-format"],
1420a9f61aeSMohammed Ahmed            defconfig = defconfig,
1434ae0fef4SJeff Johnson            conditional_srcs = {
1444ae0fef4SJeff Johnson                "CONFIG_ICNSS2_QMI": {
1454ae0fef4SJeff Johnson                    True: [
1464ae0fef4SJeff Johnson                        "icnss2/qmi.c",
1474ae0fef4SJeff Johnson                    ],
1484ae0fef4SJeff Johnson                },
1494ae0fef4SJeff Johnson            },
1504ae0fef4SJeff Johnson            out = "icnss2.ko",
1514ae0fef4SJeff Johnson            kernel_build = "//msm-kernel:{}".format(tv),
1524ae0fef4SJeff Johnson            deps = [
1536b432e8dSJeff Johnson                ":{}_cnss_utils".format(tv),
1546b432e8dSJeff Johnson                ":{}_cnss_prealloc".format(tv),
1556b432e8dSJeff Johnson                ":{}_wlan_firmware_service".format(tv),
1564ae0fef4SJeff Johnson                "//msm-kernel:all_headers",
1574ae0fef4SJeff Johnson                ":wlan-platform-headers",
1584ae0fef4SJeff Johnson            ],
1594ae0fef4SJeff Johnson        )
1600a9f61aeSMohammed Ahmed    module = "cnss_genl"
1610a9f61aeSMohammed Ahmed    _define_platform_config_rule(module, target, variant)
1620a9f61aeSMohammed Ahmed    defconfig = ":{}/{}_defconfig_generate_{}".format(module, tv, variant)
1634ae0fef4SJeff Johnson    ddk_module(
1644ae0fef4SJeff Johnson        name = "{}_cnss_nl".format(tv),
1654ae0fef4SJeff Johnson        srcs = [
1664ae0fef4SJeff Johnson            "cnss_genl/cnss_nl.c",
1674ae0fef4SJeff Johnson        ],
1684ae0fef4SJeff Johnson        kconfig = "cnss_genl/Kconfig",
1690a9f61aeSMohammed Ahmed        defconfig = defconfig,
1704ae0fef4SJeff Johnson        out = "cnss_nl.ko",
1714ae0fef4SJeff Johnson        kernel_build = "//msm-kernel:{}".format(tv),
1724ae0fef4SJeff Johnson        deps = [
1734ae0fef4SJeff Johnson            "//msm-kernel:all_headers",
1744ae0fef4SJeff Johnson            ":wlan-platform-headers",
1754ae0fef4SJeff Johnson        ],
1764ae0fef4SJeff Johnson    )
1774ae0fef4SJeff Johnson
1780a9f61aeSMohammed Ahmed    module = "cnss_prealloc"
1790a9f61aeSMohammed Ahmed    _define_platform_config_rule(module, target, variant)
1800a9f61aeSMohammed Ahmed    defconfig = ":{}/{}_defconfig_generate_{}".format(module, tv, variant)
1814ae0fef4SJeff Johnson    ddk_module(
1824ae0fef4SJeff Johnson        name = "{}_cnss_prealloc".format(tv),
1836b432e8dSJeff Johnson        srcs = native.glob([
1844ae0fef4SJeff Johnson            "cnss_prealloc/cnss_prealloc.c",
1856b432e8dSJeff Johnson            "cnss_utils/*.h",
1866b432e8dSJeff Johnson        ]),
1876b432e8dSJeff Johnson        includes = ["cnss_utils"],
1884ae0fef4SJeff Johnson        kconfig = "cnss_prealloc/Kconfig",
1890a9f61aeSMohammed Ahmed        defconfig = defconfig,
1904ae0fef4SJeff Johnson        out = "cnss_prealloc.ko",
1914ae0fef4SJeff Johnson        kernel_build = "//msm-kernel:{}".format(tv),
1924ae0fef4SJeff Johnson        deps = [
1934ae0fef4SJeff Johnson            "//msm-kernel:all_headers",
1944ae0fef4SJeff Johnson            ":wlan-platform-headers",
1954ae0fef4SJeff Johnson        ],
1964ae0fef4SJeff Johnson    )
1974ae0fef4SJeff Johnson
1980a9f61aeSMohammed Ahmed    module = "cnss_utils"
1990a9f61aeSMohammed Ahmed    _define_platform_config_rule(module, target, variant)
2000a9f61aeSMohammed Ahmed    defconfig = ":{}/{}_defconfig_generate_{}".format(module, tv, variant)
2014ae0fef4SJeff Johnson    ddk_module(
2024ae0fef4SJeff Johnson        name = "{}_cnss_utils".format(tv),
2034ae0fef4SJeff Johnson        srcs = native.glob([
2044ae0fef4SJeff Johnson            "cnss_utils/cnss_utils.c",
205*8ac79820SVishal Miskin            "cnss_utils/*.h",
2064ae0fef4SJeff Johnson        ]),
2074ae0fef4SJeff Johnson        kconfig = "cnss_utils/Kconfig",
2080a9f61aeSMohammed Ahmed        defconfig = defconfig,
2094ae0fef4SJeff Johnson        out = "cnss_utils.ko",
2104ae0fef4SJeff Johnson        kernel_build = "//msm-kernel:{}".format(tv),
2114ae0fef4SJeff Johnson        deps = [
2124ae0fef4SJeff Johnson            "//msm-kernel:all_headers",
2134ae0fef4SJeff Johnson            ":wlan-platform-headers",
2144ae0fef4SJeff Johnson        ],
2154ae0fef4SJeff Johnson    )
2164ae0fef4SJeff Johnson
2170a9f61aeSMohammed Ahmed    module = "cnss_utils"
2180a9f61aeSMohammed Ahmed    defconfig = ":{}/{}_defconfig_generate_{}".format(module, tv, variant)
2194ae0fef4SJeff Johnson    ddk_module(
2204ae0fef4SJeff Johnson        name = "{}_wlan_firmware_service".format(tv),
2214ae0fef4SJeff Johnson        srcs = native.glob([
2224ae0fef4SJeff Johnson            "cnss_utils/wlan_firmware_service_v01.c",
2234ae0fef4SJeff Johnson            "cnss_utils/device_management_service_v01.c",
22487ab436eSNaman Padhiar            "cnss_utils/ip_multimedia_subsystem_private_service_v01.c",
225*8ac79820SVishal Miskin            "cnss_utils/*.h",
2264ae0fef4SJeff Johnson        ]),
2274ae0fef4SJeff Johnson        kconfig = "cnss_utils/Kconfig",
2280a9f61aeSMohammed Ahmed        defconfig = defconfig,
2294ae0fef4SJeff Johnson        out = "wlan_firmware_service.ko",
2304ae0fef4SJeff Johnson        kernel_build = "//msm-kernel:{}".format(tv),
2314ae0fef4SJeff Johnson        deps = ["//msm-kernel:all_headers"],
2324ae0fef4SJeff Johnson    )
2334ae0fef4SJeff Johnson
2340a9f61aeSMohammed Ahmed    module = "cnss_utils"
2350a9f61aeSMohammed Ahmed    defconfig = ":{}/{}_defconfig_generate_{}".format(module, tv, variant)
236dca762d8SSandeep Singh    if plat_ipc_qmi_svc_enabled:
2374ae0fef4SJeff Johnson        ddk_module(
2384ae0fef4SJeff Johnson            name = "{}_cnss_plat_ipc_qmi_svc".format(tv),
2394ae0fef4SJeff Johnson            srcs = native.glob([
2404ae0fef4SJeff Johnson                "cnss_utils/cnss_plat_ipc_qmi.c",
2414ae0fef4SJeff Johnson                "cnss_utils/cnss_plat_ipc_service_v01.c",
242*8ac79820SVishal Miskin                "cnss_utils/*.h",
2434ae0fef4SJeff Johnson            ]),
2444ae0fef4SJeff Johnson            kconfig = "cnss_utils/Kconfig",
2450a9f61aeSMohammed Ahmed            defconfig = defconfig,
2464ae0fef4SJeff Johnson            out = "cnss_plat_ipc_qmi_svc.ko",
2474ae0fef4SJeff Johnson            kernel_build = "//msm-kernel:{}".format(tv),
2484ae0fef4SJeff Johnson            deps = ["//msm-kernel:all_headers"],
2494ae0fef4SJeff Johnson        )
2500a9f61aeSMohammed Ahmed    tv = "{}_{}".format(target, variant)
2514ae0fef4SJeff Johnson    copy_to_dist_dir(
2524ae0fef4SJeff Johnson        name = "{}_modules_dist".format(tv),
2534ae0fef4SJeff Johnson        data = _get_module_list(target, variant),
2544ae0fef4SJeff Johnson        dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
2554ae0fef4SJeff Johnson        flat = True,
2564ae0fef4SJeff Johnson        wipe_dist_dir = False,
2574ae0fef4SJeff Johnson        allow_duplicate_filenames = False,
2584ae0fef4SJeff Johnson        mode_overrides = {"**/*": "644"},
259*8ac79820SVishal Miskin        log = "info",
2604ae0fef4SJeff Johnson    )
2614ae0fef4SJeff Johnson
2624ae0fef4SJeff Johnsondef define_modules():
2634ae0fef4SJeff Johnson    for (t, v) in get_all_variants():
2640a9f61aeSMohammed Ahmed        print("v=", v)
2654ae0fef4SJeff Johnson        _define_modules_for_target_variant(t, v)
266