Hi Adsynori,

On Wed, 2004-05-12 at 12:43, Adsynori wrote:
> I changed it to do work ISOC transfer from PC webcam

I ported your version to work on my Xscale based platform as well. My
patches contain several cleanups, etc. Perhaps you would like to merge
them into your codebase?

There are several small patches since I try to keep each change
separate, they apply in the order in which I list them here.

usb-hcisp116x-tango-timings
        Remove the WAIT_300NS macro and use udelay instead, also enforce
        the 110ns delay between successive data accesses.
        
usb-hcisp116x-tango-hardwareconfig
        Factor out the value of the HcHardwareConfig register into a
        #define, to make porting easier.

usb-hcisp116x-tango-portnames
        Rename the ports from hcport and hcport2 to cmd_port and
        data_port, the old names were doing my head in ;-)
        
usb-hcisp116x-tango-configuration
        Factor default ports, irqs etc into #defines for each platform
        (I'm not sure CONFIG_ARCH_CAT709 is correct for your platform --
        your platform -- you may need to change it)

usb-hcisp116x-tango-slab
        <linux/malloc.h> has been deprecated in favour of <linux/slab.h>
        for some time now.
        
usb-hcisp116x-tango-io
        Use inw/outw instead of ctrl_inw and ctrl_outw, the later seem
        to be SH specific. I don't know enough about the SH port to know
        whether a #ifdef CONFIG_ARCH_SH is needed here to keep using
        ctrl_* on that platform, I suspect not.
        
usb-hcisp116x-tango-irqs
        Enable IRQs even when SWITCH_INT is not defined.
        
usb-hcisp116x-tango-license
        Set the module license.

usb-hcisp116x-tango-busname
        Set the bus name.

Cheers,
Ian.

-- 
Ian Campbell, Senior Design Engineer
                                        Web: http://www.arcom.com
Arcom, Clifton Road,                    Direct: +44 (0)1223 403 465
Cambridge CB1 7EA, United Kingdom       Phone:  +44 (0)1223 411 200
Index: linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.c
===================================================================
--- linux-2.4-vrs-pxa.orig/drivers/usb/host/hc_isp116x.c	2004-05-14 09:23:44.000000000 +0100
+++ linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.c	2004-05-14 09:26:36.000000000 +0100
@@ -46,8 +46,9 @@
 #include <linux/list.h>
 #include <linux/ioport.h>
 #include <asm/io.h>
-
+#include <linux/delay.h>
 #include <linux/usb.h>
+
 //#include "../core/hcd.h"
 #include "../hcd.h"
 
@@ -89,14 +90,6 @@
 //MODULE_PARM(wuport,"i");
 //MODULE_PARM_DESC(wuport,"WAKEUP PORT 0x240");
 
-/* it depends on your system */
-/* it's for CAT709 */
-#define WAIT_300NS ctrl_inw(0xa0000000);\
-ctrl_inw(0xa0000000);\
-ctrl_inw(0xa0000000);\
-ctrl_inw(0xa0000000);\
-ctrl_inw(0xa0000000);
-
 static inline void ISP116x_OUTW (int val, int addr)
 {
         ctrl_outw (val, addr);
@@ -115,9 +108,10 @@
 	int val16, val;
 
 	ISP116x_OUTW (regindex, hp->hcport2);
-	WAIT_300NS
-       val16 = ISP116x_INW (hp->hcport);
+	ndelay(300);
+	val16 = ISP116x_INW (hp->hcport);
 	val = val16 & 0xffff;
+	ndelay(110);
 	val16 = ISP116x_INW (hp->hcport);
 	val += val16 << 16;
 	return val;
@@ -128,8 +122,9 @@
 	hcipriv_t * hp = &hci->hp;
 	int val = 0;
 	ISP116x_OUTW (regindex, hp->hcport2);
-	WAIT_300NS
+	ndelay(300);
 	val = ISP116x_INW (hp->hcport);
+	ndelay(110);
 	return val;
 }
 
@@ -139,14 +134,16 @@
 	int i;
 	int val = 0;
 	ISP116x_OUTW (regindex, hp->hcport2);
