Commit 0d856c4c authored by Wolfram Sang's avatar Wolfram Sang Committed by Ulf Hansson
Browse files

mmc: tmio: support custom irq masks



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: default avatarWolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Tested-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Link: https://lore.kernel.org/r/20210223100830.25125-2-wsa+renesas@sang-engineering.com


Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 917a5336
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -164,6 +164,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;
+5 −3
Original line number Diff line number Diff line
@@ -1175,7 +1175,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,
@@ -1229,7 +1231,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);
@@ -1259,7 +1261,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);