>From 7238c1505179877e9b3410e4ae2343f272128b1f Mon Sep 17 00:00:00 2001
From: eric miao <[EMAIL PROTECTED]>
Date: Wed, 12 Dec 2007 09:40:20 +0800
Subject: [PATCH] pxa: make zylonite use pxa27x ohci driver to support USB OHCI

Signed-off-by: eric miao <[EMAIL PROTECTED]>
---
 arch/arm/mach-pxa/zylonite.c        |   32 ++++++++++++++++++++++++++++++++
 arch/arm/mach-pxa/zylonite_pxa300.c |    4 ++++
 arch/arm/mach-pxa/zylonite_pxa320.c |    4 ++++
 3 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c
index 743a87b..99c6f22 100644
--- a/arch/arm/mach-pxa/zylonite.c
+++ b/arch/arm/mach-pxa/zylonite.c
@@ -54,6 +54,37 @@ static struct platform_device smc91x_device = {
        .resource       = smc91x_resources,
 };

+#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULES)
+static int zylonite_ohci_init(struct device *dev)
+{
+       /* Set the Power Control Polarity Low and Power Sense Polarity Low
+        * to active low, and enable power to port 3 in sleep standby
+        */
+       UHCHR = (UHCHR | UHCHR_PCPL | UHCHR_PSPL | UHCHR_SSEP3)
+               & (~(UHCHR_SSEP1 | UHCHR_SSEP2 | UHCHR_SSE));
+}
+
+static void zylonite_ohci_exit(struct device *dev)
+{
+       /* set global power switch mode and clear global power */
+       UHCRHDA &= ~(RH_A_NPS | RH_A_PSM);
+       UHCRHS = 0x1;
+}      
+
+static struct pxaohci_platform_data zylonite_ohci_info = {
+       .port_mode      = PMM_PERPORT_MODE,
+       .init           = zylonite_ohci_init,
+       .exit           = zylonite_ohci_exit,
+};
+
+static void __init zylonite_init_ohci(void)
+{
+       pxa_set_ohci_info(&zylonite_ohci_info);
+}
+#else
+static inline void zylonite_init_ohci(void) {}
+#endif /* CONFIG_USB_OHCI_HCD || CONFIG_USB_OHCI_HCD_MODULES */
+
 #if defined(CONFIG_FB_PXA) || (CONFIG_FB_PXA_MODULES)
 static void zylonite_backlight_power(int on)
 {
@@ -171,6 +202,7 @@ static void __init zylonite_init(void)
        platform_device_register(&smc91x_device);

        zylonite_init_lcd();
+       zylonite_init_ohci();
 }

 MACHINE_START(ZYLONITE, "PXA3xx Platform Development Kit (aka Zylonite)")
diff --git a/arch/arm/mach-pxa/zylonite_pxa300.c
b/arch/arm/mach-pxa/zylonite_pxa300.c
index 1832bc3..a4c610e 100644
--- a/arch/arm/mach-pxa/zylonite_pxa300.c
+++ b/arch/arm/mach-pxa/zylonite_pxa300.c
@@ -104,6 +104,10 @@ static mfp_cfg_t pxa300_mfp_cfg[] __initdata = {
        /* Ethernet */
        GPIO2_nCS3,
        GPIO99_GPIO,
+
+       /* USB host*/
+       GPIO0_2_USBH_PEN,
+       GPIO1_2_USBH_PWR,
 };

 static mfp_cfg_t pxa310_mfp_cfg[] __initdata = {
diff --git a/arch/arm/mach-pxa/zylonite_pxa320.c
b/arch/arm/mach-pxa/zylonite_pxa320.c
index 94c7158..328abae 100644
--- a/arch/arm/mach-pxa/zylonite_pxa320.c
+++ b/arch/arm/mach-pxa/zylonite_pxa320.c
@@ -95,6 +95,10 @@ static mfp_cfg_t mfp_cfg[] __initdata = {
        /* Ethernet */
        GPIO4_nCS3,
        GPIO90_GPIO,
+
+       /* USB host*/
+       GPIO2_2_USBH_PEN,
+       GPIO3_2_USBH_PWR,
 };

 #define NUM_LCD_DETECT_PINS    7
-- 
1.5.2.5.GIT



-- 
Cheers
- eric
-
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to