devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
  • * [PATCH v2 3/6] fdt: Add fdtdec functions to read byte array
           [not found] <1323208489-17830-1-git-send-email-sjg@chromium.org>
           [not found] ` <1323208489-17830-1-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
    @ 2011-12-06 21:54 ` Simon Glass
      1 sibling, 0 replies; 3+ messages in thread
    From: Simon Glass @ 2011-12-06 21:54 UTC (permalink / raw)
      To: U-Boot Mailing List
      Cc: Anton Staff, Jerry Van Baren, Tom Warren, Devicetree Discuss
    
    From: Anton Staff <robotboy@chromium.org>
    
    Sometimes we don't need a full cell for each value. This provides
    a simple function to read a byte array, both with and without
    copying it.
    
    Signed-off-by: Simon Glass <sjg@chromium.org>
    ---
    Changes in v2:
    - Use correct name for get_prop_check_min_len() function
    
     include/fdtdec.h |   32 ++++++++++++++++++++++++++++++++
     lib/fdtdec.c     |   24 ++++++++++++++++++++++++
     2 files changed, 56 insertions(+), 0 deletions(-)
    
    diff --git a/include/fdtdec.h b/include/fdtdec.h
    index a8911b5..d345e7d 100644
    --- a/include/fdtdec.h
    +++ b/include/fdtdec.h
    @@ -227,3 +227,35 @@ int fdtdec_decode_gpio(const void *blob, int node, const char *prop_name,
      * @return 0 if all ok or gpio was FDT_GPIO_NONE; -1 on error
      */
     int fdtdec_setup_gpio(struct fdt_gpio_state *gpio);
    +
    +/**
    + * Look up a property in a node and return its contents in a byte
    + * array of given length. The property must have at least enough data for
    + * the array (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_MISSING if the property is not found,
    + *		or -FDT_ERR_BADLAYOUT if not enough data
    + */
    +int fdtdec_get_byte_array(const void *blob, int node, const char *prop_name,
    +		u8 *array, int count);
    +
    +/**
    + * Look up a property in a node and return a pointer to its contents as a
    + * byte array of given length. The property must have at least enough data
    + * for the array (count bytes). It may have more, but this will be ignored.
    + * The data is not copied.
    + *
    + * @param blob		FDT blob
    + * @param node		node to examine
    + * @param prop_name	name of property to find
    + * @param count		number of array elements
    + * @return pointer to byte array if found, or NULL if the property is not
    + *		found or there is not enough data
    + */
    +const u8 *fdtdec_locate_byte_array(const void *blob, int node,
    +			     const char *prop_name, int count);
    diff --git a/lib/fdtdec.c b/lib/fdtdec.c
    index 931b4ce..696e57c 100644
    --- a/lib/fdtdec.c
    +++ b/lib/fdtdec.c
    @@ -301,3 +301,27 @@ int fdtdec_setup_gpio(struct fdt_gpio_state *gpio)
     		return -1;
     	return 0;
     }
    +
    +int fdtdec_get_byte_array(const void *blob, int node, const char *prop_name,
    +		u8 *array, int count)
    +{
    +	const u8 *cell;
    +	int err;
    +
    +	cell = get_prop_check_min_len(blob, node, prop_name, count, &err);
    +	if (!err)
    +		memcpy(array, cell, count);
    +	return err;
    +}
    +
    +const u8 *fdtdec_locate_byte_array(const void *blob, int node,
    +			     const char *prop_name, int count)
    +{
    +	const u8 *cell;
    +	int err;
    +
    +	cell = get_prop_check_min_len(blob, node, prop_name, count, &err);
    +	if (err)
    +		return NULL;
    +	return cell;
    +}
    -- 
    1.7.3.1
    
    ^ permalink raw reply related	[flat|nested] 3+ messages in thread

  • end of thread, other threads:[~2011-12-06 21:54 UTC | newest]
    
    Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <1323208489-17830-1-git-send-email-sjg@chromium.org>
         [not found] ` <1323208489-17830-1-git-send-email-sjg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>
    2011-12-06 21:54   ` [PATCH v2 1/6] tegra: fdt: Add keyboard controller definition Simon Glass
    2011-12-06 21:54   ` [PATCH v2 2/6] tegra: fdt: Add keyboard definitions for Seaboard Simon Glass
    2011-12-06 21:54 ` [PATCH v2 3/6] fdt: Add fdtdec functions to read byte array Simon Glass
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox;
    as well as URLs for NNTP newsgroup(s).