mirror of https://gitee.com/openkylin/linux.git
mmc: tmio: always restore irq register
Currently, only SDHI on R-Car Gen2+ reinitializes the irq register during reset but it should be done on all instances. We can move it from the SDHI driver to the TMIO core, because we now have the 'sd_irq_mask_all' variable which carries the proper value to use. That also means we can remove the initialization from tmio_mmc_probe() because it calls tmio_mmc_reset(), too. We only move that tmio_mmc_reset() call there a little to ensure 'sd_irq_mask_all' is properly set. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Link: https://lore.kernel.org/r/20210413083137.11171-1-wsa+renesas@sang-engineering.com Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
This commit is contained in:
parent
9751bacc8c
commit
0751d56ef1
|
@ -588,8 +588,6 @@ static void renesas_sdhi_reset(struct tmio_mmc_host *host)
|
|||
renesas_sdhi_scc_reset(host, priv);
|
||||
}
|
||||
|
||||
sd_ctrl_write32_as_16_and_16(host, CTL_IRQ_MASK, TMIO_MASK_ALL_RCAR2);
|
||||
|
||||
if (sd_ctrl_read16(host, CTL_VERSION) >= SDHI_VER_GEN3_SD) {
|
||||
val = sd_ctrl_read16(host, CTL_SD_MEM_CARD_OPT);
|
||||
val |= CARD_OPT_EXTOP;
|
||||
|
|
|
@ -192,6 +192,9 @@ static void tmio_mmc_reset(struct tmio_mmc_host *host)
|
|||
if (host->reset)
|
||||
host->reset(host);
|
||||
|
||||
sd_ctrl_write32_as_16_and_16(host, CTL_IRQ_MASK, host->sdcard_irq_mask_all);
|
||||
host->sdcard_irq_mask = host->sdcard_irq_mask_all;
|
||||
|
||||
tmio_mmc_set_bus_width(host, host->mmc->ios.bus_width);
|
||||
|
||||
if (host->pdata->flags & TMIO_MMC_SDIO_IRQ) {
|
||||
|
@ -1176,13 +1179,11 @@ int tmio_mmc_host_probe(struct tmio_mmc_host *_host)
|
|||
if (pdata->flags & TMIO_MMC_SDIO_IRQ)
|
||||
_host->sdio_irq_mask = TMIO_SDIO_MASK_ALL;
|
||||
|
||||
_host->set_clock(_host, 0);
|
||||
tmio_mmc_reset(_host);
|
||||
|
||||
_host->sdcard_irq_mask = sd_ctrl_read16_and_16_as_32(_host, CTL_IRQ_MASK);
|
||||
if (!_host->sdcard_irq_mask_all)
|
||||
_host->sdcard_irq_mask_all = TMIO_MASK_ALL;
|
||||
tmio_mmc_disable_mmc_irqs(_host, _host->sdcard_irq_mask_all);
|
||||
|
||||
_host->set_clock(_host, 0);
|
||||
tmio_mmc_reset(_host);
|
||||
|
||||
if (_host->native_hotplug)
|
||||
tmio_mmc_enable_mmc_irqs(_host,
|
||||
|
|
Loading…
Reference in New Issue