aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@rpsys.net>2006-01-05 15:44:52 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2006-01-05 15:44:52 -0500
commit3125c68d70e3433c21234431a9df9e7336efa29f (patch)
treed4602c154d66b301982a9c2ae8c2808dc7cd9a72
parent4c70b926c91ba9c1ce3dc92d418f8e4670c8f16d (diff)
[ARM] 3227/1: Spitz: Add pxa27x OHCI platform specific code
Patch from Richard Purdie Add platform code to enable the ohci device on the pxa27x based Sharp Zaurus Cxx00 devices. Signed-off-by: Richard Purdie <rpurdie@rpsys.net> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--arch/arm/mach-pxa/spitz.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c
index 2df1b56615b1..5d34abc64af7 100644
--- a/arch/arm/mach-pxa/spitz.c
+++ b/arch/arm/mach-pxa/spitz.c
@@ -36,6 +36,7 @@
36#include <asm/arch/irq.h> 36#include <asm/arch/irq.h>
37#include <asm/arch/irda.h> 37#include <asm/arch/irda.h>
38#include <asm/arch/mmc.h> 38#include <asm/arch/mmc.h>
39#include <asm/arch/ohci.h>
39#include <asm/arch/udc.h> 40#include <asm/arch/udc.h>
40#include <asm/arch/pxafb.h> 41#include <asm/arch/pxafb.h>
41#include <asm/arch/akita.h> 42#include <asm/arch/akita.h>
@@ -335,6 +336,35 @@ static struct pxamci_platform_data spitz_mci_platform_data = {
335 336
336 337
337/* 338/*
339 * USB Host (OHCI)
340 */
341static int spitz_ohci_init(struct device *dev)
342{
343 /* Only Port 2 is connected */
344 pxa_gpio_mode(SPITZ_GPIO_USB_CONNECT | GPIO_IN);
345 pxa_gpio_mode(SPITZ_GPIO_USB_HOST | GPIO_OUT);
346 pxa_gpio_mode(SPITZ_GPIO_USB_DEVICE | GPIO_IN);
347
348 /* Setup USB Port 2 Output Control Register */
349 UP2OCR = UP2OCR_HXS | UP2OCR_HXOE | UP2OCR_DPPDE | UP2OCR_DMPDE;
350
351 GPSR(SPITZ_GPIO_USB_HOST) = GPIO_bit(SPITZ_GPIO_USB_HOST);
352
353 UHCHR = (UHCHR) &
354 ~(UHCHR_SSEP1 | UHCHR_SSEP2 | UHCHR_SSEP3 | UHCHR_SSE);
355
356 UHCRHDA |= UHCRHDA_NOCP;
357
358 return 0;
359}
360
361static struct pxaohci_platform_data spitz_ohci_platform_data = {
362 .port_mode = PMM_NPS_MODE,
363 .init = spitz_ohci_init,
364};
365
366
367/*
338 * Irda 368 * Irda
339 */ 369 */
340static void spitz_irda_transceiver_mode(struct device *dev, int mode) 370static void spitz_irda_transceiver_mode(struct device *dev, int mode)
@@ -411,6 +441,7 @@ static void __init common_init(void)
411 441
412 platform_add_devices(devices, ARRAY_SIZE(devices)); 442 platform_add_devices(devices, ARRAY_SIZE(devices));
413 pxa_set_mci_info(&spitz_mci_platform_data); 443 pxa_set_mci_info(&spitz_mci_platform_data);
444 pxa_set_ohci_info(&spitz_ohci_platform_data);
414 pxa_set_ficp_info(&spitz_ficp_platform_data); 445 pxa_set_ficp_info(&spitz_ficp_platform_data);
415 set_pxa_fb_parent(&spitzssp_device.dev); 446 set_pxa_fb_parent(&spitzssp_device.dev);
416 set_pxa_fb_info(&spitz_pxafb_info); 447 set_pxa_fb_info(&spitz_pxafb_info);