diff -Nru a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c
--- a/drivers/usb/host/ohci-pci.c       Wed Feb 11 11:42:39 2004
+++ b/drivers/usb/host/ohci-pci.c       Wed Feb 11 11:42:39 2004
@@ -45,17 +45,19 @@
        struct ohci_hcd *ohci = hcd_to_ohci (hcd);
        int             ret;
 
-       if (hcd->pdev) {
-               ohci->hcca = pci_alloc_consistent (hcd->pdev,
-                               sizeof *ohci->hcca, &ohci->hcca_dma);
-               if (!ohci->hcca)
-                       return -ENOMEM;
+       ohci->hcca = dma_alloc_coherent (hcd->self.controller,
+                       sizeof *ohci->hcca, &ohci->hcca_dma, 0);
+       if (!ohci->hcca)
+               return -ENOMEM;
+
+       if(hcd->self.controller && hcd->self.controller->bus == &pci_bus_type) {
+               struct pci_dev *pdev = to_pci_dev(hcd->self.controller);
 
                /* AMD 756, for most chips (early revs), corrupts register
                 * values on read ... so enable the vendor workaround.
                 */
-               if (hcd->pdev->vendor == PCI_VENDOR_ID_AMD
-                               && hcd->pdev->device == 0x740c) {
+               if (pdev->vendor == PCI_VENDOR_ID_AMD
+                               && pdev->device == 0x740c) {
                        ohci->flags = OHCI_QUIRK_AMD756;
                        ohci_info (ohci, "AMD756 erratum 4 workaround\n");
                }
@@ -68,8 +70,8 @@
                 * for this chip.  Evidently control and bulk lists
                 * can get confused.  (B&W G3 models, and ...)
                 */
-               else if (hcd->pdev->vendor == PCI_VENDOR_ID_OPTI
-                               && hcd->pdev->device == 0xc861) {
+               else if (pdev->vendor == PCI_VENDOR_ID_OPTI
+                               && pdev->device == 0xc861) {
                        ohci_info (ohci,
                                "WARNING: OPTi workarounds unavailable\n");
                }
@@ -78,12 +80,11 @@
                 * identify the USB (fn2). This quirk might apply to more or
                 * even all NSC stuff.
                 */
-               else if (hcd->pdev->vendor == PCI_VENDOR_ID_NS) {
-                       struct pci_dev  *b, *hc;
+               else if (pdev->vendor == PCI_VENDOR_ID_NS) {
+                       struct pci_dev  *b;
 
-                       hc = hcd->pdev;
-                       b  = pci_find_slot (hc->bus->number,
-                                       PCI_DEVFN (PCI_SLOT (hc->devfn), 1));
+                       b  = pci_find_slot (pdev->bus->number,
+                                       PCI_DEVFN (PCI_SLOT (pdev->devfn), 1));
                        if (b && b->device == PCI_DEVICE_ID_NS_87560_LIO
                                        && b->vendor == PCI_VENDOR_ID_NS) {
                                ohci->flags |= OHCI_QUIRK_SUPERIO;
@@ -145,7 +146,7 @@
                
 #ifdef CONFIG_PMAC_PBOOK
        if (_machine == _MACH_Pmac)
-               disable_irq (hcd->pdev->irq);
+               disable_irq ((to_pci_dev(hcd->self.controller))->irq);
        /* else, 2.4 assumes shared irqs -- don't disable */
 #endif
 
@@ -179,15 +180,17 @@
         * memory during sleep. We disable its bus master bit during
         * suspend
         */
-       pci_read_config_word (hcd->pdev, PCI_COMMAND, &cmd);
+       pci_read_config_word (to_pci_dev(hcd->self.controller), PCI_COMMAND, 
+                               &cmd);
        cmd &= ~PCI_COMMAND_MASTER;
-       pci_write_config_word (hcd->pdev, PCI_COMMAND, cmd);
+       pci_write_config_word (to_pci_dev(hcd->self.controller), PCI_COMMAND, 
+                               cmd);
 #ifdef CONFIG_PMAC_PBOOK
        {
                struct device_node      *of_node;
  
                /* Disable USB PAD & cell clock */
-               of_node = pci_device_to_OF_node (hcd->pdev);
+               of_node = pci_device_to_OF_node (to_pci_dev(hcd->self.controller));
                if (of_node)
                        pmac_call_feature(PMAC_FTR_USB_ENABLE, of_node, 0, 0);
        }
@@ -207,7 +210,7 @@
                struct device_node *of_node;
 
                /* Re-enable USB PAD & cell clock */
-               of_node = pci_device_to_OF_node (hcd->pdev);
+               of_node = pci_device_to_OF_node (to_pci_dev(hcd->self.controller));
                if (of_node)
                        pmac_call_feature (PMAC_FTR_USB_ENABLE, of_node, 0, 1);
        }
@@ -222,7 +225,7 @@
 #endif
 
        /* Re-enable bus mastering */
-       pci_set_master (ohci->hcd.pdev);
+       pci_set_master (to_pci_dev(ohci->hcd.self.controller));
        
        switch (temp) {
 
@@ -282,7 +285,7 @@
 
 #ifdef CONFIG_PMAC_PBOOK
                if (_machine == _MACH_Pmac)
-                       enable_irq (hcd->pdev->irq);
+                       enable_irq (to_pci_dev(hcd->self.controller)->irq);
 #endif
 
                /* Check for a pending done list */


-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to