On 08/24/2012 02:07 PM, David Miller wrote:
> From: Stephen Warren <[email protected]>
> Date: Fri, 24 Aug 2012 12:56:05 -0600
> 
>> In the I2C case, the address spaces are disjoint, so there's never any
>> mapping between them, so there's no need for ranges.
>>
>> Any time the child address space is intended to be part of the parent's
>> address space, I believe ranges is supposed to be specified, perhaps
>> even mandatory, even if the translation is 1:1.

Yes, it's mandatory (even if the kernel lets you get away without it for
the sake of some broken Apple firmware, IIRC).  If the translation is an
identity map you can use an empty "ranges;".

> Regardless, you really can't just generically translate ranges
> in some universal way and expect it to work in all cases.
> 
> You need bus specific drivers to deal with various special
> cases.
> 
> See the *_map() methods implemented in:
> 
>       arch/sparc/kernel/of_device_64.c
> 
> for example.

We don't expect it to work in all cases.  We expect it to work if the
bus node is on the whitelist for which we create devices on
platform_bus, there's a platform driver that binds against it, and that
driver calls of_iomap() or equivalent because the binding says that reg
refers to something that is memory mapped.

-Scott


_______________________________________________
devicetree-discuss mailing list
[email protected]
https://lists.ozlabs.org/listinfo/devicetree-discuss

Reply via email to