Ver Fonte

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 há 2 anos atrás
pai
commit
7eea98dc03
3 ficheiros alterados com 39 adições e 5 exclusões
  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)))
 $(if $(WLAN_BUILD_DEBUG),$(info $(1)))
 endef
 endef
 
 
+define target_is_dual_wlan
+$(strip \
+  $(if $(TARGET_SUPPORT_DUAL_WLAN), \
+     $(if $(findstring cnss2,$(1)),true,), \
+  ) \
+)
+endef
+
 LOCAL_PATH := $(call my-dir)
 LOCAL_PATH := $(call my-dir)
 $(call wlog,LOCAL_PATH=$(LOCAL_PATH))
 $(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
 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),)
 ifeq ($(WLAN_PROFILE),)
 WLAN_PROFILE := default
 WLAN_PROFILE := default
 endif
 endif
@@ -83,11 +99,11 @@ else
 LOCAL_SRC_DIR := .$(LOCAL_DEV_NAME)
 LOCAL_SRC_DIR := .$(LOCAL_DEV_NAME)
 # Use default profile if WLAN_CFG_USE_DEFAULT defined.
 # Use default profile if WLAN_CFG_USE_DEFAULT defined.
 ifeq ($(WLAN_CFG_USE_DEFAULT),)
 ifeq ($(WLAN_CFG_USE_DEFAULT),)
-WLAN_PROFILE := $(LOCAL_DEV_NAME)
+WLAN_PROFILE := $(LOCAL_CHIP_NAME)
 endif
 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)
 ifneq ($(TARGET_MULTI_WLAN), true)
 LOCAL_MOD_NAME := wlan
 LOCAL_MOD_NAME := wlan
@@ -96,6 +112,11 @@ else
 LOCAL_MOD_NAME := $(LOCAL_DEV_NAME)
 LOCAL_MOD_NAME := $(LOCAL_DEV_NAME)
 endif
 endif
 
 
+ifeq ($(TARGET_SECONDARY_WLAN), true)
+LOCAL_MOD_NAME := $(LOCAL_CHIP_NAME)
+DYNAMIC_SINGLE_CHIP := $(LOCAL_CHIP_NAME)
+endif
+
 endif
 endif
 
 
 # DLKM_DIR was moved for JELLY_BEAN (PLATFORM_SDK 16)
 # 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))"
 KBUILD_OPTIONS += WLAN_CFG_OVERRIDE="$(WLAN_CFG_OVERRIDE_$(LOCAL_DEV_NAME))"
 endif
 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))
 $(call wlog,WIFI_DRIVER_STATE_CTRL_PARAM=$(WIFI_DRIVER_STATE_CTRL_PARAM))
 PARAM := $(patsubst "%",%,$(WIFI_DRIVER_STATE_CTRL_PARAM))
 PARAM := $(patsubst "%",%,$(WIFI_DRIVER_STATE_CTRL_PARAM))
 $(call wlog,PARAM=$(PARAM))
 $(call wlog,PARAM=$(PARAM))
 ifeq ($(dir $(PARAM)),/dev/)
 ifeq ($(dir $(PARAM)),/dev/)
 KBUILD_OPTIONS += WLAN_CTRL_NAME=$(notdir $(PARAM))
 KBUILD_OPTIONS += WLAN_CTRL_NAME=$(notdir $(PARAM))
 endif
 endif
+endif
 
 
 # Pass build options per chip to Kbuild. This will be injected from upper layer
 # Pass build options per chip to Kbuild. This will be injected from upper layer
 # makefile.
 # makefile.