pci: Drop DM_PCI check from fdtdec
authorSimon Glass <sjg@chromium.org>
Mon, 2 Aug 2021 00:54:18 +0000 (18:54 -0600)
committerTom Rini <trini@konsulko.com>
Mon, 13 Sep 2021 22:23:13 +0000 (18:23 -0400)
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 <sjg@chromium.org>
lib/fdtdec.c

index 337c444..7358cb6 100644 (file)
@@ -190,7 +190,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;
@@ -238,7 +237,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;
 }
@@ -258,7 +265,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)