Skip to content

Commit 2bee412

Browse files
Frank KaoKalle Valo
authored andcommitted
brcmfmac: set F2 blocksize and watermark for 4354/4356 SDIO
Set F2 blocksize to 256 bytes and watermark to 0x40 for 4354/4356 SDIO. Also enable and configure F1 MesBusyCtrl. It would resolve random driver crash issue. Signed-off-by: Frank Kao <[email protected]> Signed-off-by: Chi-Hsien Lin <[email protected]> Signed-off-by: Kalle Valo <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 528158a commit 2bee412

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
#define SDIO_FUNC1_BLOCKSIZE 64
4545
#define SDIO_FUNC2_BLOCKSIZE 512
4646
#define SDIO_4373_FUNC2_BLOCKSIZE 256
47-
#define SDIO_4359_FUNC2_BLOCKSIZE 256
47+
#define SDIO_435X_FUNC2_BLOCKSIZE 256
4848
/* Maximum milliseconds to wait for F2 to come up */
4949
#define SDIO_WAIT_F2RDY 3000
5050

@@ -916,7 +916,11 @@ static int brcmf_sdiod_probe(struct brcmf_sdio_dev *sdiodev)
916916
f2_blksz = SDIO_4373_FUNC2_BLOCKSIZE;
917917
break;
918918
case SDIO_DEVICE_ID_BROADCOM_4359:
919-
f2_blksz = SDIO_4359_FUNC2_BLOCKSIZE;
919+
/* fallthrough */
920+
case SDIO_DEVICE_ID_BROADCOM_4354:
921+
/* fallthrough */
922+
case SDIO_DEVICE_ID_BROADCOM_4356:
923+
f2_blksz = SDIO_435X_FUNC2_BLOCKSIZE;
920924
break;
921925
default:
922926
break;

drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@
4747
#define CY_4339_MES_WATERMARK 80
4848
#define CY_4339_MESBUSYCTRL (CY_4339_MES_WATERMARK | \
4949
SBSDIO_MESBUSYCTRL_ENAB)
50-
#define CY_4359_F2_WATERMARK 0x40
51-
#define CY_4359_F1_MESBUSYCTRL (CY_4359_F2_WATERMARK | SBSDIO_MESBUSYCTRL_ENAB)
52-
50+
#define CY_435X_F2_WATERMARK 0x40
51+
#define CY_435X_F1_MESBUSYCTRL (CY_435X_F2_WATERMARK | \
52+
SBSDIO_MESBUSYCTRL_ENAB)
5353
#ifdef DEBUG
5454

5555
#define BRCMF_TRAP_INFO_SIZE 80
@@ -4227,17 +4227,21 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err,
42274227
CY_4339_MESBUSYCTRL, &err);
42284228
break;
42294229
case SDIO_DEVICE_ID_BROADCOM_4359:
4230+
/* fallthrough */
4231+
case SDIO_DEVICE_ID_BROADCOM_4354:
4232+
/* fallthrough */
4233+
case SDIO_DEVICE_ID_BROADCOM_4356:
42304234
brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes\n",
4231-
CY_4359_F2_WATERMARK);
4235+
CY_435X_F2_WATERMARK);
42324236
brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK,
4233-
CY_4359_F2_WATERMARK, &err);
4237+
CY_435X_F2_WATERMARK, &err);
42344238
devctl = brcmf_sdiod_readb(sdiod, SBSDIO_DEVICE_CTL,
42354239
&err);
42364240
devctl |= SBSDIO_DEVCTL_F2WM_ENAB;
42374241
brcmf_sdiod_writeb(sdiod, SBSDIO_DEVICE_CTL, devctl,
42384242
&err);
42394243
brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_MESBUSYCTRL,
4240-
CY_4359_F1_MESBUSYCTRL, &err);
4244+
CY_435X_F1_MESBUSYCTRL, &err);
42414245
break;
42424246
default:
42434247
brcmf_sdiod_writeb(sdiod, SBSDIO_WATERMARK,

0 commit comments

Comments
 (0)