]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
mmc: sdhci-pci: Change AMD SDHCI quirk application scope
authorVincent Wan <vincent.wan@amd.com>
Thu, 11 Jun 2015 12:11:47 +0000 (20:11 +0800)
committerUlf Hansson <ulf.hansson@linaro.org>
Tue, 16 Jun 2015 06:58:35 +0000 (08:58 +0200)
Change this quirk to apply to AMD Carrizo platform.

Signed-off-by: Wan ZongShun <Vincent.Wan@amd.com>
Tested-by: Nath, Arindam <Arindam.Nath@amd.com>
Tested-by: Ramesh, Ramya <Ramya.Ramesh@amd.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdhci-pci.c

index f208f2072d0cc54d24424971c5e7d738fbeda4c9..94f54d2772e885b891024db94bb152890468f548 100644 (file)
@@ -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;
        }