IXP42x PCI rewrite
[platform/kernel/u-boot.git] / drivers / pci / pci.c
index 78f7339..1a0b14c 100644 (file)
@@ -50,7 +50,6 @@ PCI_HOSE_OP(write, byte, u8)
 PCI_HOSE_OP(write, word, u16)
 PCI_HOSE_OP(write, dword, u32)
 
-#ifndef CONFIG_IXP425
 #define PCI_OP(rw, size, type, error_code)                             \
 int pci_##rw##_config_##size(pci_dev_t dev, int offset, type value)    \
 {                                                                      \
@@ -71,7 +70,6 @@ PCI_OP(read, dword, u32 *, *value = 0xffffffff)
 PCI_OP(write, byte, u8, )
 PCI_OP(write, word, u16, )
 PCI_OP(write, dword, u32, )
-#endif /* CONFIG_IXP425 */
 
 #define PCI_READ_VIA_DWORD_OP(size, type, off_mask)                    \
 int pci_hose_read_config_##size##_via_dword(struct pci_controller *hose,\
@@ -165,6 +163,18 @@ struct pci_controller *pci_bus_to_hose (int bus)
        return NULL;
 }
 
+struct pci_controller *find_hose_by_cfg_addr(void *cfg_addr)
+{
+       struct pci_controller *hose;
+
+       for (hose = hose_head; hose; hose = hose->next) {
+               if (hose->cfg_addr == cfg_addr)
+                       return hose;
+       }
+
+       return NULL;
+}
+
 int pci_last_busno(void)
 {
        struct pci_controller *hose = hose_head;
@@ -178,7 +188,6 @@ int pci_last_busno(void)
        return hose->last_busno;
 }
 
-#ifndef CONFIG_IXP425
 pci_dev_t pci_find_devices(struct pci_device_id *ids, int index)
 {
        struct pci_controller * hose;
@@ -234,7 +243,6 @@ pci_dev_t pci_find_devices(struct pci_device_id *ids, int index)
 
        return (-1);
 }
-#endif /* CONFIG_IXP425 */
 
 pci_dev_t pci_find_device(unsigned int vendor, unsigned int device, int index)
 {
@@ -616,6 +624,9 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
        unsigned char header_type;
        struct pci_config_table *cfg;
        pci_dev_t dev;
+#ifdef CONFIG_PCI_SCAN_SHOW
+       static int indent = 0;
+#endif
 
        sub_bus = bus;
 
@@ -646,9 +657,14 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
                pci_hose_read_config_word(hose, dev, PCI_CLASS_DEVICE, &class);
 
 #ifdef CONFIG_PCI_SCAN_SHOW
+               indent++;
+
+               /* Print leading space, including bus indentation */
+               printf("%*c", indent + 1, ' ');
+
                if (pci_print_dev(hose, dev)) {
-                       printf("        %02x:%02x.%x - %04x:%04x - %s\n",
-                              PCI_BUS(dev), PCI_DEV(dev), PCI_FUNC(dev),
+                       printf("%02x:%02x.%-*x - %04x:%04x - %s\n",
+                              PCI_BUS(dev), PCI_DEV(dev), 6 - indent, PCI_FUNC(dev),
                               vendor, device, pci_class_str(class >> 8));
                }
 #endif
@@ -666,6 +682,10 @@ int pci_hose_scan_bus(struct pci_controller *hose, int bus)
 #endif
                }
 
+#ifdef CONFIG_PCI_SCAN_SHOW
+               indent--;
+#endif
+
                if (hose->fixup_irq)
                        hose->fixup_irq(hose, dev);
        }