diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-14 13:42:43 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-14 13:42:43 -0700 |
commit | 2cf4d4514d5b43c1f3b64bd0ec8b9853bde8f1dc (patch) | |
tree | e35a625496acc6ac852846d40b8851186b9d1ac4 /arch/arm/mach-w90x900/mach-w90p910evb.c | |
parent | 44b7532b8b464f606053562400719c9c21276037 (diff) | |
parent | ce53895a5d24e0ee19fb92f56c17323fb4c9ab27 (diff) | |
download | blackbird-op-linux-2cf4d4514d5b43c1f3b64bd0ec8b9853bde8f1dc.tar.gz blackbird-op-linux-2cf4d4514d5b43c1f3b64bd0ec8b9853bde8f1dc.zip |
Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm
* 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: (417 commits)
MAINTAINERS: EB110ATX is not ebsa110
MAINTAINERS: update Eric Miao's email address and status
fb: add support of LCD display controller on pxa168/910 (base layer)
[ARM] 5552/1: ep93xx get_uart_rate(): use EP93XX_SYSCON_PWRCNT and EP93XX_SYSCON_PWRCN
[ARM] pxa/sharpsl_pm: zaurus needs generic pxa suspend/resume routines
[ARM] 5544/1: Trust PrimeCell resource sizes
[ARM] pxa/sharpsl_pm: cleanup of gpio-related code.
[ARM] pxa/sharpsl_pm: drop set_irq_type calls
[ARM] pxa/sharpsl_pm: merge pxa-specific code into generic one
[ARM] pxa/sharpsl_pm: merge the two sharpsl_pm.c since it's now pxa specific
[ARM] sa1100: remove unused collie_pm.c
[ARM] pxa: fix the conflicting non-static declarations of global_gpios[]
[ARM] 5550/1: Add default configure file for w90p910 platform
[ARM] 5549/1: Add clock api for w90p910 platform.
[ARM] 5548/1: Add gpio api for w90p910 platform
[ARM] 5551/1: Add multi-function pin api for w90p910 platform.
[ARM] Make ARM_VIC_NR depend on ARM_VIC
[ARM] 5546/1: ARM PL022 SSP/SPI driver v3
ARM: OMAP4: SMP: Update defconfig for OMAP4430
ARM: OMAP4: SMP: Enable SMP support for OMAP4430
...
Diffstat (limited to 'arch/arm/mach-w90x900/mach-w90p910evb.c')
-rw-r--r-- | arch/arm/mach-w90x900/mach-w90p910evb.c | 164 |
1 files changed, 159 insertions, 5 deletions
diff --git a/arch/arm/mach-w90x900/mach-w90p910evb.c b/arch/arm/mach-w90x900/mach-w90p910evb.c index 726ff6798a56..7a62bd348e80 100644 --- a/arch/arm/mach-w90x900/mach-w90p910evb.c +++ b/arch/arm/mach-w90x900/mach-w90p910evb.c @@ -3,15 +3,13 @@ * * Based on mach-s3c2410/mach-smdk2410.c by Jonas Dietsche * - * Copyright (C) 2008 Nuvoton technology corporation - * All rights reserved. + * Copyright (C) 2008 Nuvoton technology corporation. * * Wan ZongShun <mcuos.com@gmail.com> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of - * the License, or (at your option) any later version. + * published by the Free Software Foundation;version 2 of the License. * */ @@ -80,6 +78,156 @@ static struct platform_device w90p910_flash_device = { .num_resources = ARRAY_SIZE(w90p910_flash_resources), }; +/* USB EHCI Host Controller */ + +static struct resource w90x900_usb_ehci_resource[] = { + [0] = { + .start = W90X900_PA_USBEHCIHOST, + .end = W90X900_PA_USBEHCIHOST + W90X900_SZ_USBEHCIHOST - 1, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = IRQ_USBH, + .end = IRQ_USBH, + .flags = IORESOURCE_IRQ, + } +}; + +static u64 w90x900_device_usb_ehci_dmamask = 0xffffffffUL; + +struct platform_device w90x900_device_usb_ehci = { + .name = "w90x900-ehci", + .id = -1, + .num_resources = ARRAY_SIZE(w90x900_usb_ehci_resource), + .resource = w90x900_usb_ehci_resource, + .dev = { + .dma_mask = &w90x900_device_usb_ehci_dmamask, + .coherent_dma_mask = 0xffffffffUL + } +}; +EXPORT_SYMBOL(w90x900_device_usb_ehci); + +/* USB OHCI Host Controller */ + +static struct resource w90x900_usb_ohci_resource[] = { + [0] = { + .start = W90X900_PA_USBOHCIHOST, + .end = W90X900_PA_USBOHCIHOST + W90X900_SZ_USBOHCIHOST - 1, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = IRQ_USBH, + .end = IRQ_USBH, + .flags = IORESOURCE_IRQ, + } +}; + +static u64 w90x900_device_usb_ohci_dmamask = 0xffffffffUL; +struct platform_device w90x900_device_usb_ohci = { + .name = "w90x900-ohci", + .id = -1, + .num_resources = ARRAY_SIZE(w90x900_usb_ohci_resource), + .resource = w90x900_usb_ohci_resource, + .dev = { + .dma_mask = &w90x900_device_usb_ohci_dmamask, + .coherent_dma_mask = 0xffffffffUL + } +}; +EXPORT_SYMBOL(w90x900_device_usb_ohci); + +/*TouchScreen controller*/ + +static struct resource w90x900_ts_resource[] = { + [0] = { + .start = W90X900_PA_ADC, + .end = W90X900_PA_ADC + W90X900_SZ_ADC-1, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = IRQ_ADC, + .end = IRQ_ADC, + .flags = IORESOURCE_IRQ, + }, +}; + +struct platform_device w90x900_device_ts = { + .name = "w90x900-ts", + .id = -1, + .resource = w90x900_ts_resource, + .num_resources = ARRAY_SIZE(w90x900_ts_resource), +}; +EXPORT_SYMBOL(w90x900_device_ts); + +/* RTC controller*/ + +static struct resource w90x900_rtc_resource[] = { + [0] = { + .start = W90X900_PA_RTC, + .end = W90X900_PA_RTC + 0xff, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = IRQ_RTC, + .end = IRQ_RTC, + .flags = IORESOURCE_IRQ, + }, +}; + +struct platform_device w90x900_device_rtc = { + .name = "w90x900-rtc", + .id = -1, + .num_resources = ARRAY_SIZE(w90x900_rtc_resource), + .resource = w90x900_rtc_resource, +}; +EXPORT_SYMBOL(w90x900_device_rtc); + +/* KPI controller*/ + +static struct resource w90x900_kpi_resource[] = { + [0] = { + .start = W90X900_PA_KPI, + .end = W90X900_PA_KPI + W90X900_SZ_KPI - 1, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = IRQ_KPI, + .end = IRQ_KPI, + .flags = IORESOURCE_IRQ, + } + +}; + +struct platform_device w90x900_device_kpi = { + .name = "w90x900-kpi", + .id = -1, + .num_resources = ARRAY_SIZE(w90x900_kpi_resource), + .resource = w90x900_kpi_resource, +}; +EXPORT_SYMBOL(w90x900_device_kpi); + +/* USB Device (Gadget)*/ + +static struct resource w90x900_usbgadget_resource[] = { + [0] = { + .start = W90X900_PA_USBDEV, + .end = W90X900_PA_USBDEV + W90X900_SZ_USBDEV - 1, + .flags = IORESOURCE_MEM, + }, + [1] = { + .start = IRQ_USBD, + .end = IRQ_USBD, + .flags = IORESOURCE_IRQ, + } +}; + +struct platform_device w90x900_device_usbgadget = { + .name = "w90x900-usbgadget", + .id = -1, + .num_resources = ARRAY_SIZE(w90x900_usbgadget_resource), + .resource = w90x900_usbgadget_resource, +}; +EXPORT_SYMBOL(w90x900_device_usbgadget); + static struct map_desc w90p910_iodesc[] __initdata = { }; @@ -88,12 +236,18 @@ static struct map_desc w90p910_iodesc[] __initdata = { static struct platform_device *w90p910evb_dev[] __initdata = { &w90p910_serial_device, &w90p910_flash_device, + &w90x900_device_usb_ehci, + &w90x900_device_usb_ohci, + &w90x900_device_ts, + &w90x900_device_rtc, + &w90x900_device_kpi, + &w90x900_device_usbgadget, }; static void __init w90p910evb_map_io(void) { w90p910_map_io(w90p910_iodesc, ARRAY_SIZE(w90p910_iodesc)); - w90p910_init_clocks(0); + w90p910_init_clocks(); } static void __init w90p910evb_init(void) |