Commit 9dc0033e authored by Patrick Thompson's avatar Patrick Thompson Committed by Ulf Hansson
Browse files

mmc: sdhci-pci-core: Disable ES for ASUS BIOS on Jasper Lake



Enhanced Strobe (ES) does not work correctly on the ASUS 1100 series of
devices. Jasper Lake eMMCs (pci_id 8086:4dc4) are supposed to support
ES. There are also two system families under the series, thus this is
being scoped to the ASUS BIOS.

The failing ES prevents the installer from writing to disk. Falling back
to HS400 without ES fixes the issue.

Signed-off-by: default avatarPatrick Thompson <ptf@google.com>
Fixes: 315e3bd7 ("mmc: sdhci-pci: Add support for Intel JSL")
Acked-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20221013210017.3751025-1-ptf@google.com


Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent 1ed5c3b2
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -914,6 +914,12 @@ static bool glk_broken_cqhci(struct sdhci_pci_slot *slot)
		dmi_match(DMI_SYS_VENDOR, "IRBIS"));
}

static bool jsl_broken_hs400es(struct sdhci_pci_slot *slot)
{
	return slot->chip->pdev->device == PCI_DEVICE_ID_INTEL_JSL_EMMC &&
			dmi_match(DMI_BIOS_VENDOR, "ASUSTeK COMPUTER INC.");
}

static int glk_emmc_probe_slot(struct sdhci_pci_slot *slot)
{
	int ret = byt_emmc_probe_slot(slot);
@@ -922,9 +928,11 @@ static int glk_emmc_probe_slot(struct sdhci_pci_slot *slot)
		slot->host->mmc->caps2 |= MMC_CAP2_CQE;

	if (slot->chip->pdev->device != PCI_DEVICE_ID_INTEL_GLK_EMMC) {
		if (!jsl_broken_hs400es(slot)) {
			slot->host->mmc->caps2 |= MMC_CAP2_HS400_ES;
			slot->host->mmc_host_ops.hs400_enhanced_strobe =
							intel_hs400_enhanced_strobe;
		}
		slot->host->mmc->caps2 |= MMC_CAP2_CQE_DCMD;
	}