-	WAIT_300NS
-      for (i = 0; i < length - 1; i += 2) {
+	ndelay(300);
+	for (i = 0; i < length - 1; i += 2) {
 		val = ISP116x_INW (hp->hcport);
+		ndelay(110);
 		buffer [i] = val;
 		buffer [i+1] = val >> 8;
 	}
 	if (length & 1) {
 		val = ISP116x_INW (hp->hcport);
+		ndelay(110);
 		buffer [length - 1] = val;
 	}
 #ifdef DEBUG1
@@ -162,24 +159,27 @@
 {
 	hcipriv_t * hp = &hci->hp;
 	ISP116x_OUTW (regindex | 0x80, hp->hcport2);
-	WAIT_300NS
+	ndelay(300);
 	ISP116x_OUTW (value & 0xffff, hp->hcport);
-       ISP116x_OUTW (value >> 16, hp->hcport);
+	ndelay(110);
+	ISP116x_OUTW (value >> 16, hp->hcport);
+	ndelay(110);
 }
 
 static inline void WRITE_REG16 (hci_t * hci, unsigned int value, int regindex)
 {
 	hcipriv_t * hp = &hci->hp;
 	ISP116x_OUTW (regindex | 0x80, hp->hcport2);
-	WAIT_300NS
+	ndelay(300);
 	ISP116x_OUTW (value, hp->hcport);
+	ndelay(110);
 }
 
 static inline void WRITE_REG0 (hci_t * hci, int regindex)
 {
 	hcipriv_t * hp = &hci->hp;
 	ISP116x_OUTW (regindex | 0x80, hp->hcport2);
-	WAIT_300NS
+	ndelay(300);
 }
 
 static inline void WRITE_REGn16 (hci_t * hci, int regindex, int length, __u8 * buffer)
@@ -187,12 +187,14 @@
 	hcipriv_t * hp = &hci->hp;
 	int i;
 	ISP116x_OUTW (regindex | 0x80, hp->hcport2);
-	WAIT_300NS
+	ndelay(300);
 	for (i = 0; i < length - 1; i += 2) {
 		ISP116x_OUTW (buffer [i] + (buffer [i+1] << 8), hp->hcport);
+		ndelay(110);
 	}
 	if (length & 1) {
 		ISP116x_OUTW (buffer [length - 1], hp->hcport);
+		ndelay(110);
 	}
 #ifdef DEBUG1
 	printk (" WRITE_REGn16: %d :", length);
Index: linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.c
===================================================================
--- linux-2.4-vrs-pxa.orig/drivers/usb/host/hc_isp116x.c	2004-05-25 13:16:33.000000000 +0100
+++ linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.c	2004-05-25 13:33:09.000000000 +0100
@@ -72,7 +72,7 @@
 static int hcport = 0xba00c000;
 static int hcport2 = 0xba00c002;
 static int wuport = 0x0; /* Not work */
-
+#define HC_HARDWARE_CONFIG (DataBusWidth16 | DownstreamPort15KRSel)
 
 MODULE_PARM(hc_verbose,"i");
 MODULE_PARM_DESC(hc_verbose,"verbose startup messages, default is 1 (yes)");
@@ -316,7 +316,7 @@
 	int mask = SOFITLInt | ATLInt | OPR_Reg;
 	WRITE_REG16 (hci, mask, HcuPInterrupt);
 	WRITE_REG16 (hci, mask, HcuPInterruptEnable);
-	WRITE_REG16 (hci,InterruptPinEnable | DataBusWidth16 | DownstreamPort15KRSel, HcHardwareConfiguration);
+	WRITE_REG16 (hci, InterruptPinEnable | HC_HARDWARE_CONFIG, HcHardwareConfiguration);
 #endif
 }
 
@@ -325,7 +325,7 @@
 #ifdef HC_SWITCH_INT
 	WRITE_REG16 (hci, 0, HcuPInterrupt); /* maybe need */
 	WRITE_REG16 (hci, 0, HcuPInterruptEnable);
