diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2010-11-10 04:11:23 -0500 |
---|---|---|
committer | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2010-11-17 04:01:33 -0500 |
commit | 9f871469893a6d87c6cddf412f82ebf588fd4eca (patch) | |
tree | 02385e948c3e7c51d0ec917c3aa0e17bf79ede5f | |
parent | 3f880141b8d12cdbb5faf0b9941ee50ac515ea1e (diff) |
ARM: imx: dynamically allocate imx21-hcd devices
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
-rw-r--r-- | arch/arm/mach-imx/devices-imx21.h | 4 | ||||
-rw-r--r-- | arch/arm/mach-imx/devices.c | 26 | ||||
-rw-r--r-- | arch/arm/mach-imx/devices.h | 3 | ||||
-rw-r--r-- | arch/arm/plat-mxc/devices/Kconfig | 3 | ||||
-rw-r--r-- | arch/arm/plat-mxc/devices/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/plat-mxc/devices/platform-imx21-hcd.c | 41 | ||||
-rw-r--r-- | arch/arm/plat-mxc/include/mach/devices-common.h | 9 |
7 files changed, 58 insertions, 29 deletions
diff --git a/arch/arm/mach-imx/devices-imx21.h b/arch/arm/mach-imx/devices-imx21.h index 0c0eab17ccfd..16744d2d9b81 100644 --- a/arch/arm/mach-imx/devices-imx21.h +++ b/arch/arm/mach-imx/devices-imx21.h | |||
@@ -9,6 +9,10 @@ | |||
9 | #include <mach/mx21.h> | 9 | #include <mach/mx21.h> |
10 | #include <mach/devices-common.h> | 10 | #include <mach/devices-common.h> |
11 | 11 | ||
12 | extern const struct imx_imx21_hcd_data imx21_imx21_hcd_data __initconst; | ||
13 | #define imx21_add_imx21_hcd(pdata) \ | ||
14 | imx_add_imx21_hcd(&imx21_imx21_hcd_data, pdata) | ||
15 | |||
12 | extern const struct imx_imx2_wdt_data imx21_imx2_wdt_data __initconst; | 16 | extern const struct imx_imx2_wdt_data imx21_imx2_wdt_data __initconst; |
13 | #define imx21_add_imx2_wdt(pdata) \ | 17 | #define imx21_add_imx2_wdt(pdata) \ |
14 | imx_add_imx2_wdt(&imx21_imx2_wdt_data) | 18 | imx_add_imx2_wdt(&imx21_imx2_wdt_data) |
diff --git a/arch/arm/mach-imx/devices.c b/arch/arm/mach-imx/devices.c index 4360b9c8f893..8fd2545395f9 100644 --- a/arch/arm/mach-imx/devices.c +++ b/arch/arm/mach-imx/devices.c | |||
@@ -123,30 +123,4 @@ int __init imx27_register_gpios(void) | |||
123 | } | 123 | } |
124 | #endif | 124 | #endif |
125 | 125 | ||
126 | #ifdef CONFIG_MACH_MX21 | ||
127 | static struct resource mx21_usbhc_resources[] = { | ||
128 | { | ||
129 | .start = MX21_USBOTG_BASE_ADDR, | ||
130 | .end = MX21_USBOTG_BASE_ADDR + SZ_8K - 1, | ||
131 | .flags = IORESOURCE_MEM, | ||
132 | }, | ||
133 | { | ||
134 | .start = MX21_INT_USBHOST, | ||
135 | .end = MX21_INT_USBHOST, | ||
136 | .flags = IORESOURCE_IRQ, | ||
137 | }, | ||
138 | }; | ||
139 | |||
140 | struct platform_device mx21_usbhc_device = { | ||
141 | .name = "imx21-hcd", | ||
142 | .id = 0, | ||
143 | .dev = { | ||
144 | .dma_mask = &mx21_usbhc_device.dev.coherent_dma_mask, | ||
145 | .coherent_dma_mask = DMA_BIT_MASK(32), | ||
146 | }, | ||
147 | .num_resources = ARRAY_SIZE(mx21_usbhc_resources), | ||
148 | .resource = mx21_usbhc_resources, | ||
149 | }; | ||
150 | #endif | ||
151 | |||
152 | #endif | 126 | #endif |
diff --git a/arch/arm/mach-imx/devices.h b/arch/arm/mach-imx/devices.h index d1e7f48f7d52..e69de29bb2d1 100644 --- a/arch/arm/mach-imx/devices.h +++ b/arch/arm/mach-imx/devices.h | |||
@@ -1,3 +0,0 @@ | |||
1 | #if defined(CONFIG_MACH_MX21) || defined(CONFIG_MACH_MX27) | ||
2 | extern struct platform_device mx21_usbhc_device; | ||
3 | #endif | ||
diff --git a/arch/arm/plat-mxc/devices/Kconfig b/arch/arm/plat-mxc/devices/Kconfig index 212f380d7642..a0be2df71a08 100644 --- a/arch/arm/plat-mxc/devices/Kconfig +++ b/arch/arm/plat-mxc/devices/Kconfig | |||
@@ -15,6 +15,9 @@ config IMX_HAVE_PLATFORM_FSL_USB2_UDC | |||
15 | config IMX_HAVE_PLATFORM_GPIO_KEYS | 15 | config IMX_HAVE_PLATFORM_GPIO_KEYS |
16 | bool | 16 | bool |
17 | default y if ARCH_MX51 | 17 | default y if ARCH_MX51 |
18 | |||
19 | config IMX_HAVE_PLATFORM_IMX21_HCD | ||
20 | bool | ||
18 | 21 | ||
19 | config IMX_HAVE_PLATFORM_IMX2_WDT | 22 | config IMX_HAVE_PLATFORM_IMX2_WDT |
20 | bool | 23 | bool |
diff --git a/arch/arm/plat-mxc/devices/Makefile b/arch/arm/plat-mxc/devices/Makefile index dd23baba32e9..14b228e9d58a 100644 --- a/arch/arm/plat-mxc/devices/Makefile +++ b/arch/arm/plat-mxc/devices/Makefile | |||
@@ -3,6 +3,7 @@ obj-$(CONFIG_IMX_HAVE_PLATFORM_FEC) += platform-fec.o | |||
3 | obj-$(CONFIG_IMX_HAVE_PLATFORM_FLEXCAN) += platform-flexcan.o | 3 | obj-$(CONFIG_IMX_HAVE_PLATFORM_FLEXCAN) += platform-flexcan.o |
4 | obj-$(CONFIG_IMX_HAVE_PLATFORM_FSL_USB2_UDC) += platform-fsl-usb2-udc.o | 4 | obj-$(CONFIG_IMX_HAVE_PLATFORM_FSL_USB2_UDC) += platform-fsl-usb2-udc.o |
5 | obj-$(CONFIG_IMX_HAVE_PLATFORM_GPIO_KEYS) += platform-gpio_keys.o | 5 | obj-$(CONFIG_IMX_HAVE_PLATFORM_GPIO_KEYS) += platform-gpio_keys.o |
6 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX21_HCD) += platform-imx21-hcd.o | ||
6 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX2_WDT) += platform-imx2-wdt.o | 7 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX2_WDT) += platform-imx2-wdt.o |
7 | obj-y += platform-imx-dma.o | 8 | obj-y += platform-imx-dma.o |
8 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_FB) += platform-imx-fb.o | 9 | obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_FB) += platform-imx-fb.o |
diff --git a/arch/arm/plat-mxc/devices/platform-imx21-hcd.c b/arch/arm/plat-mxc/devices/platform-imx21-hcd.c new file mode 100644 index 000000000000..5770a42f33bf --- /dev/null +++ b/arch/arm/plat-mxc/devices/platform-imx21-hcd.c | |||
@@ -0,0 +1,41 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2010 Pengutronix | ||
3 | * Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de> | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it under | ||
6 | * the terms of the GNU General Public License version 2 as published by the | ||
7 | * Free Software Foundation. | ||
8 | */ | ||
9 | #include <mach/hardware.h> | ||
10 | #include <mach/devices-common.h> | ||
11 | |||
12 | #define imx_imx21_hcd_data_entry_single(soc) \ | ||
13 | { \ | ||
14 | .iobase = soc ## _USBOTG_BASE_ADDR, \ | ||
15 | .irq = soc ## _INT_USBHOST, \ | ||
16 | } | ||
17 | |||
18 | #ifdef CONFIG_SOC_IMX21 | ||
19 | const struct imx_imx21_hcd_data imx21_imx21_hcd_data __initconst = | ||
20 | imx_imx21_hcd_data_entry_single(MX21); | ||
21 | #endif /* ifdef CONFIG_SOC_IMX21 */ | ||
22 | |||
23 | struct platform_device *__init imx_add_imx21_hcd( | ||
24 | const struct imx_imx21_hcd_data *data, | ||
25 | const struct mx21_usbh_platform_data *pdata) | ||
26 | { | ||
27 | struct resource res[] = { | ||
28 | { | ||
29 | .start = data->iobase, | ||
30 | .end = data->iobase + SZ_8K - 1, | ||
31 | .flags = IORESOURCE_MEM, | ||
32 | }, { | ||
33 | .start = data->irq, | ||
34 | .end = data->irq, | ||
35 | .flags = IORESOURCE_IRQ, | ||
36 | }, | ||
37 | }; | ||
38 | return imx_add_platform_device_dmamask("imx21-hcd", 0, | ||
39 | res, ARRAY_SIZE(res), | ||
40 | pdata, sizeof(*pdata), DMA_BIT_MASK(32)); | ||
41 | } | ||
diff --git a/arch/arm/plat-mxc/include/mach/devices-common.h b/arch/arm/plat-mxc/include/mach/devices-common.h index 1a672999d838..f5d0000acd62 100644 --- a/arch/arm/plat-mxc/include/mach/devices-common.h +++ b/arch/arm/plat-mxc/include/mach/devices-common.h | |||
@@ -57,6 +57,15 @@ struct platform_device *__init imx_add_fsl_usb2_udc( | |||
57 | struct platform_device *__init imx_add_gpio_keys( | 57 | struct platform_device *__init imx_add_gpio_keys( |
58 | const struct gpio_keys_platform_data *pdata); | 58 | const struct gpio_keys_platform_data *pdata); |
59 | 59 | ||
60 | #include <mach/mx21-usbhost.h> | ||
61 | struct imx_imx21_hcd_data { | ||
62 | resource_size_t iobase; | ||
63 | resource_size_t irq; | ||
64 | }; | ||
65 | struct platform_device *__init imx_add_imx21_hcd( | ||
66 | const struct imx_imx21_hcd_data *data, | ||
67 | const struct mx21_usbh_platform_data *pdata); | ||
68 | |||
60 | struct imx_imx2_wdt_data { | 69 | struct imx_imx2_wdt_data { |
61 | resource_size_t iobase; | 70 | resource_size_t iobase; |
62 | }; | 71 | }; |