mmc: dw_mmc: remove the exynos specific code in dw-mmc.c
authorJaehoon Chung <jh80.chung@samsung.com>
Fri, 29 Nov 2013 11:08:57 +0000 (20:08 +0900)
committerPantelis Antoniou <panto@antoniou-consulting.com>
Sun, 8 Dec 2013 12:07:07 +0000 (14:07 +0200)
dw-mmc.c is the general driver file.
So, remove the exynos specific code at dw-mmc.c.
Instead, exynos specific cod can be move into exynos-dw_mmc.c.

Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
Acked-by: Alexey Brodkin <abrodkin@synopsys.com>
Acked-by: Pantelis Antoniou <panto@antoniou-consulting.com>
Acked-by: Minkyu Kang <mk7.kang@samsung.com>
drivers/mmc/dw_mmc.c
drivers/mmc/exynos_dw_mmc.c
include/dwmmc.h

index 1e0f72bbe7dcb75bfeeb5ed0a035b3945bf463e3..38f50ce0d8c528d15a21b2861b1a1ff8dd8b3efc 100644 (file)
@@ -11,7 +11,6 @@
 #include <mmc.h>
 #include <dwmmc.h>
 #include <asm-generic/errno.h>
-#include <asm/arch/dwmmc.h>
 
 #define PAGE_SIZE 4096
 
@@ -302,15 +301,8 @@ static int dwmci_init(struct mmc *mmc)
        struct dwmci_host *host = (struct dwmci_host *)mmc->priv;
        u32 fifo_size;
 
-       if (host->quirks & DWMCI_QUIRK_DISABLE_SMU) {
-               dwmci_writel(host, EMMCP_MPSBEGIN0, 0);
-               dwmci_writel(host, EMMCP_SEND0, 0);
-               dwmci_writel(host, EMMCP_CTRL0,
-                            MPSCTRL_SECURE_READ_BIT |
-                            MPSCTRL_SECURE_WRITE_BIT |
-                            MPSCTRL_NON_SECURE_READ_BIT |
-                            MPSCTRL_NON_SECURE_WRITE_BIT | MPSCTRL_VALID);
-       }
+       if (host->board_init)
+               host->board_init(host);
 
        dwmci_writel(host, DWMCI_PWREN, 1);
 
index a0f1511cb6f308de404defef63383016bfd2d932..b3e5c5e5e09b5db5d04bfac1b8bd3093b9d3d655 100644 (file)
@@ -34,6 +34,19 @@ unsigned int exynos_dwmci_get_clk(int dev_index)
        return get_mmc_clk(dev_index);
 }
 
+static void exynos_dwmci_board_init(struct dwmci_host *host)
+{
+       if (host->quirks & DWMCI_QUIRK_DISABLE_SMU) {
+               dwmci_writel(host, EMMCP_MPSBEGIN0, 0);
+               dwmci_writel(host, EMMCP_SEND0, 0);
+               dwmci_writel(host, EMMCP_CTRL0,
+                            MPSCTRL_SECURE_READ_BIT |
+                            MPSCTRL_SECURE_WRITE_BIT |
+                            MPSCTRL_NON_SECURE_READ_BIT |
+                            MPSCTRL_NON_SECURE_WRITE_BIT | MPSCTRL_VALID);
+       }
+}
+
 /*
  * This function adds the mmc channel to be registered with mmc core.
  * index -     mmc channel number.
@@ -65,6 +78,7 @@ int exynos_dwmci_add_port(int index, u32 regbase, int bus_width, u32 clksel)
 #ifdef CONFIG_EXYNOS5420
        host->quirks = DWMCI_QUIRK_DISABLE_SMU;
 #endif
+       host->board_init = exynos_dwmci_board_init;
 
        if (clksel) {
                host->clksel_val = clksel;
index 6c91143e96e37b5dd45594087fceaa277057e70d..a02dd67c1370f05cdc5b6571d2070ec5dc0e66cb 100644 (file)
@@ -141,6 +141,7 @@ struct dwmci_host {
        struct mmc *mmc;
 
        void (*clksel)(struct dwmci_host *host);
+       void (*board_init)(struct dwmci_host *host);
        unsigned int (*get_mmc_clk)(int dev_index);
 };