[U-Boot] DM: Problem with DT bus translation dev_get_addr()
Stefan Roese
sr at denx.de
Tue Sep 1 08:25:30 CEST 2015
Hi Simon,
I'm currently enabling DM support for the Marvell MVEBU SoC's I've
been working lately on (Armada XP and 38x right now). A problem I'm
facing here is the bus translation, as this is quite complex for these
SoC's. With multiple levels of translation ranges (multiple simple-bus
nodes to walk through).
The current implementation in dev_get_addr() does not work. This has
2 reasons:
a) It only translates 1 simple-bus node - we need to walk the
complete DT to get the correct address.
b) The "ranges" property can have different sizes for "address"
and "size" in all these busses / nodes. And also multiple
ranges tuples are allowed and used in these dts files.
Of course this can be solved in the current implementation (device.c /
simple_bus.c). But especially b) is not that trivial to solve in
a generic way.
So my main question is, why don't you use fdt_translate_address()
from fdt_support.c instead of implementing your own translation
function simple_bus_translate()? Is this a size question because
this may be used in SPL as well?
Thanks,
Stefan
More information about the U-Boot
mailing list