|
@@ -169,6 +169,16 @@ static void esdhc_of_resume(struct sdhci_host *host)
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+static void esdhc_of_platform_init(struct sdhci_host *host)
|
|
|
+{
|
|
|
+ u32 vvn;
|
|
|
+
|
|
|
+ vvn = in_be32(host->ioaddr + SDHCI_SLOT_INT_STATUS);
|
|
|
+ vvn = (vvn & SDHCI_VENDOR_VER_MASK) >> SDHCI_VENDOR_VER_SHIFT;
|
|
|
+ if (vvn == VENDOR_V_22)
|
|
|
+ host->quirks2 |= SDHCI_QUIRK2_HOST_NO_CMD23;
|
|
|
+}
|
|
|
+
|
|
|
static struct sdhci_ops sdhci_esdhc_ops = {
|
|
|
.read_l = esdhc_readl,
|
|
|
.read_w = esdhc_readw,
|
|
@@ -180,6 +190,7 @@ static struct sdhci_ops sdhci_esdhc_ops = {
|
|
|
.enable_dma = esdhc_of_enable_dma,
|
|
|
.get_max_clock = esdhc_of_get_max_clock,
|
|
|
.get_min_clock = esdhc_of_get_min_clock,
|
|
|
+ .platform_init = esdhc_of_platform_init,
|
|
|
#ifdef CONFIG_PM
|
|
|
.platform_suspend = esdhc_of_suspend,
|
|
|
.platform_resume = esdhc_of_resume,
|