mmc: tmio: support custom irq masks
[ Upstream commit 0d856c4c68c639f96cb12c26aaeb906353b9a76e ] SDHI Gen2+ has a different value for TMIO_MASK_ALL, so add a member to support that. If the member is not used, the previous default value is applied. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Tested-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Link: https://lore.kernel.org/r/20210223100830.25125-2-wsa+renesas@sang-engineering.com Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Stable-dep-of: 74f45de394d9 ("mmc: renesas_sdhi: register irqs before registering controller") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
97eb045386
commit
995ef65e4b
@ -161,6 +161,7 @@ struct tmio_mmc_host {
|
||||
u32 sdio_irq_mask;
|
||||
unsigned int clk_cache;
|
||||
u32 sdcard_irq_setbit_mask;
|
||||
u32 sdcard_irq_mask_all;
|
||||
|
||||
spinlock_t lock; /* protect host private data */
|
||||
unsigned long last_req_ts;
|
||||
|
@ -1158,7 +1158,9 @@ int tmio_mmc_host_probe(struct tmio_mmc_host *_host)
|
||||
tmio_mmc_reset(_host);
|
||||
|
||||
_host->sdcard_irq_mask = sd_ctrl_read16_and_16_as_32(_host, CTL_IRQ_MASK);
|
||||
tmio_mmc_disable_mmc_irqs(_host, TMIO_MASK_ALL);
|
||||
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);
|
||||
|
||||
if (_host->native_hotplug)
|
||||
tmio_mmc_enable_mmc_irqs(_host,
|
||||
@ -1212,7 +1214,7 @@ void tmio_mmc_host_remove(struct tmio_mmc_host *host)
|
||||
cancel_work_sync(&host->done);
|
||||
cancel_delayed_work_sync(&host->delayed_reset_work);
|
||||
tmio_mmc_release_dma(host);
|
||||
tmio_mmc_disable_mmc_irqs(host, TMIO_MASK_ALL);
|
||||
tmio_mmc_disable_mmc_irqs(host, host->sdcard_irq_mask_all);
|
||||
|
||||
if (host->native_hotplug)
|
||||
pm_runtime_put_noidle(&pdev->dev);
|
||||
@ -1242,7 +1244,7 @@ int tmio_mmc_host_runtime_suspend(struct device *dev)
|
||||
{
|
||||
struct tmio_mmc_host *host = dev_get_drvdata(dev);
|
||||
|
||||
tmio_mmc_disable_mmc_irqs(host, TMIO_MASK_ALL);
|
||||
tmio_mmc_disable_mmc_irqs(host, host->sdcard_irq_mask_all);
|
||||
|
||||
if (host->clk_cache)
|
||||
host->set_clock(host, 0);
|
||||
|
Loading…
x
Reference in New Issue
Block a user