wlan: Memory map change for 8x16 target
wcnss base address for 8x16 target is different then other target
use wcnss base addres which is pass by platform driver instead of
using hard coded wcnss base address.
Change-Id: I048235e9f1669da2dcaa496eae41efc919bbfdfa
CRs-fixed: 627151
diff --git a/Android.mk b/Android.mk
index 845ef6b..1a40144 100644
--- a/Android.mk
+++ b/Android.mk
@@ -4,13 +4,13 @@
WLAN_CHIPSET :=
# Build/Package options for 8960 target
-ifeq ($(TARGET_BOARD_PLATFORM),msm8960)
+ifeq ($(call is-board-platform,msm8960),true)
WLAN_CHIPSET := prima
WLAN_SELECT := CONFIG_PRIMA_WLAN=m
endif
# Build/Package options for 8974, 8226, 8610 targets
-ifneq (,$(filter msm8974 msm8226 msm8610,$(TARGET_BOARD_PLATFORM)))
+ifeq ($(call is-board-platform-in-list,msm8916 msm8974 msm8226 msm8610),true)
WLAN_CHIPSET := pronto
WLAN_SELECT := CONFIG_PRONTO_WLAN=m
endif
@@ -31,13 +31,13 @@
endif
ifeq ($(WLAN_PROPRIETARY),1)
- WLAN_BLD_DIR := vendor/qcom/proprietary/wlan
+ WLAN_BLD_DIR := vendor/qcom/proprietary/wlan-noship
else
WLAN_BLD_DIR := vendor/qcom/opensource/wlan
endif
# DLKM_DIR was moved for JELLY_BEAN (PLATFORM_SDK 16)
-ifeq (1,$(filter 1,$(shell echo "$$(( $(PLATFORM_SDK_VERSION) >= 16 ))" )))
+ifeq ($(call is-platform-sdk-version-at-least,16),true)
DLKM_DIR := $(TOP)/device/qcom/common/dlkm
else
DLKM_DIR := build/dlkm
@@ -90,24 +90,15 @@
KBUILD_OPTIONS += BOARD_PLATFORM=$(TARGET_BOARD_PLATFORM)
KBUILD_OPTIONS += $(WLAN_SELECT)
-
-VERSION=$(shell grep -w "VERSION =" $(TOP)/kernel/Makefile | sed 's/^VERSION = //' )
-PATCHLEVEL=$(shell grep -w "PATCHLEVEL =" $(TOP)/kernel/Makefile | sed 's/^PATCHLEVEL = //' )
-
include $(CLEAR_VARS)
-LOCAL_MODULE := $(WLAN_CHIPSET)_wlan.ko
+LOCAL_MODULE := proprietary_$(WLAN_CHIPSET)_wlan.ko
LOCAL_MODULE_KBUILD_NAME := wlan.ko
-LOCAL_MODULE_TAGS := debug
+LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_DEBUG_ENABLE := true
LOCAL_MODULE_PATH := $(TARGET_OUT)/lib/modules/$(WLAN_CHIPSET)
include $(DLKM_DIR)/AndroidKernelModule.mk
###########################################################
-#Create symbolic link
-$(shell mkdir -p $(TARGET_OUT)/lib/modules; \
- ln -sf /system/lib/modules/$(WLAN_CHIPSET)/$(WLAN_CHIPSET)_wlan.ko \
- $(TARGET_OUT)/lib/modules/wlan.ko)
-
endif # DLKM check
endif # supported target check
diff --git a/CORE/DXE/src/wlan_qct_dxe_i.h b/CORE/DXE/src/wlan_qct_dxe_i.h
index 4656b4b..79a9b29 100644
--- a/CORE/DXE/src/wlan_qct_dxe_i.h
+++ b/CORE/DXE/src/wlan_qct_dxe_i.h
@@ -80,29 +80,19 @@
/* Start with base address */
#ifdef WCN_PRONTO
-#define WLANDXE_CCU_DXE_INT_SELECT 0xfb2050dc
-#define WLANDXE_CCU_DXE_INT_SELECT_STAT 0xfb2050e0
-#define WLANDXE_CCU_ASIC_INT_ENABLE 0xfb2050e4
-#define WLANDXE_CCU_SOFT_RESET 0xfb204010
+#define WLANDXE_CCU_DXE_INT_SELECT 0x2050dc
+#define WLANDXE_CCU_DXE_INT_SELECT_STAT 0x2050e0
+#define WLANDXE_CCU_ASIC_INT_ENABLE 0x2050e4
+#define WLANDXE_CCU_SOFT_RESET 0x204010
#else
-#define WLANDXE_CCU_DXE_INT_SELECT 0x03200b10
-#define WLANDXE_CCU_DXE_INT_SELECT_STAT 0x03200b14
-#define WLANDXE_CCU_ASIC_INT_ENABLE 0x03200b18
+#define WLANDXE_CCU_DXE_INT_SELECT 0x200b10
+#define WLANDXE_CCU_DXE_INT_SELECT_STAT 0x200b14
+#define WLANDXE_CCU_ASIC_INT_ENABLE 0x200b18
#endif
-#ifdef PAL_OS_TYPE_BMP
-#define WLANDXE_WCNSS_BASE_ADDRESS 0xCDD00000
-#else
-#ifdef WCN_PRONTO
-#define WLANDXE_WCNSS_BASE_ADDRESS 0xfb000000
-#else
-#define WLANDXE_WCNSS_BASE_ADDRESS 0x03000000
-#endif
-#endif /* PAL_OS_TYPE_BMP */
+#define WLANDXE_BMU_AVAILABLE_BD_PDU 0x80084
-#define WLANDXE_BMU_AVAILABLE_BD_PDU (WLANDXE_WCNSS_BASE_ADDRESS + 0x80084)
-
-#define WLANDXE_REGISTER_BASE_ADDRESS (WLANDXE_WCNSS_BASE_ADDRESS + 0x202000)
+#define WLANDXE_REGISTER_BASE_ADDRESS 0x202000
/* Common over the channels register addresses */
#define WALNDEX_DMA_CSR_ADDRESS (WLANDXE_REGISTER_BASE_ADDRESS + 0x00)
diff --git a/CORE/HDD/src/wlan_hdd_ftm.c b/CORE/HDD/src/wlan_hdd_ftm.c
index f8c708c..16b818e 100644
--- a/CORE/HDD/src/wlan_hdd_ftm.c
+++ b/CORE/HDD/src/wlan_hdd_ftm.c
@@ -91,6 +91,8 @@
#define FTM_CHAIN_SEL_R0_T0_ON 3
#define FTM_CHAIN_SEL_MAX 3
+#define WCNSS_TXFIR_OFFSET 0x00018000
+
#ifndef QWLAN_PHYDBG_BASE
#define QWLAN_PHYDBG_BASE 0x03004000
#endif /* QWLAN_PHYDBG_BASE */
@@ -3603,6 +3605,7 @@
tANI_U32 value = 0;
tANI_U32 reg_addr;
hdd_context_t *pHddCtx = (hdd_context_t *)pAdapter->pHddCtx;
+
if (pHddCtx->ftm.ftm_state != WLAN_FTM_STARTED)
{
VOS_TRACE(VOS_MODULE_ID_HDD, VOS_TRACE_LEVEL_FATAL,
@@ -3610,11 +3613,8 @@
return VOS_STATUS_E_FAILURE;
}
-#ifdef WCN_PRONTO
- reg_addr = 0xfb018000;
-#else
- reg_addr = 0x03018000;
-#endif
+ reg_addr = WCNSS_TXFIR_OFFSET;
+
wpalReadRegister(reg_addr, &value);
if (enable)
{
diff --git a/CORE/WDI/WPAL/src/wlan_qct_pal_device.c b/CORE/WDI/WPAL/src/wlan_qct_pal_device.c
index 291c6fe..2b3fbef 100644
--- a/CORE/WDI/WPAL/src/wlan_qct_pal_device.c
+++ b/CORE/WDI/WPAL/src/wlan_qct_pal_device.c
@@ -77,12 +77,6 @@
* Preprocessor Definitions and Constants
* -------------------------------------------------------------------------*/
-// address in the Host physical memory map
-#ifdef WCN_PRONTO
-#define WCNSS_BASE_ADDRESS 0xFB000000
-#else
-#define WCNSS_BASE_ADDRESS 0x03000000
-#endif
/*----------------------------------------------------------------------------
* Type Declarations
* -------------------------------------------------------------------------*/
@@ -463,6 +457,8 @@
return eWLAN_PAL_STATUS_E_INVAL;
}
+ address = (address | gpEnv->wcnss_memory->start);
+
if ((address < gpEnv->wcnss_memory->start) ||
(address > gpEnv->wcnss_memory->end)) {
WPAL_TRACE(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_ERROR,
@@ -481,7 +477,7 @@
}
wmb();
- writel_relaxed(data, gpEnv->mmio + (address - WCNSS_BASE_ADDRESS));
+ writel_relaxed(data, gpEnv->mmio + (address - gpEnv->wcnss_memory->start));
return eWLAN_PAL_STATUS_SUCCESS;
}
@@ -512,6 +508,8 @@
return eWLAN_PAL_STATUS_E_INVAL;
}
+ address = (address | gpEnv->wcnss_memory->start);
+
if ((address < gpEnv->wcnss_memory->start) ||
(address > gpEnv->wcnss_memory->end)) {
WPAL_TRACE(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_ERROR,
@@ -529,7 +527,7 @@
return eWLAN_PAL_STATUS_E_INVAL;
}
- *data = readl_relaxed(gpEnv->mmio + (address - WCNSS_BASE_ADDRESS));
+ *data = readl_relaxed(gpEnv->mmio + (address - gpEnv->wcnss_memory->start));
rmb();
return eWLAN_PAL_STATUS_SUCCESS;
@@ -564,6 +562,8 @@
return eWLAN_PAL_STATUS_E_INVAL;
}
+ address = (address | gpEnv->wcnss_memory->start);
+
if ((address < gpEnv->wcnss_memory->start) ||
((address + len) > gpEnv->wcnss_memory->end)) {
WPAL_TRACE(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_ERROR,
@@ -574,7 +574,8 @@
return eWLAN_PAL_STATUS_E_INVAL;
}
- vos_mem_copy(gpEnv->mmio + (address - WCNSS_BASE_ADDRESS), s_buffer, len);
+ vos_mem_copy(gpEnv->mmio + (address - gpEnv->wcnss_memory->start),
+ s_buffer, len);
wmb();
return eWLAN_PAL_STATUS_SUCCESS;
@@ -609,6 +610,8 @@
return eWLAN_PAL_STATUS_E_INVAL;
}
+ address = (address | gpEnv->wcnss_memory->start);
+
if ((address < gpEnv->wcnss_memory->start) ||
((address + len) > gpEnv->wcnss_memory->end)) {
WPAL_TRACE(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_ERROR,
@@ -619,7 +622,8 @@
return eWLAN_PAL_STATUS_E_INVAL;
}
- vos_mem_copy(d_buffer, gpEnv->mmio + (address - WCNSS_BASE_ADDRESS), len);
+ vos_mem_copy(d_buffer,
+ gpEnv->mmio + (address - gpEnv->wcnss_memory->start), len);
rmb();
return eWLAN_PAL_STATUS_SUCCESS;
@@ -704,6 +708,7 @@
exclusive access to that memory */
gpEnv->mmio = ioremap(wcnss_memory->start, resource_size(wcnss_memory));
+
if (NULL == gpEnv->mmio) {
WPAL_TRACE(eWLAN_MODULE_DAL_DATA, eWLAN_PAL_TRACE_LEVEL_ERROR,
"%s: memory remap failure",