aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-imx/Kconfig4
-rw-r--r--arch/arm/mach-imx/devices-imx25.h9
-rw-r--r--arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c2
-rw-r--r--arch/arm/mach-imx/mach-mx25_3ds.c2
-rw-r--r--arch/arm/mach-mx3/Kconfig12
-rw-r--r--arch/arm/mach-mx3/devices-imx35.h9
-rw-r--r--arch/arm/mach-mx3/eukrea_mbimxsd-baseboard.c2
-rw-r--r--arch/arm/mach-mx3/mach-mx35_3ds.c2
-rw-r--r--arch/arm/mach-mx3/mach-pcm043.c2
-rw-r--r--arch/arm/mach-mx5/Kconfig6
-rw-r--r--arch/arm/mach-mx5/board-mx51_babbage.c4
-rw-r--r--arch/arm/mach-mx5/devices-imx51.h9
-rw-r--r--arch/arm/mach-mx5/eukrea_mbimx51-baseboard.c4
-rw-r--r--arch/arm/mach-mx5/eukrea_mbimxsd-baseboard.c2
-rw-r--r--arch/arm/plat-mxc/devices/Kconfig6
-rw-r--r--arch/arm/plat-mxc/devices/Makefile2
-rw-r--r--arch/arm/plat-mxc/devices/platform-esdhc.c71
-rw-r--r--arch/arm/plat-mxc/devices/platform-sdhci-esdhc-imx.c74
-rw-r--r--arch/arm/plat-mxc/include/mach/devices-common.h20
19 files changed, 124 insertions, 118 deletions
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index ed713e519f75..41b6450df810 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -93,7 +93,6 @@ comment "MX25 platforms:"
93config MACH_MX25_3DS 93config MACH_MX25_3DS
94 bool "Support MX25PDK (3DS) Platform" 94 bool "Support MX25PDK (3DS) Platform"
95 select SOC_IMX25 95 select SOC_IMX25
96 select IMX_HAVE_PLATFORM_ESDHC
97 select IMX_HAVE_PLATFORM_IMX2_WDT 96 select IMX_HAVE_PLATFORM_IMX2_WDT
98 select IMX_HAVE_PLATFORM_IMXDI_RTC 97 select IMX_HAVE_PLATFORM_IMXDI_RTC
99 select IMX_HAVE_PLATFORM_IMX_FB 98 select IMX_HAVE_PLATFORM_IMX_FB
@@ -101,11 +100,11 @@ config MACH_MX25_3DS
101 select IMX_HAVE_PLATFORM_IMX_UART 100 select IMX_HAVE_PLATFORM_IMX_UART
102 select IMX_HAVE_PLATFORM_MXC_EHCI 101 select IMX_HAVE_PLATFORM_MXC_EHCI
103 select IMX_HAVE_PLATFORM_MXC_NAND 102 select IMX_HAVE_PLATFORM_MXC_NAND
103 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
104 104
105config MACH_EUKREA_CPUIMX25 105config MACH_EUKREA_CPUIMX25
106 bool "Support Eukrea CPUIMX25 Platform" 106 bool "Support Eukrea CPUIMX25 Platform"
107 select SOC_IMX25 107 select SOC_IMX25
108 select IMX_HAVE_PLATFORM_ESDHC
109 select IMX_HAVE_PLATFORM_FLEXCAN 108 select IMX_HAVE_PLATFORM_FLEXCAN
110 select IMX_HAVE_PLATFORM_FSL_USB2_UDC 109 select IMX_HAVE_PLATFORM_FSL_USB2_UDC
111 select IMX_HAVE_PLATFORM_IMXDI_RTC 110 select IMX_HAVE_PLATFORM_IMXDI_RTC
@@ -114,6 +113,7 @@ config MACH_EUKREA_CPUIMX25
114 select IMX_HAVE_PLATFORM_IMX_UART 113 select IMX_HAVE_PLATFORM_IMX_UART
115 select IMX_HAVE_PLATFORM_MXC_EHCI 114 select IMX_HAVE_PLATFORM_MXC_EHCI
116 select IMX_HAVE_PLATFORM_MXC_NAND 115 select IMX_HAVE_PLATFORM_MXC_NAND
116 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
117 select MXC_ULPI if USB_ULPI 117 select MXC_ULPI if USB_ULPI
118 118
119choice 119choice
diff --git a/arch/arm/mach-imx/devices-imx25.h b/arch/arm/mach-imx/devices-imx25.h
index 953e1ce5334f..760e66c57c1b 100644
--- a/arch/arm/mach-imx/devices-imx25.h
+++ b/arch/arm/mach-imx/devices-imx25.h
@@ -74,13 +74,14 @@ extern const struct imx_mxc_nand_data imx25_mxc_nand_data __initconst;
74#define imx25_add_mxc_nand(pdata) \ 74#define imx25_add_mxc_nand(pdata) \
75 imx_add_mxc_nand(&imx25_mxc_nand_data, pdata) 75 imx_add_mxc_nand(&imx25_mxc_nand_data, pdata)
76 76
77extern const struct imx_sdhci_esdhc_imx_data
78imx25_sdhci_esdhc_imx_data[] __initconst;
79#define imx25_add_sdhci_esdhc_imx(id, pdata) \
80 imx_add_sdhci_esdhc_imx(&imx25_sdhci_esdhc_imx_data[id], pdata)
81
77extern const struct imx_spi_imx_data imx25_spi_imx_data[] __initconst; 82extern const struct imx_spi_imx_data imx25_spi_imx_data[] __initconst;
78#define imx25_add_spi_imx(id, pdata) \ 83#define imx25_add_spi_imx(id, pdata) \
79 imx_add_spi_imx(&imx25_spi_imx_data[id], pdata) 84 imx_add_spi_imx(&imx25_spi_imx_data[id], pdata)
80#define imx25_add_spi_imx0(pdata) imx25_add_spi_imx(0, pdata) 85#define imx25_add_spi_imx0(pdata) imx25_add_spi_imx(0, pdata)
81#define imx25_add_spi_imx1(pdata) imx25_add_spi_imx(1, pdata) 86#define imx25_add_spi_imx1(pdata) imx25_add_spi_imx(1, pdata)
82#define imx25_add_spi_imx2(pdata) imx25_add_spi_imx(2, pdata) 87#define imx25_add_spi_imx2(pdata) imx25_add_spi_imx(2, pdata)
83
84extern const struct imx_esdhc_imx_data imx25_esdhc_data[] __initconst;
85#define imx25_add_esdhc(id, pdata) \
86 imx_add_esdhc(&imx25_esdhc_data[id], pdata)
diff --git a/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c b/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c
index 75a5db568119..7cab720519ee 100644
--- a/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c
+++ b/arch/arm/mach-imx/eukrea_mbimxsd25-baseboard.c
@@ -275,7 +275,7 @@ void __init eukrea_mbimxsd25_baseboard_init(void)
275 imx25_add_imx_ssi(0, &eukrea_mbimxsd_ssi_pdata); 275 imx25_add_imx_ssi(0, &eukrea_mbimxsd_ssi_pdata);
276 276
277 imx25_add_flexcan1(NULL); 277 imx25_add_flexcan1(NULL);
278 imx25_add_esdhc(0, NULL); 278 imx25_add_sdhci_esdhc_imx(0, NULL);
279 279
280 gpio_request(GPIO_LED1, "LED1"); 280 gpio_request(GPIO_LED1, "LED1");
281 gpio_direction_output(GPIO_LED1, 1); 281 gpio_direction_output(GPIO_LED1, 1);
diff --git a/arch/arm/mach-imx/mach-mx25_3ds.c b/arch/arm/mach-imx/mach-mx25_3ds.c
index f07d3d754152..52b4d9b3717d 100644
--- a/arch/arm/mach-imx/mach-mx25_3ds.c
+++ b/arch/arm/mach-imx/mach-mx25_3ds.c
@@ -200,7 +200,7 @@ static void __init mx25pdk_init(void)
200 imx25_add_fec(&mx25_fec_pdata); 200 imx25_add_fec(&mx25_fec_pdata);
201 imx25_add_imx_keypad(&mx25pdk_keymap_data); 201 imx25_add_imx_keypad(&mx25pdk_keymap_data);
202 202
203 imx25_add_esdhc(0, NULL); 203 imx25_add_sdhci_esdhc_imx(0, NULL);
204} 204}
205 205
206static void __init mx25pdk_timer_init(void) 206static void __init mx25pdk_timer_init(void)
diff --git a/arch/arm/mach-mx3/Kconfig b/arch/arm/mach-mx3/Kconfig
index 8df139f61481..a682c03a1f94 100644
--- a/arch/arm/mach-mx3/Kconfig
+++ b/arch/arm/mach-mx3/Kconfig
@@ -145,6 +145,7 @@ config MACH_QONG
145config MACH_PCM043 145config MACH_PCM043
146 bool "Support Phytec pcm043 (i.MX35) platforms" 146 bool "Support Phytec pcm043 (i.MX35) platforms"
147 select SOC_IMX35 147 select SOC_IMX35
148 select IMX_HAVE_PLATFORM_FLEXCAN
148 select IMX_HAVE_PLATFORM_FSL_USB2_UDC 149 select IMX_HAVE_PLATFORM_FSL_USB2_UDC
149 select IMX_HAVE_PLATFORM_IMX2_WDT 150 select IMX_HAVE_PLATFORM_IMX2_WDT
150 select IMX_HAVE_PLATFORM_IMX_I2C 151 select IMX_HAVE_PLATFORM_IMX_I2C
@@ -152,8 +153,7 @@ config MACH_PCM043
152 select IMX_HAVE_PLATFORM_IMX_UART 153 select IMX_HAVE_PLATFORM_IMX_UART
153 select IMX_HAVE_PLATFORM_MXC_EHCI 154 select IMX_HAVE_PLATFORM_MXC_EHCI
154 select IMX_HAVE_PLATFORM_MXC_NAND 155 select IMX_HAVE_PLATFORM_MXC_NAND
155 select IMX_HAVE_PLATFORM_FLEXCAN 156 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
156 select IMX_HAVE_PLATFORM_ESDHC
157 select MXC_ULPI if USB_ULPI 157 select MXC_ULPI if USB_ULPI
158 help 158 help
159 Include support for Phytec pcm043 platform. This includes 159 Include support for Phytec pcm043 platform. This includes
@@ -176,12 +176,12 @@ config MACH_MX35_3DS
176 bool "Support MX35PDK platform" 176 bool "Support MX35PDK platform"
177 select SOC_IMX35 177 select SOC_IMX35
178 select MXC_DEBUG_BOARD 178 select MXC_DEBUG_BOARD
179 select IMX_HAVE_PLATFORM_ESDHC
180 select IMX_HAVE_PLATFORM_FSL_USB2_UDC 179 select IMX_HAVE_PLATFORM_FSL_USB2_UDC
181 select IMX_HAVE_PLATFORM_IMX2_WDT 180 select IMX_HAVE_PLATFORM_IMX2_WDT
182 select IMX_HAVE_PLATFORM_IMX_UART 181 select IMX_HAVE_PLATFORM_IMX_UART
183 select IMX_HAVE_PLATFORM_MXC_EHCI 182 select IMX_HAVE_PLATFORM_MXC_EHCI
184 select IMX_HAVE_PLATFORM_MXC_NAND 183 select IMX_HAVE_PLATFORM_MXC_NAND
184 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
185 help 185 help
186 Include support for MX35PDK platform. This includes specific 186 Include support for MX35PDK platform. This includes specific
187 configurations for the board and its peripherals. 187 configurations for the board and its peripherals.
@@ -197,14 +197,14 @@ config MACH_KZM_ARM11_01
197config MACH_EUKREA_CPUIMX35 197config MACH_EUKREA_CPUIMX35
198 bool "Support Eukrea CPUIMX35 Platform" 198 bool "Support Eukrea CPUIMX35 Platform"
199 select SOC_IMX35 199 select SOC_IMX35
200 select IMX_HAVE_PLATFORM_FLEXCAN
200 select IMX_HAVE_PLATFORM_FSL_USB2_UDC 201 select IMX_HAVE_PLATFORM_FSL_USB2_UDC
201 select IMX_HAVE_PLATFORM_IMX2_WDT 202 select IMX_HAVE_PLATFORM_IMX2_WDT
202 select IMX_HAVE_PLATFORM_IMX_UART
203 select IMX_HAVE_PLATFORM_IMX_I2C 203 select IMX_HAVE_PLATFORM_IMX_I2C
204 select IMX_HAVE_PLATFORM_IMX_UART
204 select IMX_HAVE_PLATFORM_MXC_EHCI 205 select IMX_HAVE_PLATFORM_MXC_EHCI
205 select IMX_HAVE_PLATFORM_MXC_NAND 206 select IMX_HAVE_PLATFORM_MXC_NAND
206 select IMX_HAVE_PLATFORM_FLEXCAN 207 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
207 select IMX_HAVE_PLATFORM_ESDHC
208 select MXC_ULPI if USB_ULPI 208 select MXC_ULPI if USB_ULPI
209 help 209 help
210 Include support for Eukrea CPUIMX35 platform. This includes 210 Include support for Eukrea CPUIMX35 platform. This includes
diff --git a/arch/arm/mach-mx3/devices-imx35.h b/arch/arm/mach-mx3/devices-imx35.h
index c9fdded7ff39..677b18aa7ae6 100644
--- a/arch/arm/mach-mx3/devices-imx35.h
+++ b/arch/arm/mach-mx3/devices-imx35.h
@@ -64,12 +64,13 @@ extern const struct imx_mxc_w1_data imx35_mxc_w1_data __initconst;
64#define imx35_add_mxc_w1(pdata) \ 64#define imx35_add_mxc_w1(pdata) \
65 imx_add_mxc_w1(&imx35_mxc_w1_data) 65 imx_add_mxc_w1(&imx35_mxc_w1_data)
66 66
67extern const struct imx_sdhci_esdhc_imx_data
68imx35_sdhci_esdhc_imx_data[] __initconst;
69#define imx35_add_sdhci_esdhc_imx(id, pdata) \
70 imx_add_sdhci_esdhc_imx(&imx35_sdhci_esdhc_imx_data[id], pdata)
71
67extern const struct imx_spi_imx_data imx35_cspi_data[] __initconst; 72extern const struct imx_spi_imx_data imx35_cspi_data[] __initconst;
68#define imx35_add_cspi(id, pdata) \ 73#define imx35_add_cspi(id, pdata) \
69 imx_add_spi_imx(&imx35_cspi_data[id], pdata) 74 imx_add_spi_imx(&imx35_cspi_data[id], pdata)
70#define imx35_add_spi_imx0(pdata) imx35_add_cspi(0, pdata) 75#define imx35_add_spi_imx0(pdata) imx35_add_cspi(0, pdata)
71#define imx35_add_spi_imx1(pdata) imx35_add_cspi(1, pdata) 76#define imx35_add_spi_imx1(pdata) imx35_add_cspi(1, pdata)
72
73extern const struct imx_esdhc_imx_data imx35_esdhc_data[] __initconst;
74#define imx35_add_esdhc(id, pdata) \
75 imx_add_esdhc(&imx35_esdhc_data[id], pdata)
diff --git a/arch/arm/mach-mx3/eukrea_mbimxsd-baseboard.c b/arch/arm/mach-mx3/eukrea_mbimxsd-baseboard.c
index 1abc10d52922..950dbb13b19b 100644
--- a/arch/arm/mach-mx3/eukrea_mbimxsd-baseboard.c
+++ b/arch/arm/mach-mx3/eukrea_mbimxsd-baseboard.c
@@ -289,7 +289,7 @@ void __init eukrea_mbimxsd35_baseboard_init(void)
289 imx35_add_imx_ssi(0, &eukrea_mbimxsd_ssi_pdata); 289 imx35_add_imx_ssi(0, &eukrea_mbimxsd_ssi_pdata);
290 290
291 imx35_add_flexcan1(NULL); 291 imx35_add_flexcan1(NULL);
292 imx35_add_esdhc(0, NULL); 292 imx35_add_sdhci_esdhc_imx(0, NULL);
293 293
294 gpio_request(GPIO_LED1, "LED1"); 294 gpio_request(GPIO_LED1, "LED1");
295 gpio_direction_output(GPIO_LED1, 1); 295 gpio_direction_output(GPIO_LED1, 1);
diff --git a/arch/arm/mach-mx3/mach-mx35_3ds.c b/arch/arm/mach-mx3/mach-mx35_3ds.c
index d5ca7ea0743a..7e73153b2b6b 100644
--- a/arch/arm/mach-mx3/mach-mx35_3ds.c
+++ b/arch/arm/mach-mx3/mach-mx35_3ds.c
@@ -150,7 +150,7 @@ static void __init mxc_board_init(void)
150 imx35_add_mxc_ehci_hs(&usb_host_pdata); 150 imx35_add_mxc_ehci_hs(&usb_host_pdata);
151 151
152 imx35_add_mxc_nand(&mx35pdk_nand_board_info); 152 imx35_add_mxc_nand(&mx35pdk_nand_board_info);
153 imx35_add_esdhc(0, NULL); 153 imx35_add_sdhci_esdhc_imx(0, NULL);
154 154
155 if (mxc_expio_init(MX35_CS5_BASE_ADDR, EXPIO_PARENT_INT)) 155 if (mxc_expio_init(MX35_CS5_BASE_ADDR, EXPIO_PARENT_INT))
156 pr_warn("Init of the debugboard failed, all " 156 pr_warn("Init of the debugboard failed, all "
diff --git a/arch/arm/mach-mx3/mach-pcm043.c b/arch/arm/mach-mx3/mach-pcm043.c
index f2f2fd036273..826c6dc2f4c8 100644
--- a/arch/arm/mach-mx3/mach-pcm043.c
+++ b/arch/arm/mach-mx3/mach-pcm043.c
@@ -393,7 +393,7 @@ static void __init mxc_board_init(void)
393 imx35_add_fsl_usb2_udc(&otg_device_pdata); 393 imx35_add_fsl_usb2_udc(&otg_device_pdata);
394 394
395 imx35_add_flexcan1(NULL); 395 imx35_add_flexcan1(NULL);
396 imx35_add_esdhc(0, NULL); 396 imx35_add_sdhci_esdhc_imx(0, NULL);
397} 397}
398 398
399static void __init pcm043_timer_init(void) 399static void __init pcm043_timer_init(void)
diff --git a/arch/arm/mach-mx5/Kconfig b/arch/arm/mach-mx5/Kconfig
index 3ec910a7a182..95cb0a831478 100644
--- a/arch/arm/mach-mx5/Kconfig
+++ b/arch/arm/mach-mx5/Kconfig
@@ -14,7 +14,7 @@ config MACH_MX51_BABBAGE
14 bool "Support MX51 BABBAGE platforms" 14 bool "Support MX51 BABBAGE platforms"
15 select IMX_HAVE_PLATFORM_IMX_I2C 15 select IMX_HAVE_PLATFORM_IMX_I2C
16 select IMX_HAVE_PLATFORM_IMX_UART 16 select IMX_HAVE_PLATFORM_IMX_UART
17 select IMX_HAVE_PLATFORM_ESDHC 17 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
18 help 18 help
19 Include support for MX51 Babbage platform, also known as MX51EVK in 19 Include support for MX51 Babbage platform, also known as MX51EVK in
20 u-boot. This includes specific configurations for the board and its 20 u-boot. This includes specific configurations for the board and its
@@ -47,7 +47,7 @@ choice
47config MACH_EUKREA_MBIMX51_BASEBOARD 47config MACH_EUKREA_MBIMX51_BASEBOARD
48 prompt "Eukrea MBIMX51 development board" 48 prompt "Eukrea MBIMX51 development board"
49 bool 49 bool
50 select IMX_HAVE_PLATFORM_ESDHC 50 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
51 help 51 help
52 This adds board specific devices that can be found on Eukrea's 52 This adds board specific devices that can be found on Eukrea's
53 MBIMX51 evaluation board. 53 MBIMX51 evaluation board.
@@ -72,7 +72,7 @@ choice
72config MACH_EUKREA_MBIMXSD51_BASEBOARD 72config MACH_EUKREA_MBIMXSD51_BASEBOARD
73 prompt "Eukrea MBIMXSD development board" 73 prompt "Eukrea MBIMXSD development board"
74 bool 74 bool
75 select IMX_HAVE_PLATFORM_ESDHC 75 select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
76 help 76 help
77 This adds board specific devices that can be found on Eukrea's 77 This adds board specific devices that can be found on Eukrea's
78 MBIMXSD evaluation board. 78 MBIMXSD evaluation board.
diff --git a/arch/arm/mach-mx5/board-mx51_babbage.c b/arch/arm/mach-mx5/board-mx51_babbage.c
index acbe30df2e69..542f2b147dcc 100644
--- a/arch/arm/mach-mx5/board-mx51_babbage.c
+++ b/arch/arm/mach-mx5/board-mx51_babbage.c
@@ -349,8 +349,8 @@ static void __init mxc_board_init(void)
349 mxc_iomux_v3_setup_pad(&usbh1stp); 349 mxc_iomux_v3_setup_pad(&usbh1stp);
350 babbage_usbhub_reset(); 350 babbage_usbhub_reset();
351 351
352 imx51_add_esdhc(0, NULL); 352 imx51_add_sdhci_esdhc_imx(0, NULL);
353 imx51_add_esdhc(1, NULL); 353 imx51_add_sdhci_esdhc_imx(1, NULL);
354} 354}
355 355
356static void __init mx51_babbage_timer_init(void) 356static void __init mx51_babbage_timer_init(void)
diff --git a/arch/arm/mach-mx5/devices-imx51.h b/arch/arm/mach-mx5/devices-imx51.h
index 8c50cb5d05f5..01b71ef4086c 100644
--- a/arch/arm/mach-mx5/devices-imx51.h
+++ b/arch/arm/mach-mx5/devices-imx51.h
@@ -31,6 +31,11 @@ extern const struct imx_mxc_nand_data imx51_mxc_nand_data __initconst;
31#define imx51_add_mxc_nand(pdata) \ 31#define imx51_add_mxc_nand(pdata) \
32 imx_add_mxc_nand(&imx51_mxc_nand_data, pdata) 32 imx_add_mxc_nand(&imx51_mxc_nand_data, pdata)
33 33
34extern const struct imx_sdhci_esdhc_imx_data
35imx51_sdhci_esdhc_imx_data[] __initconst;
36#define imx51_add_sdhci_esdhc_imx(id, pdata) \
37 imx_add_sdhci_esdhc_imx(&imx51_sdhci_esdhc_imx_data[id], pdata)
38
34extern const struct imx_spi_imx_data imx51_cspi_data __initconst; 39extern const struct imx_spi_imx_data imx51_cspi_data __initconst;
35#define imx51_add_cspi(pdata) \ 40#define imx51_add_cspi(pdata) \
36 imx_add_spi_imx(&imx51_cspi_data, pdata) 41 imx_add_spi_imx(&imx51_cspi_data, pdata)
@@ -38,7 +43,3 @@ extern const struct imx_spi_imx_data imx51_cspi_data __initconst;
38extern const struct imx_spi_imx_data imx51_ecspi_data[] __initconst; 43extern const struct imx_spi_imx_data imx51_ecspi_data[] __initconst;
39#define imx51_add_ecspi(id, pdata) \ 44#define imx51_add_ecspi(id, pdata) \
40 imx_add_spi_imx(&imx51_ecspi_data[id], pdata) 45 imx_add_spi_imx(&imx51_ecspi_data[id], pdata)
41
42extern const struct imx_esdhc_imx_data imx51_esdhc_data[] __initconst;
43#define imx51_add_esdhc(id, pdata) \
44 imx_add_esdhc(&imx51_esdhc_data[id], pdata)
diff --git a/arch/arm/mach-mx5/eukrea_mbimx51-baseboard.c b/arch/arm/mach-mx5/eukrea_mbimx51-baseboard.c
index a2e6e8c39d25..4e74b9907b7c 100644
--- a/arch/arm/mach-mx5/eukrea_mbimx51-baseboard.c
+++ b/arch/arm/mach-mx5/eukrea_mbimx51-baseboard.c
@@ -217,6 +217,6 @@ void __init eukrea_mbimx51_baseboard_init(void)
217 i2c_register_board_info(1, mbimx51_i2c_devices, 217 i2c_register_board_info(1, mbimx51_i2c_devices,
218 ARRAY_SIZE(mbimx51_i2c_devices)); 218 ARRAY_SIZE(mbimx51_i2c_devices));
219 219
220 imx51_add_esdhc(0, NULL); 220 imx51_add_sdhci_esdhc_imx(0, NULL);
221 imx51_add_esdhc(1, NULL); 221 imx51_add_sdhci_esdhc_imx(1, NULL);
222} 222}
diff --git a/arch/arm/mach-mx5/eukrea_mbimxsd-baseboard.c b/arch/arm/mach-mx5/eukrea_mbimxsd-baseboard.c
index 2b48f5190830..038d8c94f79e 100644
--- a/arch/arm/mach-mx5/eukrea_mbimxsd-baseboard.c
+++ b/arch/arm/mach-mx5/eukrea_mbimxsd-baseboard.c
@@ -149,7 +149,7 @@ void __init eukrea_mbimxsd51_baseboard_init(void)
149 imx51_add_imx_uart(1, NULL); 149 imx51_add_imx_uart(1, NULL);
150 imx51_add_imx_uart(2, &uart_pdata); 150 imx51_add_imx_uart(2, &uart_pdata);
151 151
152 imx51_add_esdhc(0, NULL); 152 imx51_add_sdhci_esdhc_imx(0, NULL);
153 153
154 gpio_request(GPIO_LED1, "LED1"); 154 gpio_request(GPIO_LED1, "LED1");
155 gpio_direction_output(GPIO_LED1, 1); 155 gpio_direction_output(GPIO_LED1, 1);
diff --git a/arch/arm/plat-mxc/devices/Kconfig b/arch/arm/plat-mxc/devices/Kconfig
index f34c13998cbc..b391f4dcfcc2 100644
--- a/arch/arm/plat-mxc/devices/Kconfig
+++ b/arch/arm/plat-mxc/devices/Kconfig
@@ -1,6 +1,3 @@
1config IMX_HAVE_PLATFORM_ESDHC
2 bool
3
4config IMX_HAVE_PLATFORM_FEC 1config IMX_HAVE_PLATFORM_FEC
5 bool 2 bool
6 default y if ARCH_MX25 || SOC_IMX27 || SOC_IMX35 || ARCH_MX51 3 default y if ARCH_MX25 || SOC_IMX27 || SOC_IMX35 || ARCH_MX51
@@ -69,5 +66,8 @@ config IMX_HAVE_PLATFORM_MXC_RNGA
69config IMX_HAVE_PLATFORM_MXC_W1 66config IMX_HAVE_PLATFORM_MXC_W1
70 bool 67 bool
71 68
69config IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
70 bool
71
72config IMX_HAVE_PLATFORM_SPI_IMX 72config IMX_HAVE_PLATFORM_SPI_IMX
73 bool 73 bool
diff --git a/arch/arm/plat-mxc/devices/Makefile b/arch/arm/plat-mxc/devices/Makefile
index 91fdd6c58b5b..75cd2ece9053 100644
--- a/arch/arm/plat-mxc/devices/Makefile
+++ b/arch/arm/plat-mxc/devices/Makefile
@@ -1,4 +1,3 @@
1obj-$(CONFIG_IMX_HAVE_PLATFORM_ESDHC) += platform-esdhc.o
2obj-$(CONFIG_IMX_HAVE_PLATFORM_FEC) += platform-fec.o 1obj-$(CONFIG_IMX_HAVE_PLATFORM_FEC) += platform-fec.o
3obj-$(CONFIG_IMX_HAVE_PLATFORM_FLEXCAN) += platform-flexcan.o 2obj-$(CONFIG_IMX_HAVE_PLATFORM_FLEXCAN) += platform-flexcan.o
4obj-$(CONFIG_IMX_HAVE_PLATFORM_FSL_USB2_UDC) += platform-fsl-usb2-udc.o 3obj-$(CONFIG_IMX_HAVE_PLATFORM_FSL_USB2_UDC) += platform-fsl-usb2-udc.o
@@ -21,4 +20,5 @@ obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_NAND) += platform-mxc_nand.o
21obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_PWM) += platform-mxc_pwm.o 20obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_PWM) += platform-mxc_pwm.o
22obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_RNGA) += platform-mxc_rnga.o 21obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_RNGA) += platform-mxc_rnga.o
23obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_W1) += platform-mxc_w1.o 22obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_W1) += platform-mxc_w1.o
23obj-$(CONFIG_IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX) += platform-sdhci-esdhc-imx.o
24obj-$(CONFIG_IMX_HAVE_PLATFORM_SPI_IMX) += platform-spi_imx.o 24obj-$(CONFIG_IMX_HAVE_PLATFORM_SPI_IMX) += platform-spi_imx.o
diff --git a/arch/arm/plat-mxc/devices/platform-esdhc.c b/arch/arm/plat-mxc/devices/platform-esdhc.c
deleted file mode 100644
index 013e92f09fc0..000000000000
--- a/arch/arm/plat-mxc/devices/platform-esdhc.c
+++ /dev/null
@@ -1,71 +0,0 @@
1/*
2 * Copyright (C) 2010 Pengutronix, Wolfram Sang <w.sang@pengutronix.de>
3 *
4 * This program is free software; you can redistribute it and/or modify it under
5 * the terms of the GNU General Public License version 2 as published by the
6 * Free Software Foundation.
7 */
8
9#include <mach/hardware.h>
10#include <mach/devices-common.h>
11#include <mach/esdhc.h>
12
13#define imx_esdhc_imx_data_entry_single(soc, _id, hwid) \
14 { \
15 .id = _id, \
16 .iobase = soc ## _ESDHC ## hwid ## _BASE_ADDR, \
17 .irq = soc ## _INT_ESDHC ## hwid, \
18 }
19
20#define imx_esdhc_imx_data_entry(soc, id, hwid) \
21 [id] = imx_esdhc_imx_data_entry_single(soc, id, hwid)
22
23#ifdef CONFIG_SOC_IMX25
24const struct imx_esdhc_imx_data imx25_esdhc_data[] __initconst = {
25#define imx25_esdhc_data_entry(_id, _hwid) \
26 imx_esdhc_imx_data_entry(MX25, _id, _hwid)
27 imx25_esdhc_data_entry(0, 1),
28 imx25_esdhc_data_entry(1, 2),
29};
30#endif /* ifdef CONFIG_SOC_IMX25 */
31
32#ifdef CONFIG_SOC_IMX35
33const struct imx_esdhc_imx_data imx35_esdhc_data[] __initconst = {
34#define imx35_esdhc_data_entry(_id, _hwid) \
35 imx_esdhc_imx_data_entry(MX35, _id, _hwid)
36 imx35_esdhc_data_entry(0, 1),
37 imx35_esdhc_data_entry(1, 2),
38 imx35_esdhc_data_entry(2, 3),
39};
40#endif /* ifdef CONFIG_SOC_IMX35 */
41
42#ifdef CONFIG_ARCH_MX51
43const struct imx_esdhc_imx_data imx51_esdhc_data[] __initconst = {
44#define imx51_esdhc_data_entry(_id, _hwid) \
45 imx_esdhc_imx_data_entry(MX51, _id, _hwid)
46 imx51_esdhc_data_entry(0, 1),
47 imx51_esdhc_data_entry(1, 2),
48 imx51_esdhc_data_entry(2, 3),
49 imx51_esdhc_data_entry(3, 4),
50};
51#endif /* ifdef CONFIG_ARCH_MX51 */
52
53struct platform_device *__init imx_add_esdhc(
54 const struct imx_esdhc_imx_data *data,
55 const struct esdhc_platform_data *pdata)
56{
57 struct resource res[] = {
58 {
59 .start = data->iobase,
60 .end = data->iobase + SZ_16K - 1,
61 .flags = IORESOURCE_MEM,
62 }, {
63 .start = data->irq,
64 .end = data->irq,
65 .flags = IORESOURCE_IRQ,
66 },
67 };
68
69 return imx_add_platform_device("sdhci-esdhc-imx", data->id, res,
70 ARRAY_SIZE(res), pdata, sizeof(*pdata));
71}
diff --git a/arch/arm/plat-mxc/devices/platform-sdhci-esdhc-imx.c b/arch/arm/plat-mxc/devices/platform-sdhci-esdhc-imx.c
new file mode 100644
index 000000000000..167cce89e7c7
--- /dev/null
+++ b/arch/arm/plat-mxc/devices/platform-sdhci-esdhc-imx.c
@@ -0,0 +1,74 @@
1/*
2 * Copyright (C) 2010 Pengutronix, Wolfram Sang <w.sang@pengutronix.de>
3 *
4 * This program is free software; you can redistribute it and/or modify it under
5 * the terms of the GNU General Public License version 2 as published by the
6 * Free Software Foundation.
7 */
8
9#include <mach/hardware.h>
10#include <mach/devices-common.h>
11#include <mach/esdhc.h>
12
13#define imx_sdhci_esdhc_imx_data_entry_single(soc, _id, hwid) \
14 { \
15 .id = _id, \
16 .iobase = soc ## _ESDHC ## hwid ## _BASE_ADDR, \
17 .irq = soc ## _INT_ESDHC ## hwid, \
18 }
19
20#define imx_sdhci_esdhc_imx_data_entry(soc, id, hwid) \
21 [id] = imx_sdhci_esdhc_imx_data_entry_single(soc, id, hwid)
22
23#ifdef CONFIG_SOC_IMX25
24const struct imx_sdhci_esdhc_imx_data
25imx25_sdhci_esdhc_imx_data[] __initconst = {
26#define imx25_sdhci_esdhc_imx_data_entry(_id, _hwid) \
27 imx_sdhci_esdhc_imx_data_entry(MX25, _id, _hwid)
28 imx25_sdhci_esdhc_imx_data_entry(0, 1),
29 imx25_sdhci_esdhc_imx_data_entry(1, 2),
30};
31#endif /* ifdef CONFIG_SOC_IMX25 */
32
33#ifdef CONFIG_SOC_IMX35
34const struct imx_sdhci_esdhc_imx_data
35imx35_sdhci_esdhc_imx_data[] __initconst = {
36#define imx35_sdhci_esdhc_imx_data_entry(_id, _hwid) \
37 imx_sdhci_esdhc_imx_data_entry(MX35, _id, _hwid)
38 imx35_sdhci_esdhc_imx_data_entry(0, 1),
39 imx35_sdhci_esdhc_imx_data_entry(1, 2),
40 imx35_sdhci_esdhc_imx_data_entry(2, 3),
41};
42#endif /* ifdef CONFIG_SOC_IMX35 */
43
44#ifdef CONFIG_ARCH_MX51
45const struct imx_sdhci_esdhc_imx_data
46imx51_sdhci_esdhc_imx_data[] __initconst = {
47#define imx51_sdhci_esdhc_imx_data_entry(_id, _hwid) \
48 imx_sdhci_esdhc_imx_data_entry(MX51, _id, _hwid)
49 imx51_sdhci_esdhc_imx_data_entry(0, 1),
50 imx51_sdhci_esdhc_imx_data_entry(1, 2),
51 imx51_sdhci_esdhc_imx_data_entry(2, 3),
52 imx51_sdhci_esdhc_imx_data_entry(3, 4),
53};
54#endif /* ifdef CONFIG_ARCH_MX51 */
55
56struct platform_device *__init imx_add_sdhci_esdhc_imx(
57 const struct imx_sdhci_esdhc_imx_data *data,
58 const struct esdhc_platform_data *pdata)
59{
60 struct resource res[] = {
61 {
62 .start = data->iobase,
63 .end = data->iobase + SZ_16K - 1,
64 .flags = IORESOURCE_MEM,
65 }, {
66 .start = data->irq,
67 .end = data->irq,
68 .flags = IORESOURCE_IRQ,
69 },
70 };
71
72 return imx_add_platform_device("sdhci-esdhc-imx", data->id, res,
73 ARRAY_SIZE(res), pdata, sizeof(*pdata));
74}
diff --git a/arch/arm/plat-mxc/include/mach/devices-common.h b/arch/arm/plat-mxc/include/mach/devices-common.h
index 5a62dc479192..3640eaf88c02 100644
--- a/arch/arm/plat-mxc/include/mach/devices-common.h
+++ b/arch/arm/plat-mxc/include/mach/devices-common.h
@@ -242,6 +242,16 @@ struct imx_mxc_w1_data {
242struct platform_device *__init imx_add_mxc_w1( 242struct platform_device *__init imx_add_mxc_w1(
243 const struct imx_mxc_w1_data *data); 243 const struct imx_mxc_w1_data *data);
244 244
245#include <mach/esdhc.h>
246struct imx_sdhci_esdhc_imx_data {
247 int id;
248 resource_size_t iobase;
249 resource_size_t irq;
250};
251struct platform_device *__init imx_add_sdhci_esdhc_imx(
252 const struct imx_sdhci_esdhc_imx_data *data,
253 const struct esdhc_platform_data *pdata);
254
245#include <mach/spi.h> 255#include <mach/spi.h>
246struct imx_spi_imx_data { 256struct imx_spi_imx_data {
247 const char *devid; 257 const char *devid;
@@ -253,13 +263,3 @@ struct imx_spi_imx_data {
253struct platform_device *__init imx_add_spi_imx( 263struct platform_device *__init imx_add_spi_imx(
254 const struct imx_spi_imx_data *data, 264 const struct imx_spi_imx_data *data,
255 const struct spi_imx_master *pdata); 265 const struct spi_imx_master *pdata);
256
257#include <mach/esdhc.h>
258struct imx_esdhc_imx_data {
259 int id;
260 resource_size_t iobase;
261 resource_size_t irq;
262};
263struct platform_device *__init imx_add_esdhc(
264 const struct imx_esdhc_imx_data *data,
265 const struct esdhc_platform_data *pdata);