Multiple ic2 muxes in a device tree

Grant Likely grant.likely at secretlab.ca
Wed May 11 07:31:54 EST 2011


On Tue, May 10, 2011 at 11:00 PM, Mitch Bradley <wmb at firmworks.com> wrote:
> I don't know much about how Linux handles i2c hierarchies, but I can speak with some authority about how it the device tree "should" be structured in order to conform to the principles already established for other buses.
>
> Note that *each* pca9547 results in a subtree of the form:
[...]
> I understand the temptation to collapse the hierarchy by combining the mux node with its subordinate buses (using 2 address cells), but in my experience, shortcuts like that have not aged well.

... and we should defer to your wisdom in this regard.  :-)

>  The case where a single-level hierarchy would work would be a simple i2c-to-i2c bridge with only one child bus.  In this case, the existence of multiple independent child buses argues for the two-level hierarchy, satisfying the following requirements:
>
> a) From the standpoint of a parent bus "looking down" at a pca9547, the pca9547 appears to be a single device at a well-defined address.
>
> b) From the standpoint of a child device "looking up" at a pca9547, that child is attached to a specific I2C bus with a standard one-cell I2C address space.
>
> Again, though, I'm unsure that this "correct" hierarchy is compatible with the expectations of Linux drivers.

Since Linux doesn't do any of this yet; I think we can make sure Linux
implements something sane.

g.


More information about the devicetree-discuss mailing list