On Wed, 12 Jun 2013 00:34:14 +0200, Arnd Bergmann <a...@arndb.de> wrote: > On Tuesday 11 June 2013 15:50:23 Jason Gunthorpe wrote: > > So, I think we can/have agree that the ranges in the FDT should > > reflect the bootloader's settings, and if the ranges is missing an > > element it means the bootloader didn't set it up. > > > > A compatible bootloader should dump the entire mbus register table > > into the ranges. The address encoding is such that we can represent > > every mbus window entry in ranges. If no bootloader support is present > > then the ranges value is forced into the mbus windows anyhow. > > > > If there isn't a ranges entry, but there is a child that requires it > > (how do we figure this out?) > > I think we have to walk the entire tree of devices underneath mbus, > at least any device node that has a 'reg' property, following children > of any device node with a 'ranges' property. We might need to > add a variant of of_get_address() that does a partial translation > up to a given node (the mbus) instead of all the way to the root.
I think we should have almost everything needed already to do this. of_bus allows arbitrary mapping code to be used at any stage in the translation. We might need to add some glue so that of_busses[] can be assembled by the linker to allow an mbus of_bus stanza to live outside of drivers/of/address.c _______________________________________________ devicetree-discuss mailing list devicetree-discuss@lists.ozlabs.org https://lists.ozlabs.org/listinfo/devicetree-discuss