aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-ixp4xx/common.c41
-rw-r--r--include/asm-arm/arch-ixp4xx/udc.h8
2 files changed, 49 insertions, 0 deletions
diff --git a/arch/arm/mach-ixp4xx/common.c b/arch/arm/mach-ixp4xx/common.c
index 074c96520246..1cf3bde1a5d2 100644
--- a/arch/arm/mach-ixp4xx/common.c
+++ b/arch/arm/mach-ixp4xx/common.c
@@ -28,6 +28,7 @@
28#include <linux/timex.h> 28#include <linux/timex.h>
29#include <linux/clocksource.h> 29#include <linux/clocksource.h>
30 30
31#include <asm/arch/udc.h>
31#include <asm/hardware.h> 32#include <asm/hardware.h>
32#include <asm/uaccess.h> 33#include <asm/uaccess.h>
33#include <asm/io.h> 34#include <asm/io.h>
@@ -286,6 +287,44 @@ struct sys_timer ixp4xx_timer = {
286 .init = ixp4xx_timer_init, 287 .init = ixp4xx_timer_init,
287}; 288};
288 289
290static struct pxa2xx_udc_mach_info ixp4xx_udc_info;
291
292void __init ixp4xx_set_udc_info(struct pxa2xx_udc_mach_info *info)
293{
294 memcpy(&ixp4xx_udc_info, info, sizeof *info);
295}
296
297static struct resource ixp4xx_udc_resources[] = {
298 [0] = {
299 .start = 0xc800b000,
300 .end = 0xc800bfff,
301 .flags = IORESOURCE_MEM,
302 },
303 [1] = {
304 .start = IRQ_IXP4XX_USB,
305 .end = IRQ_IXP4XX_USB,
306 .flags = IORESOURCE_IRQ,
307 },
308};
309
310/*
311 * USB device controller. The IXP4xx uses the same controller as PXA2XX,
312 * so we just use the same device.
313 */
314static struct platform_device ixp4xx_udc_device = {
315 .name = "pxa2xx-udc",
316 .id = -1,
317 .num_resources = 2,
318 .resource = ixp4xx_udc_resources,
319 .dev = {
320 .platform_data = &ixp4xx_udc_info,
321 },
322};
323
324static struct platform_device *ixp4xx_devices[] __initdata = {
325 &ixp4xx_udc_device,
326};
327
289static struct resource ixp46x_i2c_resources[] = { 328static struct resource ixp46x_i2c_resources[] = {
290 [0] = { 329 [0] = {
291 .start = 0xc8011000, 330 .start = 0xc8011000,
@@ -321,6 +360,8 @@ void __init ixp4xx_sys_init(void)
321{ 360{
322 ixp4xx_exp_bus_size = SZ_16M; 361 ixp4xx_exp_bus_size = SZ_16M;
323 362
363 platform_add_devices(ixp4xx_devices, ARRAY_SIZE(ixp4xx_devices));
364
324 if (cpu_is_ixp46x()) { 365 if (cpu_is_ixp46x()) {
325 int region; 366 int region;
326 367
diff --git a/include/asm-arm/arch-ixp4xx/udc.h b/include/asm-arm/arch-ixp4xx/udc.h
new file mode 100644
index 000000000000..dbdec36ff0d1
--- /dev/null
+++ b/include/asm-arm/arch-ixp4xx/udc.h
@@ -0,0 +1,8 @@
1/*
2 * linux/include/asm-arm/arch-ixp4xx/udc.h
3 *
4 */
5#include <asm/mach/udc_pxa2xx.h>
6
7extern void ixp4xx_set_udc_info(struct pxa2xx_udc_mach_info *info);
8