forked from luck/tmp_suning_uos_patched
mmc: atmel-mci: save and restore sdioirq when soft reset is performed
Sometimes a software reset is needed. Then some registers are saved and restored but the interrupt mask register is missing. It causes issues with sdio devices whose interrupts are masked after reset. Signed-off-by: Ludovic Desroches <ludovic.desroches@atmel.com> Cc: stable <stable@vger.kernel.org> Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com> Signed-off-by: Chris Ball <cjb@laptop.org>
This commit is contained in:
parent
00d9ac0875
commit
18ee684b8a
|
@ -969,11 +969,14 @@ static void atmci_start_request(struct atmel_mci *host,
|
|||
host->data_status = 0;
|
||||
|
||||
if (host->need_reset) {
|
||||
iflags = atmci_readl(host, ATMCI_IMR);
|
||||
iflags &= (ATMCI_SDIOIRQA | ATMCI_SDIOIRQB);
|
||||
atmci_writel(host, ATMCI_CR, ATMCI_CR_SWRST);
|
||||
atmci_writel(host, ATMCI_CR, ATMCI_CR_MCIEN);
|
||||
atmci_writel(host, ATMCI_MR, host->mode_reg);
|
||||
if (host->caps.has_cfg_reg)
|
||||
atmci_writel(host, ATMCI_CFG, host->cfg_reg);
|
||||
atmci_writel(host, ATMCI_IER, iflags);
|
||||
host->need_reset = false;
|
||||
}
|
||||
atmci_writel(host, ATMCI_SDCR, slot->sdc_reg);
|
||||
|
|
Loading…
Reference in New Issue
Block a user