summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/broadcom/brcm80211/brcmfmac
diff options
context:
space:
mode:
authorDouble Lo <dblo@cypress.com>2018-09-06 00:49:41 -0500
committerJason Liu <jason.hui.liu@nxp.com>2019-02-12 10:33:59 +0800
commitcfce3a34ca8bf3e3572557b24bdd1c07e8b5f87b (patch)
treebc6fbd8f1041bf82ad53e433536739ee1b9cf496 /drivers/net/wireless/broadcom/brcm80211/brcmfmac
parent5757a2361991b0ed844df8b6ca5ebcdad23d9952 (diff)
MLK-19516 brcmfmac: fix 4339 CRC error under SDIO 3.0 SDR104 mode
This patch fixes 4339 CRC error while runing Tput test with suspend/resume test script. Update F2 Watermark to 48 to avoid CRC error. The continuous failure messages before system crash: brcmfmac: brcmf_sdiod_sglist_rw: CMD53 sg block read failed -84 brcmfmac: brcmf_sdio_rxglom: glom read of 25600 bytes failed: -5 brcmfmac: brcmf_sdio_rxfail: abort command, terminate frame brcmfmac: brcmf_sdiod_sglist_rw: CMD53 sg block read failed -84 brcmfmac: brcmf_sdio_rxglom: glom read of 24576 bytes failed: -5 brcmfmac: brcmf_sdio_rxfail: abort command, terminate frame Tested-by: Fugang Duan <fugang.duan@nxp.com> Signed-off-by: Lo-Hsiang Lo <double.lo@cypress.com> Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
Diffstat (limited to 'drivers/net/wireless/broadcom/brcm80211/brcmfmac')
-rw-r--r--drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c16
-rw-r--r--drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h2
2 files changed, 17 insertions, 1 deletions
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index 777163415839..559043236b08 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -55,7 +55,9 @@
#define DEFAULT_F2_WATERMARK 0x8
#define CY_4373_F2_WATERMARK 0x40
#define CY_43012_F2_WATERMARK 0x60
-
+#define CY_4339_F2_WATERMARK 48
+#define CY_4339_MES_WATERMARK 80
+#define CY_4339_MESBUSYCTRL (CY_4339_MES_WATERMARK | SBSDIO_MESBUSYCTRL_ENAB)
#ifdef DEBUG
#define BRCMF_TRAP_INFO_SIZE 80
@@ -4301,6 +4303,18 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err,
brcmf_sdiod_regwb(sdiodev,
SBSDIO_DEVICE_CTL, devctl, &err);
break;
+ case SDIO_DEVICE_ID_BROADCOM_4339:
+ brcmf_sdiod_regwb(sdiodev,
+ SBSDIO_WATERMARK,
+ CY_4339_F2_WATERMARK, &err);
+ devctl = brcmf_sdiod_regrb(sdiodev,
+ SBSDIO_DEVICE_CTL, &err);
+ devctl |= SBSDIO_DEVCTL_F2WM_ENAB;
+ brcmf_sdiod_regwb(sdiodev,
+ SBSDIO_DEVICE_CTL, devctl, &err);
+ brcmf_sdiod_regwb(sdiodev,
+ SBSDIO_FUNC1_MESBUSYCTRL, CY_4339_MESBUSYCTRL, &err);
+ break;
default:
brcmf_sdiod_regwb(sdiodev, SBSDIO_WATERMARK, DEFAULT_F2_WATERMARK, &err);
break;
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
index 04301b082135..7989980dc27f 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h
@@ -107,6 +107,8 @@
#define SBSDIO_FUNC1_RFRAMEBCHI 0x1001C
/* MesBusyCtl (rev 11) */
#define SBSDIO_FUNC1_MESBUSYCTRL 0x1001D
+/* Enable busy capability for MES access */
+#define SBSDIO_MESBUSYCTRL_ENAB 0x80
/* Sdio Core Rev 12 */
#define SBSDIO_FUNC1_WAKEUPCTRL 0x1001E
#define SBSDIO_FUNC1_WCTRL_ALPWAIT_MASK 0x1