]> git.sur5r.net Git - u-boot/blobdiff - drivers/pci/pci_auto.c
Merge git://git.denx.de/u-boot-dm
[u-boot] / drivers / pci / pci_auto.c
index 842eafc4f8f5e59c9478379ce864c94b51230e72..ee9a854bda48b89c6b3f99124ac15d6933f503f1 100644 (file)
@@ -9,6 +9,7 @@
  */
 
 #include <common.h>
+#include <dm.h>
 #include <errno.h>
 #include <pci.h>
 
@@ -29,7 +30,7 @@ void dm_pciauto_setup_device(struct udevice *dev, int bars_num,
        u8 header_type;
        int rom_addr;
        pci_addr_t bar_value;
-       struct pci_region *bar_res;
+       struct pci_region *bar_res = NULL;
        int found_mem64 = 0;
        u16 class;
 
@@ -167,8 +168,8 @@ void dm_pciauto_prescan_setup_bridge(struct udevice *dev, int sub_bus)
        struct pci_region *pci_prefetch;
        struct pci_region *pci_io;
        u16 cmdstat, prefechable_64;
-       /* The root controller has the region information */
-       struct pci_controller *ctlr_hose = pci_bus_to_hose(0);
+       struct udevice *ctlr = pci_get_controller(dev);
+       struct pci_controller *ctlr_hose = dev_get_uclass_priv(ctlr);
 
        pci_mem = ctlr_hose->pci_mem;
        pci_prefetch = ctlr_hose->pci_prefetch;
@@ -248,9 +249,8 @@ void dm_pciauto_postscan_setup_bridge(struct udevice *dev, int sub_bus)
        struct pci_region *pci_mem;
        struct pci_region *pci_prefetch;
        struct pci_region *pci_io;
-
-       /* The root controller has the region information */
-       struct pci_controller *ctlr_hose = pci_bus_to_hose(0);
+       struct udevice *ctlr = pci_get_controller(dev);
+       struct pci_controller *ctlr_hose = dev_get_uclass_priv(ctlr);
 
        pci_mem = ctlr_hose->pci_mem;
        pci_prefetch = ctlr_hose->pci_prefetch;
@@ -311,13 +311,13 @@ int dm_pciauto_config_device(struct udevice *dev)
        unsigned int sub_bus = PCI_BUS(dm_pci_get_bdf(dev));
        unsigned short class;
        bool enum_only = false;
+       struct udevice *ctlr = pci_get_controller(dev);
+       struct pci_controller *ctlr_hose = dev_get_uclass_priv(ctlr);
        int n;
 
 #ifdef CONFIG_PCI_ENUM_ONLY
        enum_only = true;
 #endif
-       /* The root controller has the region information */
-       struct pci_controller *ctlr_hose = pci_bus_to_hose(0);
 
        pci_mem = ctlr_hose->pci_mem;
        pci_prefetch = ctlr_hose->pci_prefetch;
@@ -375,6 +375,7 @@ int dm_pciauto_config_device(struct udevice *dev)
 
        case PCI_CLASS_PROCESSOR_POWERPC: /* an agent or end-point */
                debug("PCI AutoConfig: Found PowerPC device\n");
+               /* fall through */
 
        default:
                dm_pciauto_setup_device(dev, 6, pci_mem, pci_prefetch, pci_io,