-	WRITE_REG16 (hci,DataBusWidth16 | DownstreamPort15KRSel, HcHardwareConfiguration);
+	WRITE_REG16 (hci, HC_HARDWARE_CONFIG, HcHardwareConfiguration);
 #endif
 }
 
@@ -443,8 +443,8 @@
 	int timeout = 30;
 	/* Disable HC interrupts */
 	WRITE_REG16 (hci, 0,HcuPInterruptEnable);
-	WRITE_REG16 (hci,InterruptPinEnable | DataBusWidth16 | DownstreamPort15KRSel, HcHardwareConfiguration);
-	WRITE_REG16 (hci,InterruptOutputPolarity  | DataBusWidth16 | DownstreamPort15KRSel, HcHardwareConfiguration);
+	WRITE_REG16 (hci, InterruptPinEnable | HC_HARDWARE_CONFIG, HcHardwareConfiguration);
+	WRITE_REG16 (hci, InterruptOutputPolarity | HC_HARDWARE_CONFIG, HcHardwareConfiguration);
 
 	dbg ("USB HC reset_hc usb-: ctrl = 0x%x ;",
 		READ_REG32 (hci, HcControl));
@@ -527,7 +527,6 @@
 #endif
 	WRITE_REG16 (hci, mask, HcuPInterrupt);
 	WRITE_REG16 (hci, mask, HcuPInterruptEnable);
-//	WRITE_REG16 (hci,InterruptPinEnable | DataBusWidth16 , HcHardwareConfiguration);
 
 
 #ifdef	OHCI_USE_NPS
@@ -538,8 +537,6 @@
 
 	// POTPGT delay is bits 24-31, in 2 ms units.
 	mdelay ((READ_REG32 (hci, HcRhDescriptorA) >> 23) & 0x1fe);
-//	WRITE_REG16 (hci,InterruptPinEnable | DataBusWidth16 | DownstreamPort15KRSel, HcHardwareConfiguration);
-//	WRITE_REG16 (hci,InterruptPinEnable | DataBusWidth16 , HcHardwareConfiguration);
 	rh_connect_rh (hci);
 
 	return 0;
Index: linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.c
===================================================================
--- linux-2.4-vrs-pxa.orig/drivers/usb/host/hc_isp116x.c	2004-05-25 13:33:09.000000000 +0100
+++ linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.c	2004-05-25 13:38:04.000000000 +0100
@@ -69,9 +69,9 @@
 /* it depends on your system */
 /* it's for CAT709 */
 static int irq = 74;
-static int hcport = 0xba00c000;
-static int hcport2 = 0xba00c002;
-static int wuport = 0x0; /* Not work */
+static int data_port = 0xba00c000;
+static int cmd_port = 0xba00c002;
+static int wu_port = -1; /* Not work */
 #define HC_HARDWARE_CONFIG (DataBusWidth16 | DownstreamPort15KRSel)
 
 MODULE_PARM(hc_verbose,"i");
@@ -83,12 +83,12 @@
 
 MODULE_PARM(irq,"i");
 MODULE_PARM_DESC(irq,"IRQ 74 (default)");
-MODULE_PARM(hcport,"i");
-MODULE_PARM_DESC(hcport,"ISP116x PORT 0xba00c000");
-MODULE_PARM(hcport2,"i");
-MODULE_PARM_DESC(hcport2,"ISP116x PORT2 0xba00c002");
-//MODULE_PARM(wuport,"i");
-//MODULE_PARM_DESC(wuport,"WAKEUP PORT 0x240");
+MODULE_PARM(data_port,"i");
+MODULE_PARM_DESC(data_port,"ISP116x PORT 0xba00c000");
+MODULE_PARM(cmd_port,"i");
+MODULE_PARM_DESC(cmd_port,"ISP116x PORT2 0xba00c002");
+MODULE_PARM(wu_port,"i");
+MODULE_PARM_DESC(wu_port,"WAKEUP PORT 0x240");
 
 static inline void ISP116x_OUTW (int val, int addr)
 {
@@ -107,12 +107,12 @@
 	hcipriv_t * hp = &hci->hp;
 	int val16, val;
 
-	ISP116x_OUTW (regindex, hp->hcport2);
+	ISP116x_OUTW (regindex, hp->cmd_port);
 	ndelay(300);
-	val16 = ISP116x_INW (hp->hcport);
+	val16 = ISP116x_INW (hp->data_port);
 	val = val16 & 0xffff;
 	ndelay(110);
-	val16 = ISP116x_INW (hp->hcport);
+	val16 = ISP116x_INW (hp->data_port);
 	val += val16 << 16;
 	return val;
 }
