We don't need this check anymore since when PCI is enabled, driver model
is always used.

Sadly this doesn't work with nds32 for some reason to do with the
toolchain. Add a work-around for that.

Signed-off-by: Simon Glass <s...@chromium.org>
---

 lib/fdtdec.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/lib/fdtdec.c b/lib/fdtdec.c
index 4b097fb588e..d12c6d340a0 100644
--- a/lib/fdtdec.c
+++ b/lib/fdtdec.c
@@ -192,7 +192,6 @@ fdt_addr_t fdtdec_get_addr(const void *blob, int node, 
const char *prop_name)
        return fdtdec_get_addr_size(blob, node, prop_name, NULL);
 }
 
-#if CONFIG_IS_ENABLED(PCI) && defined(CONFIG_DM_PCI)
 int fdtdec_get_pci_vendev(const void *blob, int node, u16 *vendor, u16 *device)
 {
        const char *list, *end;
@@ -240,7 +239,15 @@ int fdtdec_get_pci_bar32(const struct udevice *dev, struct 
fdt_pci_addr *addr,
                return -EINVAL;
 
        barnum = (barnum - PCI_BASE_ADDRESS_0) / 4;
+
+       /*
+        * There is a strange toolchain bug with nds32 which complains about
+        * an undefined reference here, even if fdtdec_get_pci_bar32() is never
+        * called. An #ifdef seems to be the only fix!
+        */
+#if !IS_ENABLED(CONFIG_NDS32)
        *bar = dm_pci_read_bar32(dev, barnum);
+#endif
 
        return 0;
 }
@@ -260,7 +267,6 @@ int fdtdec_get_pci_bus_range(const void *blob, int node,
 
        return 0;
 }
-#endif
 
 uint64_t fdtdec_get_uint64(const void *blob, int node, const char *prop_name,
                           uint64_t default_val)
-- 
2.32.0.432.gabb21c7263-goog

Reply via email to