Browse Source

qcacld-3.0: add support for dual wlan modules on Android platform

Update Android makefile to support dual wlan driver modules.
Define the secondary wlan chip with postfix string "cnss2".
Use different wlan ctrl name parameter for secondary wlan module.

Change-Id: I62fd7f258b3b8944e2b731d00d413d7a1a0d4290
CRs-Fixed: 3248293
Zhaoyang Liu 2 years ago
parent
commit
7eea98dc03
3 changed files with 39 additions and 5 deletions
  1. 1 0
      .qca6390_cnss2
  2. 1 0
      .qca6490_cnss2
  3. 37 5
      Android.mk

+ 1 - 0
.qca6390_cnss2

@@ -0,0 +1 @@
+.

+ 1 - 0
.qca6490_cnss2

@@ -0,0 +1 @@
+.

+ 37 - 5
Android.mk

@@ -5,6 +5,14 @@ define wlog
 $(if $(WLAN_BUILD_DEBUG),$(info $(1)))
 endef
 
+define target_is_dual_wlan
+$(strip \
+  $(if $(TARGET_SUPPORT_DUAL_WLAN), \
+     $(if $(findstring cnss2,$(1)),true,), \
+  ) \
+)
+endef
+
 LOCAL_PATH := $(call my-dir)
 $(call wlog,LOCAL_PATH=$(LOCAL_PATH))
 
@@ -65,6 +73,14 @@ include $(foreach chip, $(TARGET_WLAN_CHIP), $(LOCAL_PATH)/.$(chip)/Android.mk)
 
 else # Multi-ok check
 
+# When dual wlan enabled, secondary dev name would be $(chip)_cnss2.
+# Use LOCAL_CHIP_NAME instead of LOCAL_DEV_NAME for secondary one.
+LOCAL_CHIP_NAME := $(LOCAL_DEV_NAME)
+TARGET_SECONDARY_WLAN := $(call target_is_dual_wlan,$(LOCAL_DEV_NAME))
+ifeq ($(TARGET_SECONDARY_WLAN), true)
+LOCAL_CHIP_NAME := $(patsubst %_cnss2,%,$(strip $(LOCAL_DEV_NAME)))
+endif
+
 ifeq ($(WLAN_PROFILE),)
 WLAN_PROFILE := default
 endif
@@ -83,11 +99,11 @@ else
 LOCAL_SRC_DIR := .$(LOCAL_DEV_NAME)
 # Use default profile if WLAN_CFG_USE_DEFAULT defined.
 ifeq ($(WLAN_CFG_USE_DEFAULT),)
-WLAN_PROFILE := $(LOCAL_DEV_NAME)
+WLAN_PROFILE := $(LOCAL_CHIP_NAME)
 endif
-TARGET_FW_DIR := firmware/wlan/qca_cld/$(LOCAL_DEV_NAME)
-TARGET_CFG_PATH := /vendor/etc/wifi/$(LOCAL_DEV_NAME)
-TARGET_MAC_BIN_PATH := /mnt/vendor/persist/$(LOCAL_DEV_NAME)
+TARGET_FW_DIR := firmware/wlan/qca_cld/$(LOCAL_CHIP_NAME)
+TARGET_CFG_PATH := /vendor/etc/wifi/$(LOCAL_CHIP_NAME)
+TARGET_MAC_BIN_PATH := /mnt/vendor/persist/$(LOCAL_CHIP_NAME)
 
 ifneq ($(TARGET_MULTI_WLAN), true)
 LOCAL_MOD_NAME := wlan
@@ -96,6 +112,11 @@ else
 LOCAL_MOD_NAME := $(LOCAL_DEV_NAME)
 endif
 
+ifeq ($(TARGET_SECONDARY_WLAN), true)
+LOCAL_MOD_NAME := $(LOCAL_CHIP_NAME)
+DYNAMIC_SINGLE_CHIP := $(LOCAL_CHIP_NAME)
+endif
+
 endif
 
 # DLKM_DIR was moved for JELLY_BEAN (PLATFORM_SDK 16)
@@ -128,13 +149,24 @@ ifneq ($(WLAN_CFG_OVERRIDE_$(LOCAL_DEV_NAME)),)
 KBUILD_OPTIONS += WLAN_CFG_OVERRIDE="$(WLAN_CFG_OVERRIDE_$(LOCAL_DEV_NAME))"
 endif
 
-# driver expects "/dev/<name>" for WIFI_DRIVER_STATE_CTRL_PARAM
+# driver expects "/dev/<name>" for wifi driver state ctrl parameter.
+# i.e. WIFI_DRIVER_STATE_CTRL_PARAM="/dev/wlan" is defined for single wlan.
+# WIFI_DRIVER_STATE_CTRL_PARAM_SECONDARY="/dev/wlan2" is defined for 2nd wlan.
+ifeq ($(TARGET_SECONDARY_WLAN), true)
+$(call wlog,STATE_CTRL_PARAM_SECONDARY=$(WIFI_DRIVER_STATE_CTRL_PARAM_SECONDARY))
+PARAM_SECONDARY := $(patsubst "%",%,$(WIFI_DRIVER_STATE_CTRL_PARAM_SECONDARY))
+$(call wlog,PARAM_SECONDARY=$(PARAM_SECONDARY))
+ifeq ($(dir $(PARAM_SECONDARY)),/dev/)
+KBUILD_OPTIONS += WLAN_CTRL_NAME=$(notdir $(PARAM_SECONDARY))
+endif
+else
 $(call wlog,WIFI_DRIVER_STATE_CTRL_PARAM=$(WIFI_DRIVER_STATE_CTRL_PARAM))
 PARAM := $(patsubst "%",%,$(WIFI_DRIVER_STATE_CTRL_PARAM))
 $(call wlog,PARAM=$(PARAM))
 ifeq ($(dir $(PARAM)),/dev/)
 KBUILD_OPTIONS += WLAN_CTRL_NAME=$(notdir $(PARAM))
 endif
+endif
 
 # Pass build options per chip to Kbuild. This will be injected from upper layer
 # makefile.