]> git.sur5r.net Git - u-boot/blobdiff - drivers/mmc/dw_mmc.c
mmc/dwmmc: modify FIFO threshold only if value explicitly set
[u-boot] / drivers / mmc / dw_mmc.c
index 9a803a02d4f989b968e30cb076784bf04b6bba6e..19d9b0b899c83dd2470a9d03b10000e16149bc1e 100644 (file)
@@ -220,12 +220,12 @@ static int dwmci_setup_bus(struct dwmci_host *host, u32 freq)
        if ((freq == host->clock) || (freq == 0))
                return 0;
        /*
-        * If host->mmc_clk didn't define,
+        * If host->get_mmc_clk didn't define,
         * then assume that host->bus_hz is source clock value.
         * host->bus_hz should be set from user.
         */
-       if (host->mmc_clk)
-               sclk = host->mmc_clk(host->dev_index);
+       if (host->get_mmc_clk)
+               sclk = host->get_mmc_clk(host->dev_index);
        else if (host->bus_hz)
                sclk = host->bus_hz;
        else {
@@ -299,7 +299,9 @@ static void dwmci_set_ios(struct mmc *mmc)
 static int dwmci_init(struct mmc *mmc)
 {
        struct dwmci_host *host = (struct dwmci_host *)mmc->priv;
-       u32 fifo_size;
+
+       if (host->board_init)
+               host->board_init(host);
 
        dwmci_writel(host, DWMCI_PWREN, 1);
 
@@ -319,13 +321,9 @@ static int dwmci_init(struct mmc *mmc)
        dwmci_writel(host, DWMCI_IDINTEN, 0);
        dwmci_writel(host, DWMCI_BMOD, 1);
 
-       if (!host->fifoth_val) {
-               fifo_size = dwmci_readl(host, DWMCI_FIFOTH);
-               fifo_size = ((fifo_size & RX_WMARK_MASK) >> RX_WMARK_SHIFT) + 1;
-               host->fifoth_val = MSIZE(0x2) | RX_WMARK(fifo_size / 2 - 1) |
-                       TX_WMARK(fifo_size / 2);
+       if (host->fifoth_val) {
+               dwmci_writel(host, DWMCI_FIFOTH, host->fifoth_val);
        }
-       dwmci_writel(host, DWMCI_FIFOTH, host->fifoth_val);
 
        dwmci_writel(host, DWMCI_CLKENA, 0);
        dwmci_writel(host, DWMCI_CLKSRC, 0);