mirror of
https://github.com/AsahiLinux/u-boot
synced 2025-03-16 23:07:00 +00:00
regmap: use fdt address translation
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>
This commit is contained in:
parent
d666558042
commit
5c8ef35980
1 changed files with 8 additions and 6 deletions
|
@ -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_of_offset(dev->parent);
|
||||
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;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue