1*5113495bSYour Name# Android makefile for the WLAN Module 2*5113495bSYour Name 3*5113495bSYour Name# set WLAN_BUILD_DEBUG=y in your environment to enable debug logging 4*5113495bSYour Namedefine wlog 5*5113495bSYour Name$(if $(WLAN_BUILD_DEBUG),$(info $(1))) 6*5113495bSYour Nameendef 7*5113495bSYour Name 8*5113495bSYour Namedefine target_is_dual_wlan 9*5113495bSYour Name$(strip \ 10*5113495bSYour Name $(if $(TARGET_SUPPORT_DUAL_WLAN), \ 11*5113495bSYour Name $(if $(findstring cnss2,$(1)),true,), \ 12*5113495bSYour Name ) \ 13*5113495bSYour Name) 14*5113495bSYour Nameendef 15*5113495bSYour Name 16*5113495bSYour NameLOCAL_MODULE_DDK_BUILD := false 17*5113495bSYour NameLOCAL_MODULE_DDK_ALLOW_UNSAFE_HEADERS := false 18*5113495bSYour Name 19*5113495bSYour Nameifeq ($(TARGET_BOARD_PLATFORM), sun) 20*5113495bSYour NameLOCAL_MODULE_DDK_BUILD := true 21*5113495bSYour NameLOCAL_MODULE_DDK_ALLOW_UNSAFE_HEADERS := true 22*5113495bSYour Nameendif 23*5113495bSYour Nameifeq ($(TARGET_BOARD_PLATFORM), pineapple) 24*5113495bSYour NameLOCAL_MODULE_DDK_BUILD := true 25*5113495bSYour NameLOCAL_MODULE_DDK_ALLOW_UNSAFE_HEADERS := true 26*5113495bSYour Nameendif 27*5113495bSYour Name 28*5113495bSYour Nameifeq ($(TARGET_BOARD_PLATFORM), niobe) 29*5113495bSYour NameLOCAL_MODULE_DDK_BUILD := true 30*5113495bSYour NameLOCAL_MODULE_DDK_ALLOW_UNSAFE_HEADERS := true 31*5113495bSYour Nameendif 32*5113495bSYour Name 33*5113495bSYour Nameifeq ($(TARGET_BOARD_PLATFORM), volcano) 34*5113495bSYour NameLOCAL_MODULE_DDK_BUILD := true 35*5113495bSYour NameLOCAL_MODULE_DDK_ALLOW_UNSAFE_HEADERS := true 36*5113495bSYour Nameendif 37*5113495bSYour Name 38*5113495bSYour Nameifeq ($(TARGET_BOARD_PLATFORM),parrot) 39*5113495bSYour Nameifeq ($(TARGET_BOARD_SUFFIX),66) 40*5113495bSYour NameLOCAL_MODULE_DDK_BUILD := true 41*5113495bSYour NameLOCAL_MODULE_DDK_ALLOW_UNSAFE_HEADERS := true 42*5113495bSYour Nameendif 43*5113495bSYour Nameendif 44*5113495bSYour Name 45*5113495bSYour NameLOCAL_PATH := $(call my-dir) 46*5113495bSYour Name$(call wlog,LOCAL_PATH=$(LOCAL_PATH)) 47*5113495bSYour NameBOARD_OPENSOURCE_DIR ?= vendor/qcom/opensource 48*5113495bSYour Name 49*5113495bSYour NameENABLE_QCACLD := true 50*5113495bSYour Nameifeq ($(TARGET_USES_QMAA), true) 51*5113495bSYour Nameifneq ($(TARGET_USES_QMAA_OVERRIDE_WLAN), true) 52*5113495bSYour NameENABLE_QCACLD := false 53*5113495bSYour Nameelse 54*5113495bSYour NameENABLE_QCACLD := true 55*5113495bSYour Nameendif 56*5113495bSYour Nameendif 57*5113495bSYour Name 58*5113495bSYour Nameifeq ($(BOARD_COMMON_DIR),) 59*5113495bSYour Name BOARD_COMMON_DIR := device/qcom/common 60*5113495bSYour Nameendif 61*5113495bSYour Name 62*5113495bSYour Nameifeq ($(ENABLE_QCACLD), true) 63*5113495bSYour Name 64*5113495bSYour Name# Assume no targets will be supported 65*5113495bSYour NameWLAN_CHIPSET := 66*5113495bSYour Name 67*5113495bSYour Nameifeq ($(BOARD_HAS_QCOM_WLAN), true) 68*5113495bSYour Name 69*5113495bSYour Name# Check if this driver needs be built for current target 70*5113495bSYour Nameifneq ($(findstring qca_cld3,$(WIFI_DRIVER_BUILT)),) 71*5113495bSYour Name WLAN_CHIPSET := qca_cld3 72*5113495bSYour Name WLAN_SELECT := CONFIG_QCA_CLD_WLAN=m 73*5113495bSYour Nameendif 74*5113495bSYour Name 75*5113495bSYour Name# Build/Package only in case of supported target 76*5113495bSYour Nameifneq ($(WLAN_CHIPSET),) 77*5113495bSYour Name 78*5113495bSYour Name# This makefile is only for DLKM 79*5113495bSYour Nameifneq ($(findstring vendor,$(LOCAL_PATH)),) 80*5113495bSYour Name 81*5113495bSYour Nameifneq ($(findstring opensource,$(LOCAL_PATH)),) 82*5113495bSYour Name WLAN_BLD_DIR := $(BOARD_OPENSOURCE_DIR)/wlan 83*5113495bSYour Nameendif # opensource 84*5113495bSYour Name 85*5113495bSYour Name# Multi-ko check 86*5113495bSYour NameLOCAL_DEV_NAME := $(patsubst .%,%,\ 87*5113495bSYour Name $(lastword $(strip $(subst /, ,$(LOCAL_PATH))))) 88*5113495bSYour Name 89*5113495bSYour Name$(call wlog,LOCAL_DEV_NAME=$(LOCAL_DEV_NAME)) 90*5113495bSYour Name$(call wlog,TARGET_WLAN_CHIP=$(TARGET_WLAN_CHIP)) 91*5113495bSYour Name 92*5113495bSYour NameTARGET_WLAN_CHIP ?= wlan 93*5113495bSYour NameLOCAL_MULTI_KO := false 94*5113495bSYour Nameifneq ($(TARGET_WLAN_CHIP), wlan) 95*5113495bSYour Nameifeq ($(LOCAL_DEV_NAME), qcacld-3.0) 96*5113495bSYour NameLOCAL_MULTI_KO := true 97*5113495bSYour Nameendif 98*5113495bSYour Nameendif 99*5113495bSYour Name 100*5113495bSYour Nameifeq ($(LOCAL_MULTI_KO), true) 101*5113495bSYour NameLOCAL_ANDROID_ROOT := $(shell pwd) 102*5113495bSYour NameLOCAL_WLAN_BLD_DIR := $(LOCAL_ANDROID_ROOT)/$(WLAN_BLD_DIR) 103*5113495bSYour Name$(shell `find $(LOCAL_WLAN_BLD_DIR)/qcacld-3.0/ -maxdepth 1 -name '.*' ! -name '.git' -delete`) 104*5113495bSYour Name 105*5113495bSYour Nameifeq ($(LOCAL_MODULE_DDK_BUILD), true) 106*5113495bSYour Nameifeq ($(CHIPSET),) 107*5113495bSYour Name$(foreach chip, $(TARGET_WLAN_CHIP),\ 108*5113495bSYour Name $(eval CHIPSET := $(chip))\ 109*5113495bSYour Name $(eval include $(LOCAL_PATH)/Android.mk)) 110*5113495bSYour Nameelse 111*5113495bSYour Name# DLKM_DIR was moved for JELLY_BEAN (PLATFORM_SDK 16) 112*5113495bSYour NameBAZEL_CHIPSET_NAME := $(subst _,-,$(CHIPSET)) 113*5113495bSYour Nameifeq ($(call is-platform-sdk-version-at-least,16),true) 114*5113495bSYour Name DLKM_DIR := $(TOP)/$(BOARD_COMMON_DIR)/dlkm 115*5113495bSYour Nameelse 116*5113495bSYour Name DLKM_DIR := build/dlkm 117*5113495bSYour Nameendif # platform-sdk-version 118*5113495bSYour Name 119*5113495bSYour Nameinclude $(CLEAR_VARS) 120*5113495bSYour NameLOCAL_MOD_NAME := wlan 121*5113495bSYour NameLOCAL_MODULE := qca_cld3_$(CHIPSET).ko 122*5113495bSYour NameLOCAL_MODULE_KBUILD_NAME := qca_cld3_$(CHIPSET).ko 123*5113495bSYour NameLOCAL_MODULE_DEBUG_ENABLE := true 124*5113495bSYour NameLOCAL_MODULE_DDK_SUBTARGET_REGEX := "all.*" 125*5113495bSYour Nameifeq ($(PRODUCT_VENDOR_MOVE_ENABLED),true) 126*5113495bSYour Name ifeq ($(WIFI_DRIVER_INSTALL_TO_KERNEL_OUT),true) 127*5113495bSYour Name LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT) 128*5113495bSYour Name else 129*5113495bSYour Name LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/lib/modules/$(WLAN_CHIPSET) 130*5113495bSYour Name endif 131*5113495bSYour Nameelse 132*5113495bSYour Name LOCAL_MODULE_PATH := $(TARGET_OUT)/lib/modules/$(WLAN_CHIPSET) 133*5113495bSYour Nameendif 134*5113495bSYour Name 135*5113495bSYour Name 136*5113495bSYour NameLOCAL_DEV_NAME := $(CHIPSET) 137*5113495bSYour NameLOCAL_CHIP_NAME := $(LOCAL_DEV_NAME) 138*5113495bSYour NameTARGET_MAC_BIN_PATH := /mnt/vendor/persist/$(LOCAL_CHIP_NAME) 139*5113495bSYour NameTARGET_FW_DIR := firmware/wlan/qca_cld/$(LOCAL_CHIP_NAME) 140*5113495bSYour NameTARGET_CFG_PATH := /vendor/etc/wifi/$(LOCAL_CHIP_NAME) 141*5113495bSYour NameTARGET_MAC_BIN_PATH := /mnt/vendor/persist/$(LOCAL_CHIP_NAME) 142*5113495bSYour Name 143*5113495bSYour Nameifeq ($(PRODUCT_VENDOR_MOVE_ENABLED),true) 144*5113495bSYour NameTARGET_FW_PATH := $(TARGET_OUT_VENDOR)/$(TARGET_FW_DIR) 145*5113495bSYour Nameelse 146*5113495bSYour NameTARGET_FW_PATH := $(TARGET_OUT_ETC)/$(TARGET_FW_DIR) 147*5113495bSYour Nameendif 148*5113495bSYour Name 149*5113495bSYour Name# Create wlan_mac.bin symbolic link as part of the module 150*5113495bSYour Name$(call symlink-file,,$(TARGET_MAC_BIN_PATH)/wlan_mac.bin,$(TARGET_FW_PATH)/wlan_mac.bin) 151*5113495bSYour NameLOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_FW_PATH)/wlan_mac.bin 152*5113495bSYour Name 153*5113495bSYour Name# Conditionally create module symbolic link 154*5113495bSYour Nameifneq ($(findstring $(WLAN_CHIPSET),$(WIFI_DRIVER_DEFAULT)),) 155*5113495bSYour Nameifeq ($(PRODUCT_VENDOR_MOVE_ENABLED),true) 156*5113495bSYour Nameifneq ($(WIFI_DRIVER_INSTALL_TO_KERNEL_OUT),true) 157*5113495bSYour Name$(call symlink-file,,$(TARGET_COPY_OUT_VENDOR)/lib/modules/$(WLAN_CHIPSET)/$(LOCAL_MODULE),$(TARGET_OUT_VENDOR)/lib/modules/$(LOCAL_MODULE)) 158*5113495bSYour NameLOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_VENDOR)/lib/modules/$(LOCAL_MODULE) 159*5113495bSYour Nameendif 160*5113495bSYour Nameelse 161*5113495bSYour Name$(call symlink-file,,/system/lib/modules/$(WLAN_CHIPSET)/$(LOCAL_MODULE),$(TARGET_OUT)/lib/modules/$(LOCAL_MODULE)) 162*5113495bSYour NameLOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT)/lib/modules/$(LOCAL_MODULE) 163*5113495bSYour Nameendif 164*5113495bSYour Nameendif 165*5113495bSYour Name 166*5113495bSYour Name# Conditionally create ini symbolic link 167*5113495bSYour Nameifeq ($(TARGET_BOARD_AUTO),true) 168*5113495bSYour Name$(call symlink-file,,$(TARGET_CFG_PATH)/WCNSS_qcom_cfg.ini,$(TARGET_FW_PATH)/WCNSS_qcom_cfg.ini) 169*5113495bSYour NameLOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_FW_PATH)/WCNSS_qcom_cfg.ini 170*5113495bSYour Name$(call wlog,"generate soft link because TARGET_BOARD_AUTO true") 171*5113495bSYour Nameelse 172*5113495bSYour Nameifneq ($(GENERIC_ODM_IMAGE),true) 173*5113495bSYour Name$(call symlink-file,,$(TARGET_CFG_PATH)/WCNSS_qcom_cfg.ini,$(TARGET_FW_PATH)/WCNSS_qcom_cfg.ini) 174*5113495bSYour NameLOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_FW_PATH)/WCNSS_qcom_cfg.ini 175*5113495bSYour Name$(call wlog,"generate soft link because GENERIC_ODM_IMAGE not true") 176*5113495bSYour Nameendif 177*5113495bSYour Nameendif 178*5113495bSYour Name 179*5113495bSYour Name# Set dependencies so that CNSS family drivers can be compiled ahead. 180*5113495bSYour Nameifneq ($(WLAN_PLATFORM_KBUILD_OPTIONS),) 181*5113495bSYour NameLOCAL_REQUIRED_MODULES := wlan-platform-module-symvers 182*5113495bSYour NameLOCAL_ADDITIONAL_DEPENDENCIES += $(call intermediates-dir-for,DLKM,wlan-platform-module-symvers)/Module.symvers 183*5113495bSYour Nameendif 184*5113495bSYour Name 185*5113495bSYour Name$(call wlog,TARGET_USES_KERNEL_PLATFORM=$(TARGET_USES_KERNEL_PLATFORM)) 186*5113495bSYour Nameifeq ($(TARGET_USES_KERNEL_PLATFORM),true) 187*5113495bSYour Name include $(DLKM_DIR)/Build_external_kernelmodule.mk 188*5113495bSYour Nameelse 189*5113495bSYour Name include $(DLKM_DIR)/AndroidKernelModule.mk 190*5113495bSYour Nameendif 191*5113495bSYour Nameendif 192*5113495bSYour Nameelse 193*5113495bSYour Name$(foreach chip, $(TARGET_WLAN_CHIP), \ 194*5113495bSYour Name $(shell ln -sf . $(LOCAL_WLAN_BLD_DIR)/qcacld-3.0/.$(chip))) 195*5113495bSYour Nameinclude $(foreach chip, $(TARGET_WLAN_CHIP), $(LOCAL_PATH)/.$(chip)/Android.mk) 196*5113495bSYour Nameendif 197*5113495bSYour Name 198*5113495bSYour Nameelse # Multi-ok check 199*5113495bSYour Name 200*5113495bSYour Name# When dual wlan enabled, secondary dev name would be $(chip)_cnss2. 201*5113495bSYour Name# Use LOCAL_CHIP_NAME instead of LOCAL_DEV_NAME for secondary one. 202*5113495bSYour NameLOCAL_CHIP_NAME := $(LOCAL_DEV_NAME) 203*5113495bSYour NameTARGET_SECONDARY_WLAN := $(call target_is_dual_wlan,$(LOCAL_DEV_NAME)) 204*5113495bSYour Nameifeq ($(TARGET_SECONDARY_WLAN), true) 205*5113495bSYour NameLOCAL_CHIP_NAME := $(patsubst %_cnss2,%,$(strip $(LOCAL_DEV_NAME))) 206*5113495bSYour Nameendif 207*5113495bSYour Name 208*5113495bSYour Nameifeq ($(WLAN_PROFILE),) 209*5113495bSYour NameWLAN_PROFILE := default 210*5113495bSYour Nameendif 211*5113495bSYour Name 212*5113495bSYour Nameifeq ($(LOCAL_DEV_NAME), qcacld-3.0) 213*5113495bSYour Name 214*5113495bSYour NameLOCAL_DEV_NAME := wlan 215*5113495bSYour NameLOCAL_MOD_NAME := wlan 216*5113495bSYour NameLOCAL_SRC_DIR := 217*5113495bSYour NameTARGET_FW_DIR := firmware/wlan/qca_cld 218*5113495bSYour NameTARGET_CFG_PATH := /vendor/etc/wifi 219*5113495bSYour NameTARGET_MAC_BIN_PATH := /mnt/vendor/persist 220*5113495bSYour Name 221*5113495bSYour Nameelse 222*5113495bSYour Name 223*5113495bSYour NameLOCAL_SRC_DIR := .$(LOCAL_DEV_NAME) 224*5113495bSYour Name# Use default profile if WLAN_CFG_USE_DEFAULT defined. 225*5113495bSYour Nameifeq ($(WLAN_CFG_USE_DEFAULT),) 226*5113495bSYour NameWLAN_PROFILE := $(LOCAL_CHIP_NAME) 227*5113495bSYour Nameendif 228*5113495bSYour NameTARGET_FW_DIR := firmware/wlan/qca_cld/$(LOCAL_CHIP_NAME) 229*5113495bSYour NameTARGET_CFG_PATH := /vendor/etc/wifi/$(LOCAL_CHIP_NAME) 230*5113495bSYour NameTARGET_MAC_BIN_PATH := /mnt/vendor/persist/$(LOCAL_CHIP_NAME) 231*5113495bSYour Name 232*5113495bSYour Nameifneq ($(TARGET_MULTI_WLAN), true) 233*5113495bSYour NameLOCAL_MOD_NAME := wlan 234*5113495bSYour NameDYNAMIC_SINGLE_CHIP := $(LOCAL_DEV_NAME) 235*5113495bSYour Nameelse 236*5113495bSYour NameLOCAL_MOD_NAME := $(LOCAL_DEV_NAME) 237*5113495bSYour Nameendif 238*5113495bSYour Name 239*5113495bSYour Nameifeq ($(TARGET_SECONDARY_WLAN), true) 240*5113495bSYour NameTARGET_SECONDARY_WLAN_NUMBER := 2 241*5113495bSYour NameLOCAL_MOD_NAME := $(LOCAL_CHIP_NAME)_$(TARGET_SECONDARY_WLAN_NUMBER) 242*5113495bSYour NameDYNAMIC_SINGLE_CHIP := $(LOCAL_CHIP_NAME) 243*5113495bSYour Nameendif 244*5113495bSYour Name 245*5113495bSYour Nameendif 246*5113495bSYour Name 247*5113495bSYour Name# DLKM_DIR was moved for JELLY_BEAN (PLATFORM_SDK 16) 248*5113495bSYour Nameifeq ($(call is-platform-sdk-version-at-least,16),true) 249*5113495bSYour Name DLKM_DIR := $(TOP)/$(BOARD_COMMON_DIR)/dlkm 250*5113495bSYour Nameelse 251*5113495bSYour Name DLKM_DIR := build/dlkm 252*5113495bSYour Nameendif # platform-sdk-version 253*5113495bSYour Name 254*5113495bSYour Name# Build wlan.ko as $(WLAN_CHIPSET)_wlan.ko 255*5113495bSYour Name########################################################### 256*5113495bSYour Name# This is set once per LOCAL_PATH, not per (kernel) module 257*5113495bSYour NameKBUILD_OPTIONS := WLAN_ROOT=$(WLAN_BLD_DIR)/qcacld-3.0/$(LOCAL_SRC_DIR) 258*5113495bSYour NameKBUILD_OPTIONS += WLAN_COMMON_ROOT=cmn 259*5113495bSYour NameKBUILD_OPTIONS += WLAN_COMMON_INC=$(WLAN_BLD_DIR)/qcacld-3.0/cmn 260*5113495bSYour NameKBUILD_OPTIONS += WLAN_FW_API=$(WLAN_BLD_DIR)/fw-api 261*5113495bSYour NameKBUILD_OPTIONS += WLAN_PROFILE=$(WLAN_PROFILE) 262*5113495bSYour NameKBUILD_OPTIONS += DYNAMIC_SINGLE_CHIP=$(DYNAMIC_SINGLE_CHIP) 263*5113495bSYour Name 264*5113495bSYour Name# We are actually building wlan.ko here, as per the 265*5113495bSYour Name# requirement we are specifying <chipset>_wlan.ko as LOCAL_MODULE. 266*5113495bSYour Name# This means we need to rename the module to <chipset>_wlan.ko 267*5113495bSYour Name# after wlan.ko is built. 268*5113495bSYour NameKBUILD_OPTIONS += MODNAME=$(LOCAL_MOD_NAME) 269*5113495bSYour NameKBUILD_OPTIONS += DEVNAME=$(LOCAL_DEV_NAME) 270*5113495bSYour NameKBUILD_OPTIONS += BOARD_PLATFORM=$(TARGET_BOARD_PLATFORM) 271*5113495bSYour NameKBUILD_OPTIONS += $(WLAN_SELECT) 272*5113495bSYour Name 273*5113495bSYour NameKBUILD_REQUIRED_KOS := ipam.ko 274*5113495bSYour Name 275*5113495bSYour Nameifneq ($(WLAN_CFG_OVERRIDE_$(LOCAL_DEV_NAME)),) 276*5113495bSYour NameKBUILD_OPTIONS += WLAN_CFG_OVERRIDE="$(WLAN_CFG_OVERRIDE_$(LOCAL_DEV_NAME))" 277*5113495bSYour Nameendif 278*5113495bSYour Name 279*5113495bSYour Name# driver expects "/dev/<name>" for wifi driver state ctrl parameter. 280*5113495bSYour Name# i.e. WIFI_DRIVER_STATE_CTRL_PARAM="/dev/wlan" is defined for single wlan. 281*5113495bSYour Name# WIFI_DRIVER_STATE_CTRL_PARAM_SECONDARY="/dev/wlan2" is defined for 2nd wlan. 282*5113495bSYour Nameifeq ($(TARGET_SECONDARY_WLAN), true) 283*5113495bSYour Name$(call wlog,STATE_CTRL_PARAM_SECONDARY=$(WIFI_DRIVER_STATE_CTRL_PARAM_SECONDARY)) 284*5113495bSYour NamePARAM_SECONDARY := $(patsubst "%",%,$(WIFI_DRIVER_STATE_CTRL_PARAM_SECONDARY)) 285*5113495bSYour Name$(call wlog,PARAM_SECONDARY=$(PARAM_SECONDARY)) 286*5113495bSYour Nameifeq ($(dir $(PARAM_SECONDARY)),/dev/) 287*5113495bSYour NameKBUILD_OPTIONS += WLAN_CTRL_NAME=$(notdir $(PARAM_SECONDARY)) 288*5113495bSYour Nameendif 289*5113495bSYour Nameelse 290*5113495bSYour Name$(call wlog,WIFI_DRIVER_STATE_CTRL_PARAM=$(WIFI_DRIVER_STATE_CTRL_PARAM)) 291*5113495bSYour NamePARAM := $(patsubst "%",%,$(WIFI_DRIVER_STATE_CTRL_PARAM)) 292*5113495bSYour Name$(call wlog,PARAM=$(PARAM)) 293*5113495bSYour Nameifeq ($(dir $(PARAM)),/dev/) 294*5113495bSYour NameKBUILD_OPTIONS += WLAN_CTRL_NAME=$(notdir $(PARAM)) 295*5113495bSYour Nameendif 296*5113495bSYour Nameendif 297*5113495bSYour Name 298*5113495bSYour Name# Pass build options per chip to Kbuild. This will be injected from upper layer 299*5113495bSYour Name# makefile. 300*5113495bSYour Name# 301*5113495bSYour Name# e.g. 302*5113495bSYour Name# WLAN_KBUILD_OPTIONS_qca6390 := CONFIG_CNSS_QCA6390=y 303*5113495bSYour Nameifneq ($(WLAN_KBUILD_OPTIONS_$(LOCAL_DEV_NAME)),) 304*5113495bSYour NameKBUILD_OPTIONS += "$(WLAN_KBUILD_OPTIONS_$(LOCAL_DEV_NAME))" 305*5113495bSYour Nameendif 306*5113495bSYour Name 307*5113495bSYour Nameifeq ($(PRODUCT_VENDOR_MOVE_ENABLED),true) 308*5113495bSYour NameTARGET_FW_PATH := $(TARGET_OUT_VENDOR)/$(TARGET_FW_DIR) 309*5113495bSYour Nameelse 310*5113495bSYour NameTARGET_FW_PATH := $(TARGET_OUT_ETC)/$(TARGET_FW_DIR) 311*5113495bSYour Nameendif 312*5113495bSYour Name 313*5113495bSYour Name# WLAN_PLATFORM_KBUILD_OPTIONS should be passed from upper level Makefiles 314*5113495bSYour Name# like wlan.mk. It indicates sources of CNSS family drivers (cnss2, cnss_nl, 315*5113495bSYour Name# cnss_prealloc and cnss_utils etc.) are built out of kernel tree and it 316*5113495bSYour Name# should also include all necessary config flags (e.g. CONFIG_CNSS2) which 317*5113495bSYour Name# are originally defined from kernel Kconfig/defconfig. KBUILD_EXTRA_SYMBOLS 318*5113495bSYour Name# is also needed to indicate all the symbols from these drivers. 319*5113495bSYour Nameifneq ($(WLAN_PLATFORM_KBUILD_OPTIONS),) 320*5113495bSYour NameKBUILD_OPTIONS += $(foreach wlan_platform_kbuild_option, \ 321*5113495bSYour Name $(WLAN_PLATFORM_KBUILD_OPTIONS), \ 322*5113495bSYour Name $(wlan_platform_kbuild_option)) 323*5113495bSYour Name 324*5113495bSYour NameKBUILD_OPTIONS += KBUILD_EXTRA_SYMBOLS+=$(shell pwd)/$(call intermediates-dir-for,DLKM,wlan-platform-module-symvers)/Module.symvers 325*5113495bSYour Nameendif 326*5113495bSYour Name 327*5113495bSYour Nameinclude $(CLEAR_VARS) 328*5113495bSYour Name 329*5113495bSYour Name# Create the module 330*5113495bSYour NameLOCAL_MODULE := $(WLAN_CHIPSET)_$(LOCAL_DEV_NAME).ko 331*5113495bSYour NameLOCAL_MODULE_KBUILD_NAME := $(LOCAL_MOD_NAME).ko 332*5113495bSYour NameLOCAL_MODULE_DEBUG_ENABLE := true 333*5113495bSYour Nameifeq ($(PRODUCT_VENDOR_MOVE_ENABLED),true) 334*5113495bSYour Name ifeq ($(WIFI_DRIVER_INSTALL_TO_KERNEL_OUT),true) 335*5113495bSYour Name LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT) 336*5113495bSYour Name else 337*5113495bSYour Name LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/lib/modules/$(WLAN_CHIPSET) 338*5113495bSYour Name endif 339*5113495bSYour Nameelse 340*5113495bSYour Name LOCAL_MODULE_PATH := $(TARGET_OUT)/lib/modules/$(WLAN_CHIPSET) 341*5113495bSYour Nameendif 342*5113495bSYour Name 343*5113495bSYour Name# Create wlan_mac.bin symbolic link as part of the module 344*5113495bSYour Name$(call symlink-file,,$(TARGET_MAC_BIN_PATH)/wlan_mac.bin,$(TARGET_FW_PATH)/wlan_mac.bin) 345*5113495bSYour NameLOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_FW_PATH)/wlan_mac.bin 346*5113495bSYour Name 347*5113495bSYour Name# Conditionally create module symbolic link 348*5113495bSYour Nameifneq ($(findstring $(WLAN_CHIPSET),$(WIFI_DRIVER_DEFAULT)),) 349*5113495bSYour Nameifeq ($(PRODUCT_VENDOR_MOVE_ENABLED),true) 350*5113495bSYour Nameifneq ($(WIFI_DRIVER_INSTALL_TO_KERNEL_OUT),true) 351*5113495bSYour Name$(call symlink-file,,$(TARGET_COPY_OUT_VENDOR)/lib/modules/$(WLAN_CHIPSET)/$(LOCAL_MODULE),$(TARGET_OUT_VENDOR)/lib/modules/$(LOCAL_MODULE)) 352*5113495bSYour NameLOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_VENDOR)/lib/modules/$(LOCAL_MODULE) 353*5113495bSYour Nameendif 354*5113495bSYour Nameelse 355*5113495bSYour Name$(call symlink-file,,/system/lib/modules/$(WLAN_CHIPSET)/$(LOCAL_MODULE),$(TARGET_OUT)/lib/modules/$(LOCAL_MODULE)) 356*5113495bSYour NameLOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT)/lib/modules/$(LOCAL_MODULE) 357*5113495bSYour Nameendif 358*5113495bSYour Nameendif 359*5113495bSYour Name 360*5113495bSYour Name# Conditionally create ini symbolic link 361*5113495bSYour Nameifeq ($(TARGET_BOARD_AUTO),true) 362*5113495bSYour Name$(call symlink-file,,$(TARGET_CFG_PATH)/WCNSS_qcom_cfg.ini,$(TARGET_FW_PATH)/WCNSS_qcom_cfg.ini) 363*5113495bSYour NameLOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_FW_PATH)/WCNSS_qcom_cfg.ini 364*5113495bSYour Name$(call wlog,"generate soft link because TARGET_BOARD_AUTO true") 365*5113495bSYour Nameelse 366*5113495bSYour Nameifneq ($(GENERIC_ODM_IMAGE),true) 367*5113495bSYour Name$(call symlink-file,,$(TARGET_CFG_PATH)/WCNSS_qcom_cfg.ini,$(TARGET_FW_PATH)/WCNSS_qcom_cfg.ini) 368*5113495bSYour NameLOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_FW_PATH)/WCNSS_qcom_cfg.ini 369*5113495bSYour Name$(call wlog,"generate soft link because GENERIC_ODM_IMAGE not true") 370*5113495bSYour Nameendif 371*5113495bSYour Nameendif 372*5113495bSYour Name 373*5113495bSYour Name# Set dependencies so that CNSS family drivers can be compiled ahead. 374*5113495bSYour Nameifneq ($(WLAN_PLATFORM_KBUILD_OPTIONS),) 375*5113495bSYour NameLOCAL_REQUIRED_MODULES := wlan-platform-module-symvers 376*5113495bSYour NameLOCAL_ADDITIONAL_DEPENDENCIES += $(call intermediates-dir-for,DLKM,wlan-platform-module-symvers)/Module.symvers 377*5113495bSYour Nameendif 378*5113495bSYour Name 379*5113495bSYour Name$(call wlog,TARGET_USES_KERNEL_PLATFORM=$(TARGET_USES_KERNEL_PLATFORM)) 380*5113495bSYour Nameifeq ($(TARGET_USES_KERNEL_PLATFORM),true) 381*5113495bSYour Name include $(DLKM_DIR)/Build_external_kernelmodule.mk 382*5113495bSYour Nameelse 383*5113495bSYour Name include $(DLKM_DIR)/AndroidKernelModule.mk 384*5113495bSYour Nameendif 385*5113495bSYour Name 386*5113495bSYour Nameendif # Multi-ko check 387*5113495bSYour Nameendif # DLKM check 388*5113495bSYour Nameendif # supported target check 389*5113495bSYour Nameendif # WLAN enabled check 390*5113495bSYour Nameendif # ENABLE_QCACLD 391