[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