diff options
author | Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> | 2012-10-29 01:15:43 -0700 |
---|---|---|
committer | Simon Horman <horms@verge.net.au> | 2012-11-08 17:52:04 +0900 |
commit | ac7c4ea037e376a89a37f4f8f9e315cdff364648 (patch) | |
tree | a8c56aab6cec6944221c663282a11b69a5079a7a /arch/arm/mach-shmobile | |
parent | 94e1f7fbe0478f00ccbdb22d9b269943e1daeba6 (diff) |
ARM: shmobile: marzen: add USB OHCI driver support
This patch supports CN21/CN22 USB 1.x (port 0/1/2),
and enable input event on defconfig
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'arch/arm/mach-shmobile')
-rw-r--r-- | arch/arm/mach-shmobile/Kconfig | 1 | ||||
-rw-r--r-- | arch/arm/mach-shmobile/board-marzen.c | 57 |
2 files changed, 58 insertions, 0 deletions
diff --git a/arch/arm/mach-shmobile/Kconfig b/arch/arm/mach-shmobile/Kconfig index 4eae11cdf106..9255546e7bf6 100644 --- a/arch/arm/mach-shmobile/Kconfig +++ b/arch/arm/mach-shmobile/Kconfig @@ -30,6 +30,7 @@ config ARCH_R8A7779 select CPU_V7 select SH_CLK_CPG select USB_ARCH_HAS_EHCI + select USB_ARCH_HAS_OHCI config ARCH_EMEV2 bool "Emma Mobile EV2" diff --git a/arch/arm/mach-shmobile/board-marzen.c b/arch/arm/mach-shmobile/board-marzen.c index 707b3bdaee8a..449f9289567d 100644 --- a/arch/arm/mach-shmobile/board-marzen.c +++ b/arch/arm/mach-shmobile/board-marzen.c @@ -36,6 +36,7 @@ #include <linux/mfd/tmio.h> #include <linux/usb/otg.h> #include <linux/usb/ehci_pdriver.h> +#include <linux/usb/ohci_pdriver.h> #include <linux/pm_runtime.h> #include <mach/hardware.h> #include <mach/r8a7779.h> @@ -255,9 +256,65 @@ static struct platform_device ehci1_device = { .resource = ehci1_resources, }; +static struct usb_ohci_pdata ohcix_pdata = { + .power_on = usb_power_on, + .power_off = usb_power_off, + .power_suspend = usb_power_off, +}; + +static struct resource ohci0_resources[] = { + [0] = { + .start = 0xffe70400, + .end = 0xffe70800 - 1, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = gic_spi(44), + .flags = IORESOURCE_IRQ, + }, +}; + +static struct platform_device ohci0_device = { + .name = "ohci-platform", + .id = 0, + .dev = { + .dma_mask = &ohci0_device.dev.coherent_dma_mask, + .coherent_dma_mask = 0xffffffff, + .platform_data = &ohcix_pdata, + }, + .num_resources = ARRAY_SIZE(ohci0_resources), + .resource = ohci0_resources, +}; + +static struct resource ohci1_resources[] = { + [0] = { + .start = 0xfff70400, + .end = 0xfff70800 - 1, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = gic_spi(45), + .flags = IORESOURCE_IRQ, + }, +}; + +static struct platform_device ohci1_device = { + .name = "ohci-platform", + .id = 1, + .dev = { + .dma_mask = &ohci1_device.dev.coherent_dma_mask, + .coherent_dma_mask = 0xffffffff, + .platform_data = &ohcix_pdata, + }, + .num_resources = ARRAY_SIZE(ohci1_resources), + .resource = ohci1_resources, +}; + static struct platform_device *marzen_late_devices[] __initdata = { &ehci0_device, &ehci1_device, + &ohci0_device, + &ohci1_device, }; void __init marzen_init_late(void) |