[U-Boot] [RFC PATCH 03/29] fdtdec: add API to read pci bus-range property
Simon Glass
sjg at chromium.org
Wed Nov 20 03:00:04 UTC 2019
Hi Suneel,
On Tue, 29 Oct 2019 at 14:08, Suneel Garapati <suneelglinux at gmail.com> wrote:
>
> From: Suneel Garapati <sgarapati at marvell.com>
>
> Add fdtdec_get_pci_bus_range to read bus-range property
> values.
>
> Signed-off-by: Suneel Garapati <sgarapati at marvell.com>
> ---
> include/fdtdec.h | 12 ++++++++++++
> lib/fdtdec.c | 16 ++++++++++++++++
> 2 files changed, 28 insertions(+)
>
> diff --git a/include/fdtdec.h b/include/fdtdec.h
> index f1e58f9732..afbd22b25a 100644
> --- a/include/fdtdec.h
> +++ b/include/fdtdec.h
> @@ -441,6 +441,18 @@ int fdtdec_get_pci_vendev(const void *blob, int node,
> int fdtdec_get_pci_bar32(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
> + */
> +
> +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
> diff --git a/lib/fdtdec.c b/lib/fdtdec.c
> index 17736ce665..fb61eda1fd 100644
> --- a/lib/fdtdec.c
> +++ b/lib/fdtdec.c
> @@ -237,6 +237,22 @@ int fdtdec_get_pci_bar32(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)
This should have a livetree version too I think and a test.
> +{
> + const u32 *values;
> + int len;
> +
> + values = fdt_getprop(blob, node, "bus-range", &len);
> + if (!values || len < sizeof(*values) * 2)
> + return -EINVAL;
> +
> + res->start = be32_to_cpup(values++);
I think these should use fdt32_ld()
> + res->end = be32_to_cpup(values);
> +
> + return 0;
> +}
> #endif
>
> uint64_t fdtdec_get_uint64(const void *blob, int node, const char *prop_name,
> --
> 2.23.0
>
Regards,
Simon
More information about the U-Boot
mailing list