Commit d0b75c91 authored by Ulf Hansson's avatar Ulf Hansson
Browse files

Merge branch 'fixes' into next

parents 66a83feb 75d27ea1
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1301,8 +1301,8 @@ static int sdhci_esdhc_probe(struct platform_device *pdev)
		host->quirks &= ~SDHCI_QUIRK_NO_BUSY_IRQ;

	if (of_find_compatible_node(NULL, NULL, "fsl,p2020-esdhc")) {
		host->quirks2 |= SDHCI_QUIRK_RESET_AFTER_REQUEST;
		host->quirks2 |= SDHCI_QUIRK_BROKEN_TIMEOUT_VAL;
		host->quirks |= SDHCI_QUIRK_RESET_AFTER_REQUEST;
		host->quirks |= SDHCI_QUIRK_BROKEN_TIMEOUT_VAL;
	}

	if (of_device_is_compatible(np, "fsl,p5040-esdhc") ||
+9 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@
#include <linux/mmc/slot-gpio.h>
#include <linux/mmc/sdhci-pci-data.h>
#include <linux/acpi.h>
#include <linux/dmi.h>

#ifdef CONFIG_X86
#include <asm/iosf_mbi.h>
@@ -783,10 +784,17 @@ static int byt_emmc_probe_slot(struct sdhci_pci_slot *slot)
	return 0;
}

static bool glk_broken_cqhci(struct sdhci_pci_slot *slot)
{
	return slot->chip->pdev->device == PCI_DEVICE_ID_INTEL_GLK_EMMC &&
	       dmi_match(DMI_BIOS_VENDOR, "LENOVO");
}

static int glk_emmc_probe_slot(struct sdhci_pci_slot *slot)
{
	int ret = byt_emmc_probe_slot(slot);

	if (!glk_broken_cqhci(slot))
		slot->host->mmc->caps2 |= MMC_CAP2_CQE;

	if (slot->chip->pdev->device != PCI_DEVICE_ID_INTEL_GLK_EMMC) {
+3 −0
Original line number Diff line number Diff line
@@ -3756,6 +3756,9 @@ int sdhci_setup_host(struct sdhci_host *host)
		       mmc_hostname(mmc), host->version);
	}

	if (host->quirks & SDHCI_QUIRK_BROKEN_CQE)
		mmc->caps2 &= ~MMC_CAP2_CQE;

	if (host->quirks & SDHCI_QUIRK_FORCE_DMA)
		host->flags |= SDHCI_USE_SDMA;
	else if (!(host->caps & SDHCI_CAN_DO_SDMA))
+2 −0
Original line number Diff line number Diff line
@@ -409,6 +409,8 @@ struct sdhci_host {
#define SDHCI_QUIRK_BROKEN_CARD_DETECTION		(1<<15)
/* Controller reports inverted write-protect state */
#define SDHCI_QUIRK_INVERTED_WRITE_PROTECT		(1<<16)
/* Controller has unusable command queue engine */
#define SDHCI_QUIRK_BROKEN_CQE				(1<<17)
/* Controller does not like fast PIO transfers */
#define SDHCI_QUIRK_PIO_NEEDS_DELAY			(1<<18)
/* Controller does not have a LED */