diff options
Diffstat (limited to 'arch/arm/mach-mx25')
-rw-r--r-- | arch/arm/mach-mx25/Kconfig | 6 | ||||
-rw-r--r-- | arch/arm/mach-mx25/clock.c | 34 | ||||
-rw-r--r-- | arch/arm/mach-mx25/devices-imx25.h | 61 | ||||
-rw-r--r-- | arch/arm/mach-mx25/devices.c | 58 | ||||
-rw-r--r-- | arch/arm/mach-mx25/devices.h | 3 | ||||
-rw-r--r-- | arch/arm/mach-mx25/eukrea_mbimxsd-baseboard.c | 44 | ||||
-rw-r--r-- | arch/arm/mach-mx25/mach-cpuimx25.c | 19 | ||||
-rw-r--r-- | arch/arm/mach-mx25/mach-mx25_3ds.c | 5 |
8 files changed, 117 insertions, 113 deletions
diff --git a/arch/arm/mach-mx25/Kconfig b/arch/arm/mach-mx25/Kconfig index c71a7bc19284..aa57e35ce3cd 100644 --- a/arch/arm/mach-mx25/Kconfig +++ b/arch/arm/mach-mx25/Kconfig | |||
@@ -12,6 +12,8 @@ config MACH_EUKREA_CPUIMX25 | |||
12 | select IMX_HAVE_PLATFORM_IMX_I2C | 12 | select IMX_HAVE_PLATFORM_IMX_I2C |
13 | select IMX_HAVE_PLATFORM_IMX_UART | 13 | select IMX_HAVE_PLATFORM_IMX_UART |
14 | select IMX_HAVE_PLATFORM_MXC_NAND | 14 | select IMX_HAVE_PLATFORM_MXC_NAND |
15 | select IMX_HAVE_PLATFORM_FLEXCAN | ||
16 | select IMX_HAVE_PLATFORM_ESDHC | ||
15 | select MXC_ULPI if USB_ULPI | 17 | select MXC_ULPI if USB_ULPI |
16 | 18 | ||
17 | choice | 19 | choice |
@@ -20,8 +22,8 @@ choice | |||
20 | default MACH_EUKREA_MBIMXSD25_BASEBOARD | 22 | default MACH_EUKREA_MBIMXSD25_BASEBOARD |
21 | 23 | ||
22 | config MACH_EUKREA_MBIMXSD25_BASEBOARD | 24 | config MACH_EUKREA_MBIMXSD25_BASEBOARD |
23 | prompt "Eukrea MBIMXSD development board" | 25 | bool "Eukrea MBIMXSD development board" |
24 | bool | 26 | select IMX_HAVE_PLATFORM_IMX_SSI |
25 | help | 27 | help |
26 | This adds board specific devices that can be found on Eukrea's | 28 | This adds board specific devices that can be found on Eukrea's |
27 | MBIMXSD evaluation board. | 29 | MBIMXSD evaluation board. |
diff --git a/arch/arm/mach-mx25/clock.c b/arch/arm/mach-mx25/clock.c index 40c7cc41cee3..9e4a5578c2fb 100644 --- a/arch/arm/mach-mx25/clock.c +++ b/arch/arm/mach-mx25/clock.c | |||
@@ -72,7 +72,7 @@ unsigned long get_rate_arm(struct clk *clk) | |||
72 | unsigned long rate = get_rate_mpll(); | 72 | unsigned long rate = get_rate_mpll(); |
73 | 73 | ||
74 | if (cctl & (1 << 14)) | 74 | if (cctl & (1 << 14)) |
75 | rate = (rate * 3) >> 1; | 75 | rate = (rate * 3) >> 2; |
76 | 76 | ||
77 | return rate / ((cctl >> 30) + 1); | 77 | return rate / ((cctl >> 30) + 1); |
78 | } | 78 | } |
@@ -99,7 +99,7 @@ static unsigned long get_rate_per(int per) | |||
99 | if (readl(CRM_BASE + 0x64) & (1 << per)) | 99 | if (readl(CRM_BASE + 0x64) & (1 << per)) |
100 | fref = get_rate_upll(); | 100 | fref = get_rate_upll(); |
101 | else | 101 | else |
102 | fref = get_rate_ipg(NULL); | 102 | fref = get_rate_ahb(NULL); |
103 | 103 | ||
104 | return fref / (val + 1); | 104 | return fref / (val + 1); |
105 | } | 105 | } |
@@ -139,6 +139,16 @@ static unsigned long get_rate_lcdc(struct clk *clk) | |||
139 | return get_rate_per(7); | 139 | return get_rate_per(7); |
140 | } | 140 | } |
141 | 141 | ||
142 | static unsigned long get_rate_esdhc1(struct clk *clk) | ||
143 | { | ||
144 | return get_rate_per(3); | ||
145 | } | ||
146 | |||
147 | static unsigned long get_rate_esdhc2(struct clk *clk) | ||
148 | { | ||
149 | return get_rate_per(4); | ||
150 | } | ||
151 | |||
142 | static unsigned long get_rate_csi(struct clk *clk) | 152 | static unsigned long get_rate_csi(struct clk *clk) |
143 | { | 153 | { |
144 | return get_rate_per(0); | 154 | return get_rate_per(0); |
@@ -213,6 +223,12 @@ DEFINE_CLOCK(ssi2_per_clk, 0, CCM_CGCR0, 14, get_rate_ipg, NULL, NULL); | |||
213 | DEFINE_CLOCK(cspi1_clk, 0, CCM_CGCR1, 5, get_rate_ipg, NULL, NULL); | 223 | DEFINE_CLOCK(cspi1_clk, 0, CCM_CGCR1, 5, get_rate_ipg, NULL, NULL); |
214 | DEFINE_CLOCK(cspi2_clk, 0, CCM_CGCR1, 6, get_rate_ipg, NULL, NULL); | 224 | DEFINE_CLOCK(cspi2_clk, 0, CCM_CGCR1, 6, get_rate_ipg, NULL, NULL); |
215 | DEFINE_CLOCK(cspi3_clk, 0, CCM_CGCR1, 7, get_rate_ipg, NULL, NULL); | 225 | DEFINE_CLOCK(cspi3_clk, 0, CCM_CGCR1, 7, get_rate_ipg, NULL, NULL); |
226 | DEFINE_CLOCK(esdhc1_ahb_clk, 0, CCM_CGCR0, 21, get_rate_esdhc1, NULL, NULL); | ||
227 | DEFINE_CLOCK(esdhc1_per_clk, 0, CCM_CGCR0, 3, get_rate_esdhc1, NULL, | ||
228 | &esdhc1_ahb_clk); | ||
229 | DEFINE_CLOCK(esdhc2_ahb_clk, 0, CCM_CGCR0, 22, get_rate_esdhc2, NULL, NULL); | ||
230 | DEFINE_CLOCK(esdhc2_per_clk, 0, CCM_CGCR0, 4, get_rate_esdhc2, NULL, | ||
231 | &esdhc2_ahb_clk); | ||
216 | DEFINE_CLOCK(fec_ahb_clk, 0, CCM_CGCR0, 23, NULL, NULL, NULL); | 232 | DEFINE_CLOCK(fec_ahb_clk, 0, CCM_CGCR0, 23, NULL, NULL, NULL); |
217 | DEFINE_CLOCK(lcdc_ahb_clk, 0, CCM_CGCR0, 24, NULL, NULL, NULL); | 233 | DEFINE_CLOCK(lcdc_ahb_clk, 0, CCM_CGCR0, 24, NULL, NULL, NULL); |
218 | DEFINE_CLOCK(lcdc_per_clk, 0, CCM_CGCR0, 7, NULL, NULL, &lcdc_ahb_clk); | 234 | DEFINE_CLOCK(lcdc_per_clk, 0, CCM_CGCR0, 7, NULL, NULL, &lcdc_ahb_clk); |
@@ -238,10 +254,14 @@ DEFINE_CLOCK(lcdc_clk, 0, CCM_CGCR1, 29, get_rate_lcdc, NULL, &lcdc_per_clk); | |||
238 | DEFINE_CLOCK(wdt_clk, 0, CCM_CGCR2, 19, get_rate_ipg, NULL, NULL); | 254 | DEFINE_CLOCK(wdt_clk, 0, CCM_CGCR2, 19, get_rate_ipg, NULL, NULL); |
239 | DEFINE_CLOCK(ssi1_clk, 0, CCM_CGCR2, 11, get_rate_ssi1, NULL, &ssi1_per_clk); | 255 | DEFINE_CLOCK(ssi1_clk, 0, CCM_CGCR2, 11, get_rate_ssi1, NULL, &ssi1_per_clk); |
240 | DEFINE_CLOCK(ssi2_clk, 1, CCM_CGCR2, 12, get_rate_ssi2, NULL, &ssi2_per_clk); | 256 | DEFINE_CLOCK(ssi2_clk, 1, CCM_CGCR2, 12, get_rate_ssi2, NULL, &ssi2_per_clk); |
257 | DEFINE_CLOCK(esdhc1_clk, 0, CCM_CGCR1, 13, get_rate_esdhc1, NULL, | ||
258 | &esdhc1_per_clk); | ||
259 | DEFINE_CLOCK(esdhc2_clk, 1, CCM_CGCR1, 14, get_rate_esdhc2, NULL, | ||
260 | &esdhc2_per_clk); | ||
241 | DEFINE_CLOCK(audmux_clk, 0, CCM_CGCR1, 0, NULL, NULL, NULL); | 261 | DEFINE_CLOCK(audmux_clk, 0, CCM_CGCR1, 0, NULL, NULL, NULL); |
242 | DEFINE_CLOCK(csi_clk, 0, CCM_CGCR1, 4, get_rate_csi, NULL, &csi_per_clk); | 262 | DEFINE_CLOCK(csi_clk, 0, CCM_CGCR1, 4, get_rate_csi, NULL, &csi_per_clk); |
243 | DEFINE_CLOCK(can1_clk, 0, CCM_CGCR1, 2, get_rate_ipg, NULL, NULL); | 263 | DEFINE_CLOCK(can1_clk, 0, CCM_CGCR1, 2, get_rate_ipg, NULL, NULL); |
244 | DEFINE_CLOCK(can2_clk, 0, CCM_CGCR1, 3, get_rate_ipg, NULL, NULL); | 264 | DEFINE_CLOCK(can2_clk, 1, CCM_CGCR1, 3, get_rate_ipg, NULL, NULL); |
245 | 265 | ||
246 | #define _REGISTER_CLOCK(d, n, c) \ | 266 | #define _REGISTER_CLOCK(d, n, c) \ |
247 | { \ | 267 | { \ |
@@ -261,9 +281,9 @@ static struct clk_lookup lookups[] = { | |||
261 | _REGISTER_CLOCK("mxc-ehci.2", "usb", usbotg_clk) | 281 | _REGISTER_CLOCK("mxc-ehci.2", "usb", usbotg_clk) |
262 | _REGISTER_CLOCK("fsl-usb2-udc", "usb", usbotg_clk) | 282 | _REGISTER_CLOCK("fsl-usb2-udc", "usb", usbotg_clk) |
263 | _REGISTER_CLOCK("mxc_nand.0", NULL, nfc_clk) | 283 | _REGISTER_CLOCK("mxc_nand.0", NULL, nfc_clk) |
264 | _REGISTER_CLOCK("spi_imx.0", NULL, cspi1_clk) | 284 | _REGISTER_CLOCK("imx25-cspi.0", NULL, cspi1_clk) |
265 | _REGISTER_CLOCK("spi_imx.1", NULL, cspi2_clk) | 285 | _REGISTER_CLOCK("imx25-cspi.1", NULL, cspi2_clk) |
266 | _REGISTER_CLOCK("spi_imx.2", NULL, cspi3_clk) | 286 | _REGISTER_CLOCK("imx25-cspi.2", NULL, cspi3_clk) |
267 | _REGISTER_CLOCK("mxc_pwm.0", NULL, pwm1_clk) | 287 | _REGISTER_CLOCK("mxc_pwm.0", NULL, pwm1_clk) |
268 | _REGISTER_CLOCK("mxc_pwm.1", NULL, pwm2_clk) | 288 | _REGISTER_CLOCK("mxc_pwm.1", NULL, pwm2_clk) |
269 | _REGISTER_CLOCK("mxc_pwm.2", NULL, pwm3_clk) | 289 | _REGISTER_CLOCK("mxc_pwm.2", NULL, pwm3_clk) |
@@ -279,6 +299,8 @@ static struct clk_lookup lookups[] = { | |||
279 | _REGISTER_CLOCK("imx-wdt.0", NULL, wdt_clk) | 299 | _REGISTER_CLOCK("imx-wdt.0", NULL, wdt_clk) |
280 | _REGISTER_CLOCK("imx-ssi.0", NULL, ssi1_clk) | 300 | _REGISTER_CLOCK("imx-ssi.0", NULL, ssi1_clk) |
281 | _REGISTER_CLOCK("imx-ssi.1", NULL, ssi2_clk) | 301 | _REGISTER_CLOCK("imx-ssi.1", NULL, ssi2_clk) |
302 | _REGISTER_CLOCK("sdhci-esdhc-imx.0", NULL, esdhc1_clk) | ||
303 | _REGISTER_CLOCK("sdhci-esdhc-imx.1", NULL, esdhc2_clk) | ||
282 | _REGISTER_CLOCK("mx2-camera.0", NULL, csi_clk) | 304 | _REGISTER_CLOCK("mx2-camera.0", NULL, csi_clk) |
283 | _REGISTER_CLOCK(NULL, "audmux", audmux_clk) | 305 | _REGISTER_CLOCK(NULL, "audmux", audmux_clk) |
284 | _REGISTER_CLOCK("flexcan.0", NULL, can1_clk) | 306 | _REGISTER_CLOCK("flexcan.0", NULL, can1_clk) |
diff --git a/arch/arm/mach-mx25/devices-imx25.h b/arch/arm/mach-mx25/devices-imx25.h index d86a7c3ca8b0..93afa10b13cf 100644 --- a/arch/arm/mach-mx25/devices-imx25.h +++ b/arch/arm/mach-mx25/devices-imx25.h | |||
@@ -9,35 +9,46 @@ | |||
9 | #include <mach/mx25.h> | 9 | #include <mach/mx25.h> |
10 | #include <mach/devices-common.h> | 10 | #include <mach/devices-common.h> |
11 | 11 | ||
12 | extern const struct imx_fec_data imx25_fec_data __initconst; | ||
13 | #define imx25_add_fec(pdata) \ | ||
14 | imx_add_fec(&imx25_fec_data, pdata) | ||
15 | |||
12 | #define imx25_add_flexcan0(pdata) \ | 16 | #define imx25_add_flexcan0(pdata) \ |
13 | imx_add_flexcan(0, MX25_CAN1_BASE_ADDR, SZ_16K, MX25_INT_CAN1, pdata) | 17 | imx_add_flexcan(0, MX25_CAN1_BASE_ADDR, SZ_16K, MX25_INT_CAN1, pdata) |
14 | #define imx25_add_flexcan1(pdata) \ | 18 | #define imx25_add_flexcan1(pdata) \ |
15 | imx_add_flexcan(1, MX25_CAN2_BASE_ADDR, SZ_16K, MX25_INT_CAN2, pdata) | 19 | imx_add_flexcan(1, MX25_CAN2_BASE_ADDR, SZ_16K, MX25_INT_CAN2, pdata) |
16 | 20 | ||
17 | #define imx25_add_imx_i2c0(pdata) \ | 21 | extern const struct imx_imx_i2c_data imx25_imx_i2c_data[] __initconst; |
18 | imx_add_imx_i2c(0, MX25_I2C1_BASE_ADDR, SZ_16K, MX25_INT_I2C1, pdata) | 22 | #define imx25_add_imx_i2c(id, pdata) \ |
19 | #define imx25_add_imx_i2c1(pdata) \ | 23 | imx_add_imx_i2c(&imx25_imx_i2c_data[id], pdata) |
20 | imx_add_imx_i2c(1, MX25_I2C2_BASE_ADDR, SZ_16K, MX25_INT_I2C2, pdata) | 24 | #define imx25_add_imx_i2c0(pdata) imx25_add_imx_i2c(0, pdata) |
21 | #define imx25_add_imx_i2c2(pdata) \ | 25 | #define imx25_add_imx_i2c1(pdata) imx25_add_imx_i2c(1, pdata) |
22 | imx_add_imx_i2c(2, MX25_I2C3_BASE_ADDR, SZ_16K, MX25_INT_I2C3, pdata) | 26 | #define imx25_add_imx_i2c2(pdata) imx25_add_imx_i2c(2, pdata) |
23 | 27 | ||
24 | #define imx25_add_imx_uart0(pdata) \ | 28 | extern const struct imx_imx_ssi_data imx25_imx_ssi_data[] __initconst; |
25 | imx_add_imx_uart_1irq(0, MX25_UART1_BASE_ADDR, SZ_16K, MX25_INT_UART1, pdata) | 29 | #define imx25_add_imx_ssi(id, pdata) \ |
26 | #define imx25_add_imx_uart1(pdata) \ | 30 | imx_add_imx_ssi(&imx25_imx_ssi_data[id], pdata) |
27 | imx_add_imx_uart_1irq(1, MX25_UART2_BASE_ADDR, SZ_16K, MX25_INT_UART2, pdata) | 31 | |
28 | #define imx25_add_imx_uart2(pdata) \ | 32 | extern const struct imx_imx_uart_1irq_data imx25_imx_uart_data[] __initconst; |
29 | imx_add_imx_uart_1irq(2, MX25_UART3_BASE_ADDR, SZ_16K, MX25_INT_UART3, pdata) | 33 | #define imx25_add_imx_uart(id, pdata) \ |
30 | #define imx25_add_imx_uart3(pdata) \ | 34 | imx_add_imx_uart_1irq(&imx25_imx_uart_data[id], pdata) |
31 | imx_add_imx_uart_1irq(3, MX25_UART4_BASE_ADDR, SZ_16K, MX25_INT_UART4, pdata) | 35 | #define imx25_add_imx_uart0(pdata) imx25_add_imx_uart(0, pdata) |
32 | #define imx25_add_imx_uart4(pdata) \ | 36 | #define imx25_add_imx_uart1(pdata) imx25_add_imx_uart(1, pdata) |
33 | imx_add_imx_uart_1irq(4, MX25_UART5_BASE_ADDR, SZ_16K, MX25_INT_UART5, pdata) | 37 | #define imx25_add_imx_uart2(pdata) imx25_add_imx_uart(2, pdata) |
38 | #define imx25_add_imx_uart3(pdata) imx25_add_imx_uart(3, pdata) | ||
39 | #define imx25_add_imx_uart4(pdata) imx25_add_imx_uart(4, pdata) | ||
34 | 40 | ||
41 | extern const struct imx_mxc_nand_data imx25_mxc_nand_data __initconst; | ||
35 | #define imx25_add_mxc_nand(pdata) \ | 42 | #define imx25_add_mxc_nand(pdata) \ |
36 | imx_add_mxc_nand_v21(MX25_NFC_BASE_ADDR, MX25_INT_NANDFC, pdata) | 43 | imx_add_mxc_nand(&imx25_mxc_nand_data, pdata) |
37 | 44 | ||
38 | #define imx25_add_spi_imx0(pdata) \ | 45 | extern const struct imx_spi_imx_data imx25_spi_imx_data[] __initconst; |
39 | imx_add_spi_imx(0, MX25_CSPI1_BASE_ADDR, SZ_16K, MX25_INT_CSPI1, pdata) | 46 | #define imx25_add_spi_imx(id, pdata) \ |
40 | #define imx25_add_spi_imx1(pdata) \ | 47 | imx_add_spi_imx(&imx25_spi_imx_data[id], pdata) |
41 | imx_add_spi_imx(1, MX25_CSPI2_BASE_ADDR, SZ_16K, MX25_INT_CSPI2, pdata) | 48 | #define imx25_add_spi_imx0(pdata) imx25_add_spi_imx(0, pdata) |
42 | #define imx25_add_spi_imx2(pdata) \ | 49 | #define imx25_add_spi_imx1(pdata) imx25_add_spi_imx(1, pdata) |
43 | imx_add_spi_imx(2, MX25_CSPI3_BASE_ADDR, SZ_16K, MX25_INT_CSPI3, pdata) | 50 | #define imx25_add_spi_imx2(pdata) imx25_add_spi_imx(2, pdata) |
51 | |||
52 | extern const struct imx_esdhc_imx_data imx25_esdhc_data[] __initconst; | ||
53 | #define imx25_add_esdhc(id, pdata) \ | ||
54 | imx_add_esdhc(&imx25_esdhc_data[id], pdata) | ||
diff --git a/arch/arm/mach-mx25/devices.c b/arch/arm/mach-mx25/devices.c index 3468eb15b236..1d0eb3e85941 100644 --- a/arch/arm/mach-mx25/devices.c +++ b/arch/arm/mach-mx25/devices.c | |||
@@ -208,26 +208,6 @@ int __init imx25_register_gpios(void) | |||
208 | return mxc_gpio_init(imx_gpio_ports, ARRAY_SIZE(imx_gpio_ports)); | 208 | return mxc_gpio_init(imx_gpio_ports, ARRAY_SIZE(imx_gpio_ports)); |
209 | } | 209 | } |
210 | 210 | ||
211 | static struct resource mx25_fec_resources[] = { | ||
212 | { | ||
213 | .start = MX25_FEC_BASE_ADDR, | ||
214 | .end = MX25_FEC_BASE_ADDR + 0xfff, | ||
215 | .flags = IORESOURCE_MEM, | ||
216 | }, | ||
217 | { | ||
218 | .start = MX25_INT_FEC, | ||
219 | .end = MX25_INT_FEC, | ||
220 | .flags = IORESOURCE_IRQ, | ||
221 | }, | ||
222 | }; | ||
223 | |||
224 | struct platform_device mx25_fec_device = { | ||
225 | .name = "fec", | ||
226 | .id = 0, | ||
227 | .num_resources = ARRAY_SIZE(mx25_fec_resources), | ||
228 | .resource = mx25_fec_resources, | ||
229 | }; | ||
230 | |||
231 | static struct resource mx25_rtc_resources[] = { | 211 | static struct resource mx25_rtc_resources[] = { |
232 | { | 212 | { |
233 | .start = MX25_DRYICE_BASE_ADDR, | 213 | .start = MX25_DRYICE_BASE_ADDR, |
@@ -305,44 +285,6 @@ struct platform_device mx25_kpp_device = { | |||
305 | .resource = mx25_kpp_resources, | 285 | .resource = mx25_kpp_resources, |
306 | }; | 286 | }; |
307 | 287 | ||
308 | static struct resource imx_ssi_resources0[] = { | ||
309 | { | ||
310 | .start = MX25_SSI1_BASE_ADDR, | ||
311 | .end = MX25_SSI1_BASE_ADDR + 0x3fff, | ||
312 | .flags = IORESOURCE_MEM, | ||
313 | }, { | ||
314 | .start = MX25_INT_SSI1, | ||
315 | .end = MX25_INT_SSI1, | ||
316 | .flags = IORESOURCE_IRQ, | ||
317 | }, | ||
318 | }; | ||
319 | |||
320 | static struct resource imx_ssi_resources1[] = { | ||
321 | { | ||
322 | .start = MX25_SSI2_BASE_ADDR, | ||
323 | .end = MX25_SSI2_BASE_ADDR + 0x3fff, | ||
324 | .flags = IORESOURCE_MEM | ||
325 | }, { | ||
326 | .start = MX25_INT_SSI2, | ||
327 | .end = MX25_INT_SSI2, | ||
328 | .flags = IORESOURCE_IRQ, | ||
329 | }, | ||
330 | }; | ||
331 | |||
332 | struct platform_device imx_ssi_device0 = { | ||
333 | .name = "imx-ssi", | ||
334 | .id = 0, | ||
335 | .num_resources = ARRAY_SIZE(imx_ssi_resources0), | ||
336 | .resource = imx_ssi_resources0, | ||
337 | }; | ||
338 | |||
339 | struct platform_device imx_ssi_device1 = { | ||
340 | .name = "imx-ssi", | ||
341 | .id = 1, | ||
342 | .num_resources = ARRAY_SIZE(imx_ssi_resources1), | ||
343 | .resource = imx_ssi_resources1, | ||
344 | }; | ||
345 | |||
346 | static struct resource mx25_csi_resources[] = { | 288 | static struct resource mx25_csi_resources[] = { |
347 | { | 289 | { |
348 | .start = MX25_CSI_BASE_ADDR, | 290 | .start = MX25_CSI_BASE_ADDR, |
diff --git a/arch/arm/mach-mx25/devices.h b/arch/arm/mach-mx25/devices.h index 4aceb68e35a7..7b70a43c3a4b 100644 --- a/arch/arm/mach-mx25/devices.h +++ b/arch/arm/mach-mx25/devices.h | |||
@@ -6,11 +6,8 @@ extern struct platform_device mxc_pwm_device1; | |||
6 | extern struct platform_device mxc_pwm_device2; | 6 | extern struct platform_device mxc_pwm_device2; |
7 | extern struct platform_device mxc_pwm_device3; | 7 | extern struct platform_device mxc_pwm_device3; |
8 | extern struct platform_device mxc_keypad_device; | 8 | extern struct platform_device mxc_keypad_device; |
9 | extern struct platform_device mx25_fec_device; | ||
10 | extern struct platform_device mx25_rtc_device; | 9 | extern struct platform_device mx25_rtc_device; |
11 | extern struct platform_device mx25_fb_device; | 10 | extern struct platform_device mx25_fb_device; |
12 | extern struct platform_device mxc_wdt; | 11 | extern struct platform_device mxc_wdt; |
13 | extern struct platform_device mx25_kpp_device; | 12 | extern struct platform_device mx25_kpp_device; |
14 | extern struct platform_device imx_ssi_device0; | ||
15 | extern struct platform_device imx_ssi_device1; | ||
16 | extern struct platform_device mx25_csi_device; | 13 | extern struct platform_device mx25_csi_device; |
diff --git a/arch/arm/mach-mx25/eukrea_mbimxsd-baseboard.c b/arch/arm/mach-mx25/eukrea_mbimxsd-baseboard.c index 4aaadc753d3e..e765ac5d9a08 100644 --- a/arch/arm/mach-mx25/eukrea_mbimxsd-baseboard.c +++ b/arch/arm/mach-mx25/eukrea_mbimxsd-baseboard.c | |||
@@ -34,7 +34,6 @@ | |||
34 | #include <mach/mx25.h> | 34 | #include <mach/mx25.h> |
35 | #include <mach/imx-uart.h> | 35 | #include <mach/imx-uart.h> |
36 | #include <mach/imxfb.h> | 36 | #include <mach/imxfb.h> |
37 | #include <mach/ssi.h> | ||
38 | #include <mach/audmux.h> | 37 | #include <mach/audmux.h> |
39 | 38 | ||
40 | #include "devices-imx25.h" | 39 | #include "devices-imx25.h" |
@@ -90,6 +89,9 @@ static struct pad_desc eukrea_mbimxsd_pads[] = { | |||
90 | MX25_PAD_KPP_COL2__AUD5_TXC, | 89 | MX25_PAD_KPP_COL2__AUD5_TXC, |
91 | MX25_PAD_KPP_COL1__AUD5_RXD, | 90 | MX25_PAD_KPP_COL1__AUD5_RXD, |
92 | MX25_PAD_KPP_COL0__AUD5_TXD, | 91 | MX25_PAD_KPP_COL0__AUD5_TXD, |
92 | /* CAN */ | ||
93 | MX25_PAD_GPIO_D__CAN2_RX, | ||
94 | MX25_PAD_GPIO_C__CAN2_TX, | ||
93 | }; | 95 | }; |
94 | 96 | ||
95 | #define GPIO_LED1 83 | 97 | #define GPIO_LED1 83 |
@@ -114,6 +116,38 @@ static struct imx_fb_videomode eukrea_mximxsd_modes[] = { | |||
114 | }, | 116 | }, |
115 | .bpp = 16, | 117 | .bpp = 16, |
116 | .pcr = 0xCAD08B80, | 118 | .pcr = 0xCAD08B80, |
119 | }, { | ||
120 | .mode = { | ||
121 | .name = "DVI-VGA", | ||
122 | .refresh = 60, | ||
123 | .xres = 640, | ||
124 | .yres = 480, | ||
125 | .pixclock = 32000, | ||
126 | .hsync_len = 7, | ||
127 | .left_margin = 100, | ||
128 | .right_margin = 100, | ||
129 | .vsync_len = 7, | ||
130 | .upper_margin = 7, | ||
131 | .lower_margin = 100, | ||
132 | }, | ||
133 | .pcr = 0xFA208B80, | ||
134 | .bpp = 16, | ||
135 | }, { | ||
136 | .mode = { | ||
137 | .name = "DVI-SVGA", | ||
138 | .refresh = 60, | ||
139 | .xres = 800, | ||
140 | .yres = 600, | ||
141 | .pixclock = 25000, | ||
142 | .hsync_len = 7, | ||
143 | .left_margin = 75, | ||
144 | .right_margin = 75, | ||
145 | .vsync_len = 7, | ||
146 | .upper_margin = 7, | ||
147 | .lower_margin = 75, | ||
148 | }, | ||
149 | .pcr = 0xFA208B80, | ||
150 | .bpp = 16, | ||
117 | }, | 151 | }, |
118 | }; | 152 | }; |
119 | 153 | ||
@@ -205,7 +239,8 @@ static struct i2c_board_info eukrea_mbimxsd_i2c_devices[] = { | |||
205 | }, | 239 | }, |
206 | }; | 240 | }; |
207 | 241 | ||
208 | struct imx_ssi_platform_data eukrea_mbimxsd_ssi_pdata = { | 242 | static const |
243 | struct imx_ssi_platform_data eukrea_mbimxsd_ssi_pdata __initconst = { | ||
209 | .flags = IMX_SSI_SYN | IMX_SSI_NET | IMX_SSI_USE_I2S_SLAVE, | 244 | .flags = IMX_SSI_SYN | IMX_SSI_NET | IMX_SSI_USE_I2S_SLAVE, |
210 | }; | 245 | }; |
211 | 246 | ||
@@ -239,7 +274,10 @@ void __init eukrea_mbimxsd25_baseboard_init(void) | |||
239 | 274 | ||
240 | imx25_add_imx_uart1(&uart_pdata); | 275 | imx25_add_imx_uart1(&uart_pdata); |
241 | mxc_register_device(&mx25_fb_device, &eukrea_mximxsd_fb_pdata); | 276 | mxc_register_device(&mx25_fb_device, &eukrea_mximxsd_fb_pdata); |
242 | mxc_register_device(&imx_ssi_device0, &eukrea_mbimxsd_ssi_pdata); | 277 | imx25_add_imx_ssi(0, &eukrea_mbimxsd_ssi_pdata); |
278 | |||
279 | imx25_add_flexcan1(NULL); | ||
280 | imx25_add_esdhc(0, NULL); | ||
243 | 281 | ||
244 | gpio_request(GPIO_LED1, "LED1"); | 282 | gpio_request(GPIO_LED1, "LED1"); |
245 | gpio_direction_output(GPIO_LED1, 1); | 283 | gpio_direction_output(GPIO_LED1, 1); |
diff --git a/arch/arm/mach-mx25/mach-cpuimx25.c b/arch/arm/mach-mx25/mach-cpuimx25.c index e064bb3d6919..3b28a75007ad 100644 --- a/arch/arm/mach-mx25/mach-cpuimx25.c +++ b/arch/arm/mach-mx25/mach-cpuimx25.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <linux/clk.h> | 23 | #include <linux/clk.h> |
24 | #include <linux/irq.h> | 24 | #include <linux/irq.h> |
25 | #include <linux/gpio.h> | 25 | #include <linux/gpio.h> |
26 | #include <linux/fec.h> | ||
27 | #include <linux/platform_device.h> | 26 | #include <linux/platform_device.h> |
28 | #include <linux/usb/otg.h> | 27 | #include <linux/usb/otg.h> |
29 | #include <linux/usb/ulpi.h> | 28 | #include <linux/usb/ulpi.h> |
@@ -41,7 +40,6 @@ | |||
41 | #include <mach/mxc_nand.h> | 40 | #include <mach/mxc_nand.h> |
42 | #include <mach/imxfb.h> | 41 | #include <mach/imxfb.h> |
43 | #include <mach/mxc_ehci.h> | 42 | #include <mach/mxc_ehci.h> |
44 | #include <mach/ulpi.h> | ||
45 | #include <mach/iomux-mx25.h> | 43 | #include <mach/iomux-mx25.h> |
46 | 44 | ||
47 | #include "devices-imx25.h" | 45 | #include "devices-imx25.h" |
@@ -67,7 +65,7 @@ static struct pad_desc eukrea_cpuimx25_pads[] = { | |||
67 | MX25_PAD_I2C1_DAT__I2C1_DAT, | 65 | MX25_PAD_I2C1_DAT__I2C1_DAT, |
68 | }; | 66 | }; |
69 | 67 | ||
70 | static struct fec_platform_data mx25_fec_pdata = { | 68 | static const struct fec_platform_data mx25_fec_pdata __initconst = { |
71 | .phy = PHY_INTERFACE_MODE_RMII, | 69 | .phy = PHY_INTERFACE_MODE_RMII, |
72 | }; | 70 | }; |
73 | 71 | ||
@@ -129,24 +127,19 @@ static void __init eukrea_cpuimx25_init(void) | |||
129 | imx25_add_imx_uart0(&uart_pdata); | 127 | imx25_add_imx_uart0(&uart_pdata); |
130 | imx25_add_mxc_nand(&eukrea_cpuimx25_nand_board_info); | 128 | imx25_add_mxc_nand(&eukrea_cpuimx25_nand_board_info); |
131 | mxc_register_device(&mx25_rtc_device, NULL); | 129 | mxc_register_device(&mx25_rtc_device, NULL); |
132 | mxc_register_device(&mx25_fec_device, &mx25_fec_pdata); | 130 | imx25_add_fec(&mx25_fec_pdata); |
133 | 131 | ||
134 | i2c_register_board_info(0, eukrea_cpuimx25_i2c_devices, | 132 | i2c_register_board_info(0, eukrea_cpuimx25_i2c_devices, |
135 | ARRAY_SIZE(eukrea_cpuimx25_i2c_devices)); | 133 | ARRAY_SIZE(eukrea_cpuimx25_i2c_devices)); |
136 | imx25_add_imx_i2c0(&eukrea_cpuimx25_i2c0_data); | 134 | imx25_add_imx_i2c0(&eukrea_cpuimx25_i2c0_data); |
137 | 135 | ||
138 | #if defined(CONFIG_USB_ULPI) | 136 | if (otg_mode_host) |
139 | if (otg_mode_host) { | ||
140 | otg_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, | ||
141 | ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT); | ||
142 | |||
143 | mxc_register_device(&mxc_otg, &otg_pdata); | 137 | mxc_register_device(&mxc_otg, &otg_pdata); |
144 | } | 138 | else |
145 | mxc_register_device(&mxc_usbh2, &usbh2_pdata); | ||
146 | #endif | ||
147 | if (!otg_mode_host) | ||
148 | mxc_register_device(&otg_udc_device, &otg_device_pdata); | 139 | mxc_register_device(&otg_udc_device, &otg_device_pdata); |
149 | 140 | ||
141 | mxc_register_device(&mxc_usbh2, &usbh2_pdata); | ||
142 | |||
150 | #ifdef CONFIG_MACH_EUKREA_MBIMXSD25_BASEBOARD | 143 | #ifdef CONFIG_MACH_EUKREA_MBIMXSD25_BASEBOARD |
151 | eukrea_mbimxsd25_baseboard_init(); | 144 | eukrea_mbimxsd25_baseboard_init(); |
152 | #endif | 145 | #endif |
diff --git a/arch/arm/mach-mx25/mach-mx25_3ds.c b/arch/arm/mach-mx25/mach-mx25_3ds.c index 62bc21f11a71..bd1805698631 100644 --- a/arch/arm/mach-mx25/mach-mx25_3ds.c +++ b/arch/arm/mach-mx25/mach-mx25_3ds.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/clk.h> | 28 | #include <linux/clk.h> |
29 | #include <linux/irq.h> | 29 | #include <linux/irq.h> |
30 | #include <linux/gpio.h> | 30 | #include <linux/gpio.h> |
31 | #include <linux/fec.h> | ||
32 | #include <linux/platform_device.h> | 31 | #include <linux/platform_device.h> |
33 | #include <linux/input/matrix_keypad.h> | 32 | #include <linux/input/matrix_keypad.h> |
34 | 33 | ||
@@ -99,7 +98,7 @@ static struct pad_desc mx25pdk_pads[] = { | |||
99 | MX25_PAD_KPP_COL3__KPP_COL3, | 98 | MX25_PAD_KPP_COL3__KPP_COL3, |
100 | }; | 99 | }; |
101 | 100 | ||
102 | static struct fec_platform_data mx25_fec_pdata = { | 101 | static const struct fec_platform_data mx25_fec_pdata __initconst = { |
103 | .phy = PHY_INTERFACE_MODE_RMII, | 102 | .phy = PHY_INTERFACE_MODE_RMII, |
104 | }; | 103 | }; |
105 | 104 | ||
@@ -192,7 +191,7 @@ static void __init mx25pdk_init(void) | |||
192 | mxc_register_device(&mxc_wdt, NULL); | 191 | mxc_register_device(&mxc_wdt, NULL); |
193 | 192 | ||
194 | mx25pdk_fec_reset(); | 193 | mx25pdk_fec_reset(); |
195 | mxc_register_device(&mx25_fec_device, &mx25_fec_pdata); | 194 | imx25_add_fec(&mx25_fec_pdata); |
196 | mxc_register_device(&mx25_kpp_device, &mx25pdk_keymap_data); | 195 | mxc_register_device(&mx25_kpp_device, &mx25pdk_keymap_data); |
197 | } | 196 | } |
198 | 197 | ||