[patch/rft 4/4] rtc-ds1307 platform update, powerpc mpc834x_itx and mpc8313_rdb
Grant Likely
grant.likely at secretlab.ca
Tue May 15 03:44:07 EST 2007
On 5/14/07, David Brownell <david-b at pacbell.net> wrote:
> Update powerpc platforms to support new-style rtc-ds1307 driver:
>
> - Make i2c-mpc driver use numbered adapter;
> - Update boards identified by defconfig to list a ds1339 device:
> * mpc834x_itx
> * mpc8313_rdb
>
> Didn't update the pasemi reference board; public info doesn't say
> which chip it uses.
>
> UNTESTED
>
> Signed-off-by: David Brownell <dbrownell at users.sourceforge.net>
> ---
> NOTE: cc'd the relevant powerpc maintainers lists; patches 1-3
> will be archived in the rtc and i2c lists. I'd like to see these
> get tested/fixed so that the rtc-ds1307 driver can swich completely
> to use the new-style I2c driver model.
>
> arch/powerpc/platforms/83xx/mpc8313_rdb.c | 11 +++++++++++
> arch/powerpc/platforms/83xx/mpc834x_itx.c | 12 ++++++++++++
> drivers/i2c/busses/i2c-mpc.c | 3 ++-
> 3 files changed, 25 insertions(+), 1 deletion(-)
>
> --- at91.orig/drivers/i2c/busses/i2c-mpc.c 2007-05-10 00:48:22.000000000 -0700
> +++ at91/drivers/i2c/busses/i2c-mpc.c 2007-05-13 10:56:52.000000000 -0700
> @@ -280,6 +280,7 @@ static struct i2c_adapter mpc_ops = {
> .owner = THIS_MODULE,
> .name = "MPC adapter",
> .id = I2C_HW_MPC107,
> + /* .nr = 0, */
> .algo = &mpc_algo,
> .class = I2C_CLASS_HWMON,
> .timeout = 1,
> @@ -329,7 +330,7 @@ static int fsl_i2c_probe(struct platform
> i2c->adap = mpc_ops;
> i2c_set_adapdata(&i2c->adap, i2c);
> i2c->adap.dev.parent = &pdev->dev;
> - if ((result = i2c_add_adapter(&i2c->adap)) < 0) {
> + if ((result = i2c_add_numbered_adapter(&i2c->adap)) < 0) {
> printk(KERN_ERR "i2c-mpc - failed to add adapter\n");
> goto fail_add;
> }
I think this will break many boards as more than one i2c adapter is
common on these chips. If I read the code correctly, the first
adapter will be registered with adap->nr == 0. The second adapter
will also be registered with adap->nr == 0; but
i2c_add_numbered_adapter will return -EBUSY because the id is already
used.
I think you need to add this line before the call to i2c_add_numbered_adapter:
i2c->adap.nr = pdev->id;
Cheers,
g.
--
Grant Likely, B.Sc. P.Eng.
Secret Lab Technologies Ltd.
grant.likely at secretlab.ca
(403) 399-0195
More information about the Linuxppc-dev
mailing list