patch-2.4.5 linux/drivers/usb/uhci.c
Next file: linux/drivers/usb/usb-ohci.c
Previous file: linux/drivers/usb/uhci-debug.h
Back to the patch index
Back to the overall index
- Lines: 119
- Date:
Mon May 21 15:02:06 2001
- Orig file:
v2.4.4/linux/drivers/usb/uhci.c
- Orig date:
Wed Apr 25 14:10:49 2001
diff -u --recursive --new-file v2.4.4/linux/drivers/usb/uhci.c linux/drivers/usb/uhci.c
@@ -57,6 +57,15 @@
#include <linux/pm.h>
+
+/*
+ * Version Information
+ */
+#define DRIVER_VERSION ""
+#define DRIVER_AUTHOR "Linus Torvalds, Johannes Erdfelt, Randy Dunlap, Georg Acher, Deti Fliegl, Thomas Sailer, Roman Weissgaerber"
+#define DRIVER_DESC "USB Universal Host Controller Interface driver"
+
+
/*
* debug = 0, no debugging messages
* debug = 1, dump failed URB's except for stalls
@@ -644,21 +653,23 @@
urb->hcpriv = urbp;
- if (urb->transfer_buffer_length) {
- urbp->transfer_buffer_dma_handle = pci_map_single(uhci->dev,
- urb->transfer_buffer, urb->transfer_buffer_length,
- usb_pipein(urb->pipe) ? PCI_DMA_FROMDEVICE :
- PCI_DMA_TODEVICE);
- if (!urbp->transfer_buffer_dma_handle)
- return NULL;
- }
-
- if (usb_pipetype(urb->pipe) == PIPE_CONTROL && urb->setup_packet) {
- urbp->setup_packet_dma_handle = pci_map_single(uhci->dev,
- urb->setup_packet, sizeof(devrequest),
- PCI_DMA_TODEVICE);
- if (!urbp->setup_packet_dma_handle)
- return NULL;
+ if (urb->dev != uhci->rh.dev) {
+ if (urb->transfer_buffer_length) {
+ urbp->transfer_buffer_dma_handle = pci_map_single(uhci->dev,
+ urb->transfer_buffer, urb->transfer_buffer_length,
+ usb_pipein(urb->pipe) ? PCI_DMA_FROMDEVICE :
+ PCI_DMA_TODEVICE);
+ if (!urbp->transfer_buffer_dma_handle)
+ return NULL;
+ }
+
+ if (usb_pipetype(urb->pipe) == PIPE_CONTROL && urb->setup_packet) {
+ urbp->setup_packet_dma_handle = pci_map_single(uhci->dev,
+ urb->setup_packet, sizeof(devrequest),
+ PCI_DMA_TODEVICE);
+ if (!urbp->setup_packet_dma_handle)
+ return NULL;
+ }
}
return urbp;
@@ -722,11 +733,11 @@
uhci_free_td(uhci, td);
}
- if (urb->setup_packet)
+ if (urbp->setup_packet_dma_handle)
pci_unmap_single(uhci->dev, urbp->setup_packet_dma_handle,
sizeof(devrequest), PCI_DMA_TODEVICE);
- if (urb->transfer_buffer_length)
+ if (urbp->transfer_buffer_dma_handle)
pci_unmap_single(uhci->dev, urbp->transfer_buffer_dma_handle,
urb->transfer_buffer_length, usb_pipein(urb->pipe) ?
PCI_DMA_FROMDEVICE : PCI_DMA_TODEVICE);
@@ -2247,12 +2258,12 @@
if (!killed)
urb->status = status;
- if (urb->transfer_buffer_length)
+ if (urbp->transfer_buffer_dma_handle)
pci_dma_sync_single(uhci->dev, urbp->transfer_buffer_dma_handle,
urb->transfer_buffer_length, usb_pipein(urb->pipe) ?
PCI_DMA_FROMDEVICE : PCI_DMA_TODEVICE);
- if (usb_pipetype(urb->pipe) == PIPE_CONTROL && urb->setup_packet)
+ if (urbp->setup_packet_dma_handle)
pci_dma_sync_single(uhci->dev, urbp->setup_packet_dma_handle,
sizeof(devrequest), PCI_DMA_TODEVICE);
@@ -2910,6 +2921,7 @@
release_uhci(uhci);
}
+#ifdef CONFIG_PM
static void uhci_pci_suspend(struct pci_dev *dev)
{
reset_hc((struct uhci *) dev->driver_data);
@@ -2920,6 +2932,7 @@
reset_hc((struct uhci *) dev->driver_data);
start_hc((struct uhci *) dev->driver_data);
}
+#endif
static const struct pci_device_id __devinitdata uhci_pci_ids[] = { {
@@ -2977,6 +2990,9 @@
if (retval)
goto init_failed;
+ info(DRIVER_VERSION " " DRIVER_AUTHOR);
+ info(DRIVER_DESC);
+
return 0;
init_failed:
@@ -3016,6 +3032,6 @@
module_init(uhci_hcd_init);
module_exit(uhci_hcd_cleanup);
-MODULE_AUTHOR("Linus Torvalds, Johannes Erdfelt, Randy Dunlap, Georg Acher, Deti Fliegl, Thomas Sailer, Roman Weissgaerber");
-MODULE_DESCRIPTION("USB Universal Host Controller Interface driver");
+MODULE_AUTHOR( DRIVER_AUTHOR );
+MODULE_DESCRIPTION( DRIVER_DESC );
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)