diff options
Diffstat (limited to 'arch/arm/mach-imx/mach-cpuimx27.c')
-rw-r--r-- | arch/arm/mach-imx/mach-cpuimx27.c | 49 |
1 files changed, 28 insertions, 21 deletions
diff --git a/arch/arm/mach-imx/mach-cpuimx27.c b/arch/arm/mach-imx/mach-cpuimx27.c index 6cf04da2456a..759299bb035b 100644 --- a/arch/arm/mach-imx/mach-cpuimx27.c +++ b/arch/arm/mach-imx/mach-cpuimx27.c | |||
@@ -209,17 +209,25 @@ static struct platform_device serial_device = { | |||
209 | }; | 209 | }; |
210 | #endif | 210 | #endif |
211 | 211 | ||
212 | #if defined(CONFIG_USB_ULPI) | 212 | static int eukrea_cpuimx27_otg_init(struct platform_device *pdev) |
213 | { | ||
214 | return mx27_initialize_usb_hw(pdev->id, MXC_EHCI_INTERFACE_DIFF_UNI); | ||
215 | } | ||
216 | |||
213 | static struct mxc_usbh_platform_data otg_pdata __initdata = { | 217 | static struct mxc_usbh_platform_data otg_pdata __initdata = { |
218 | .init = eukrea_cpuimx27_otg_init, | ||
214 | .portsc = MXC_EHCI_MODE_ULPI, | 219 | .portsc = MXC_EHCI_MODE_ULPI, |
215 | .flags = MXC_EHCI_INTERFACE_DIFF_UNI, | ||
216 | }; | 220 | }; |
217 | 221 | ||
222 | static int eukrea_cpuimx27_usbh2_init(struct platform_device *pdev) | ||
223 | { | ||
224 | return mx27_initialize_usb_hw(pdev->id, MXC_EHCI_INTERFACE_DIFF_UNI); | ||
225 | } | ||
226 | |||
218 | static struct mxc_usbh_platform_data usbh2_pdata __initdata = { | 227 | static struct mxc_usbh_platform_data usbh2_pdata __initdata = { |
228 | .init = eukrea_cpuimx27_usbh2_init, | ||
219 | .portsc = MXC_EHCI_MODE_ULPI, | 229 | .portsc = MXC_EHCI_MODE_ULPI, |
220 | .flags = MXC_EHCI_INTERFACE_DIFF_UNI, | ||
221 | }; | 230 | }; |
222 | #endif | ||
223 | 231 | ||
224 | static const struct fsl_usb2_platform_data otg_device_pdata __initconst = { | 232 | static const struct fsl_usb2_platform_data otg_device_pdata __initconst = { |
225 | .operating_mode = FSL_USB2_DR_DEVICE, | 233 | .operating_mode = FSL_USB2_DR_DEVICE, |
@@ -273,21 +281,19 @@ static void __init eukrea_cpuimx27_init(void) | |||
273 | platform_device_register(&serial_device); | 281 | platform_device_register(&serial_device); |
274 | #endif | 282 | #endif |
275 | 283 | ||
276 | #if defined(CONFIG_USB_ULPI) | ||
277 | if (otg_mode_host) { | 284 | if (otg_mode_host) { |
278 | otg_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, | 285 | otg_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS | |
279 | ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT); | 286 | ULPI_OTG_DRVVBUS_EXT); |
280 | 287 | if (otg_pdata.otg) | |
281 | imx27_add_mxc_ehci_otg(&otg_pdata); | 288 | imx27_add_mxc_ehci_otg(&otg_pdata); |
289 | } else { | ||
290 | imx27_add_fsl_usb2_udc(&otg_device_pdata); | ||
282 | } | 291 | } |
283 | 292 | ||
284 | usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops, | 293 | usbh2_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS | |
285 | ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT); | 294 | ULPI_OTG_DRVVBUS_EXT); |
286 | 295 | if (usbh2_pdata.otg) | |
287 | imx27_add_mxc_ehci_hs(2, &usbh2_pdata); | 296 | imx27_add_mxc_ehci_hs(2, &usbh2_pdata); |
288 | #endif | ||
289 | if (!otg_mode_host) | ||
290 | imx27_add_fsl_usb2_udc(&otg_device_pdata); | ||
291 | 297 | ||
292 | #ifdef CONFIG_MACH_EUKREA_MBIMX27_BASEBOARD | 298 | #ifdef CONFIG_MACH_EUKREA_MBIMX27_BASEBOARD |
293 | eukrea_mbimx27_baseboard_init(); | 299 | eukrea_mbimx27_baseboard_init(); |
@@ -304,9 +310,10 @@ static struct sys_timer eukrea_cpuimx27_timer = { | |||
304 | }; | 310 | }; |
305 | 311 | ||
306 | MACHINE_START(CPUIMX27, "EUKREA CPUIMX27") | 312 | MACHINE_START(CPUIMX27, "EUKREA CPUIMX27") |
307 | .boot_params = MX27_PHYS_OFFSET + 0x100, | 313 | .boot_params = MX27_PHYS_OFFSET + 0x100, |
308 | .map_io = mx27_map_io, | 314 | .map_io = mx27_map_io, |
309 | .init_irq = mx27_init_irq, | 315 | .init_early = imx27_init_early, |
310 | .init_machine = eukrea_cpuimx27_init, | 316 | .init_irq = mx27_init_irq, |
311 | .timer = &eukrea_cpuimx27_timer, | 317 | .timer = &eukrea_cpuimx27_timer, |
318 | .init_machine = eukrea_cpuimx27_init, | ||
312 | MACHINE_END | 319 | MACHINE_END |