@@ -121,9 +121,9 @@
 {
 	hcipriv_t * hp = &hci->hp;
 	int val = 0;
-	ISP116x_OUTW (regindex, hp->hcport2);
+	ISP116x_OUTW (regindex, hp->cmd_port);
 	ndelay(300);
-	val = ISP116x_INW (hp->hcport);
+	val = ISP116x_INW (hp->data_port);
 	ndelay(110);
 	return val;
 }
@@ -133,16 +133,16 @@
 	hcipriv_t * hp = &hci->hp;
 	int i;
 	int val = 0;
-	ISP116x_OUTW (regindex, hp->hcport2);
+	ISP116x_OUTW (regindex, hp->cmd_port);
 	ndelay(300);
 	for (i = 0; i < length - 1; i += 2) {
-		val = ISP116x_INW (hp->hcport);
+		val = ISP116x_INW (hp->data_port);
 		ndelay(110);
 		buffer [i] = val;
 		buffer [i+1] = val >> 8;
 	}
 	if (length & 1) {
-		val = ISP116x_INW (hp->hcport);
+		val = ISP116x_INW (hp->data_port);
 		ndelay(110);
 		buffer [length - 1] = val;
 	}
@@ -158,27 +158,27 @@
 static inline void WRITE_REG32 (hci_t * hci, unsigned int value, int regindex)
 {
 	hcipriv_t * hp = &hci->hp;
-	ISP116x_OUTW (regindex | 0x80, hp->hcport2);
+	ISP116x_OUTW (regindex | 0x80, hp->cmd_port);
 	ndelay(300);
-	ISP116x_OUTW (value & 0xffff, hp->hcport);
+	ISP116x_OUTW (value & 0xffff, hp->data_port);
 	ndelay(110);
-	ISP116x_OUTW (value >> 16, hp->hcport);
+	ISP116x_OUTW (value >> 16, hp->data_port);
 	ndelay(110);
 }
 
 static inline void WRITE_REG16 (hci_t * hci, unsigned int value, int regindex)
 {
 	hcipriv_t * hp = &hci->hp;
-	ISP116x_OUTW (regindex | 0x80, hp->hcport2);
+	ISP116x_OUTW (regindex | 0x80, hp->cmd_port);
 	ndelay(300);
-	ISP116x_OUTW (value, hp->hcport);
+	ISP116x_OUTW (value, hp->data_port);
 	ndelay(110);
 }
 
 static inline void WRITE_REG0 (hci_t * hci, int regindex)
 {
 	hcipriv_t * hp = &hci->hp;
-	ISP116x_OUTW (regindex | 0x80, hp->hcport2);
+	ISP116x_OUTW (regindex | 0x80, hp->cmd_port);
 	ndelay(300);
 }
 
