From: Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
To: Simon Glass <sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
Cc: U-Boot Mailing List
<u-boot-0aAXYlwwYIKGBzrmiIFOJg@public.gmane.org>,
Devicetree Discuss
<devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org>,
Tom Warren <TWarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
Albert ARIBAUD
<albert.u.boot-LhW3hqR2+23R7s880joybQ@public.gmane.org>
Subject: Re: [PATCH 02/14] fdt: Add functions to access phandles, arrays and bools
Date: Mon, 28 Nov 2011 11:41:32 -0700 [thread overview]
Message-ID: <4ED3D5DC.10502@nvidia.com> (raw)
In-Reply-To: <1322106896-23054-3-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
On 11/23/2011 08:54 PM, Simon Glass wrote:
> Add a function to lookup a property which is a phandle in a node, and
> another to read a fixed-length integer array from an fdt property.
> Also add a function to read boolean properties.
>
> Signed-off-by: Simon Glass <sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
Looking at the U-Boot custodians web page, you need to send the core DT
changes (well, probably anything DT related) to Jerry Van Baren.
> +/**
> + * Look up a property in a node and return its contents in an integer
> + * array of given length. The property must have at least enough data for
> + * the array (4*count bytes). It may have more, but this will be ignored.
> + *
> + * @param blob FDT blob
> + * @param node node to examine
> + * @param prop_name name of property to find
> + * @param array array to fill with data
> + * @param count number of array elements
> + * @return 0 if ok, or -FDT_ERR_NOTFOUND if the property is not found,
> + * or -FDT_ERR_BADLAYOUT if not enough data
> + */
> +int fdtdec_get_int_array(const void *blob, int node, const char *prop_name,
> + int *array, int count);
The kernel's equivalent of this function retrieves an array of U32s. Is
one version more correct than the other?
> +/**
> + * Look up a boolean property in a node and return it.
> + *
> + * A boolean properly is true if present in the device tree and false if not
> + * present, or present with a 0 value.
> + *
> + * @param blob FDT blob
> + * @param node node to examine
> + * @param prop_name name of property to find
> + * @return 1 if the properly is present; 0 if it isn't present or is 0
> + */
> +int fdtdec_get_bool(const void *blob, int node, const char *prop_name);
Does U-Boot allow use of the "bool" type here?
> +/**
> + * Look up a property in a node and check that it has a minimum length.
> + *
> + * @param blob FDT blob
> + * @param node node to examine
> + * @param prop_name name of property to find
> + * @param min_len minimum property length in bytes
> + * @param err 0 if ok, or -FDT_ERR_NOTFOUND if the property is not
> + found, or -FDT_ERR_BADLAYOUT if not enough data
> + * @return pointer to cell, which is only valid if err == 0
> + */
> +static const void *get_prop_len(const void *blob, int node,
> + const char *prop_name, int min_len, int *err)
Based on the function name, I'd expect it to return the length of the
property; perhaps get_prop_check_min_len?
> +/**
> + * Look up a boolean property in a node and return it.
> + *
> + * A boolean properly is true if present in the device tree and false if not
> + * present, or present with a 0 value.
> + *
> + * @param blob FDT blob
> + * @param node node to examine
> + * @param prop_name name of property to find
> + * @return 1 if the properly is present; 0 if it isn't present or is 0
> + */
> +int fdtdec_get_bool(const void *blob, int node, const char *prop_name)
> +{
> + const s32 *cell;
> + int len;
> +
> + debug("%s: %s\n", __func__, prop_name);
> + cell = fdt_getprop(blob, node, prop_name, &len);
> + if (!cell)
> + return 0;
> + if (len >= sizeof(u32) && *cell == 0)
> + return 0;
> +
> + return 1;
> +}
In the kernel, I believe that property existence is all that's usually
checked. Is that wrong? Did the definition of a boolean property's value
in the function description above come from the specification? If a
property had a length of 0/1/2/3 with a zero value, it seems very odd to
treat that as true.
--
nvpublic
WARNING: multiple messages have this Message-ID (diff)
From: Stephen Warren <swarren@nvidia.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 02/14] fdt: Add functions to access phandles, arrays and bools
Date: Mon, 28 Nov 2011 11:41:32 -0700 [thread overview]
Message-ID: <4ED3D5DC.10502@nvidia.com> (raw)
In-Reply-To: <1322106896-23054-3-git-send-email-sjg@chromium.org>
On 11/23/2011 08:54 PM, Simon Glass wrote:
> Add a function to lookup a property which is a phandle in a node, and
> another to read a fixed-length integer array from an fdt property.
> Also add a function to read boolean properties.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
Looking at the U-Boot custodians web page, you need to send the core DT
changes (well, probably anything DT related) to Jerry Van Baren.
> +/**
> + * Look up a property in a node and return its contents in an integer
> + * array of given length. The property must have at least enough data for
> + * the array (4*count bytes). It may have more, but this will be ignored.
> + *
> + * @param blob FDT blob
> + * @param node node to examine
> + * @param prop_name name of property to find
> + * @param array array to fill with data
> + * @param count number of array elements
> + * @return 0 if ok, or -FDT_ERR_NOTFOUND if the property is not found,
> + * or -FDT_ERR_BADLAYOUT if not enough data
> + */
> +int fdtdec_get_int_array(const void *blob, int node, const char *prop_name,
> + int *array, int count);
The kernel's equivalent of this function retrieves an array of U32s. Is
one version more correct than the other?
> +/**
> + * Look up a boolean property in a node and return it.
> + *
> + * A boolean properly is true if present in the device tree and false if not
> + * present, or present with a 0 value.
> + *
> + * @param blob FDT blob
> + * @param node node to examine
> + * @param prop_name name of property to find
> + * @return 1 if the properly is present; 0 if it isn't present or is 0
> + */
> +int fdtdec_get_bool(const void *blob, int node, const char *prop_name);
Does U-Boot allow use of the "bool" type here?
> +/**
> + * Look up a property in a node and check that it has a minimum length.
> + *
> + * @param blob FDT blob
> + * @param node node to examine
> + * @param prop_name name of property to find
> + * @param min_len minimum property length in bytes
> + * @param err 0 if ok, or -FDT_ERR_NOTFOUND if the property is not
> + found, or -FDT_ERR_BADLAYOUT if not enough data
> + * @return pointer to cell, which is only valid if err == 0
> + */
> +static const void *get_prop_len(const void *blob, int node,
> + const char *prop_name, int min_len, int *err)
Based on the function name, I'd expect it to return the length of the
property; perhaps get_prop_check_min_len?
> +/**
> + * Look up a boolean property in a node and return it.
> + *
> + * A boolean properly is true if present in the device tree and false if not
> + * present, or present with a 0 value.
> + *
> + * @param blob FDT blob
> + * @param node node to examine
> + * @param prop_name name of property to find
> + * @return 1 if the properly is present; 0 if it isn't present or is 0
> + */
> +int fdtdec_get_bool(const void *blob, int node, const char *prop_name)
> +{
> + const s32 *cell;
> + int len;
> +
> + debug("%s: %s\n", __func__, prop_name);
> + cell = fdt_getprop(blob, node, prop_name, &len);
> + if (!cell)
> + return 0;
> + if (len >= sizeof(u32) && *cell == 0)
> + return 0;
> +
> + return 1;
> +}
In the kernel, I believe that property existence is all that's usually
checked. Is that wrong? Did the definition of a boolean property's value
in the function description above come from the specification? If a
property had a length of 0/1/2/3 with a zero value, it seems very odd to
treat that as true.
--
nvpublic
next prev parent reply other threads:[~2011-11-28 18:41 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-24 3:54 [PATCH 01/14] fdt: Tidy up a few fdtdec problems Simon Glass
2011-11-24 3:54 ` [U-Boot] " Simon Glass
[not found] ` <1322106896-23054-2-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2011-11-24 3:54 ` [PATCH 02/14] fdt: Add functions to access phandles, arrays and bools Simon Glass
2011-11-24 3:54 ` [U-Boot] " Simon Glass
[not found] ` <1322106896-23054-3-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2011-11-28 18:41 ` Stephen Warren [this message]
2011-11-28 18:41 ` Stephen Warren
[not found] ` <4ED3D5DC.10502-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-11-29 5:12 ` David Gibson
2011-11-29 5:12 ` [U-Boot] " David Gibson
2011-12-02 1:01 ` Simon Glass
2011-12-02 1:01 ` [U-Boot] " Simon Glass
[not found] ` <CAPnjgZ29tsNXd1+1eXdTHRjgh_MQJrXoc23_oqO9UPJ73mu7ZA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-02 15:55 ` Stephen Warren
2011-12-02 15:55 ` [U-Boot] " Stephen Warren
2011-12-02 16:38 ` Simon Glass
2011-12-02 16:38 ` [U-Boot] " Simon Glass
2011-12-02 3:33 ` Jerry Van Baren
2011-12-02 3:33 ` [U-Boot] " Jerry Van Baren
2011-12-02 4:58 ` Simon Glass
2011-12-02 4:58 ` [U-Boot] " Simon Glass
2011-12-02 17:22 ` Jerry Van Baren
2011-12-02 17:22 ` [U-Boot] " Jerry Van Baren
2011-12-02 18:12 ` Simon Glass
2011-12-02 18:12 ` [U-Boot] " Simon Glass
2011-11-24 3:54 ` [PATCH 04/14] arm: fdt: Add skeleton device tree file Simon Glass
2011-11-24 3:54 ` [U-Boot] " Simon Glass
2011-11-24 3:54 ` [PATCH 05/14] tegra: fdt: Add Tegra2x " Simon Glass
2011-11-24 3:54 ` [U-Boot] " Simon Glass
[not found] ` <1322106896-23054-6-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
2011-11-28 18:56 ` Stephen Warren
2011-11-28 18:56 ` [U-Boot] " Stephen Warren
2011-12-02 1:24 ` Simon Glass
2011-12-02 1:24 ` [U-Boot] " Simon Glass
[not found] ` <CAPnjgZ11cFm15E9MHXno_YGp0NxdOHhGBavYbQBP5Nu_TOtx7A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-02 15:58 ` Stephen Warren
2011-12-02 15:58 ` [U-Boot] " Stephen Warren
2011-12-02 16:47 ` Simon Glass
2011-12-02 16:47 ` [U-Boot] " Simon Glass
2011-11-24 3:54 ` [PATCH 07/14] tegra: fdt: Add initial device tree definitions for USB ports Simon Glass
2011-11-24 3:54 ` [U-Boot] " Simon Glass
2011-11-24 3:54 ` [PATCH 14/14] tegra: fdt: Enable FDT support for Seaboard Simon Glass
2011-11-24 3:54 ` [U-Boot] " Simon Glass
2011-11-28 18:33 ` [PATCH 01/14] fdt: Tidy up a few fdtdec problems Stephen Warren
2011-11-28 18:33 ` [U-Boot] " Stephen Warren
[not found] ` <4ED3D3F2.8070302-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-11-29 1:10 ` David Gibson
2011-11-29 1:10 ` [U-Boot] " David Gibson
2011-12-01 20:59 ` Simon Glass
2011-12-01 20:59 ` [U-Boot] " Simon Glass
2011-11-24 3:54 ` [PATCH 03/14] arm: fdt: Ensure that an embedded fdt is word-aligned Simon Glass
2011-11-24 3:54 ` [U-Boot] " Simon Glass
2011-11-24 3:54 ` [PATCH 06/14] tegra: fdt: Add device tree file for Tegra2 Seaboard Simon Glass
2011-11-24 3:54 ` [U-Boot] " Simon Glass
2011-11-24 3:54 ` [U-Boot] [PATCH 08/14] tegra: usb: Add USB definitions " Simon Glass
2011-11-24 3:54 ` [U-Boot] [PATCH 09/14] tegra: usb: Add support for data alignment and txfifo threshold Simon Glass
2011-11-28 19:05 ` Stephen Warren
2011-12-02 1:42 ` Simon Glass
2011-11-24 3:54 ` [U-Boot] [PATCH 10/14] tegra: usb: Add support for USB peripheral Simon Glass
2011-11-28 19:21 ` Stephen Warren
2011-12-02 1:51 ` Simon Glass
2011-12-02 16:10 ` Stephen Warren
2011-12-02 17:00 ` Simon Glass
2011-12-02 20:40 ` Stephen Warren
2011-12-02 23:07 ` Simon Glass
2011-12-03 0:59 ` Simon Glass
2011-12-05 21:33 ` Stephen Warren
2011-12-05 21:46 ` Simon Glass
2011-12-05 22:15 ` Stephen Warren
2011-12-05 23:35 ` Simon Glass
2011-12-06 0:17 ` Stephen Warren
2011-12-06 1:14 ` Simon Glass
2011-12-06 20:42 ` Stephen Warren
2011-12-06 21:23 ` Simon Glass
[not found] ` <CAPnjgZ1G+mv6uv8SrdMm7DoqFjeeyVHYv6nbQxn9qixfbQMGvA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-07 23:46 ` Stephen Warren
2011-12-07 23:46 ` [U-Boot] " Stephen Warren
2011-12-08 21:24 ` Simon Glass
2011-12-08 21:24 ` [U-Boot] " Simon Glass
[not found] ` <CAPnjgZ0AuBNkYKN0JHQyc7DdzwUSZivR+Dv2BkiFsKQBNMeP8A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-12-12 18:18 ` Stephen Warren
2011-12-12 18:18 ` [U-Boot] " Stephen Warren
2011-12-12 18:42 ` Simon Glass
2011-12-12 18:42 ` [U-Boot] " Simon Glass
2011-11-24 3:54 ` [U-Boot] [PATCH 11/14] tegra: usb: Add USB support to nvidia boards Simon Glass
2011-11-24 3:54 ` [U-Boot] [PATCH 12/14] tegra: usb: Add common USB defines for tegra2 boards Simon Glass
2011-11-24 3:54 ` [U-Boot] [PATCH 13/14] tegra: usb: Enable USB on Seaboard Simon Glass
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4ED3D5DC.10502@nvidia.com \
--to=swarren-ddmlm1+adcrqt0dzr+alfa@public.gmane.org \
--cc=TWarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=albert.u.boot-LhW3hqR2+23R7s880joybQ@public.gmane.org \
--cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
--cc=sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org \
--cc=u-boot-0aAXYlwwYIKGBzrmiIFOJg@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.