summaryrefslogtreecommitdiff
path: root/include/libfdt.h
Commit message (Collapse)AuthorAgeLines
* libfdt: Add fdt_next_subnode() to permit easy subnode iterationSimon Glass2013-05-14-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Iterating through subnodes with libfdt is a little painful to write as we need something like this: for (depth = 0, count = 0, offset = fdt_next_node(fdt, parent_offset, &depth); (offset >= 0) && (depth > 0); offset = fdt_next_node(fdt, offset, &depth)) { if (depth == 1) { /* code body */ } } Using fdt_next_subnode() we can instead write this, which is shorter and easier to get right: for (offset = fdt_first_subnode(fdt, parent_offset); offset >= 0; offset = fdt_next_subnode(fdt, offset)) { /* code body */ } Also, it doesn't require two levels of indentation for the loop body. Signed-off-by: Simon Glass <sjg@chromium.org> (Cherry-picked from dtc commit 4e76ec79) Acked-by: Gerald Van Baren <vanbaren@cideas.com>
* Fix typoFrançois Revol2013-05-10-1/+1
| | | | | | Ref: DTC commit cc11e522 Signed-off-by: François Revol <revol@free.fr>
* Export fdt_stringlist_contains()Simon Glass2013-05-10-0/+14
| | | | | | | | | This function is useful outside libfdt, so export it. Ref: DTC commit b7aa300e Signed-off-by: Simon Glass <sjg@chromium.org> Acked-by: David Gibson <david@gibson.dropbear.id.au>
* libfdt: update from upstream dtc commit 142419eKim Phillips2013-02-07-16/+16
| | | | | | | commit 142419e "dtc/libfdt: sparse fixes", for u-boot's libfdt copy. Signed-off-by: Kim Phillips <kim.phillips@freescale.com> Cc: Jerry Van Baren <gvb.uboot@gmail.com>
* libfdt: Add helper function to create a trivial, empty treeGerald Van Baren2012-10-15-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | The libfdt read/write functions are now usable enough that it's become a moderately common pattern to use them to build and manipulate a device tree from scratch. For example, we do so ourself in our rw_tree1 testcase, and qemu is starting to use this model when building device trees for some targets such as e500. However, the read/write functions require some sort of valid tree to begin with, so this necessitates either having a trivial canned dtb to begin with or, more commonly, creating an empty tree using the serial-write functions first. This patch adds a helper function which uses the serial-write functions to create a trivial, empty but complete and valid tree in a supplied buffer, ready for manipulation with the read/write functions. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> From git://git.jdl.com/software/dtc.git patch hash be6026838 with adaptations to include/libfdt.h and lib/libfdt/Makefile for the U-Boot environment. Signed-off-by: Gerald Van Baren <vanbaren@cideas.com>
* libfdt: Add helpers for 64-bit integer propertiesDavid Gibson2012-10-15-23/+170
| | | | | | | | | | | | | | | In device trees in the world, properties consisting of a single 64-bit integer are not as common as those consisting of a single 32-bit, cell sized integer, but they're common enough that they're worth including convenience functions for. This patch adds helper wrappers of fdt_setprop_inplace(), fdt_setprop() and fdt_appendprop() for handling 64-bit integer quantities in properties. For better consistency with the names of these new *_u64() functions we also add *_u32() functions as alternative names for the existing *_cell() functions handling 32-bit integers. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
* libfdt: Add support for appending the values to a existing propertyMinghuan Lian2012-10-15-0/+95
| | | | | | | | | | | Some properties may contain multiple values, these values may need to be added to the property respectively. this patch provides this functionality. The main purpose of fdt_append_prop() is to append the values to a existing property, or create a new property if it dose not exist. Signed-off-by: Minghuan Lian <Minghuan.Lian@freescale.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
* libfdt: Implement property iteration functionsDavid Gibson2011-07-14-0/+103
| | | | | | | | | | | | | | | | | | | | | | | | | | | For ages, we've been talking about adding functions to libfdt to allow iteration through properties. So, finally, here are some. I got bogged down on this for a long time because I didn't want to expose offsets directly to properties to the callers. But without that, attempting to make reasonable iteration functions just became horrible. So eventually, I settled on an interface which does now expose property offsets. fdt_first_property_offset() and fdt_next_property_offset() are used to step through the offsets of the properties starting from a particularly node offset. The details of the property at each offset can then be retrieved with either fdt_get_property_by_offset() or fdt_getprop_by_offset() which have interfaces similar to fdt_get_property() and fdt_getprop() respectively. No explicit testcases are included, but we do use the new functions to reimplement the existing fdt_get_property() function. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> This was extracted from the DTC commit: 73dca9ae0b9abe6924ba640164ecce9f8df69c5a Mon Sep 17 00:00:00 2001 Signed-off-by: Gerald Van Baren <vanbaren@cideas.com>
* libfdt: Fix C++ compile-time cast error on gnu 4.2.1Laurent Gregoire2009-04-01-1/+1
| | | | | | | Allow the inclusion of libfdt.h in C++ source. Signed-off-by: Laurent Gregoire <laurent.gregoire@tomtom.com> Acked-by: David Gibson <david@gibson.dropbear.id.au>
* libfdt: Fix error in documentation for fdt_get_alias_namelen()Gerald Van Baren2008-10-04-1/+1
| | | | | | | | Oops, screwed up the function name in the documenting comment for this function. Trivial correction in this patch. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Acked-by: Gerald Van Baren <vanbaren@cideas.com>
* libfdt: Add function to explicitly expand aliasesDavid Gibson2008-10-02-0/+26
| | | | | | | | | | Kumar has already added alias expansion to fdt_path_offset(). However, in some circumstances it may be convenient for the user of libfdt to explicitly get the string expansion of an alias. This patch adds a function to do this, fdt_get_alias(), and uses it to implement fdt_path_offset(). Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
* Fix an overflow case in fdt_offset_ptr() detected by GCC 4.3.Jon Loeliger2008-10-01-1/+1
| | | | | | | | | | | | | | | Using Gcc 4.3 detected this problem: ../dtc/libfdt/fdt.c: In function 'fdt_next_tag': ../dtc/libfdt/fdt.c:82: error: assuming signed overflow does not occur when assuming that (X + c) < X is always false To fix the problem, treat the offset as an unsigned int. The problem report and proposed fix were provided by Steve Papacharalambous <stevep@freescale.com>. Signed-off-by: Jon Loeliger <jdl@freescale.com>
* libfdt: Implement fdt_get_property_namelen() and fdt_getprop_namelen()David Gibson2008-08-24-0/+30
| | | | | | | | | | | | | | | | | | | | | | As well as fdt_subnode_offset(), libfdt includes an fdt_subnode_offset_namelen() function that takes the subnode name to look up not as a NUL-terminated string, but as a string with an explicit length. This can be useful when the caller has the name as part of a longer string, such as a full path. However, we don't have corresponding 'namelen' versions for fdt_get_property() and fdt_getprop(). There are less obvious use cases for these variants on property names, but there are circumstances where they can be useful e.g. looking up property names which need to be parsed from a longer string buffer such as user input or a configuration file, or looking up an alias in a path with IEEE1275 style aliases. So, since it's very easy to implement such variants, this patch does so. The original NUL-terminated variants are, of course, implemented in terms of the namelen versions. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
* libfdt: Improve documentation in libfdt.hWolfram Sang2008-08-24-14/+14
| | | | | | | Fix a few typos and mistakes. Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> Acked-by: David Gibson <david@gibson.dropbear.id.au>
* dtc: Enable and fix -Wcast-qual warningsDavid Gibson2008-08-24-4/+4
| | | | | | | | | | | | | Enabling -Wcast-qual warnings in dtc shows up a number of places where we are incorrectly discarding a const qualification. There are also some places where we are intentionally discarding the 'const', and we need an ugly cast through uintptr_t to suppress the warning. However, most of these are pretty well isolated with the *_w() functions. So in the interests of maximum safety with const qualifications, this patch enables the warnings and fixes the existing complaints. Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Acked-by: Gerald Van Baren <vanbaren@cideas.com>
* Big white-space cleanup.Wolfgang Denk2008-05-21-11/+11
| | | | | | | | | | | This commit gets rid of a huge amount of silly white-space issues. Especially, all sequences of SPACEs followed by TAB characters get removed (unless they appear in print statements). Also remove all embedded "vim:" and "vi:" statements which hide indentation problems. Signed-off-by: Wolfgang Denk <wd@denx.de>
* libfdt: Add and use a node iteration helper function.David Gibson2008-03-18-0/+6
| | | | | | | | | This patch adds an fdt_next_node() function which can be used to iterate through nodes of the tree while keeping track of depth. This function is used to simplify the iteration code in a lot of other functions, and is also exported for use by library users. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
* libfdt: Add fdt_set_name() functionDavid Gibson2008-03-18-0/+26
| | | | | | | | This patch adds an fdt_set_name() function to libfdt, mirroring fdt_get_name(). This is a r/w function which alters the name of a given device tree node. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
* libfdt: Add more documentation (patch the seventh)David Gibson2008-01-08-0/+219
| | | | | | | | This patch adds more documenting comments to libfdt.h. Specifically, these document the read/write functions (not including fdt_open_into() and fdt_pack(), for now). Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
* libfdt: Add more documentation (patch the sixth)David Gibson2008-01-08-0/+104
| | | | | | | This patch adds some more documenting comments to libfdt.h. Specifically this documents all the write-in-place functions. Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
* Fix compile problem introduced by "cleanup" commit 3dfd708cWolfgang Denk2008-01-02-2/+2
| | | | Signed-off-by: Wolfgang Denk <wd@denx.de>
* Minor coding style cleanup.Wolfgang Denk2008-01-02-2/+2
| | | | Signed-off-by: Wolfgang Denk <wd@denx.de>
* Update libfdt from device tree compiler (dtc)Kumar Gala2007-11-21-69/+642
| | | | | | | Update libfdt to commit 8eaf5e358366017aa2e846c5038d1aa19958314e from the device tree compiler (dtc) project. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
* Removed some nonused fdt functions and moved fdt_find_and_setprop out of libfdtKumar Gala2007-11-21-6/+0
| | | | | | | | | | | | | | Removed: fdt_node_is_compatible fdt_find_node_by_type fdt_find_compatible_node To ease merge of newer libfdt as we aren't using them anywhere at this time. Also moved fdt_find_and_setprop out of libfdt into fdt_support.c for the same reason. Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
* libfdt: add convenience function fdt_find_and_setprop()Grant Likely2007-09-06-0/+2
| | | | | | | Given the path to a node, fdt_find_and_setprop() allows a property value to be set directly. Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
* Add fdt_find_node_by_type() and fdt_find_compatible_node() to LIBFDTGerald Van Baren2007-08-10-0/+6
| | | | | Signed-off-by: Wolfgang Grandegger <wg@grandegger.com> Acked-by: Gerald Van Baren <vanbaren@cideas.com>
* Replace fdt_node_offset() with fdt_find_node_by_path().Gerald Van Baren2007-08-10-1/+1
| | | | | | | | The new name matches more closely the kernel's name, which is also a much better description. Signed-off-by: Wolfgang Grandegger <wg@grandegger.com> Acked-by: Gerald Van Baren <vanbaren@cideas.com>
* Add some utilities to manipulate the reserved memory map.Gerald Van Baren2007-04-14-0/+5
|
* libfdt: Make fdt_check_header() publicGerald Van Baren2007-04-06-2/+5
| | | | | | | Changed _fdt_check_header() to fdt_check_header() and made it part of the interface - it is a useful routine. Also did some asthetics cleanup to the include files (headers).
* Minor cleanup.Wolfgang Denk2007-04-04-5/+5
|
* libfdt: Enhanced and published fdt_next_tag()Gerald Van Baren2007-03-31-0/+3
| | | | | | | Enhanced the formerly private function _fdt_next_tag() to allow stepping through the tree, used to produce a human-readable dump, and made it part of the published interface. Also added some comments.
* libfdt: Import libfdt source (1 of 2)Gerald Van Baren2007-03-31-0/+135
This adds the applicable libfdt source files (unmodified) and a README to explain where the source came from.