summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--arch/sparc64/kernel/pci.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/arch/sparc64/kernel/pci.c b/arch/sparc64/kernel/pci.c
index ec5f85b030ef..8a7c699bb109 100644
--- a/arch/sparc64/kernel/pci.c
+++ b/arch/sparc64/kernel/pci.c
@@ -392,7 +392,8 @@ struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
 	if (type == NULL)
 		type = "";
 
-	printk("    create device, devfn: %x, type: %s\n", devfn, type);
+	printk("    create device, devfn: %x, type: %s hostcontroller(%d)\n",
+	       devfn, type, host_controller);
 
 	dev->bus = bus;
 	dev->sysdata = node;
@@ -407,6 +408,9 @@ struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
 		dev->subsystem_vendor = 0x0000;
 		dev->subsystem_device = 0x0000;
 		dev->cfg_size = 256;
+		dev->class = PCI_CLASS_BRIDGE_HOST << 8;
+		sprintf(pci_name(dev), "%04x:%02x:%02x.%d", pci_domain_nr(bus),
+			0x00, PCI_SLOT(devfn), PCI_FUNC(devfn));
 	} else {
 		dev->vendor = of_getintprop_default(node, "vendor-id", 0xffff);
 		dev->device = of_getintprop_default(node, "device-id", 0xffff);
@@ -416,13 +420,7 @@ struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
 			of_getintprop_default(node, "subsystem-id", 0);
 
 		dev->cfg_size = pci_cfg_space_size(dev);
-	}
-	sprintf(pci_name(dev), "%04x:%02x:%02x.%d", pci_domain_nr(bus),
-		dev->bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn));
 
-	if (host_controller) {
-		dev->class = PCI_CLASS_BRIDGE_HOST << 8;
-	} else {
 		/* We can't actually use the firmware value, we have
 		 * to read what is in the register right now.  One
 		 * reason is that in the case of IDE interfaces the
@@ -431,8 +429,12 @@ struct pci_dev *of_create_pci_dev(struct pci_pbm_info *pbm,
 		 */
 		pci_read_config_dword(dev, PCI_CLASS_REVISION, &class);
 		dev->class = class >> 8;
+
+		sprintf(pci_name(dev), "%04x:%02x:%02x.%d", pci_domain_nr(bus),
+			dev->bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn));
 	}
-	printk("    class: 0x%x\n", dev->class);
+	printk("    class: 0x%x device name: %s\n",
+	       dev->class, pci_name(dev));
 
 	dev->current_state = 4;		/* unknown power state */
 	dev->error_state = pci_channel_io_normal;