Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9d767dc5 authored by Ulf Hansson's avatar Ulf Hansson
Browse files

Merge branch 'fixes' into next

parents 6e8e1acd 83293386
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -937,6 +937,10 @@ static int mmc_sdio_pre_suspend(struct mmc_host *host)
 */
static int mmc_sdio_suspend(struct mmc_host *host)
{
	/* Prevent processing of SDIO IRQs in suspended state. */
	mmc_card_set_suspended(host->card);
	cancel_delayed_work_sync(&host->sdio_irq_work);

	mmc_claim_host(host);

	if (mmc_card_keep_power(host) && mmc_card_wake_sdio_irq(host))
@@ -985,13 +989,20 @@ static int mmc_sdio_resume(struct mmc_host *host)
		err = sdio_enable_4bit_bus(host->card);
	}

	if (!err && host->sdio_irqs) {
	if (err)
		goto out;

	/* Allow SDIO IRQs to be processed again. */
	mmc_card_clr_suspended(host->card);

	if (host->sdio_irqs) {
		if (!(host->caps2 & MMC_CAP2_SDIO_IRQ_NOTHREAD))
			wake_up_process(host->sdio_irq_thread);
		else if (host->caps & MMC_CAP_SDIO_IRQ)
			host->ops->enable_sdio_irq(host, 1);
	}

out:
	mmc_release_host(host);

	host->pm_flags &= ~MMC_PM_KEEP_POWER;
+4 −0
Original line number Diff line number Diff line
@@ -34,6 +34,10 @@ static int process_sdio_pending_irqs(struct mmc_host *host)
	unsigned char pending;
	struct sdio_func *func;

	/* Don't process SDIO IRQs if the card is suspended. */
	if (mmc_card_suspended(card))
		return 0;

	/*
	 * Optimization, if there is only 1 function interrupt registered
	 * and we know an IRQ was signaled then call irq handler directly.