Commit 92d23216 authored by Ulf Hansson's avatar Ulf Hansson
Browse files

Merge branch 'fixes' into next

parents beae4a62 6ab4e2eb
Loading
Loading
Loading
Loading
+24 −5
Original line number Diff line number Diff line
@@ -616,16 +616,12 @@ static int intel_select_drive_strength(struct mmc_card *card,
	return intel_host->drv_strength;
}

static int bxt_get_cd(struct mmc_host *mmc)
static int sdhci_get_cd_nogpio(struct mmc_host *mmc)
{
	int gpio_cd = mmc_gpio_get_cd(mmc);
	struct sdhci_host *host = mmc_priv(mmc);
	unsigned long flags;
	int ret = 0;

	if (!gpio_cd)
		return 0;

	spin_lock_irqsave(&host->lock, flags);

	if (host->flags & SDHCI_DEVICE_DEAD)
@@ -638,6 +634,21 @@ static int bxt_get_cd(struct mmc_host *mmc)
	return ret;
}

static int bxt_get_cd(struct mmc_host *mmc)
{
	int gpio_cd = mmc_gpio_get_cd(mmc);

	if (!gpio_cd)
		return 0;

	return sdhci_get_cd_nogpio(mmc);
}

static int mrfld_get_cd(struct mmc_host *mmc)
{
	return sdhci_get_cd_nogpio(mmc);
}

#define SDHCI_INTEL_PWR_TIMEOUT_CNT	20
#define SDHCI_INTEL_PWR_TIMEOUT_UDELAY	100

@@ -1341,6 +1352,14 @@ static int intel_mrfld_mmc_probe_slot(struct sdhci_pci_slot *slot)
					 MMC_CAP_1_8V_DDR;
		break;
	case INTEL_MRFLD_SD:
		slot->cd_idx = 0;
		slot->cd_override_level = true;
		/*
		 * There are two PCB designs of SD card slot with the opposite
		 * card detection sense. Quirk this out by ignoring GPIO state
		 * completely in the custom ->get_cd() callback.
		 */
		slot->host->mmc_host_ops.get_cd = mrfld_get_cd;
		slot->host->quirks2 |= SDHCI_QUIRK2_NO_1_8_V;
		break;
	case INTEL_MRFLD_SDIO: