diff mbox series

[1/5] brcmfmac: set F2 blocksize for 4373

Message ID 20200521034838.57371-2-chi-hsien.lin@cypress.com (mailing list archive)
State Superseded
Delegated to: Kalle Valo
Headers show
Series brcmfmac: SDIO parameter change series | expand

Commit Message

Chi-Hsien Lin May 21, 2020, 3:48 a.m. UTC
From: Wright Feng <wright.feng@cypress.com>

Set F2 blocksize to 256 bytes for 4373. It fixes DMA error while having
UDP bi-directional traffic. Also use a defined F1 MesBusyCtrl value.

Signed-off-by: Wright Feng <wright.feng@cypress.com>
Signed-off-by: Chi-hsien Lin <chi-hsien.lin@cypress.com>
---
 .../wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c  | 14 +++++++++++++-
 .../wireless/broadcom/brcm80211/brcmfmac/sdio.c    |  4 ++--
 2 files changed, 15 insertions(+), 3 deletions(-)

--
2.25.0


This message and any attachments may contain confidential information from Cypress or its subsidiaries. If it has been received in error, please advise the sender and immediately delete this message.
diff mbox series

Patch

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
index 22a17ae09e94..bb3196cba683 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
@@ -43,6 +43,7 @@ 

 #define SDIO_FUNC1_BLOCKSIZE           64
 #define SDIO_FUNC2_BLOCKSIZE           512
+#define SDIO_4373_FUNC2_BLOCKSIZE      256
 #define SDIO_4359_FUNC2_BLOCKSIZE      256
 /* Maximum milliseconds to wait for F2 to come up */
 #define SDIO_WAIT_F2RDY        3000
@@ -910,13 +911,24 @@  static int brcmf_sdiod_probe(struct brcmf_sdio_dev *sdiodev)
                sdio_release_host(sdiodev->func1);
                goto out;
        }
-       if (sdiodev->func2->device == SDIO_DEVICE_ID_BROADCOM_4359)
+       switch (sdiodev->func2->device) {
+       case SDIO_DEVICE_ID_CYPRESS_4373:
+               f2_blksz = SDIO_4373_FUNC2_BLOCKSIZE;
+               break;
+       case SDIO_DEVICE_ID_BROADCOM_4359:
                f2_blksz = SDIO_4359_FUNC2_BLOCKSIZE;
+               break;
+       default:
+               break;
+       }
+
        ret = sdio_set_block_size(sdiodev->func2, f2_blksz);
        if (ret) {
                brcmf_err("Failed to set F2 blocksize\n");
                sdio_release_host(sdiodev->func1);
                goto out;
+       } else {
+               brcmf_dbg(SDIO, "set F2 blocksize to %d\n", f2_blksz);
        }

        /* increase F2 timeout */
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index ce6f15284277..dce22cd2279d 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -41,6 +41,7 @@ 
 /* watermark expressed in number of words */
 #define DEFAULT_F2_WATERMARK    0x8
 #define CY_4373_F2_WATERMARK    0x40
+#define CY_4373_F1_MESBUSYCTRL  (CY_4373_F2_WATERMARK | SBSDIO_MESBUSYCTRL_ENAB)
 #define CY_43012_F2_WATERMARK    0x60
 #define CY_4359_F2_WATERMARK   0x40
 #define CY_4359_F1_MESBUSYCTRL (CY_4359_F2_WATERMARK | SBSDIO_MESBUSYCTRL_ENAB)
@@ -4195,8 +4196,7 @@  static void brcmf_sdio_firmware_callback(struct device *dev, int err,
                        brcmf_sdiod_writeb(sdiod, SBSDIO_DEVICE_CTL, devctl,
                                           &err);
                        brcmf_sdiod_writeb(sdiod, SBSDIO_FUNC1_MESBUSYCTRL,
-                                          CY_4373_F2_WATERMARK |
-                                          SBSDIO_MESBUSYCTRL_ENAB, &err);
+                                          CY_4373_F1_MESBUSYCTRL, &err);
                        break;
                case SDIO_DEVICE_ID_CYPRESS_43012:
                        brcmf_dbg(INFO, "set F2 watermark to 0x%x*4 bytes\n",