1
0
Fork 0

MLK-19517-09 brcmfmac: disable command decode in sdio_aos for 4339/4345

Transaction between AOS and SDIOD is not protected, and if cmd 52
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.

Signed-off-by: Wright Feng <wright.feng@cypress.com>
Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
pull/10/head
Wright Feng 2018-05-30 21:11:20 -05:00 committed by Jason Liu
parent 4c1029321a
commit 8961846cdb
1 changed files with 9 additions and 3 deletions

View File

@ -3525,15 +3525,21 @@ static void brcmf_sdio_sr_init(struct brcmf_sdio *bus)
if (bus->ci->chip == CY_CC_43012_CHIP_ID) {
wakeupctrl = SBSDIO_FUNC1_WCTRL_ALPWAIT_SHIFT;
cardcap = SDIO_CCCR_BRCM_CARDCAP_CMD_NODEC;
chipclkcsr = SBSDIO_HT_AVAIL_REQ;
} else {
wakeupctrl = SBSDIO_FUNC1_WCTRL_HTWAIT_SHIFT;
cardcap = (SDIO_CCCR_BRCM_CARDCAP_CMD14_SUPPORT |
SDIO_CCCR_BRCM_CARDCAP_CMD14_EXT);
chipclkcsr = SBSDIO_FORCE_HT;
}
if (bus->ci->chip == CY_CC_43012_CHIP_ID ||
bus->ci->chip == BRCM_CC_4339_CHIP_ID ||
bus->ci->chip == BRCM_CC_4345_CHIP_ID) {
cardcap = SDIO_CCCR_BRCM_CARDCAP_CMD_NODEC;
} else {
cardcap = (SDIO_CCCR_BRCM_CARDCAP_CMD14_SUPPORT |
SDIO_CCCR_BRCM_CARDCAP_CMD14_EXT);
}
val = brcmf_sdiod_regrb(bus->sdiodev, SBSDIO_FUNC1_WAKEUPCTRL, &err);
if (err) {
brcmf_err("error reading SBSDIO_FUNC1_WAKEUPCTRL\n");