dm: pci: Avoid using pci_bus_to_hose() in the uclass
authorSimon Glass <sjg@chromium.org>
Tue, 19 Jan 2016 03:19:16 +0000 (20:19 -0700)
committerBin Meng <bmeng.cn@gmail.com>
Sun, 24 Jan 2016 04:07:17 +0000 (12:07 +0800)
This function is only available for compatibility with old code. Avoid
using it in the uclass.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
drivers/pci/pci_auto.c

index 5cfa135ba6e51d93a92b31d7b6e2904b23f3b85a..88bc416c61628fd2c44042dbd22dd79eb0480729 100644 (file)
@@ -9,6 +9,7 @@
  */
 
 #include <common.h>
+#include <dm.h>
 #include <errno.h>
 #include <pci.h>
 
@@ -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;