u-boot-brain/drivers/core
Stephen Warren 02464e386b fdt: add new fdt address parsing functions
fdtdec_get_addr_size() hard-codes the number of cells used to represent
an address or size in DT. This is incorrect in many cases depending on
the DT binding for a particular node or property (e.g. it is incorrect
for the "reg" property). In most cases, DT parsing code must use the
properties #address-cells and #size-cells to parse addres properties.

This change splits up the implementation of fdtdec_get_addr_size() so
that the core logic can be used for both hard-coded and non-hard-coded
cases. Various wrapper functions are implemented that support cases
where hard-coded cell counts should or should not be used, and where
the client does and doesn't know the parent node ID that contains the
properties #address-cells and #size-cells.

dev_get_addr() is updated to use the new functions.

Core functionality in fdtdec_get_addr_size_fixed() is widely tested via
fdtdec_get_addr_size(). I tested fdtdec_get_addr_size_auto_noparent() and
dev_get_addr() by manually modifying the Tegra I2C driver to invoke them.

Much of the core implementation of fdtdec_get_addr_size_fixed(),
fdtdec_get_addr_size_auto_parent(), and
fdtdec_get_addr_size_auto_noparent() comes from Thierry Reding's
previous commit "fdt: Fix fdtdec_get_addr_size() for 64-bit".

Based-on-work-by: Thierry Reding <treding@nvidia.com>
Cc: Thierry Reding <treding@nvidia.com>
Cc: Simon Glass <sjg@chromium.org>
Cc: Michal Suchanek <hramrach@gmail.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Simon Glass <sjg@chromium.org>
Dropped #define DEBUG at the top of fdtdec.c:
Signed-off-by: Simon Glass <sjg@chromium.org>
2015-09-15 07:57:13 -06:00
..
device-remove.c devres: introduce Devres (Managed Device Resource) framework 2015-08-06 07:44:29 -06:00
device.c fdt: add new fdt address parsing functions 2015-09-15 07:57:13 -06:00
devres.c devres: add debug command to dump device resources 2015-08-06 07:44:29 -06:00
dump.c dm: Move the tree/uclass dump code into its own file 2015-07-21 17:39:22 -06:00
Kconfig dm: core: Add Kconfig for simple bus driver 2015-08-31 07:57:26 -06:00
lists.c of: clean up OF_CONTROL ifdef conditionals 2015-08-18 13:46:05 -04:00
Makefile dm: core: Add Kconfig for simple bus driver 2015-08-31 07:57:26 -06:00
regmap.c dm: Add support for register maps (regmap) 2015-07-21 17:39:23 -06:00
root.c dm: Provide better debugging when a device fails to bind 2015-09-02 21:28:23 -06:00
simple-bus.c dm: Support address translation for simple-bus 2015-08-06 07:44:28 -06:00
syscon-uclass.c dm: core: Add device checking to syscon_get_regmap() 2015-07-21 17:39:33 -06:00
uclass.c dm: Improve handling of a missing uclass 2015-09-02 21:28:23 -06:00
util.c dm: Add base driver model support 2014-03-04 12:15:29 -05:00