aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-mx5
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2011-07-30 17:57:25 -0400
committerUwe Kleine-König <u.kleine-koenig@pengutronix.de>2011-08-01 05:16:55 -0400
commit6cafe48a6bfa8934d5564fbf9976a51040dac819 (patch)
tree4975eb00698283fd3b256963726de2dba513062f /arch/arm/mach-mx5
parent7d92e8e6c4d45d33dd32a028081c89a6dedab032 (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/Kconfig3
-rw-r--r--arch/arm/mach-mx5/board-cpuimx51.c5
-rw-r--r--arch/arm/mach-mx5/board-cpuimx51sd.c5
-rw-r--r--arch/arm/mach-mx5/board-mx51_babbage.c4
-rw-r--r--arch/arm/mach-mx5/devices-imx51.h4
-rw-r--r--arch/arm/mach-mx5/devices.c26
-rw-r--r--arch/arm/mach-mx5/devices.h1
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:"
65config MACH_MX51_BABBAGE 65config 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
92config MACH_EUKREA_CPUIMX51 93config 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
121config MACH_EUKREA_CPUIMX51SD 123config 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
214static struct fsl_usb2_platform_data usb_pdata = { 213static 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
197static struct fsl_usb2_platform_data usb_pdata = { 196static 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
296static struct fsl_usb2_platform_data usb_pdata = { 296static 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
16extern 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
16extern const struct imx_imx_i2c_data imx51_imx_i2c_data[]; 20extern 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
39static u64 usb_dma_mask = DMA_BIT_MASK(32);
40
41static 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 */
54struct 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 @@
1extern struct platform_device mxc_usbdr_udc_device;
2extern struct platform_device mxc_hsi2c_device; extern struct platform_device mxc_hsi2c_device;