Message ID | 1263932653-3634-5-git-send-email-agust@denx.de (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Grant Likely |
Headers | show |
On Tue, Jan 19, 2010 at 1:24 PM, Anatolij Gustschin <agust@denx.de> wrote: > From: Piotr Ziecik <kosmo@semihalf.com> > > - Update Kconfig for i2c-mpc driver. > - Enable I2C interrupts on MPC5121. > > diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c > index f627001..84eeb25 100644 > --- a/drivers/i2c/busses/i2c-mpc.c > +++ b/drivers/i2c/busses/i2c-mpc.c > @@ -540,6 +540,29 @@ static int __devinit fsl_i2c_probe(struct of_device *op, > } > } > > + if (of_device_is_compatible(op->node, "fsl,mpc5121-i2c")) { Rather than doing stuff like this with explicit compatible checks in the probe hook, consider using the .data pointer in the of match table. g.
Grant Likely wrote: > On Tue, Jan 19, 2010 at 1:24 PM, Anatolij Gustschin <agust@denx.de> wrote: >> From: Piotr Ziecik <kosmo@semihalf.com> >> >> - Update Kconfig for i2c-mpc driver. >> - Enable I2C interrupts on MPC5121. >> >> diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c >> index f627001..84eeb25 100644 >> --- a/drivers/i2c/busses/i2c-mpc.c >> +++ b/drivers/i2c/busses/i2c-mpc.c >> @@ -540,6 +540,29 @@ static int __devinit fsl_i2c_probe(struct of_device *op, >> } >> } >> >> + if (of_device_is_compatible(op->node, "fsl,mpc5121-i2c")) { > > Rather than doing stuff like this with explicit compatible checks in > the probe hook, consider using the .data pointer in the of match > table. Yes, and it does also not use the clock setting code of the MPC5200, which should work for the MPC512x as well. I already have a patch in my pipeline, which I will roll out after some more testing. Wolfgang.
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig index 5f318ce..f481f30 100644 --- a/drivers/i2c/busses/Kconfig +++ b/drivers/i2c/busses/Kconfig @@ -418,13 +418,14 @@ config I2C_IXP2000 instead. config I2C_MPC - tristate "MPC107/824x/85xx/52xx/86xx" + tristate "MPC107/824x/85xx/512x/52xx/86xx" depends on PPC32 help If you say yes to this option, support will be included for the - built-in I2C interface on the MPC107/Tsi107/MPC8240/MPC8245 and - MPC85xx/MPC8641 family processors. The driver may also work on 52xx - family processors, though interrupts are known not to work. + built-in I2C interface on the MPC107/Tsi107/MPC8240/MPC8245, + MPC85xx/MPC8641 and MPC512x family processors. The driver may + also work on 52xx family processors, though interrupts are known + not to work. This driver can also be built as a module. If so, the module will be called i2c-mpc. diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c index f627001..84eeb25 100644 --- a/drivers/i2c/busses/i2c-mpc.c +++ b/drivers/i2c/busses/i2c-mpc.c @@ -540,6 +540,29 @@ static int __devinit fsl_i2c_probe(struct of_device *op, } } + if (of_device_is_compatible(op->node, "fsl,mpc5121-i2c")) { + struct device_node *np; + void __iomem *i2cctl; + + /* Enable I2C interrupts */ + np = of_find_compatible_node(NULL, NULL, + "fsl,mpc5121-i2c-ctrl"); + if (np) { + i2cctl = of_iomap(np, 0); + if (i2cctl) { + /* + * Set interrupt enable bits: + * - I2C-0: bit 24, + * - I2C-1: bit 26, + * - I2C-2: bit 28. + */ + out_be32(i2cctl, 0x15000000); + iounmap(i2cctl); + } + of_node_put(np); + } + } + dev_set_drvdata(&op->dev, i2c); i2c->adap = mpc_ops;