From ccbfc8e329d4ed3090cc370d337f0d5420aacb41 Mon Sep 17 00:00:00 2001 From: David Lin Date: Thu, 22 Dec 2016 16:31:56 +0800 Subject: [PATCH] Restored the way to access MAC register for 8864. In this way, it will get correct value. Signed-off-by: David Lin --- dev.h | 1 + fwcmd.c | 29 +++++++++++++++++------------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/dev.h b/dev.h index f73405af..e0b2e955 100644 --- a/dev.h +++ b/dev.h @@ -30,6 +30,7 @@ #define MWL_DRV_VERSION "10.3.2.0-20161220" #define MAC_REG_ADDR(offset) (offset) +#define MAC_REG_ADDR_PCI(offset) ((priv->iobase1 + 0xA000) + offset) #define MCU_CCA_CNT MAC_REG_ADDR(0x06A0) #define MCU_TXPE_CNT MAC_REG_ADDR(0x06A4) diff --git a/fwcmd.c b/fwcmd.c index 02a07a27..39627e6b 100644 --- a/fwcmd.c +++ b/fwcmd.c @@ -888,18 +888,23 @@ static int mwl_fwcmd_encryption_set_cmd_info(struct hostcmd_cmd_set_key *cmd, static u32 pci_read_mac_reg(struct mwl_priv *priv, u32 offset) { - u32 *addr_val = kmalloc(64 * sizeof(u32), GFP_ATOMIC); - u32 val; - - if(addr_val) - { - mwl_fwcmd_get_addr_value(priv->hw, 0x8000a000 + offset, 4, - addr_val, 0); - val = addr_val[0]; - kfree(addr_val); - return val; - } - return 0; + if (priv->chip_type == MWL8964) { + u32 *addr_val = kmalloc(64 * sizeof(u32), GFP_ATOMIC); + u32 val; + + if(addr_val) + { + mwl_fwcmd_get_addr_value(priv->hw, + 0x8000a000 + offset, 4, + addr_val, 0); + val = addr_val[0]; + kfree(addr_val); + return val; + } + return 0; + } else + return le32_to_cpu(*(volatile unsigned long *) + (MAC_REG_ADDR_PCI(offset))); } void mwl_fwcmd_reset(struct ieee80211_hw *hw)