diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2011-07-30 17:57:25 -0400 |
---|---|---|
committer | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2011-08-01 05:16:55 -0400 |
commit | 6cafe48a6bfa8934d5564fbf9976a51040dac819 (patch) | |
tree | 4975eb00698283fd3b256963726de2dba513062f /arch/arm/mach-mx5 | |
parent | 7d92e8e6c4d45d33dd32a028081c89a6dedab032 (diff) |
ARM: mx5: dynamically allocate fsl-usb2-udc devices
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-mx5')
-rw-r--r-- | arch/arm/mach-mx5/Kconfig | 3 | ||||
-rw-r--r-- | arch/arm/mach-mx5/board-cpuimx51.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-mx5/board-cpuimx51sd.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-mx5/board-mx51_babbage.c | 4 | ||||
-rw-r--r-- | arch/arm/mach-mx5/devices-imx51.h | 4 | ||||
-rw-r--r-- | arch/arm/mach-mx5/devices.c | 26 | ||||
-rw-r--r-- | arch/arm/mach-mx5/devices.h | 1 |
7 files changed, 13 insertions, 35 deletions
diff --git a/arch/arm/mach-mx5/Kconfig b/arch/arm/mach-mx5/Kconfig index 2905110954c2..d8691a0000c5 100644 --- a/arch/arm/mach-mx5/Kconfig +++ b/arch/arm/mach-mx5/Kconfig | |||
@@ -65,6 +65,7 @@ comment "i.MX51 machines:" | |||
65 | config MACH_MX51_BABBAGE | 65 | config MACH_MX51_BABBAGE |
66 | bool "Support MX51 BABBAGE platforms" | 66 | bool "Support MX51 BABBAGE platforms" |
67 | select SOC_IMX51 | 67 | select SOC_IMX51 |
68 | select IMX_HAVE_PLATFORM_FSL_USB2_UDC | ||
68 | select IMX_HAVE_PLATFORM_IMX2_WDT | 69 | select IMX_HAVE_PLATFORM_IMX2_WDT |
69 | select IMX_HAVE_PLATFORM_IMX_I2C | 70 | select IMX_HAVE_PLATFORM_IMX_I2C |
70 | select IMX_HAVE_PLATFORM_IMX_UART | 71 | select IMX_HAVE_PLATFORM_IMX_UART |
@@ -92,6 +93,7 @@ config MACH_MX51_3DS | |||
92 | config MACH_EUKREA_CPUIMX51 | 93 | config MACH_EUKREA_CPUIMX51 |
93 | bool "Support Eukrea CPUIMX51 module" | 94 | bool "Support Eukrea CPUIMX51 module" |
94 | select SOC_IMX51 | 95 | select SOC_IMX51 |
96 | select IMX_HAVE_PLATFORM_FSL_USB2_UDC | ||
95 | select IMX_HAVE_PLATFORM_IMX_I2C | 97 | select IMX_HAVE_PLATFORM_IMX_I2C |
96 | select IMX_HAVE_PLATFORM_IMX_UART | 98 | select IMX_HAVE_PLATFORM_IMX_UART |
97 | select IMX_HAVE_PLATFORM_MXC_EHCI | 99 | select IMX_HAVE_PLATFORM_MXC_EHCI |
@@ -121,6 +123,7 @@ endchoice | |||
121 | config MACH_EUKREA_CPUIMX51SD | 123 | config MACH_EUKREA_CPUIMX51SD |
122 | bool "Support Eukrea CPUIMX51SD module" | 124 | bool "Support Eukrea CPUIMX51SD module" |
123 | select SOC_IMX51 | 125 | select SOC_IMX51 |
126 | select IMX_HAVE_PLATFORM_FSL_USB2_UDC | ||
124 | select IMX_HAVE_PLATFORM_IMX_I2C | 127 | select IMX_HAVE_PLATFORM_IMX_I2C |
125 | select IMX_HAVE_PLATFORM_IMX_UART | 128 | select IMX_HAVE_PLATFORM_IMX_UART |
126 | select IMX_HAVE_PLATFORM_MXC_EHCI | 129 | select IMX_HAVE_PLATFORM_MXC_EHCI |
diff --git a/arch/arm/mach-mx5/board-cpuimx51.c b/arch/arm/mach-mx5/board-cpuimx51.c index aa1ff79e5a74..e2afe0c2a12e 100644 --- a/arch/arm/mach-mx5/board-cpuimx51.c +++ b/arch/arm/mach-mx5/board-cpuimx51.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <asm/mach/time.h> | 36 | #include <asm/mach/time.h> |
37 | 37 | ||
38 | #include "devices-imx51.h" | 38 | #include "devices-imx51.h" |
39 | #include "devices.h" | ||
40 | 39 | ||
41 | #define CPUIMX51_USBH1_STP IMX_GPIO_NR(1, 27) | 40 | #define CPUIMX51_USBH1_STP IMX_GPIO_NR(1, 27) |
42 | #define CPUIMX51_QUARTA_GPIO IMX_GPIO_NR(3, 28) | 41 | #define CPUIMX51_QUARTA_GPIO IMX_GPIO_NR(3, 28) |
@@ -211,7 +210,7 @@ static const struct mxc_usbh_platform_data dr_utmi_config __initconst = { | |||
211 | .portsc = MXC_EHCI_UTMI_16BIT, | 210 | .portsc = MXC_EHCI_UTMI_16BIT, |
212 | }; | 211 | }; |
213 | 212 | ||
214 | static struct fsl_usb2_platform_data usb_pdata = { | 213 | static const struct fsl_usb2_platform_data usb_pdata __initconst = { |
215 | .operating_mode = FSL_USB2_DR_DEVICE, | 214 | .operating_mode = FSL_USB2_DR_DEVICE, |
216 | .phy_mode = FSL_USB2_PHY_UTMI_WIDE, | 215 | .phy_mode = FSL_USB2_PHY_UTMI_WIDE, |
217 | }; | 216 | }; |
@@ -273,7 +272,7 @@ static void __init eukrea_cpuimx51_init(void) | |||
273 | imx51_add_mxc_ehci_otg(&dr_utmi_config); | 272 | imx51_add_mxc_ehci_otg(&dr_utmi_config); |
274 | else { | 273 | else { |
275 | initialize_otg_port(NULL); | 274 | initialize_otg_port(NULL); |
276 | mxc_register_device(&mxc_usbdr_udc_device, &usb_pdata); | 275 | imx51_add_fsl_usb2_udc(&usb_pdata); |
277 | } | 276 | } |
278 | imx51_add_mxc_ehci_hs(1, &usbh1_config); | 277 | imx51_add_mxc_ehci_hs(1, &usbh1_config); |
279 | 278 | ||
diff --git a/arch/arm/mach-mx5/board-cpuimx51sd.c b/arch/arm/mach-mx5/board-cpuimx51sd.c index bca3719e2726..71a5832d0929 100644 --- a/arch/arm/mach-mx5/board-cpuimx51sd.c +++ b/arch/arm/mach-mx5/board-cpuimx51sd.c | |||
@@ -39,7 +39,6 @@ | |||
39 | #include <asm/mach/time.h> | 39 | #include <asm/mach/time.h> |
40 | 40 | ||
41 | #include "devices-imx51.h" | 41 | #include "devices-imx51.h" |
42 | #include "devices.h" | ||
43 | #include "cpu_op-mx51.h" | 42 | #include "cpu_op-mx51.h" |
44 | 43 | ||
45 | #define USBH1_RST IMX_GPIO_NR(2, 28) | 44 | #define USBH1_RST IMX_GPIO_NR(2, 28) |
@@ -194,7 +193,7 @@ static const struct mxc_usbh_platform_data dr_utmi_config __initconst = { | |||
194 | .portsc = MXC_EHCI_UTMI_16BIT, | 193 | .portsc = MXC_EHCI_UTMI_16BIT, |
195 | }; | 194 | }; |
196 | 195 | ||
197 | static struct fsl_usb2_platform_data usb_pdata = { | 196 | static const struct fsl_usb2_platform_data usb_pdata __initconst = { |
198 | .operating_mode = FSL_USB2_DR_DEVICE, | 197 | .operating_mode = FSL_USB2_DR_DEVICE, |
199 | .phy_mode = FSL_USB2_PHY_UTMI_WIDE, | 198 | .phy_mode = FSL_USB2_PHY_UTMI_WIDE, |
200 | }; | 199 | }; |
@@ -306,7 +305,7 @@ static void __init eukrea_cpuimx51sd_init(void) | |||
306 | imx51_add_mxc_ehci_otg(&dr_utmi_config); | 305 | imx51_add_mxc_ehci_otg(&dr_utmi_config); |
307 | else { | 306 | else { |
308 | initialize_otg_port(NULL); | 307 | initialize_otg_port(NULL); |
309 | mxc_register_device(&mxc_usbdr_udc_device, &usb_pdata); | 308 | imx51_add_fsl_usb2_udc(&usb_pdata); |
310 | } | 309 | } |
311 | 310 | ||
312 | gpio_request(USBH1_RST, "usb_rst"); | 311 | gpio_request(USBH1_RST, "usb_rst"); |
diff --git a/arch/arm/mach-mx5/board-mx51_babbage.c b/arch/arm/mach-mx5/board-mx51_babbage.c index 1d15297ab8b4..576a7992c23d 100644 --- a/arch/arm/mach-mx5/board-mx51_babbage.c +++ b/arch/arm/mach-mx5/board-mx51_babbage.c | |||
@@ -293,7 +293,7 @@ static const struct mxc_usbh_platform_data dr_utmi_config __initconst = { | |||
293 | .portsc = MXC_EHCI_UTMI_16BIT, | 293 | .portsc = MXC_EHCI_UTMI_16BIT, |
294 | }; | 294 | }; |
295 | 295 | ||
296 | static struct fsl_usb2_platform_data usb_pdata = { | 296 | static const struct fsl_usb2_platform_data usb_pdata __initconst = { |
297 | .operating_mode = FSL_USB2_DR_DEVICE, | 297 | .operating_mode = FSL_USB2_DR_DEVICE, |
298 | .phy_mode = FSL_USB2_PHY_UTMI_WIDE, | 298 | .phy_mode = FSL_USB2_PHY_UTMI_WIDE, |
299 | }; | 299 | }; |
@@ -387,7 +387,7 @@ static void __init mx51_babbage_init(void) | |||
387 | imx51_add_mxc_ehci_otg(&dr_utmi_config); | 387 | imx51_add_mxc_ehci_otg(&dr_utmi_config); |
388 | else { | 388 | else { |
389 | initialize_otg_port(NULL); | 389 | initialize_otg_port(NULL); |
390 | mxc_register_device(&mxc_usbdr_udc_device, &usb_pdata); | 390 | imx51_add_fsl_usb2_udc(&usb_pdata); |
391 | } | 391 | } |
392 | 392 | ||
393 | gpio_usbh1_active(); | 393 | gpio_usbh1_active(); |
diff --git a/arch/arm/mach-mx5/devices-imx51.h b/arch/arm/mach-mx5/devices-imx51.h index f42acf5545e6..2f2cdb93bfe2 100644 --- a/arch/arm/mach-mx5/devices-imx51.h +++ b/arch/arm/mach-mx5/devices-imx51.h | |||
@@ -13,6 +13,10 @@ extern const struct imx_fec_data imx51_fec_data; | |||
13 | #define imx51_add_fec(pdata) \ | 13 | #define imx51_add_fec(pdata) \ |
14 | imx_add_fec(&imx51_fec_data, pdata) | 14 | imx_add_fec(&imx51_fec_data, pdata) |
15 | 15 | ||
16 | extern const struct imx_fsl_usb2_udc_data imx51_fsl_usb2_udc_data; | ||
17 | #define imx51_add_fsl_usb2_udc(pdata) \ | ||
18 | imx_add_fsl_usb2_udc(&imx51_fsl_usb2_udc_data, pdata) | ||
19 | |||
16 | extern const struct imx_imx_i2c_data imx51_imx_i2c_data[]; | 20 | extern const struct imx_imx_i2c_data imx51_imx_i2c_data[]; |
17 | #define imx51_add_imx_i2c(id, pdata) \ | 21 | #define imx51_add_imx_i2c(id, pdata) \ |
18 | imx_add_imx_i2c(&imx51_imx_i2c_data[id], pdata) | 22 | imx_add_imx_i2c(&imx51_imx_i2c_data[id], pdata) |
diff --git a/arch/arm/mach-mx5/devices.c b/arch/arm/mach-mx5/devices.c index 88edf26299f4..1c09026b314b 100644 --- a/arch/arm/mach-mx5/devices.c +++ b/arch/arm/mach-mx5/devices.c | |||
@@ -35,29 +35,3 @@ struct platform_device mxc_hsi2c_device = { | |||
35 | .num_resources = ARRAY_SIZE(mxc_hsi2c_resources), | 35 | .num_resources = ARRAY_SIZE(mxc_hsi2c_resources), |
36 | .resource = mxc_hsi2c_resources | 36 | .resource = mxc_hsi2c_resources |
37 | }; | 37 | }; |
38 | |||
39 | static u64 usb_dma_mask = DMA_BIT_MASK(32); | ||
40 | |||
41 | static struct resource usbotg_resources[] = { | ||
42 | { | ||
43 | .start = MX51_USB_OTG_BASE_ADDR, | ||
44 | .end = MX51_USB_OTG_BASE_ADDR + 0x1ff, | ||
45 | .flags = IORESOURCE_MEM, | ||
46 | }, | ||
47 | { | ||
48 | .start = MX51_INT_USB_OTG, | ||
49 | .flags = IORESOURCE_IRQ, | ||
50 | }, | ||
51 | }; | ||
52 | |||
53 | /* OTG gadget device */ | ||
54 | struct platform_device mxc_usbdr_udc_device = { | ||
55 | .name = "fsl-usb2-udc", | ||
56 | .id = -1, | ||
57 | .num_resources = ARRAY_SIZE(usbotg_resources), | ||
58 | .resource = usbotg_resources, | ||
59 | .dev = { | ||
60 | .dma_mask = &usb_dma_mask, | ||
61 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
62 | }, | ||
63 | }; | ||
diff --git a/arch/arm/mach-mx5/devices.h b/arch/arm/mach-mx5/devices.h index 0f30a6e7138c..6b2edfea129b 100644 --- a/arch/arm/mach-mx5/devices.h +++ b/arch/arm/mach-mx5/devices.h | |||
@@ -1,2 +1 @@ | |||
1 | extern struct platform_device mxc_usbdr_udc_device; | ||
2 | extern struct platform_device mxc_hsi2c_device; | extern struct platform_device mxc_hsi2c_device; | |