On 6/12/08, Jon Smirl jonsmirl@gmail.com wrote:
- Even more frustrating is the fact that the CS4270 driver is an I2C
- driver, so it's probed via the I2C bus. We need to update the powerpc
- platform to initialize client->dev->archdata.of_node to point to the
- device node. Then the CS4270 driver can get its own clock rate.
That is easy to fix in drivers/of/of_i2c.c, add... info.platform_data = node;
The node will be in client->dev.platform_data
Thinking about this for a minute, it is not what you want. Adding code like this will make the codec driver platform specific. Codecs are platform drivers, not of_platform drivers specific since they are supposed to be arch independent.
Instead the codec should make a module parameter for the clock rate. On platforms without a device tree you would set the clock rate on the load module command line or some other way. With device trees the ssi driver can stuff the clock rate into the module parameter after the module is loaded.
Now I just have to remember how to access a module parameter from code inside the kernel. I think there is a way to access the names of the modules parameters. Code in the ssi driver (or a library) could match up entries in the devices tree to parameter names. That will let one piece of code in ssi load different modules with varying parameters.
Is there a better way to get parameters to cross platform codec drivers?
-- Jon Smirl jonsmirl@gmail.com