No description
Find a file
Simon Glass 8cb3896358 Adjust libfdt.h to work with swig
There are a few places where libfdt.h cannot be used as is with swig:

- macros like fdt_totalsize() have to be defined as C declarations
- fdt_offset_ptr() and fdt_getprop_namelen() need special treatment due to
    a TODO in the wrapper for fdt_getprop(). However they are not useful to
    Python so can be removed

Add #ifdefs to work around these problem.

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2017-03-21 16:21:58 +11:00
Documentation manual: Fix typo it -> in 2017-01-30 12:18:21 +11:00
libfdt Adjust libfdt.h to work with swig 2017-03-21 16:21:58 +11:00
pylibfdt Add an initial Python library for libfdt 2017-03-21 16:21:58 +11:00
scripts dtc: Add maintainer script for signing and upload to kernel.org 2014-11-12 14:27:02 +11:00
tests Add tests for pylibfdt 2017-03-21 16:21:58 +11:00
.gitignore .gitignore: Add rule for *.patch 2013-01-27 14:21:44 -06:00
.travis.yml Add simple .travis.yml 2015-07-02 12:36:12 +10:00
checks.c checks: Warn on node name unit-addresses with '0x' or leading 0s 2017-03-21 14:49:04 +11:00
convert-dtsv0-lexer.l Fix assorted sparse warnings 2017-03-06 12:08:53 +11:00
data.c Fix assorted sparse warnings 2017-03-06 12:08:53 +11:00
dtc-lexer.l Clean up gcc attributes 2017-03-06 12:06:15 +11:00
dtc-parser.y dtc: Fix NULL pointer use in dtlabel + dtref case 2017-01-31 09:50:22 +11:00
dtc.c Fix assorted sparse warnings 2017-03-06 12:08:53 +11:00
dtc.h checks: Add bus checks for PCI buses 2017-03-21 14:45:37 +11:00
dtdiff dtc: Add code to make diffing trees easier 2010-11-13 15:47:29 -06:00
fdtdump.c Fix assorted sparse warnings 2017-03-06 12:08:53 +11:00
fdtget.c fdtget: Use @return to document the return value 2017-03-06 14:19:26 +11:00
fdtput.c fdtput: Remove star from value_len documentation 2017-03-06 14:19:26 +11:00
flattree.c dtc: Simplify asm_emit_string() implementation 2017-03-06 14:19:26 +11:00
fstree.c Rename boot_info 2016-12-09 16:30:43 +11:00
GPL dtc: Remove redundant copy of the GPL 2007-06-25 21:43:11 -05:00
livetree.c Fix assorted sparse warnings 2017-03-06 12:08:53 +11:00
Makefile Add an initial Python library for libfdt 2017-03-21 16:21:58 +11:00
Makefile.convert-dtsv0 Implement and use an xstrdup() function 2008-10-03 11:12:33 -05:00
Makefile.dtc Implement and use an xstrdup() function 2008-10-03 11:12:33 -05:00
Makefile.utils Add fdtput utility to write property values to a device tree 2012-01-21 15:08:39 -06:00
README Mention pylibfdt in the documentation 2017-03-21 16:21:58 +11:00
README.license dtc/libfdt: Add README clarifying licensing 2008-01-04 08:37:36 -06:00
srcpos.c dtc: pos parameter to srcpos_string() can't be NULL 2017-02-08 17:39:36 +11:00
srcpos.h Clean up gcc attributes 2017-03-06 12:06:15 +11:00
TODO dtc: Update TODO files 2007-12-19 08:20:26 -06:00
treesource.c Fix assorted sparse warnings 2017-03-06 12:08:53 +11:00
util.c Fix assorted sparse warnings 2017-03-06 12:08:53 +11:00
util.h Clean up gcc attributes 2017-03-06 12:06:15 +11:00

The source tree contains the Device Tree Compiler (dtc) toolchain for
working with device tree source and binary files and also libfdt, a
utility library for reading and manipulating the binary format.

DTC and LIBFDT are maintained by:

David Gibson <david@gibson.dropbear.id.au>
Jon Loeliger <jdl@jdl.com>


Python library
--------------

A Python library is also available. To build this you will need to install
swig and Python development files. On Debian distributions:

   sudo apt-get install swig python-dev

The library provides an Fdt class which you can use like this:

$ PYTHONPATH=../pylibfdt python
>>> import libfdt
>>> fdt = libfdt.Fdt(open('test_tree1.dtb').read())
>>> node = fdt.path_offset('/subnode@1')
>>> print node
124
>>> prop_offset = fdt.first_property_offset(node)
>>> prop = fdt.get_property_by_offset(prop_offset)
>>> print '%s=%r' % (prop.name, prop.value)
compatible=bytearray(b'subnode1\x00')
>>> print '%s=%s' % (prop.name, prop.value)
compatible=subnode1
>>> node2 = fdt.path_offset('/')
>>> print fdt.getprop(node2, 'compatible')
test_tree1

You will find tests in tests/pylibfdt_tests.py showing how to use each
method. Help is available using the Python help command, e.g.:

    $ cd pylibfdt
    $ python -c "import libfdt; help(libfdt)"

If you add new features, please check code coverage:

    $ sudo apt-get install python-pip python-pytest
    $ sudo pip install coverage
    $ cd tests
    $ coverage run pylibfdt_tests.py
    $ coverage html
    # Open 'htmlcov/index.html' in your browser


More work remains to support all of libfdt, including access to numeric
values.


Mailing list
------------
The following list is for discussion about dtc and libfdt implementation
mailto:devicetree-compiler@vger.kernel.org

Core device tree bindings are discussed on the devicetree-spec list:
mailto:devicetree-spec@vger.kernel.org