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

Commit b5e97d6e authored by Vincent Wan's avatar Vincent Wan Committed by Ulf Hansson
Browse files

mmc: sdhci-pci: Change AMD SDHCI quirk application scope



Change this quirk to apply to AMD Carrizo platform.

Signed-off-by: default avatarWan ZongShun <Vincent.Wan@amd.com>
Tested-by: default avatarNath, Arindam <Arindam.Nath@amd.com>
Tested-by: default avatarRamesh, Ramya <Ramya.Ramesh@amd.com>
Signed-off-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
parent bcb29994
Loading
Loading
Loading
Loading
+24 −1
Original line number Diff line number Diff line
@@ -724,14 +724,37 @@ static const struct sdhci_pci_fixes sdhci_rtsx = {
	.probe_slot	= rtsx_probe_slot,
};

/*AMD chipset generation*/
enum amd_chipset_gen {
	AMD_CHIPSET_BEFORE_ML,
	AMD_CHIPSET_CZ,
	AMD_CHIPSET_NL,
	AMD_CHIPSET_UNKNOWN,
};

static int amd_probe(struct sdhci_pci_chip *chip)
{
	struct pci_dev	*smbus_dev;
	enum amd_chipset_gen gen;

	smbus_dev = pci_get_device(PCI_VENDOR_ID_AMD,
			PCI_DEVICE_ID_AMD_HUDSON2_SMBUS, NULL);
	if (smbus_dev) {
		gen = AMD_CHIPSET_BEFORE_ML;
	} else {
		smbus_dev = pci_get_device(PCI_VENDOR_ID_AMD,
				PCI_DEVICE_ID_AMD_KERNCZ_SMBUS, NULL);
		if (smbus_dev) {
			if (smbus_dev->revision < 0x51)
				gen = AMD_CHIPSET_CZ;
			else
				gen = AMD_CHIPSET_NL;
		} else {
			gen = AMD_CHIPSET_UNKNOWN;
		}
	}

	if (smbus_dev && (smbus_dev->revision < 0x51)) {
	if ((gen == AMD_CHIPSET_BEFORE_ML) || (gen == AMD_CHIPSET_CZ)) {
		chip->quirks2 |= SDHCI_QUIRK2_CLEAR_TRANSFERMODE_REG_BEFORE_CMD;
		chip->quirks2 |= SDHCI_QUIRK2_BROKEN_HS200;
	}