Hello all, I just tried to build a USB-enabled 2.4.28 without PCI support and it barfs with the following error:
hcd.c: In function `hcd_submit_urb': hcd.c:1211: error: structure has no member named `pdev' hcd.c:1217: error: structure has no member named `pdev' hcd.c: In function `usb_hcd_giveback_urb': hcd.c:1493: error: structure has no member named `pdev' hcd.c:1498: error: structure has no member named `pdev' hcd.c: At top level: hcd.c:1427: warning: `hcd_operations' defined but not used hcd.c:1438: warning: `hcd_irq' defined but not used make[3]: *** [hcd.o] Error 1 Further exploration reveals that hcd.h has the declaration of the pdev in struct usb_hcd wrapped in an #ifdef CONFIG_PCI, with a comment that a few non PCI controllers do in fact exist. The current hcd.c, however, references the pdev field in a couple of places, regardless of whether CONFIG_PCI is defined. The patch below adds in a couple of #ifdefs to rectify this situation. The patch is useful to me personally because I've written a virtual host controller driver for Xen (http://xen.sf.net). I realise this is an odd configuration but it's only a small change to make the code in hcd.h and hcd.c consistent. I have yet to see if this is an issue in 2.6. Comments? Cheers, Mark === patch follows === --- linux-2.4.28/drivers/usb/hcd.c 2004-04-14 13:05:32.000000000 +0000 +++ linux-2.4.28-xenU/drivers/usb/hcd.c 2005-01-04 17:29:47.052646720 +0000 @@ -1206,6 +1206,7 @@ if (urb->dev == hcd->bus->root_hub) { status = rh_urb_enqueue (hcd, urb); } else { +#ifdef CONFIG_PCI if (usb_pipecontrol (urb->pipe)) urb->setup_dma = pci_map_single ( hcd->pdev, @@ -1220,6 +1221,7 @@ usb_pipein (urb->pipe) ? PCI_DMA_FROMDEVICE : PCI_DMA_TODEVICE); +#endif /* CONFIG_PCI */ status = hcd->driver->urb_enqueue (hcd, urb, mem_flags); } return status; @@ -1487,7 +1489,8 @@ // hcd_monitor_hook(MONITOR_URB_UPDATE, urb, dev) // NOTE: 2.5 does this if !URB_NO_DMA_MAP transfer flag - + +#ifdef CONFIG_PCI /* For 2.4, don't unmap bounce buffer if it's a root hub operation. */ if (usb_pipecontrol (urb->pipe) && !is_root_hub_operation) pci_unmap_single (hcd->pdev, urb->setup_dma, @@ -1500,6 +1503,7 @@ usb_pipein (urb->pipe) ? PCI_DMA_FROMDEVICE : PCI_DMA_TODEVICE); +#endif /* CONFIG_PCI */ /* pass ownership to the completion handler */ urb->complete (urb); ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel