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

David Gibson dwg at au1.ibm.com
Fri Jun 6 13:37:56 EST 2008


On Fri, Jun 06, 2008 at 04:40:20AM +0200, Segher Boessenkool wrote:
>>>> From a device tree perspective, index and cell-index are both
>>> incorrect.  The IIC macros don't share register blocks with anything,
>>> are enumerated as unique instances per macro in the device tree, and
>>> should be able to be distinguished by "regs" and/or unit address.
>>>
>>> Does anyone disagree with that?
>>
>> Hear, hear.
>
> x2.
>
>> Aliases can also provide a reasonable way of enumerating devices, if
>> "reg" isn't suitable on its own.
>
> Yes.  In almost all cases, drivers and subsystems do not need this at
> all though.  In OF, one device points to another by putting the phandle
> of that pointed-to device in some property (and buses are represented
> by their parent bridge).  If the Linux subsystem wants to use an integer
> for distinguishing between its various buses, that's fine, but it can
> just make up these numbers -- the numbers themselves have no actual
> meaning, only the relationships expressed via those numbers do.

That's true.  However if all the system documentation uses a
particular numbering of the devices, it's convenient if we can use the
same numbering in Linux.

> In a few cases, particularly where those numbers are user-visible, like
> in ethN, the aliases construct is a good solution.  If a  
> driver/subsystem
> is relying on the aliases though, it should document this in a  
> (platform?)
> binding -- and it would better have a very good reason for it!

Incidentally, another word on "cell-index".  Even for its intended
purpose, this was always a compromise.  The strictly correct way to
handle shared registers like this is for the node representing the
shared resource to have a table of phandles pointing back to the
devices controlled by the shared registers from which the appropriate
indices can derived.

On at least some 4xx chips, however, the shared resources are
scattered around various places, but all use the same device
numbering.  Therefore it seemed expedient to encode that numbering in
a single place - 'cell-index' - rather than having several such
tables.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson



More information about the Linuxppc-dev mailing list