-diff -ur linux.old/drivers/scsi/hosts.c linux.dev/drivers/scsi/hosts.c
---- linux.old/drivers/scsi/hosts.c 2003-06-13 16:51:36.000000000 +0200
-+++ linux.dev/drivers/scsi/hosts.c 2006-07-30 12:34:30.000000000 +0200
-@@ -107,8 +107,21 @@
+--- a/drivers/scsi/hosts.c
++++ b/drivers/scsi/hosts.c
+@@ -107,8 +107,21 @@ scsi_unregister(struct Scsi_Host * sh){
if (shn) shn->host_registered = 0;
/* else {} : This should not happen, we should panic here... */
kfree((char *) sh);
}
-diff -ur linux.old/drivers/usb/hcd.c linux.dev/drivers/usb/hcd.c
---- linux.old/drivers/usb/hcd.c 2004-04-14 15:05:32.000000000 +0200
-+++ linux.dev/drivers/usb/hcd.c 2006-07-30 11:49:06.000000000 +0200
-@@ -1105,7 +1105,8 @@
+--- a/drivers/usb/hcd.c
++++ b/drivers/usb/hcd.c
+@@ -1105,7 +1105,8 @@ static int hcd_submit_urb (struct urb *u
break;
case PIPE_BULK:
allowed |= USB_DISABLE_SPD | USB_QUEUE_BULK
break;
case PIPE_INTERRUPT:
allowed |= USB_DISABLE_SPD;
-@@ -1212,7 +1213,8 @@
+@@ -1212,7 +1213,8 @@ static int hcd_submit_urb (struct urb *u
urb->setup_packet,
sizeof (struct usb_ctrlrequest),
PCI_DMA_TODEVICE);
urb->transfer_dma = pci_map_single (
hcd->pdev,
urb->transfer_buffer,
-diff -ur linux.old/drivers/usb/host/ehci-hcd.c linux.dev/drivers/usb/host/ehci-hcd.c
---- linux.old/drivers/usb/host/ehci-hcd.c 2006-07-30 11:31:57.000000000 +0200
-+++ linux.dev/drivers/usb/host/ehci-hcd.c 2006-07-30 11:48:14.000000000 +0200
-@@ -399,6 +399,27 @@
+--- a/drivers/usb/host/ehci-hcd.c
++++ b/drivers/usb/host/ehci-hcd.c
+@@ -399,6 +399,27 @@ static int ehci_start (struct usb_hcd *h
ehci_mem_cleanup (ehci);
return retval;
}
writel (INTR_MASK, &ehci->regs->intr_enable);
writel (ehci->periodic_dma, &ehci->regs->frame_list);
-diff -ur linux.old/drivers/usb/host/ehci-q.c linux.dev/drivers/usb/host/ehci-q.c
---- linux.old/drivers/usb/host/ehci-q.c 2006-07-30 11:31:57.000000000 +0200
-+++ linux.dev/drivers/usb/host/ehci-q.c 2006-07-30 12:10:15.000000000 +0200
-@@ -791,6 +791,8 @@
+--- a/drivers/usb/host/ehci-q.c
++++ b/drivers/usb/host/ehci-q.c
+@@ -791,6 +791,8 @@ static void qh_link_async (struct ehci_h
writel (cmd, &ehci->regs->command);
ehci->hcd.state = USB_STATE_RUNNING;
/* posted write need not be known to HC yet ... */
}
}
-diff -ur linux.old/drivers/usb/host/usb-uhci.c linux.dev/drivers/usb/host/usb-uhci.c
---- linux.old/drivers/usb/host/usb-uhci.c 2004-11-17 12:54:21.000000000 +0100
-+++ linux.dev/drivers/usb/host/usb-uhci.c 2006-07-30 12:10:16.000000000 +0200
-@@ -3034,6 +3034,21 @@
+--- a/drivers/usb/host/usb-uhci.c
++++ b/drivers/usb/host/usb-uhci.c
+@@ -3034,6 +3034,21 @@ uhci_pci_probe (struct pci_dev *dev, con
pci_set_master(dev);
/* Search for the IO base address.. */
for (i = 0; i < 6; i++) {
-diff -ur linux.old/drivers/usb/storage/transport.c linux.dev/drivers/usb/storage/transport.c
---- linux.old/drivers/usb/storage/transport.c 2005-04-04 03:42:19.000000000 +0200
-+++ linux.dev/drivers/usb/storage/transport.c 2006-07-30 12:22:56.000000000 +0200
+--- a/drivers/usb/storage/transport.c
++++ b/drivers/usb/storage/transport.c
@@ -54,6 +54,22 @@
#include <linux/sched.h>
#include <linux/errno.h>
/***********************************************************************
* Helper routines
-@@ -554,6 +570,543 @@
+@@ -554,6 +570,543 @@ int usb_stor_transfer_partial(struct us_
return US_BULK_TRANSFER_SHORT;
}
/*
* Transfer an entire SCSI command's worth of data payload over the bulk
* pipe.
-@@ -569,6 +1122,8 @@
+@@ -569,6 +1122,8 @@ void usb_stor_transfer(Scsi_Cmnd *srb, s
struct scatterlist *sg;
unsigned int total_transferred = 0;
unsigned int transfer_amount;
/* calculate how much we want to transfer */
transfer_amount = usb_stor_transfer_length(srb);
-@@ -585,23 +1140,34 @@
+@@ -585,23 +1140,34 @@ void usb_stor_transfer(Scsi_Cmnd *srb, s
* make the appropriate requests for each, until done
*/
sg = (struct scatterlist *) srb->request_buffer;
}
}
else
-diff -ur linux.old/drivers/usb/storage/transport.h linux.dev/drivers/usb/storage/transport.h
---- linux.old/drivers/usb/storage/transport.h 2003-08-25 13:44:42.000000000 +0200
-+++ linux.dev/drivers/usb/storage/transport.h 2006-07-30 12:10:16.000000000 +0200
-@@ -127,6 +127,16 @@
+--- a/drivers/usb/storage/transport.h
++++ b/drivers/usb/storage/transport.h
+@@ -127,6 +127,16 @@ struct bulk_cs_wrap {
#define US_BULK_TRANSFER_ABORTED 3 /* transfer canceled */
/*
* Transport return codes
*/
-diff -ur linux.old/drivers/usb/storage/usb.h linux.dev/drivers/usb/storage/usb.h
---- linux.old/drivers/usb/storage/usb.h 2005-04-04 03:42:20.000000000 +0200
-+++ linux.dev/drivers/usb/storage/usb.h 2006-07-30 12:11:06.000000000 +0200
-@@ -111,6 +111,60 @@
+--- a/drivers/usb/storage/usb.h
++++ b/drivers/usb/storage/usb.h
+@@ -111,6 +111,60 @@ typedef int (*trans_reset)(struct us_dat
typedef void (*proto_cmnd)(Scsi_Cmnd*, struct us_data*);
typedef void (*extra_data_destructor)(void *); /* extra data destructor */
/* we allocate one of these for every device that we remember */
struct us_data {
struct us_data *next; /* next device */
-@@ -171,6 +225,7 @@
+@@ -171,6 +225,7 @@ struct us_data {
struct urb *current_urb; /* non-int USB requests */
struct completion current_done; /* the done flag */
unsigned int tag; /* tag for bulk CBW/CSW */
/* the semaphore for sleeping the control thread */
struct semaphore sema; /* to sleep thread on */
-diff -ur linux.old/include/linux/usb.h linux.dev/include/linux/usb.h
---- linux.old/include/linux/usb.h 2004-11-17 12:54:22.000000000 +0100
-+++ linux.dev/include/linux/usb.h 2006-07-30 12:19:19.000000000 +0200
-@@ -483,6 +483,8 @@
+--- a/include/linux/usb.h
++++ b/include/linux/usb.h
+@@ -483,6 +483,8 @@ struct usb_driver {
#define URB_NO_INTERRUPT 0x0080 /* HINT: no non-error interrupt needed */
/* ... less overhead for QUEUE_BULK */
#define USB_TIMEOUT_KILLED 0x1000 // only set by HCD!