Passing I2C platform_data from device tree to i2c driver

2 messages, 2 authors, 2008-11-06 · open the first message on its own page

Passing I2C platform_data from device tree to i2c driver

From: Nate Case <hidden>
Date: 2008-11-03 23:54:52

Is there a plan for providing a way to set pdata for an I2C chip in a
way that could be shared across all OF platforms?

For example, the pca953x I2C GPIO driver requires that pdata != NULL so
it can get the gpio_base field.  It can also take in a default 'invert'
value to initialize a chip register with.  Currently, there's no obvious
way to get this to work on PowerPC without hardcoding things in the
arch/powerpc/platforms/*.c file.

On ARM platforms, they currently handle this by declaring
I2C_BOARD_INFO() in their board-specific files.  For OF platforms, I
think the obvious choice would be to specify platform data in the device
tree.  We already register I2C devices automatically as found in the
device tree (see drivers/of/of_i2c.c), but this registration method does
not provide any way to set platform_data.

Of course, I could put some code in my board specific file to parse the
device tree properties and set pdata accordingly, but this hardly seems
ideal.  After all, the device tree bindings -> pdata translation itself
does not have to be board-specific.

Basically, I think we need to have some common code somewhere that does
the task of populating platform_data for a specific I2C chip based on a
device tree node -- similarly to how we register the I2C devices
already.  Is anyone working on this?  Did anyone have anything else in
mind?

-- 
Nate Case [off-list ref]

Re: Passing I2C platform_data from device tree to i2c driver

From: Scott Wood <hidden>
Date: 2008-11-06 18:55:31

On Mon, Nov 03, 2008 at 05:54:46PM -0600, Nate Case wrote:
Of course, I could put some code in my board specific file to parse the
device tree properties and set pdata accordingly, but this hardly seems
ideal.  After all, the device tree bindings -> pdata translation itself
does not have to be board-specific.

Basically, I think we need to have some common code somewhere that does
the task of populating platform_data for a specific I2C chip based on a
device tree node -- similarly to how we register the I2C devices
already.  Is anyone working on this?  Did anyone have anything else in
mind?
It should be fairly straightforward to add an optional function pointer to
the i2c device table that turns the device tree properties into platform
data.

-Scott
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help