123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- From 29f6589140a10ece8c1d73f58043ea5b3473ab3e Mon Sep 17 00:00:00 2001
- From: Wright Feng <[email protected]>
- Date: Wed, 21 Nov 2018 07:53:52 +0000
- Subject: [PATCH] brcmfmac: disable command decode in sdio_aos
- AOS is a part of the SDIOD core that becomes active when the rest of
- SDIOD is sleeping to keep SDIO bus alive responding to reduced set of
- commands.
- Transaction between AOS and SDIOD is not protected, and if cmd 52 is
- received in AOS and in the middle of response state changed from AOS to
- SDIOD, response is corrupted and it causes to SDIO Host controller to
- hang.
- Command decode for below chips are disabled in this commit:
- - 4339
- - 4345
- - 4354
- - 4373
- Reviewed-by: Arend van Spriel <[email protected]>
- Signed-off-by: Wright Feng <[email protected]>
- Signed-off-by: Double Lo <[email protected]>
- Signed-off-by: Madhan Mohan R <[email protected]>
- Signed-off-by: Chi-Hsien Lin <[email protected]>
- Signed-off-by: Kalle Valo <[email protected]>
- ---
- drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
- --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
- +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
- @@ -3354,7 +3354,11 @@ err:
-
- static bool brcmf_sdio_aos_no_decode(struct brcmf_sdio *bus)
- {
- - if (bus->ci->chip == CY_CC_43012_CHIP_ID)
- + if (bus->ci->chip == CY_CC_43012_CHIP_ID ||
- + bus->ci->chip == CY_CC_4373_CHIP_ID ||
- + bus->ci->chip == BRCM_CC_4339_CHIP_ID ||
- + bus->ci->chip == BRCM_CC_4345_CHIP_ID ||
- + bus->ci->chip == BRCM_CC_4354_CHIP_ID)
- return true;
- else
- return false;
|