mmc: sdhci-pci-o2micro: Restore the SD clock's base clock frequency
authorFred Ai <fred.ai@bayhubtech.com>
Thu, 16 Dec 2021 06:08:24 +0000 (22:08 -0800)
committerUlf Hansson <ulf.hansson@linaro.org>
Tue, 28 Dec 2021 16:26:41 +0000 (17:26 +0100)
Drop the SD clock's base clock for an SDR104 card, as frequency is wrong when
inserting and SD2.0/SDR50 card.

Signed-off-by: Fred Ai <fred.ai@bayhubtech.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Link: https://lore.kernel.org/r/20211216060824.357-2-fred.ai@bayhubtech.com
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdhci-pci-o2micro.c

index 56e9f93999c4ab5af85895cf13bbc9425694a009..92c20cb8074a68e2a6dbb6a64dc1163d9608e882 100644 (file)
@@ -578,6 +578,11 @@ static void sdhci_pci_o2_set_clock(struct sdhci_host *host, unsigned int clock)
 
                if ((scratch_32 & 0xFFFF0000) != 0x2c280000)
                        o2_pci_set_baseclk(chip, 0x2c280000);
+       } else {
+               pci_read_config_dword(chip->pdev, O2_SD_PLL_SETTING, &scratch_32);
+
+               if ((scratch_32 & 0xFFFF0000) != 0x25100000)
+                       o2_pci_set_baseclk(chip, 0x25100000);
        }
 
        pci_read_config_dword(chip->pdev, O2_SD_OUTPUT_CLK_SOURCE_SWITCH, &scratch_32);