diff -Naru kernel26.orig/arch/arm/mach-pxa/htcsable/htcsable.c kernel26/arch/arm/mach-pxa/htcsable/htcsable.c
--- kernel26.orig/arch/arm/mach-pxa/htcsable/htcsable.c	2008-03-16 17:23:19.000000000 +0100
+++ kernel26/arch/arm/mach-pxa/htcsable/htcsable.c	2008-03-16 16:32:39.000000000 +0100
@@ -28,6 +30,8 @@
 #include <asm/arch/htcsable-gpio.h>
 #include <asm/arch/htcsable-asic.h>
 
+#include <asm/arch/ohci.h>
+
 #include <asm/hardware/ipaq-asic3.h>
 #include <asm/hardware/asic3_leds.h>
 #include <linux/mfd/asic3_base.h>
@@ -358,6 +377,25 @@
 };
 #endif
 
+/* USB OHCI */
+
+static int htcsable_ohci_init(struct device *dev)
+{
+/* missing GPIO setup here */
+
+    /* no idea what this does, got the values from haret */
+    UHCHR = (UHCHR | UHCHR_SSEP2 | UHCHR_PCPL | UHCHR_CGR) &
+	    ~(UHCHR_SSEP1 | UHCHR_SSEP3 | UHCHR_SSE);
+
+    return 0;
+}
+
+static struct pxaohci_platform_data htcsable_ohci_platform_data = {
+	.port_mode	= PMM_PERPORT_MODE,
+	.init		= htcsable_ohci_init,
+};
+
+
 static void __init htcsable_map_io(void)
 {
   struct ffuart_pxa_port *sport;
@@ -371,6 +409,7 @@
 #ifdef CONFIG_HTCSABLE_PHONE
   pxa_set_btuart_info(&htcsable_pxa_phone_funcs);
 #endif
+  pxa_set_ohci_info(&htcsable_ohci_platform_data);
 
 //  sport = platform_get_drvdata(&ffuart device);
 //  printk("sport=0x%x\n", (unsigned int)sport);

