Add a way to access this information from Python. Signed-off-by: Simon Glass <sjg@xxxxxxxxxxxx> --- pylibfdt/libfdt.i | 34 ++++++++++++++++++++++++++++++++++ tests/pylibfdt_tests.py | 8 ++++++++ 2 files changed, 42 insertions(+) diff --git a/pylibfdt/libfdt.i b/pylibfdt/libfdt.i index e837168..c0cd096 100644 --- a/pylibfdt/libfdt.i +++ b/pylibfdt/libfdt.i @@ -313,6 +313,25 @@ class Fdt: """ return check_err(fdt_size_dt_struct(self._fdt)) + def num_mem_rsv(self, quiet=()): + """Return the number of memory reserve-map records + + Returns: + Number of memory reserve-map records + """ + return check_err(fdt_num_mem_rsv(self._fdt), quiet) + + def get_mem_rsv(self, index, quiet=()): + """Return the indexed memory reserve-map record + + Args: + index: Record to return (0=first) + + Returns: + Number of memory reserve-map records + """ + return check_err(fdt_get_mem_rsv(self._fdt, index), quiet) + def subnode_offset(self, parentoffset, name, quiet=()): """Get the offset of a named subnode @@ -618,6 +637,21 @@ typedef int fdt32_t; %apply int *depth { int *depth }; +/* typemaps for fdt_get_mem_rsv */ +%typemap(in, numinputs=0) uint64_t * (uint64_t temp) { + $1 = &temp; +} + +%typemap(argout) uint64_t * { + PyObject *val = PyLong_FromUnsignedLong(*arg$argnum); + if (!result) { + if (PyTuple_GET_SIZE(resultobj) == 0) + resultobj = val; + else + resultobj = SWIG_Python_AppendOutput(resultobj, val); + } +} + /* We have both struct fdt_property and a function fdt_property() */ %warnfilter(302) fdt_property; diff --git a/tests/pylibfdt_tests.py b/tests/pylibfdt_tests.py index 8316499..ca27b0b 100644 --- a/tests/pylibfdt_tests.py +++ b/tests/pylibfdt_tests.py @@ -369,5 +369,13 @@ class PyLibfdtTests(unittest.TestCase): self.get_prop("prop-uint64").as_uint64()) self.assertEquals(-2, self.get_prop("prop-int64").as_int64()) + def testReserveMap(self): + """Test that we can access the memory reserve map""" + self.assertEquals(2, self.fdt.num_mem_rsv()) + self.assertEquals([ 0xdeadbeef00000000, 0x100000], + self.fdt.get_mem_rsv(0)) + self.assertEquals([123456789, 010000], self.fdt.get_mem_rsv(1)) + + if __name__ == "__main__": unittest.main() -- 2.17.0.441.gb46fe60e1d-goog -- To unsubscribe from this list: send the line "unsubscribe devicetree-compiler" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html