
+Stephen
On 7 February 2017 at 08:45, Jean-Jacques Hiblot jjhiblot@ti.com wrote:
In the DTS, the addresses are defined relative to the parent bus. We need to translate them to get the address as seen by the CPU core.
Signed-off-by: Jean-Jacques Hiblot jjhiblot@ti.com
to: sjg@chromium.org
drivers/core/regmap.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
diff --git a/drivers/core/regmap.c b/drivers/core/regmap.c index c68bcba..07a6614 100644 --- a/drivers/core/regmap.c +++ b/drivers/core/regmap.c @@ -70,6 +70,7 @@ int regmap_init_mem(struct udevice *dev, struct regmap **mapp) int addr_len, size_len, both_len; int parent; int len;
int index; parent = dev->parent->of_offset; addr_len = fdt_address_cells(blob, parent);
@@ -86,13 +87,14 @@ int regmap_init_mem(struct udevice *dev, struct regmap **mapp) if (!map) return -ENOMEM;
map->base = fdtdec_get_number(cell, addr_len);
for (range = map->range; count > 0;
count--, cell += both_len, range++) {
range->start = fdtdec_get_number(cell, addr_len);
range->size = fdtdec_get_number(cell + addr_len, size_len);
for (range = map->range, index = 0; count > 0;
count--, cell += both_len, range++, index++) {
fdt_size_t sz;
range->start = fdtdec_get_addr_size_fixed(blob, dev->of_offset,
"reg", index, addr_len, size_len, &sz, true);
range->size = sz; }
map->base = map->range[0].start; *mapp = map;
-- 1.9.1