]> git.sur5r.net Git - u-boot/blobdiff - drivers/mmc/exynos_dw_mmc.c
pci: Set PCI_COMMAND_IO bit for VGA device
[u-boot] / drivers / mmc / exynos_dw_mmc.c
index c66c0b0bf830827a438ef48ad7485dd2c5a3ec35..863bbb3f64b27ea6ef1e860a7a7bd743426567ba 100644 (file)
@@ -13,6 +13,7 @@
 #include <asm/arch/dwmmc.h>
 #include <asm/arch/clk.h>
 #include <asm/arch/pinmux.h>
+#include <asm/arch/power.h>
 #include <asm/gpio.h>
 #include <asm-generic/errno.h>
 
@@ -38,7 +39,7 @@ static void exynos_dwmci_clksel(struct dwmci_host *host)
        dwmci_writel(host, DWMCI_CLKSEL, priv->sdr_timing);
 }
 
-unsigned int exynos_dwmci_get_clk(struct dwmci_host *host)
+unsigned int exynos_dwmci_get_clk(struct dwmci_host *host, uint freq)
 {
        unsigned long sclk;
        int8_t clk_div;
@@ -157,7 +158,7 @@ int exynos_dwmci_add_port(int index, u32 regbase, int bus_width, u32 clksel)
        return exynos_dwmci_core_init(host, index);
 }
 
-#ifdef CONFIG_OF_CONTROL
+#if CONFIG_IS_ENABLED(OF_CONTROL)
 static struct dwmci_host dwmci_host[DWMMC_MAX_CH_NUM];
 
 static int do_dwmci_init(struct dwmci_host *host)
@@ -196,7 +197,6 @@ static int exynos_dwmci_get_config(const void *blob, int node,
        if (host->dev_index == host->dev_id)
                host->dev_index = host->dev_id - PERIPH_ID_SDMMC0;
 
-
        /* Get the bus width from the device node */
        host->buswidth = fdtdec_get_int(blob, node, "samsung,bus-width", 0);
        if (host->buswidth <= 0) {
@@ -267,12 +267,21 @@ int exynos_dwmmc_init(const void *blob)
 {
        int compat_id;
        int node_list[DWMMC_MAX_CH_NUM];
+       int boot_dev_node;
        int err = 0, count;
 
        compat_id = COMPAT_SAMSUNG_EXYNOS_DWMMC;
 
        count = fdtdec_find_aliases_for_id(blob, "mmc",
                                compat_id, node_list, DWMMC_MAX_CH_NUM);
+
+       /* For DWMMC always set boot device as mmc 0 */
+       if (count >= 3 && get_boot_mode() == BOOT_MODE_SD) {
+               boot_dev_node = node_list[2];
+               node_list[2] = node_list[0];
+               node_list[0] = boot_dev_node;
+       }
+
        err = exynos_dwmci_process_node(blob, node_list, count);
 
        return err;