Hi Lin, On 10 November 2015 at 03:24, Lin Huang <h...@rock-chips.com> wrote: > rk3036 mmc do not have internal dma, so we use fifo mode when read > and write data, we get the fifo mode and fifo depth property from > dts, pass to dw_mmc driver. > > Signed-off-by: Lin Huang <h...@rock-chips.com> > --- > arch/arm/dts/rk3036.dtsi | 1 + > drivers/mmc/rockchip_dw_mmc.c | 28 ++++++++++++++++++++++------ > 2 files changed, 23 insertions(+), 6 deletions(-) > > diff --git a/arch/arm/dts/rk3036.dtsi b/arch/arm/dts/rk3036.dtsi > index 0daae1e..ecf5416 100644 > --- a/arch/arm/dts/rk3036.dtsi > +++ b/arch/arm/dts/rk3036.dtsi > @@ -257,6 +257,7 @@ > cap-mmc-highspeed; > mmc-ddr-1_8v; > disable-wp; > + fifo-mode; > non-removable; > num-slots = <1>; > default-sample-phase = <158>; > diff --git a/drivers/mmc/rockchip_dw_mmc.c b/drivers/mmc/rockchip_dw_mmc.c > index f11c8e0..616e0bb 100644 > --- a/drivers/mmc/rockchip_dw_mmc.c > +++ b/drivers/mmc/rockchip_dw_mmc.c > @@ -50,8 +50,10 @@ static int rockchip_dwmmc_ofdata_to_platdata(struct > udevice *dev) > host->get_mmc_clk = rockchip_dwmmc_get_mmc_clk; > host->priv = dev; > > - /* TODO(s...@chromium.org): Remove the need for this hack */ > - host->dev_index = (ulong)host->ioaddr == 0xff0f0000 ? 0 : 1; > + /* use non-removeable as sdcard and emmc as judgement */ > + if (fdtdec_lookup_phandle(gd->fdt_blob, dev->of_offset, > "non-removable") > + == -FDT_ERR_NOTFOUND) > + host->dev_index = 1;
I think this should be a separate patch as it does not relate to your commit message. Also can you use fdtdec_get_bool() instead? > > return 0; > } > @@ -63,6 +65,7 @@ static int rockchip_dwmmc_probe(struct udevice *dev) > struct dwmci_host *host = &priv->host; > u32 minmax[2]; > int ret; > + u32 fifo_depth; int, I think > > priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF); > if (IS_ERR(priv->grf)) > @@ -71,10 +74,23 @@ static int rockchip_dwmmc_probe(struct udevice *dev) > 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) Cannot be < 0 if u32 - so I think int is better. > + return -EINVAL; > + > + host->fifoth_val = MSIZE(0x2) | > + RX_WMARK(fifo_depth / 2 - 1) | TX_WMARK(fifo_depth / 2); > + > + if (fdtdec_lookup_phandle(gd->fdt_blob, dev->of_offset, "fifo-mode") > + != -FDT_ERR_NOTFOUND) fdtdec_get_bool() > + host->fifo_mode = 1; host->fifo_mode = true; > + > + ret = add_dwmci(host, minmax[1], minmax[0]); > if (ret) > return ret; > > -- > 1.9.1 > Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot