]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
fdtdec: Add API to read pci bus-range property
authorSuneel Garapati <sgarapati@marvell.com>
Sat, 19 Oct 2019 22:19:35 +0000 (15:19 -0700)
committerStefan Roese <sr@denx.de>
Tue, 25 Aug 2020 03:41:09 +0000 (05:41 +0200)
Add fdtdec_get_pci_bus_range to read bus-range property
values.

Signed-off-by: Suneel Garapati <sgarapati@marvell.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
include/fdtdec.h
lib/fdtdec.c

index bc79389260ab053c61577eaac4fa8f1e53d47b9f..152eb07b9e0eab0face72ef1501feb7eac4d0a9b 100644 (file)
@@ -444,6 +444,19 @@ int fdtdec_get_pci_vendev(const void *blob, int node,
 int fdtdec_get_pci_bar32(const struct udevice *dev, struct fdt_pci_addr *addr,
                         u32 *bar);
 
+/**
+ * Look at the bus range property of a device node and return the pci bus
+ * range for this node.
+ * The property must hold one fdt_pci_addr with a length.
+ * @param blob         FDT blob
+ * @param node         node to examine
+ * @param res          the resource structure to return the bus range
+ * @return 0 if ok, negative on error
+ */
+
+int fdtdec_get_pci_bus_range(const void *blob, int node,
+                            struct fdt_resource *res);
+
 /**
  * Look up a 32-bit integer property in a node and return it. The property
  * must have at least 4 bytes of data. The value of the first cell is
index 30a1c6a217b86c6140088792f862f018dbeb14b0..d3b22ec3238083f082f396e26d4e927e616cc521 100644 (file)
@@ -243,6 +243,22 @@ int fdtdec_get_pci_bar32(const struct udevice *dev, struct fdt_pci_addr *addr,
 
        return 0;
 }
+
+int fdtdec_get_pci_bus_range(const void *blob, int node,
+                            struct fdt_resource *res)
+{
+       const u32 *values;
+       int len;
+
+       values = fdt_getprop(blob, node, "bus-range", &len);
+       if (!values || len < sizeof(*values) * 2)
+               return -EINVAL;
+
+       res->start = fdt32_to_cpu(*values++);
+       res->end = fdt32_to_cpu(*values);
+
+       return 0;
+}
 #endif
 
 uint64_t fdtdec_get_uint64(const void *blob, int node, const char *prop_name,