@@ -186,14 +186,14 @@
 {
 	hcipriv_t * hp = &hci->hp;
 	int i;
-	ISP116x_OUTW (regindex | 0x80, hp->hcport2);
+	ISP116x_OUTW (regindex | 0x80, hp->cmd_port);
 	ndelay(300);
 	for (i = 0; i < length - 1; i += 2) {
-		ISP116x_OUTW (buffer [i] + (buffer [i+1] << 8), hp->hcport);
+		ISP116x_OUTW (buffer [i] + (buffer [i+1] << 8), hp->data_port);
 		ndelay(110);
 	}
 	if (length & 1) {
-		ISP116x_OUTW (buffer [length - 1], hp->hcport);
+		ISP116x_OUTW (buffer [length - 1], hp->data_port);
 		ndelay(110);
 	}
 #ifdef DEBUG1
@@ -563,7 +563,9 @@
 	hp = &hci->hp;
 
 	hp->irq = -1;
-	hp->hcport = -1;
+	hp->data_port = -1;
+	hp->cmd_port = -1;
+	hp->wu_port = -1;
 
  	hci->a_td_array.len = 0;
  	hci->i_td_array[0].len = 0;
@@ -607,7 +609,7 @@
 	if (hci->bus->root_hub)
 		usb_disconnect (&hci->bus->root_hub);
 
-	if (hp->hcport > 0) {
+	if (hp->data_port != -1) {
 		WRITE_REG16 (hci, 0, HcHardwareConfiguration);
 		WRITE_REG16 (hci, 0, HcDMAConfiguration);
 		WRITE_REG16 (hci, 0, HcuPInterruptEnable);
@@ -619,20 +621,20 @@
 	if (hp->tl)
 		kfree (hp->tl);
 
-	if (hp->hcport > 0) {
-		release_region (hp->hcport, 2);
-		hp->hcport = 0;
+	if (hp->data_port != -1) {
+		release_region (hp->data_port, 2);
+		hp->data_port = -1;
 	}
 
-	if (hp->hcport2 > 0) {
-		release_region (hp->hcport2, 2);
-		hp->hcport2 = 0;
+	if (hp->cmd_port != -1) {
+		release_region (hp->cmd_port, 2);
+		hp->cmd_port = -1;
 	}
 
-//	if (hp->wuport > 0) {
-//		release_region (hp->wuport, 2);
-//		hp->wuport = 0;
-//	}
+	if (hp->wu_port != -1) {
+		release_region (hp->wu_port, 2);
+		hp->wu_port = -1;
+	}
 
 	if (hp->irq >= 0) {
 		free_irq (hp->irq, hci);
@@ -654,7 +656,7 @@
  * return success. */
 
 
-static int __devinit hc_found_hci (int addr, int addr2, int wuaddr, int irq, int dma)
+static int __devinit hc_found_hci (int data_port, int cmd_port, int wu_addr, int irq, int dma)
 {
 	hci_t * hci;
 	hcipriv_t * hp;
@@ -666,36 +668,35 @@
 
 	hp = &hci->hp;
 
-	if (!request_region (addr, 2, "ISP116x USB HOST")) {
-		err ("request address %d-%d failed", addr, addr+4);
+	if (!request_region (data_port, 2, "ISP116x USB HOST")) {
+		err ("request address %d-%d failed", data_port, data_port+4);
 		hc_release_hci (hci);
 		return -EBUSY;
 	}
+	hp->data_port = data_port;
 
-	hp->hcport = addr;
-
-	if (!request_region (addr2, 2, "ISP116x USB HOST")) {
-		err ("request address %d-%d failed", addr, addr+4);
+	if (!request_region (cmd_port, 2, "ISP116x USB HOST")) {
+		err ("request address %d-%d failed", data_port, data_port+4);
 		hc_release_hci (hci);
 		return -EBUSY;
 	}
+	hp->cmd_port = cmd_port;
 
-	hp->hcport2 = addr2;
+	if ( wu_addr != -1 ) {
+		if (!request_region (wu_addr, 2, "ISP116x USB HOST")) {
+			err ("request address %d-%d failed", wu_addr, wu_addr+2);
+			hc_release_hci (hci);
+			return -EBUSY;
+		}
+	}
+	hp->wu_port = wu_addr;
 
 	if ((READ_REG16(hci, HcChipID) & 0xff00) != 0x6100) {
-             printk("ISP1161 Not Found HcChipID =%x\n",READ_REG16(hci, HcChipID));
+             printk("ISP116x Not Found. HcChipID = 0x%x\n",READ_REG16(hci, HcChipID));
              hc_release_hci (hci);
 		return -ENODEV;
 	}
 
-//	if (!request_region (wuaddr, 2, "ISP116x USB HOST")) {
-//		err ("request address %d-%d failed", wuaddr, wuaddr+2);
-//		hc_release_hci (hci);
-//		return -EBUSY;
-//	}
-
-//	hp->wuport = wuaddr;
-
 	if (hc_reset (hci) < 0) {
 		hc_release_hci (hci);
 		return -ENODEV;
@@ -707,7 +708,7 @@
 	}
 
 	printk(KERN_INFO __FILE__ ": USB ISP116x at %x/%x,%x IRQ %d Rev. %x ChipID: %x\n",
-		addr, addr2, wuaddr, irq, READ_REG32(hci, HcRevision), READ_REG16(hci, HcChipID));
+		data_port, cmd_port, wu_addr, irq, READ_REG32(hci, HcRevision), READ_REG16(hci, HcChipID));
 
 	/* FIXME this is a second HC reset; why?? */
 //	WRITE_REG32 (hci, hp->hc_control = OHCI_USB_RESET, HcControl);
@@ -723,7 +724,7 @@
 	}
 	hp->irq = irq;
 	if (hc_start (hci) < 0) {
-		err ("can't start usb-%x", addr);
+		err ("can't start usb-%x", data_port);
 		hc_release_hci (hci);
 		return -EBUSY;
 	}
@@ -738,7 +739,7 @@
 {
 	int ret;
 
-	ret = hc_found_hci (hcport, hcport2, wuport, irq, 0);
+	ret = hc_found_hci (data_port, cmd_port, wu_port, irq, 0);
 
 	return ret;
 }
Index: linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.h
===================================================================
--- linux-2.4-vrs-pxa.orig/drivers/usb/host/hc_isp116x.h	2004-05-25 13:32:56.000000000 +0100
+++ linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.h	2004-05-25 13:37:43.000000000 +0100
@@ -181,9 +181,9 @@
 	int disabled;			/* e.g. got a UE, we're hung */
 	atomic_t resume_count;		/* defending against multiple resumes */
 	struct ohci_regs * regs;	/* OHCI controller's memory */
-	int hcport;
-	int hcport2;
-	int wuport;
+	int data_port;
+	int cmd_port;
+	int wu_port;
 
 	int intrstatus;
 	__u32 hc_control;		/* copy of the hc control reg */
Index: linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.c
===================================================================
--- linux-2.4-vrs-pxa.orig/drivers/usb/host/hc_isp116x.c	2004-05-25 13:16:36.000000000 +0100
+++ linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.c	2004-05-25 13:29:47.000000000 +0100
@@ -48,6 +48,7 @@
 #include <asm/io.h>
 #include <linux/delay.h>
 #include <linux/usb.h>
+#include <linux/stringify.h>
 
 //#include "../core/hcd.h"
 #include "../hcd.h"
@@ -66,13 +67,18 @@
 #include "hc_simple_isp116x.c"
 #include "hc_isp116x_rh.c"
 
-/* it depends on your system */
-/* it's for CAT709 */
-static int irq = 74;
-static int data_port = 0xba00c000;
-static int cmd_port = 0xba00c002;
-static int wu_port = -1; /* Not work */
+#if defined(CONFIG_ARCH_CAT709)
+#define HC_DEFAULT_IRQ 74
+#define HC_DEFAULT_DATA_PORT 0xba00c000
+#define HC_DEFAULT_CMD_PORT 0xba00c002
+#define HC_DEFAULT_WU_PORT -1
 #define HC_HARDWARE_CONFIG (DataBusWidth16 | DownstreamPort15KRSel)
+#endif
+
+static int irq = HC_DEFAULT_IRQ;
+static int data_port = HC_DEFAULT_DATA_PORT;
+static int cmd_port = HC_DEFAULT_CMD_PORT;
+static int wu_port = HC_DEFAULT_WU_PORT; /* Not used. */
 
 MODULE_PARM(hc_verbose,"i");
 MODULE_PARM_DESC(hc_verbose,"verbose startup messages, default is 1 (yes)");
@@ -82,13 +88,13 @@
 MODULE_PARM_DESC(urb_debug,"debug urb messages, default is 0 (no)");
 
 MODULE_PARM(irq,"i");
-MODULE_PARM_DESC(irq,"IRQ 74 (default)");
+MODULE_PARM_DESC(irq,"IRQ. default " __stringify(HC_DEFAULT_IRQ));
 MODULE_PARM(data_port,"i");
-MODULE_PARM_DESC(data_port,"ISP116x PORT 0xba00c000");
+MODULE_PARM_DESC(data_port,"Data port. default " __stringify(HC_DEFAULT_DATA_PORT));
 MODULE_PARM(cmd_port,"i");
-MODULE_PARM_DESC(cmd_port,"ISP116x PORT2 0xba00c002");
+MODULE_PARM_DESC(cmd_port,"Command port. default " __stringify(HC_DEFAULT_CMD_PORT));
 MODULE_PARM(wu_port,"i");
-MODULE_PARM_DESC(wu_port,"WAKEUP PORT 0x240");
+MODULE_PARM_DESC(wu_port,"Wakeup port. default " __stringify(HC_DEFAULT_WU_PORT));
 
 static inline void ISP116x_OUTW (int val, int addr)
 {
Index: linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.c
===================================================================
--- linux-2.4-vrs-pxa.orig/drivers/usb/host/hc_isp116x.c	2004-05-25 13:38:18.000000000 +0100
+++ linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.c	2004-05-25 13:38:20.000000000 +0100
@@ -39,7 +39,7 @@
 #include <linux/kernel.h>
 #include <linux/delay.h>
 #include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
 #include <linux/errno.h>
 #include <linux/init.h>
 #include <linux/smp_lock.h>
Index: linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.c
===================================================================
--- linux-2.4-vrs-pxa.orig/drivers/usb/host/hc_isp116x.c	2004-05-25 13:38:18.000000000 +0100
+++ linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.c	2004-05-25 13:38:20.000000000 +0100
@@ -104,13 +104,13 @@
 
 static inline void ISP116x_OUTW (int val, int addr)
 {
-        ctrl_outw (val, addr);
+        outw (val, addr);
 
 }
 
 static inline int ISP116x_INW (int addr)
 {
-	return ctrl_inw (addr);
+	return inw (addr);
 
 }
 
Index: linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.c
===================================================================
--- linux-2.4-vrs-pxa.orig/drivers/usb/host/hc_isp116x.c	2004-05-25 13:44:19.000000000 +0100
+++ linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.c	2004-05-25 13:44:20.000000000 +0100
@@ -497,6 +497,12 @@
 
 	WRITE_REG16 (hci, hp->itl_buffer_len, HcITLBufferLength);
 	WRITE_REG16 (hci, hp->atl_buffer_len, HcATLBufferLength);
+
+	/* Enable IRQ's */
+	WRITE_REG16 (hci,
+		     InterruptPinEnable | HC_HARDWARE_CONFIG,
+		     HcHardwareConfiguration);
+
 	WRITE_REG16 (hci, 0, HcDMAConfiguration);
 
 	maxlen = (hp->itl_buffer_len > hp->atl_buffer_len) ? hp->itl_buffer_len : hp->atl_buffer_len;
Index: linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.c
===================================================================
--- linux-2.4-vrs-pxa.orig/drivers/usb/host/hc_isp116x.c	2004-05-25 13:44:19.000000000 +0100
+++ linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.c	2004-05-25 13:44:20.000000000 +0100
@@ -775,15 +782,4 @@
 
 MODULE_AUTHOR ("Roman Weissgaerber <[EMAIL PROTECTED]>");
 MODULE_DESCRIPTION ("USB ISP116x Host Controller Driver");
-
-
-
-
-
-
-
-
-
-
-
-
+MODULE_LICENSE("GPL");
Index: linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.c
===================================================================
--- linux-2.4-vrs-pxa.orig/drivers/usb/host/hc_isp116x.c	2004-05-25 13:44:19.000000000 +0100
+++ linux-2.4-vrs-pxa/drivers/usb/host/hc_isp116x.c	2004-05-25 13:44:20.000000000 +0100
@@ -602,6 +608,7 @@
 	}
 
 	hci->bus = bus;
+	bus->bus_name = "isp116x";
 	bus->hcpriv = (void *) hci;
 
 	return hci;

Reply via email to