#define CMD_SET_TBIT           (1 << 7) /* 1: tran mission bit "Low" */
 #define CMD_SET_OPDM           (1 << 6) /* 1: open/drain */
 #define CMD_SET_CCSH           (1 << 5)
+#define CMD_SET_DARS           (1 << 2) /* Dual Data Rate */
 #define CMD_SET_DATW_1         ((0 << 1) | (0 << 0)) /* 1bit */
 #define CMD_SET_DATW_4         ((0 << 1) | (1 << 0)) /* 4bit */
 #define CMD_SET_DATW_8         ((1 << 1) | (0 << 0)) /* 8bit */
        struct clk *hclk;
        unsigned int clk;
        int bus_width;
+       unsigned char timing;
        bool sd_error;
        bool dying;
        long timeout;
                        dev_err(&host->pd->dev, "Unsupported bus width.\n");
                        break;
                }
+               switch (host->timing) {
+               case MMC_TIMING_UHS_DDR50:
+                       /*
+                        * MMC core will only set this timing, if the host
+                        * advertises the MMC_CAP_UHS_DDR50 capability. MMCIF
+                        * implementations with this capability, e.g. sh73a0,
+                        * will have to set it in their platform data.
+                        */
+                       tmp |= CMD_SET_DARS;
+                       break;
+               }
        }
        /* DWEN */
        if (opc == MMC_WRITE_BLOCK || opc == MMC_WRITE_MULTIPLE_BLOCK)
                sh_mmcif_clock_control(host, ios->clock);
        }
 
+       host->timing = ios->timing;
        host->bus_width = ios->bus_width;
        host->state = STATE_IDLE;
 }