From: Anand Gadiyar Date: Mon, 17 Dec 2007 07:38:54 +0000 (+0530) Subject: ARM: OMAP: Add support for USB on OMAP34XX X-Git-Tag: v2.6.24-omap1~89 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=ab19cecd2717319d1cc82cdaf4a930592c1be5a2;p=linux-2.6-omap-h63xx.git ARM: OMAP: Add support for USB on OMAP34XX Added support for USB on OMAP34XX. Signed-off-by: Anand Gadiyar Signed-off-by: Vikram Pandita Signed-off-by: Nishant Kamat Signed-off-by: Tony Lindgren --- diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile index d4d6d9880a6..f596a86d74a 100644 --- a/arch/arm/mach-omap2/Makefile +++ b/arch/arm/mach-omap2/Makefile @@ -26,7 +26,8 @@ obj-$(CONFIG_MACH_OMAP_2430SDP) += board-2430sdp.o \ board-2430sdp-flash.o \ board-2430sdp-usb.o obj-$(CONFIG_MACH_OMAP_2430OSK) += board-2430osk.o -obj-$(CONFIG_MACH_OMAP_3430SDP) += board-3430sdp.o +obj-$(CONFIG_MACH_OMAP_3430SDP) += board-3430sdp.o \ + board-3430sdp-usb.o obj-$(CONFIG_MACH_OMAP_APOLLON) += board-apollon.o \ board-apollon-mmc.o \ board-apollon-keys.o diff --git a/arch/arm/mach-omap2/board-3430sdp-usb.c b/arch/arm/mach-omap2/board-3430sdp-usb.c new file mode 100644 index 00000000000..dd8f7facd34 --- /dev/null +++ b/arch/arm/mach-omap2/board-3430sdp-usb.c @@ -0,0 +1,77 @@ +/* + * linux/arch/arm/mach-omap2/board-3430sdp-usb.c + * + * This file will contain the board specific details for the + * MENTOR USB OTG and Synopsys EHCI host controllers on OMAP3430 + * + * Copyright (C) 2007 Texas Instruments + * Author: Vikram Pandita + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include +#include +#include +#include +#include + +#include +#include + +#ifdef CONFIG_USB_MUSB_SOC +static struct resource musb_resources[] = { + [0] = { + .start = OMAP34XX_HSUSB_OTG_BASE, + .end = OMAP34XX_HSUSB_OTG_BASE + SZ_8K, + .flags = IORESOURCE_MEM, + }, + [1] = { /* general IRQ */ + .start = INT_243X_HS_USB_MC, + .flags = IORESOURCE_IRQ, + }, + [2] = { /* DMA IRQ */ + .start = INT_243X_HS_USB_DMA, + .flags = IORESOURCE_IRQ, + }, +}; + +static struct musb_hdrc_platform_data musb_plat = { +#ifdef CONFIG_USB_MUSB_OTG + .mode = MUSB_OTG, +#elif defined(CONFIG_USB_MUSB_HDRC_HCD) + .mode = MUSB_HOST, +#elif defined(CONFIG_USB_GADGET_MUSB_HDRC) + .mode = MUSB_PERIPHERAL, +#endif + .multipoint = 1, + .clock = NULL, + .set_clock = NULL, +}; + +static u64 musb_dmamask = ~(u32)0; + +static struct platform_device musb_device = { + .name = "musb_hdrc", + .id = 0, + .dev = { + .dma_mask = &musb_dmamask, + .coherent_dma_mask = 0xffffffff, + .platform_data = &musb_plat, + }, + .num_resources = ARRAY_SIZE(musb_resources), + .resource = musb_resources, +}; +#endif + +void __init sdp3430_usb_init(void) +{ +#ifdef CONFIG_USB_MUSB_SOC + if (platform_device_register(&musb_device) < 0) { + printk(KERN_ERR "Unable to register HS-USB (MUSB) device\n"); + return; + } +#endif +} diff --git a/arch/arm/mach-omap2/board-3430sdp.c b/arch/arm/mach-omap2/board-3430sdp.c index ba410bfe137..0c55858e57d 100644 --- a/arch/arm/mach-omap2/board-3430sdp.c +++ b/arch/arm/mach-omap2/board-3430sdp.c @@ -329,6 +329,7 @@ static void __init omap_3430sdp_init(void) ARRAY_SIZE(sdp3430_spi_board_info)); ads7846_dev_init(); omap_serial_init(); + sdp3430_usb_init(); } static void __init omap_3430sdp_map_io(void) diff --git a/include/asm-arm/arch-omap/board-3430sdp.h b/include/asm-arm/arch-omap/board-3430sdp.h index 4a0247da9a8..369d0025fb2 100644 --- a/include/asm-arm/arch-omap/board-3430sdp.h +++ b/include/asm-arm/arch-omap/board-3430sdp.h @@ -29,6 +29,8 @@ #ifndef __ASM_ARCH_OMAP_3430SDP_H #define __ASM_ARCH_OMAP_3430SDP_H +extern void sdp3430_usb_init(void); + #define DEBUG_BASE 0x08000000 /* debug board */ /* Placeholder for 3430SDP specific defines */