>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