"cell-index" vs. "index" vs. no index in I2C device nodes

Grant Likely grant.likely at secretlab.ca
Fri Jun 6 02:35:42 EST 2008


On Thu, Jun 5, 2008 at 10:18 AM, Timur Tabi <timur at freescale.com> wrote:
> Grant Likely wrote:
>
>> multifunction at 0 {
>>         #size-cells = <1>;
>>         #address-cells = <1>;
>>         ranges = <0 0xe00000000 0x1000>;
>>         i2c at 0 {
>>                 cell-index = <0>;
>>                 regs = <0 0x100>;
>>         }
>>         i2c at 100 {
>>                 cell-index = <1>;
>>                 regs = <0x100 0x100>;
>>         }
>> }
>> multifunction at 1 {
>>         #size-cells = <1>;
>>         #address-cells = <1>;
>>         ranges = <0 0xe10000000 0x1000>;
>>         i2c at 0 {
>>                 cell-index = <0>;
>>                 regs = <0 0x100>;
>>         }
>>         i2c at 100 {
>>                 cell-index = <1>;
>>                 regs = <0x100 0x100>;
>>         }
>> }
>
> What resources are being shared in this example?  Each I2C device has its own
> address ranges.  I don't see how cell-index provides any useful info here.

As I said; *assume* that the i2c devices have shared resources.  I
didn't explicitly show them in the example, but assume that there are
shared registers in the multifunction nodes.

cell-index provides details about which bits in the shared registers
belong to the device, but since there are 2 identical multifunction
devices in the system there are 2 sets of shared regs.  You cannot now
use the values 0, 1, 2 and 3 for each cell index because '2' and '3'
have no valid meaning on how to reference the shared resource.  So,
cell-index isn't useful for enumerating the i2c busses at the system
level.

Cheers,
g.

-- 
Grant Likely, B.Sc., P.Eng.
Secret Lab Technologies Ltd.



More information about the Linuxppc-dev mailing list