Sylvain, Are you really still using the OCP side of the driver? Do we need a similar fix for the platform driver side?
- kumar On May 16, 2005, at 1:24 AM, Sylvain Munaut wrote: > i2c: Race fix for i2c-mpc.c > > The problem was that the clock speed and driver data is > initialized after the i2c adapter was added. This caused > the i2c bus to start working at a wrong speed. (Mostly > noticable on the second bus on mpc5200) > > With this patch we've tried to keep the i2c adapter > working perfectly all the time it is included in the system. > Initialize before added, Remove garbage after deleleted. > > > > Submitted-by: Asier Llano Palacios > Signed-off-by: Sylvain Munaut <tnt at 246tNt.com> > --- > --- linux-2.6/drivers/i2c/busses/i2c-mpc.c????? 2005-05-16 > 09:08:02.000000000 +0200 > +++ linux-2.6/drivers/i2c/busses/i2c-mpc.c????? 2005-05-16 > 09:09:51.000000000 +0200 > @@ -333,6 +333,9 @@ > ??????? } else > ??????? ??????? i2c->irq = 0; > ? > +?????? mpc_i2c_setclock(i2c); > +?????? ocp_set_drvdata(ocp, i2c); > + > ??????? i2c->adap = mpc_ops; > ??????? i2c_set_adapdata(&i2c->adap, i2c); > ? > @@ -341,8 +344,6 @@ > ??????? ??????? goto fail_add; > ??????? } > ? > -?????? mpc_i2c_setclock(i2c); > -?????? ocp_set_drvdata(ocp, i2c); > ??????? return result; > ? > ?????? fail_add: > @@ -358,8 +359,8 @@ > ?static void __devexit mpc_i2c_remove(struct ocp_device *ocp) > ?{ > ??????? struct mpc_i2c *i2c = ocp_get_drvdata(ocp); > -?????? ocp_set_drvdata(ocp, NULL); > ??????? i2c_del_adapter(&i2c->adap); > +?????? ocp_set_drvdata(ocp, NULL); > ? > ??????? if (ocp->def->irq != OCP_IRQ_NA) > ??????? ??????? free_irq(i2c->irq, i2c); > _______________________________________________ > Linuxppc-embedded mailing list > Linuxppc-embedded at ozlabs.org > https://ozlabs.org/mailman/listinfo/linuxppc-embedded