struct dwmci_host *host = &priv->host;
        u32 minmax[2];
        int ret;
+       int fifo_depth;
 
        priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
        if (IS_ERR(priv->grf))
        if (ret)
                return ret;
 
-       ret = fdtdec_get_int_array(gd->fdt_blob, dev->of_offset,
-                                  "clock-freq-min-max", minmax, 2);
-       if (!ret)
-               ret = add_dwmci(host, minmax[1], minmax[0]);
+       if (fdtdec_get_int_array(gd->fdt_blob, dev->of_offset,
+                                "clock-freq-min-max", minmax, 2))
+               return -EINVAL;
+
+       fifo_depth = fdtdec_get_int(gd->fdt_blob, dev->of_offset,
+                                   "fifo-depth", 0);
+       if (fifo_depth < 0)
+               return -EINVAL;
+
+       host->fifoth_val = MSIZE(0x2) |
+               RX_WMARK(fifo_depth / 2 - 1) | TX_WMARK(fifo_depth / 2);
+
+       if (fdtdec_get_bool(gd->fdt_blob, dev->of_offset, "fifo-mode"))
+               host->fifo_mode = true;
+
+       ret = add_dwmci(host, minmax[1], minmax[0]);
        if (ret)
                return ret;