static void dwmci_set_ios(struct mmc *mmc)
 {
-       struct dwmci_host *host = mmc->priv;
-       u32 ctype;
+       struct dwmci_host *host = (struct dwmci_host *)mmc->priv;
+       u32 ctype, regs;
 
        debug("Buswidth = %d, clock: %d\n",mmc->bus_width, mmc->clock);
 
 
        dwmci_writel(host, DWMCI_CTYPE, ctype);
 
+       regs = dwmci_readl(host, DWMCI_UHS_REG);
+       if (mmc->card_caps & MMC_MODE_DDR_52MHz)
+               regs |= DWMCI_DDR_MODE;
+       else
+               regs &= DWMCI_DDR_MODE;
+
+       dwmci_writel(host, DWMCI_UHS_REG, regs);
+
        if (host->clksel)
                host->clksel(host);
 }
 
 #define DWMCI_BMOD_IDMAC_FB    (1 << 1)
 #define DWMCI_BMOD_IDMAC_EN    (1 << 7)
 
+/* UHS register */
+#define DWMCI_DDR_MODE (1 << 16)
+
 /* quirks */
 #define DWMCI_QUIRK_DISABLE_SMU                (1 << 0)