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
parent
4c1029321a
commit
8961846cdb
|
@ -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");
|
||||
|
|
Loading…
Reference in New Issue