xref: /wlan-dirver/qcacld-3.0/Android.mk (revision 9004d4b0c4b481993a96a4b14237ed1c1ed56c55)
110a5bb12SJeff Johnson# Android makefile for the WLAN Module
210a5bb12SJeff Johnson
310a5bb12SJeff Johnson# set WLAN_BUILD_DEBUG=y in your environment to enable debug logging
410a5bb12SJeff Johnsondefine wlog
510a5bb12SJeff Johnson$(if $(WLAN_BUILD_DEBUG),$(info $(1)))
610a5bb12SJeff Johnsonendef
710a5bb12SJeff Johnson
87eea98dcSZhaoyang Liudefine target_is_dual_wlan
97eea98dcSZhaoyang Liu$(strip \
107eea98dcSZhaoyang Liu  $(if $(TARGET_SUPPORT_DUAL_WLAN), \
117eea98dcSZhaoyang Liu     $(if $(findstring cnss2,$(1)),true,), \
127eea98dcSZhaoyang Liu  ) \
137eea98dcSZhaoyang Liu)
147eea98dcSZhaoyang Liuendef
157eea98dcSZhaoyang Liu
16243b2afbSMohammed AhmedLOCAL_MODULE_DDK_BUILD := false
17243b2afbSMohammed AhmedLOCAL_MODULE_DDK_ALLOW_UNSAFE_HEADERS := false
1891537161SMohammed Ahmed
1938a6b6bcSMohammed Ahmedifeq ($(TARGET_BOARD_PLATFORM), sun)
2038a6b6bcSMohammed AhmedLOCAL_MODULE_DDK_BUILD := true
2138a6b6bcSMohammed AhmedLOCAL_MODULE_DDK_ALLOW_UNSAFE_HEADERS := true
2238a6b6bcSMohammed Ahmedendif
2391537161SMohammed Ahmedifeq ($(TARGET_BOARD_PLATFORM), pineapple)
2491537161SMohammed AhmedLOCAL_MODULE_DDK_BUILD := true
2591537161SMohammed AhmedLOCAL_MODULE_DDK_ALLOW_UNSAFE_HEADERS := true
26243b2afbSMohammed Ahmedendif
27243b2afbSMohammed Ahmed
28ee1f25dfSSai Kumar Kunchalaifeq ($(TARGET_BOARD_PLATFORM), niobe)
29ee1f25dfSSai Kumar KunchalaLOCAL_MODULE_DDK_BUILD := true
30ee1f25dfSSai Kumar KunchalaLOCAL_MODULE_DDK_ALLOW_UNSAFE_HEADERS := true
31ee1f25dfSSai Kumar Kunchalaendif
32ee1f25dfSSai Kumar Kunchala
33080e8518SLin Baiifeq ($(TARGET_BOARD_PLATFORM), volcano)
34080e8518SLin BaiLOCAL_MODULE_DDK_BUILD := true
35080e8518SLin BaiLOCAL_MODULE_DDK_ALLOW_UNSAFE_HEADERS := true
36080e8518SLin Baiendif
37080e8518SLin Bai
38*9004d4b0SAsutosh Mohapatraifeq ($(TARGET_BOARD_PLATFORM),parrot)
39*9004d4b0SAsutosh Mohapatraifeq ($(TARGET_BOARD_SUFFIX),66)
40*9004d4b0SAsutosh MohapatraLOCAL_MODULE_DDK_BUILD := true
41*9004d4b0SAsutosh MohapatraLOCAL_MODULE_DDK_ALLOW_UNSAFE_HEADERS := true
42*9004d4b0SAsutosh Mohapatraendif
43*9004d4b0SAsutosh Mohapatraendif
44*9004d4b0SAsutosh Mohapatra
4510a5bb12SJeff JohnsonLOCAL_PATH := $(call my-dir)
4610a5bb12SJeff Johnson$(call wlog,LOCAL_PATH=$(LOCAL_PATH))
4751893a20SDundi RavitejaBOARD_OPENSOURCE_DIR ?= vendor/qcom/opensource
4810a5bb12SJeff Johnson
4956a9bf7fSSmita GhoshENABLE_QCACLD := true
5056a9bf7fSSmita Ghoshifeq ($(TARGET_USES_QMAA), true)
5156a9bf7fSSmita Ghoshifneq ($(TARGET_USES_QMAA_OVERRIDE_WLAN), true)
5256a9bf7fSSmita GhoshENABLE_QCACLD := false
5356a9bf7fSSmita Ghoshelse
5456a9bf7fSSmita GhoshENABLE_QCACLD := true
5556a9bf7fSSmita Ghoshendif
5656a9bf7fSSmita Ghoshendif
5756a9bf7fSSmita Ghosh
58a89f1924SKomal Maheshwariifeq ($(BOARD_COMMON_DIR),)
59a89f1924SKomal Maheshwari    BOARD_COMMON_DIR := device/qcom/common
60a89f1924SKomal Maheshwariendif
61a89f1924SKomal Maheshwari
6256a9bf7fSSmita Ghoshifeq  ($(ENABLE_QCACLD), true)
637090c5fdSPrakash Dhavali
647090c5fdSPrakash Dhavali# Assume no targets will be supported
657090c5fdSPrakash DhavaliWLAN_CHIPSET :=
667090c5fdSPrakash Dhavali
677090c5fdSPrakash Dhavaliifeq ($(BOARD_HAS_QCOM_WLAN), true)
687090c5fdSPrakash Dhavali
691e382ffaSYue Ma# Check if this driver needs be built for current target
701e382ffaSYue Maifneq ($(findstring qca_cld3,$(WIFI_DRIVER_BUILT)),)
71fbb9b373SSatish Singh	WLAN_CHIPSET := qca_cld3
727090c5fdSPrakash Dhavali	WLAN_SELECT  := CONFIG_QCA_CLD_WLAN=m
731e382ffaSYue Maendif
747090c5fdSPrakash Dhavali
757090c5fdSPrakash Dhavali# Build/Package only in case of supported target
767090c5fdSPrakash Dhavaliifneq ($(WLAN_CHIPSET),)
777090c5fdSPrakash Dhavali
787090c5fdSPrakash Dhavali# This makefile is only for DLKM
797090c5fdSPrakash Dhavaliifneq ($(findstring vendor,$(LOCAL_PATH)),)
807090c5fdSPrakash Dhavali
817090c5fdSPrakash Dhavaliifneq ($(findstring opensource,$(LOCAL_PATH)),)
8251893a20SDundi Raviteja	WLAN_BLD_DIR := $(BOARD_OPENSOURCE_DIR)/wlan
837090c5fdSPrakash Dhavaliendif # opensource
847090c5fdSPrakash Dhavali
856c4599c8SYu Wang# Multi-ko check
868cf2c24eSYu WangLOCAL_DEV_NAME := $(patsubst .%,%,\
878cf2c24eSYu Wang	$(lastword $(strip $(subst /, ,$(LOCAL_PATH)))))
886c4599c8SYu Wang
8910a5bb12SJeff Johnson$(call wlog,LOCAL_DEV_NAME=$(LOCAL_DEV_NAME))
9010a5bb12SJeff Johnson$(call wlog,TARGET_WLAN_CHIP=$(TARGET_WLAN_CHIP))
9110a5bb12SJeff Johnson
9227b941b7SJeff JohnsonTARGET_WLAN_CHIP ?= wlan
9327b941b7SJeff JohnsonLOCAL_MULTI_KO := false
9427b941b7SJeff Johnsonifneq ($(TARGET_WLAN_CHIP), wlan)
957d866f69SYu Wangifeq ($(LOCAL_DEV_NAME), qcacld-3.0)
966c4599c8SYu WangLOCAL_MULTI_KO := true
976c4599c8SYu Wangendif
986c4599c8SYu Wangendif
996c4599c8SYu Wang
1006c4599c8SYu Wangifeq ($(LOCAL_MULTI_KO), true)
1016bff3d33SJeff JohnsonLOCAL_ANDROID_ROOT := $(shell pwd)
1026bff3d33SJeff JohnsonLOCAL_WLAN_BLD_DIR := $(LOCAL_ANDROID_ROOT)/$(WLAN_BLD_DIR)
103243b2afbSMohammed Ahmed$(shell `find $(LOCAL_WLAN_BLD_DIR)/qcacld-3.0/ -maxdepth 1 -name '.*' ! -name '.git' -delete`)
104b06fa33bSMohammed Ahmed
105243b2afbSMohammed Ahmedifeq ($(LOCAL_MODULE_DDK_BUILD), true)
106b06fa33bSMohammed Ahmedifeq ($(CHIPSET),)
107b06fa33bSMohammed Ahmed$(foreach chip, $(TARGET_WLAN_CHIP),\
108b06fa33bSMohammed Ahmed	$(eval CHIPSET := $(chip))\
109b06fa33bSMohammed Ahmed	$(eval include $(LOCAL_PATH)/Android.mk))
110b06fa33bSMohammed Ahmedelse
111243b2afbSMohammed Ahmed# DLKM_DIR was moved for JELLY_BEAN (PLATFORM_SDK 16)
112b06fa33bSMohammed AhmedBAZEL_CHIPSET_NAME := $(subst _,-,$(CHIPSET))
113243b2afbSMohammed Ahmedifeq ($(call is-platform-sdk-version-at-least,16),true)
114243b2afbSMohammed Ahmed        DLKM_DIR := $(TOP)/$(BOARD_COMMON_DIR)/dlkm
115243b2afbSMohammed Ahmedelse
116243b2afbSMohammed Ahmed        DLKM_DIR := build/dlkm
117243b2afbSMohammed Ahmedendif # platform-sdk-version
1186c4599c8SYu Wang
119243b2afbSMohammed Ahmedinclude $(CLEAR_VARS)
120243b2afbSMohammed AhmedLOCAL_MOD_NAME := wlan
121b06fa33bSMohammed AhmedLOCAL_MODULE              := qca_cld3_$(CHIPSET).ko
122b06fa33bSMohammed AhmedLOCAL_MODULE_KBUILD_NAME  := qca_cld3_$(CHIPSET).ko
123243b2afbSMohammed AhmedLOCAL_MODULE_DEBUG_ENABLE := true
124b06fa33bSMohammed AhmedLOCAL_MODULE_DDK_SUBTARGET_REGEX := "all.*"
125243b2afbSMohammed Ahmedifeq ($(PRODUCT_VENDOR_MOVE_ENABLED),true)
126243b2afbSMohammed Ahmed    ifeq ($(WIFI_DRIVER_INSTALL_TO_KERNEL_OUT),true)
127243b2afbSMohammed Ahmed        LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
128243b2afbSMohammed Ahmed    else
129243b2afbSMohammed Ahmed        LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/lib/modules/$(WLAN_CHIPSET)
130243b2afbSMohammed Ahmed    endif
131243b2afbSMohammed Ahmedelse
132243b2afbSMohammed Ahmed    LOCAL_MODULE_PATH := $(TARGET_OUT)/lib/modules/$(WLAN_CHIPSET)
133243b2afbSMohammed Ahmedendif
134243b2afbSMohammed Ahmed
135243b2afbSMohammed Ahmed
136b06fa33bSMohammed AhmedLOCAL_DEV_NAME := $(CHIPSET)
137243b2afbSMohammed AhmedLOCAL_CHIP_NAME := $(LOCAL_DEV_NAME)
138243b2afbSMohammed AhmedTARGET_MAC_BIN_PATH := /mnt/vendor/persist/$(LOCAL_CHIP_NAME)
139243b2afbSMohammed AhmedTARGET_FW_DIR := firmware/wlan/qca_cld/$(LOCAL_CHIP_NAME)
140243b2afbSMohammed AhmedTARGET_CFG_PATH := /vendor/etc/wifi/$(LOCAL_CHIP_NAME)
141243b2afbSMohammed AhmedTARGET_MAC_BIN_PATH := /mnt/vendor/persist/$(LOCAL_CHIP_NAME)
142243b2afbSMohammed Ahmed
143243b2afbSMohammed Ahmedifeq ($(PRODUCT_VENDOR_MOVE_ENABLED),true)
144243b2afbSMohammed AhmedTARGET_FW_PATH := $(TARGET_OUT_VENDOR)/$(TARGET_FW_DIR)
145243b2afbSMohammed Ahmedelse
146243b2afbSMohammed AhmedTARGET_FW_PATH := $(TARGET_OUT_ETC)/$(TARGET_FW_DIR)
147243b2afbSMohammed Ahmedendif
148243b2afbSMohammed Ahmed
149243b2afbSMohammed Ahmed# Create wlan_mac.bin symbolic link as part of the module
150243b2afbSMohammed Ahmed$(call symlink-file,,$(TARGET_MAC_BIN_PATH)/wlan_mac.bin,$(TARGET_FW_PATH)/wlan_mac.bin)
151243b2afbSMohammed AhmedLOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_FW_PATH)/wlan_mac.bin
152243b2afbSMohammed Ahmed
153243b2afbSMohammed Ahmed# Conditionally create module symbolic link
154243b2afbSMohammed Ahmedifneq ($(findstring $(WLAN_CHIPSET),$(WIFI_DRIVER_DEFAULT)),)
155243b2afbSMohammed Ahmedifeq ($(PRODUCT_VENDOR_MOVE_ENABLED),true)
156243b2afbSMohammed Ahmedifneq ($(WIFI_DRIVER_INSTALL_TO_KERNEL_OUT),true)
157243b2afbSMohammed Ahmed$(call symlink-file,,$(TARGET_COPY_OUT_VENDOR)/lib/modules/$(WLAN_CHIPSET)/$(LOCAL_MODULE),$(TARGET_OUT_VENDOR)/lib/modules/$(LOCAL_MODULE))
158243b2afbSMohammed AhmedLOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_VENDOR)/lib/modules/$(LOCAL_MODULE)
159243b2afbSMohammed Ahmedendif
160243b2afbSMohammed Ahmedelse
161243b2afbSMohammed Ahmed$(call symlink-file,,/system/lib/modules/$(WLAN_CHIPSET)/$(LOCAL_MODULE),$(TARGET_OUT)/lib/modules/$(LOCAL_MODULE))
162243b2afbSMohammed AhmedLOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT)/lib/modules/$(LOCAL_MODULE)
163243b2afbSMohammed Ahmedendif
164243b2afbSMohammed Ahmedendif
165243b2afbSMohammed Ahmed
166243b2afbSMohammed Ahmed# Conditionally create ini symbolic link
167243b2afbSMohammed Ahmedifeq ($(TARGET_BOARD_AUTO),true)
168243b2afbSMohammed Ahmed$(call symlink-file,,$(TARGET_CFG_PATH)/WCNSS_qcom_cfg.ini,$(TARGET_FW_PATH)/WCNSS_qcom_cfg.ini)
169243b2afbSMohammed AhmedLOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_FW_PATH)/WCNSS_qcom_cfg.ini
170243b2afbSMohammed Ahmed$(call wlog,"generate soft link because TARGET_BOARD_AUTO true")
171243b2afbSMohammed Ahmedelse
172243b2afbSMohammed Ahmedifneq ($(GENERIC_ODM_IMAGE),true)
173243b2afbSMohammed Ahmed$(call symlink-file,,$(TARGET_CFG_PATH)/WCNSS_qcom_cfg.ini,$(TARGET_FW_PATH)/WCNSS_qcom_cfg.ini)
174243b2afbSMohammed AhmedLOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_FW_PATH)/WCNSS_qcom_cfg.ini
175243b2afbSMohammed Ahmed$(call wlog,"generate soft link because GENERIC_ODM_IMAGE not true")
176243b2afbSMohammed Ahmedendif
177243b2afbSMohammed Ahmedendif
178243b2afbSMohammed Ahmed
179243b2afbSMohammed Ahmed# Set dependencies so that CNSS family drivers can be compiled ahead.
180243b2afbSMohammed Ahmedifneq ($(WLAN_PLATFORM_KBUILD_OPTIONS),)
181243b2afbSMohammed AhmedLOCAL_REQUIRED_MODULES := wlan-platform-module-symvers
182243b2afbSMohammed AhmedLOCAL_ADDITIONAL_DEPENDENCIES += $(call intermediates-dir-for,DLKM,wlan-platform-module-symvers)/Module.symvers
183243b2afbSMohammed Ahmedendif
184243b2afbSMohammed Ahmed
185243b2afbSMohammed Ahmed$(call wlog,TARGET_USES_KERNEL_PLATFORM=$(TARGET_USES_KERNEL_PLATFORM))
186243b2afbSMohammed Ahmedifeq ($(TARGET_USES_KERNEL_PLATFORM),true)
187243b2afbSMohammed Ahmed    include $(DLKM_DIR)/Build_external_kernelmodule.mk
188243b2afbSMohammed Ahmedelse
189243b2afbSMohammed Ahmed    include $(DLKM_DIR)/AndroidKernelModule.mk
190243b2afbSMohammed Ahmedendif
191b06fa33bSMohammed Ahmedendif
192243b2afbSMohammed Ahmedelse
1936bff3d33SJeff Johnson$(foreach chip, $(TARGET_WLAN_CHIP), \
1946bff3d33SJeff Johnson	$(shell ln -sf . $(LOCAL_WLAN_BLD_DIR)/qcacld-3.0/.$(chip)))
1958cf2c24eSYu Wanginclude $(foreach chip, $(TARGET_WLAN_CHIP), $(LOCAL_PATH)/.$(chip)/Android.mk)
196243b2afbSMohammed Ahmedendif
1976c4599c8SYu Wang
1986c4599c8SYu Wangelse # Multi-ok check
1996c4599c8SYu Wang
2007eea98dcSZhaoyang Liu# When dual wlan enabled, secondary dev name would be $(chip)_cnss2.
2017eea98dcSZhaoyang Liu# Use LOCAL_CHIP_NAME instead of LOCAL_DEV_NAME for secondary one.
2027eea98dcSZhaoyang LiuLOCAL_CHIP_NAME := $(LOCAL_DEV_NAME)
2037eea98dcSZhaoyang LiuTARGET_SECONDARY_WLAN := $(call target_is_dual_wlan,$(LOCAL_DEV_NAME))
2047eea98dcSZhaoyang Liuifeq ($(TARGET_SECONDARY_WLAN), true)
2057eea98dcSZhaoyang LiuLOCAL_CHIP_NAME := $(patsubst %_cnss2,%,$(strip $(LOCAL_DEV_NAME)))
2067eea98dcSZhaoyang Liuendif
2077eea98dcSZhaoyang Liu
208d8ef4743SSurabhi Vishnoiifeq ($(WLAN_PROFILE),)
2094b136b1cSMahesh Kumar Kalikot VeetilWLAN_PROFILE := default
210d8ef4743SSurabhi Vishnoiendif
2114b136b1cSMahesh Kumar Kalikot Veetil
2127d866f69SYu Wangifeq ($(LOCAL_DEV_NAME), qcacld-3.0)
2137d866f69SYu Wang
2147d866f69SYu WangLOCAL_DEV_NAME := wlan
2156c4599c8SYu WangLOCAL_MOD_NAME := wlan
2166c4599c8SYu WangLOCAL_SRC_DIR :=
2176c4599c8SYu WangTARGET_FW_DIR := firmware/wlan/qca_cld
2186c4599c8SYu WangTARGET_CFG_PATH := /vendor/etc/wifi
2196c4599c8SYu WangTARGET_MAC_BIN_PATH := /mnt/vendor/persist
2207d866f69SYu Wang
2216c4599c8SYu Wangelse
2227d866f69SYu Wang
2238cf2c24eSYu WangLOCAL_SRC_DIR := .$(LOCAL_DEV_NAME)
2244b136b1cSMahesh Kumar Kalikot Veetil# Use default profile if WLAN_CFG_USE_DEFAULT defined.
2254b136b1cSMahesh Kumar Kalikot Veetilifeq ($(WLAN_CFG_USE_DEFAULT),)
2267eea98dcSZhaoyang LiuWLAN_PROFILE := $(LOCAL_CHIP_NAME)
2274b136b1cSMahesh Kumar Kalikot Veetilendif
2287eea98dcSZhaoyang LiuTARGET_FW_DIR := firmware/wlan/qca_cld/$(LOCAL_CHIP_NAME)
2297eea98dcSZhaoyang LiuTARGET_CFG_PATH := /vendor/etc/wifi/$(LOCAL_CHIP_NAME)
2307eea98dcSZhaoyang LiuTARGET_MAC_BIN_PATH := /mnt/vendor/persist/$(LOCAL_CHIP_NAME)
2317d866f69SYu Wang
2327d866f69SYu Wangifneq ($(TARGET_MULTI_WLAN), true)
2337d866f69SYu WangLOCAL_MOD_NAME := wlan
2347d866f69SYu WangDYNAMIC_SINGLE_CHIP := $(LOCAL_DEV_NAME)
2357d866f69SYu Wangelse
2367d866f69SYu WangLOCAL_MOD_NAME := $(LOCAL_DEV_NAME)
2377d866f69SYu Wangendif
2387d866f69SYu Wang
2397eea98dcSZhaoyang Liuifeq ($(TARGET_SECONDARY_WLAN), true)
2404bf8ee08SYu OuyangTARGET_SECONDARY_WLAN_NUMBER := 2
2414bf8ee08SYu OuyangLOCAL_MOD_NAME := $(LOCAL_CHIP_NAME)_$(TARGET_SECONDARY_WLAN_NUMBER)
2427eea98dcSZhaoyang LiuDYNAMIC_SINGLE_CHIP := $(LOCAL_CHIP_NAME)
2437eea98dcSZhaoyang Liuendif
2447eea98dcSZhaoyang Liu
2456c4599c8SYu Wangendif
2466c4599c8SYu Wang
2477090c5fdSPrakash Dhavali# DLKM_DIR was moved for JELLY_BEAN (PLATFORM_SDK 16)
2487090c5fdSPrakash Dhavaliifeq ($(call is-platform-sdk-version-at-least,16),true)
249a89f1924SKomal Maheshwari	DLKM_DIR := $(TOP)/$(BOARD_COMMON_DIR)/dlkm
2507090c5fdSPrakash Dhavalielse
2517090c5fdSPrakash Dhavali	DLKM_DIR := build/dlkm
2527090c5fdSPrakash Dhavaliendif # platform-sdk-version
2537090c5fdSPrakash Dhavali
2547090c5fdSPrakash Dhavali# Build wlan.ko as $(WLAN_CHIPSET)_wlan.ko
2557090c5fdSPrakash Dhavali###########################################################
2567090c5fdSPrakash Dhavali# This is set once per LOCAL_PATH, not per (kernel) module
2576c4599c8SYu WangKBUILD_OPTIONS := WLAN_ROOT=$(WLAN_BLD_DIR)/qcacld-3.0/$(LOCAL_SRC_DIR)
258e5d65fc8SJeff JohnsonKBUILD_OPTIONS += WLAN_COMMON_ROOT=cmn
259e5d65fc8SJeff JohnsonKBUILD_OPTIONS += WLAN_COMMON_INC=$(WLAN_BLD_DIR)/qcacld-3.0/cmn
2606c4599c8SYu WangKBUILD_OPTIONS += WLAN_FW_API=$(WLAN_BLD_DIR)/fw-api
2616c4599c8SYu WangKBUILD_OPTIONS += WLAN_PROFILE=$(WLAN_PROFILE)
2627d866f69SYu WangKBUILD_OPTIONS += DYNAMIC_SINGLE_CHIP=$(DYNAMIC_SINGLE_CHIP)
26308abad6cSPrakash Dhavali
2647090c5fdSPrakash Dhavali# We are actually building wlan.ko here, as per the
2657090c5fdSPrakash Dhavali# requirement we are specifying <chipset>_wlan.ko as LOCAL_MODULE.
2667090c5fdSPrakash Dhavali# This means we need to rename the module to <chipset>_wlan.ko
2677090c5fdSPrakash Dhavali# after wlan.ko is built.
2686c4599c8SYu WangKBUILD_OPTIONS += MODNAME=$(LOCAL_MOD_NAME)
269f91c461dSAditya KodukulaKBUILD_OPTIONS += DEVNAME=$(LOCAL_DEV_NAME)
2707090c5fdSPrakash DhavaliKBUILD_OPTIONS += BOARD_PLATFORM=$(TARGET_BOARD_PLATFORM)
2717090c5fdSPrakash DhavaliKBUILD_OPTIONS += $(WLAN_SELECT)
2727090c5fdSPrakash Dhavali
273716b35abSNamita NairKBUILD_REQUIRED_KOS := ipam.ko
274716b35abSNamita Nair
275baff800eSYu Wangifneq ($(WLAN_CFG_OVERRIDE_$(LOCAL_DEV_NAME)),)
276baff800eSYu WangKBUILD_OPTIONS += WLAN_CFG_OVERRIDE="$(WLAN_CFG_OVERRIDE_$(LOCAL_DEV_NAME))"
277baff800eSYu Wangendif
278baff800eSYu Wang
2797eea98dcSZhaoyang Liu# driver expects "/dev/<name>" for wifi driver state ctrl parameter.
2807eea98dcSZhaoyang Liu# i.e. WIFI_DRIVER_STATE_CTRL_PARAM="/dev/wlan" is defined for single wlan.
2817eea98dcSZhaoyang Liu# WIFI_DRIVER_STATE_CTRL_PARAM_SECONDARY="/dev/wlan2" is defined for 2nd wlan.
2827eea98dcSZhaoyang Liuifeq ($(TARGET_SECONDARY_WLAN), true)
2837eea98dcSZhaoyang Liu$(call wlog,STATE_CTRL_PARAM_SECONDARY=$(WIFI_DRIVER_STATE_CTRL_PARAM_SECONDARY))
2847eea98dcSZhaoyang LiuPARAM_SECONDARY := $(patsubst "%",%,$(WIFI_DRIVER_STATE_CTRL_PARAM_SECONDARY))
2857eea98dcSZhaoyang Liu$(call wlog,PARAM_SECONDARY=$(PARAM_SECONDARY))
2867eea98dcSZhaoyang Liuifeq ($(dir $(PARAM_SECONDARY)),/dev/)
2877eea98dcSZhaoyang LiuKBUILD_OPTIONS += WLAN_CTRL_NAME=$(notdir $(PARAM_SECONDARY))
2887eea98dcSZhaoyang Liuendif
2897eea98dcSZhaoyang Liuelse
290216957b4SJeff Johnson$(call wlog,WIFI_DRIVER_STATE_CTRL_PARAM=$(WIFI_DRIVER_STATE_CTRL_PARAM))
291216957b4SJeff JohnsonPARAM := $(patsubst "%",%,$(WIFI_DRIVER_STATE_CTRL_PARAM))
292216957b4SJeff Johnson$(call wlog,PARAM=$(PARAM))
293216957b4SJeff Johnsonifeq ($(dir $(PARAM)),/dev/)
294216957b4SJeff JohnsonKBUILD_OPTIONS += WLAN_CTRL_NAME=$(notdir $(PARAM))
295216957b4SJeff Johnsonendif
2967eea98dcSZhaoyang Liuendif
297216957b4SJeff Johnson
2989cc41114SMahesh Kumar Kalikot Veetil# Pass build options per chip to Kbuild. This will be injected from upper layer
2999cc41114SMahesh Kumar Kalikot Veetil# makefile.
3009cc41114SMahesh Kumar Kalikot Veetil#
3019cc41114SMahesh Kumar Kalikot Veetil# e.g.
3029cc41114SMahesh Kumar Kalikot Veetil#  WLAN_KBUILD_OPTIONS_qca6390 := CONFIG_CNSS_QCA6390=y
3039cc41114SMahesh Kumar Kalikot Veetilifneq ($(WLAN_KBUILD_OPTIONS_$(LOCAL_DEV_NAME)),)
3049cc41114SMahesh Kumar Kalikot VeetilKBUILD_OPTIONS += "$(WLAN_KBUILD_OPTIONS_$(LOCAL_DEV_NAME))"
3059cc41114SMahesh Kumar Kalikot Veetilendif
3069cc41114SMahesh Kumar Kalikot Veetil
307a2f607aaSJeff Johnsonifeq ($(PRODUCT_VENDOR_MOVE_ENABLED),true)
308a2f607aaSJeff JohnsonTARGET_FW_PATH := $(TARGET_OUT_VENDOR)/$(TARGET_FW_DIR)
309a2f607aaSJeff Johnsonelse
310a2f607aaSJeff JohnsonTARGET_FW_PATH := $(TARGET_OUT_ETC)/$(TARGET_FW_DIR)
311a2f607aaSJeff Johnsonendif
312a2f607aaSJeff Johnson
313db747806SYue Ma# WLAN_PLATFORM_KBUILD_OPTIONS should be passed from upper level Makefiles
314db747806SYue Ma# like wlan.mk. It indicates sources of CNSS family drivers (cnss2, cnss_nl,
315db747806SYue Ma# cnss_prealloc and cnss_utils etc.) are built out of kernel tree and it
316db747806SYue Ma# should also include all necessary config flags (e.g. CONFIG_CNSS2) which
317db747806SYue Ma# are originally defined from kernel Kconfig/defconfig. KBUILD_EXTRA_SYMBOLS
318db747806SYue Ma# is also needed to indicate all the symbols from these drivers.
319db747806SYue Maifneq ($(WLAN_PLATFORM_KBUILD_OPTIONS),)
320db747806SYue MaKBUILD_OPTIONS += $(foreach wlan_platform_kbuild_option, \
321db747806SYue Ma		   $(WLAN_PLATFORM_KBUILD_OPTIONS), \
322db747806SYue Ma		   $(wlan_platform_kbuild_option))
323db747806SYue Ma
324716b35abSNamita NairKBUILD_OPTIONS += KBUILD_EXTRA_SYMBOLS+=$(shell pwd)/$(call intermediates-dir-for,DLKM,wlan-platform-module-symvers)/Module.symvers
325db747806SYue Maendif
326db747806SYue Ma
3277090c5fdSPrakash Dhavaliinclude $(CLEAR_VARS)
328a2f607aaSJeff Johnson
329a2f607aaSJeff Johnson# Create the module
3307d866f69SYu WangLOCAL_MODULE              := $(WLAN_CHIPSET)_$(LOCAL_DEV_NAME).ko
3316c4599c8SYu WangLOCAL_MODULE_KBUILD_NAME  := $(LOCAL_MOD_NAME).ko
3327090c5fdSPrakash DhavaliLOCAL_MODULE_DEBUG_ENABLE := true
33364271516SSameer Thalappilifeq ($(PRODUCT_VENDOR_MOVE_ENABLED),true)
33464271516SSameer Thalappil    ifeq ($(WIFI_DRIVER_INSTALL_TO_KERNEL_OUT),true)
33564271516SSameer Thalappil        LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT)
33664271516SSameer Thalappil    else
337b4d7b211SSameer Thalappil        LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/lib/modules/$(WLAN_CHIPSET)
33864271516SSameer Thalappil    endif
33964271516SSameer Thalappilelse
3407090c5fdSPrakash Dhavali    LOCAL_MODULE_PATH := $(TARGET_OUT)/lib/modules/$(WLAN_CHIPSET)
34164271516SSameer Thalappilendif
34264271516SSameer Thalappil
343a2f607aaSJeff Johnson# Create wlan_mac.bin symbolic link as part of the module
344a2f607aaSJeff Johnson$(call symlink-file,,$(TARGET_MAC_BIN_PATH)/wlan_mac.bin,$(TARGET_FW_PATH)/wlan_mac.bin)
345a2f607aaSJeff JohnsonLOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_FW_PATH)/wlan_mac.bin
346a2f607aaSJeff Johnson
347a2f607aaSJeff Johnson# Conditionally create module symbolic link
348a2f607aaSJeff Johnsonifneq ($(findstring $(WLAN_CHIPSET),$(WIFI_DRIVER_DEFAULT)),)
349a2f607aaSJeff Johnsonifeq ($(PRODUCT_VENDOR_MOVE_ENABLED),true)
350a2f607aaSJeff Johnsonifneq ($(WIFI_DRIVER_INSTALL_TO_KERNEL_OUT),true)
351a2f607aaSJeff Johnson$(call symlink-file,,$(TARGET_COPY_OUT_VENDOR)/lib/modules/$(WLAN_CHIPSET)/$(LOCAL_MODULE),$(TARGET_OUT_VENDOR)/lib/modules/$(LOCAL_MODULE))
352a2f607aaSJeff JohnsonLOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_VENDOR)/lib/modules/$(LOCAL_MODULE)
353a2f607aaSJeff Johnsonendif
354a2f607aaSJeff Johnsonelse
355a2f607aaSJeff Johnson$(call symlink-file,,/system/lib/modules/$(WLAN_CHIPSET)/$(LOCAL_MODULE),$(TARGET_OUT)/lib/modules/$(LOCAL_MODULE))
356a2f607aaSJeff JohnsonLOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT)/lib/modules/$(LOCAL_MODULE)
357a2f607aaSJeff Johnsonendif
358a2f607aaSJeff Johnsonendif
359a2f607aaSJeff Johnson
360a2f607aaSJeff Johnson# Conditionally create ini symbolic link
361a2f607aaSJeff Johnsonifeq ($(TARGET_BOARD_AUTO),true)
362a2f607aaSJeff Johnson$(call symlink-file,,$(TARGET_CFG_PATH)/WCNSS_qcom_cfg.ini,$(TARGET_FW_PATH)/WCNSS_qcom_cfg.ini)
363a2f607aaSJeff JohnsonLOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_FW_PATH)/WCNSS_qcom_cfg.ini
364a2f607aaSJeff Johnson$(call wlog,"generate soft link because TARGET_BOARD_AUTO true")
365a2f607aaSJeff Johnsonelse
366a2f607aaSJeff Johnsonifneq ($(GENERIC_ODM_IMAGE),true)
367a2f607aaSJeff Johnson$(call symlink-file,,$(TARGET_CFG_PATH)/WCNSS_qcom_cfg.ini,$(TARGET_FW_PATH)/WCNSS_qcom_cfg.ini)
368a2f607aaSJeff JohnsonLOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_FW_PATH)/WCNSS_qcom_cfg.ini
369a2f607aaSJeff Johnson$(call wlog,"generate soft link because GENERIC_ODM_IMAGE not true")
370a2f607aaSJeff Johnsonendif
371a2f607aaSJeff Johnsonendif
372a2f607aaSJeff Johnson
373db747806SYue Ma# Set dependencies so that CNSS family drivers can be compiled ahead.
374db747806SYue Maifneq ($(WLAN_PLATFORM_KBUILD_OPTIONS),)
375db747806SYue MaLOCAL_REQUIRED_MODULES := wlan-platform-module-symvers
376db747806SYue MaLOCAL_ADDITIONAL_DEPENDENCIES += $(call intermediates-dir-for,DLKM,wlan-platform-module-symvers)/Module.symvers
377db747806SYue Maendif
378db747806SYue Ma
3797d2bb431SJeff Johnson$(call wlog,TARGET_USES_KERNEL_PLATFORM=$(TARGET_USES_KERNEL_PLATFORM))
3807d2bb431SJeff Johnsonifeq ($(TARGET_USES_KERNEL_PLATFORM),true)
381d7e399e9SJeff Johnson    include $(DLKM_DIR)/Build_external_kernelmodule.mk
382d7e399e9SJeff Johnsonelse
3837090c5fdSPrakash Dhavali    include $(DLKM_DIR)/AndroidKernelModule.mk
384d7e399e9SJeff Johnsonendif
3857090c5fdSPrakash Dhavali
3866c4599c8SYu Wangendif # Multi-ko check
3877090c5fdSPrakash Dhavaliendif # DLKM check
3887090c5fdSPrakash Dhavaliendif # supported target check
3897090c5fdSPrakash Dhavaliendif # WLAN enabled check
39056a9bf7fSSmita Ghoshendif # ENABLE_QCACLD
391