Subject: Re: "cell-index" vs. "index" vs. no index in I2C device nodes

From: Timur Tabi <[email-masked]>
Date: Thu, 05 Jun 2008 11:13:23 -0500

Grant Likely wrote:

> That is still Linux internal artifacts leaking out.  Don't encode that
> data into the device tree.

The I2C bus number is *not* an internal artifact.  On Freescale parts, the one
I2C adapter is specifically designated I2C1, and the 2nd one is specifically
designated I2C2.  This is part of the silicon, and so the device tree should
specify it.

> Besides, the whole thing looks bass ackwards and doesn't match the
> Linux driver model.  'busses' should register 'devices'.  'drivers'
> should then bind to those 'devices'.  Where ASoC is concerned, the i2c
> bus should register its own child devices, which includes the codecs,
> and an ASoC codec driver should bind against it.  The fabric driver
> should then use the codec's exported API.

Sorry, I don't really understand that.  The codec driver is just an I2C driver
that registers callbacks with ASoC.  The fabric driver does not know what codec
driver is present.  In many cases, there could be multiple codecs.  Sometimes
they're the same type of codec, just at different I2C addresses.  Sometimes,
they're completely different codecs.  So I could have any number of codec
drivers loaded.  How would I know which exported API to call?

-- 
Timur Tabi
Linux kernel developer at Freescale