Move bridge enable from pcibios_enable_resources() to
platform_pci_enable_device() so the former matches other
architectures and can be shared.

Signed-off-by: Bjorn Helgaas <[EMAIL PROTECTED]>

Index: work6/arch/arm/kernel/bios32.c
===================================================================
--- work6.orig/arch/arm/kernel/bios32.c 2008-02-27 11:25:29.000000000 -0700
+++ work6/arch/arm/kernel/bios32.c      2008-02-27 11:55:59.000000000 -0700
@@ -683,15 +683,32 @@
                        cmd |= PCI_COMMAND_MEMORY;
        }
 
+       if (cmd != old_cmd) {
+               printk("PCI: enabling device %s (%04x -> %04x)\n",
+                      pci_name(dev), old_cmd, cmd);
+               pci_write_config_word(dev, PCI_COMMAND, cmd);
+       }
+       return 0;
+}
+
+static int platform_pci_enable_device(struct pci_dev *dev)
+{
+       u16 cmd, old_cmd;
+
+       pci_read_config_word(dev, PCI_COMMAND, &cmd);
+       old_cmd = cmd;
+
        /*
-        * Bridges (eg, cardbus bridges) need to be fully enabled
+        * Bridges (eg, cardbus bridges) need to be fully enabled.
+        * Most architectures do this in pci_enable_bridges(), not
+        * in the pci_enable_device() path.
         */
        if ((dev->class >> 16) == PCI_BASE_CLASS_BRIDGE)
                cmd |= PCI_COMMAND_IO | PCI_COMMAND_MEMORY;
 
        if (cmd != old_cmd) {
-               printk("PCI: enabling device %s (%04x -> %04x)\n",
-                      pci_name(dev), old_cmd, cmd);
+               dev_info(&dev->dev, "enabling bridge device (%04x -> %04x)\n",
+                      old_cmd, cmd);
                pci_write_config_word(dev, PCI_COMMAND, cmd);
        }
        return 0;
@@ -699,7 +716,12 @@
 
 int pcibios_enable_device(struct pci_dev *dev, int mask)
 {
-       return pcibios_enable_resources(dev, mask);
+       int err;
+
+       if ((err = pcibios_enable_resources(dev, mask)) < 0)
+               return err;
+
+       return platform_pci_enable_device(dev);
 }
 
 int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma,

-- 
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev

Reply via email to