Re: [PATCH] Bugfixes for i2c-cpm.c

Wolfram Sang
2008-06-23T12:44:25Z

[-- Attachment #1.1: Type: text/plain, Size: 2844 bytes --]

On Fri, Jun 20, 2008 at 10:41:55AM +0200, Wolfram Sang wrote:

Any new on this one? I think at least the interrupt fix should make it
into 2.6.26. The mistakenly activated interrupt caused a regression
here, which made at24 fail on writes.

Wolfram

>
> Bugfixes to the i2c-cpm driver
>
> - enable correct interrupts (I2CER_TXE instead of I2CER_BUSY)
> - replace forgotten iic with i2c
> - fix typo (devided)
> - prefix debug-output on init with 0x and add frequency
>
> Signed-off-by: Wolfram Sang <w.sang-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>
> ---
> Sorry for the resend; the CC to Jochen was dropped, haven't figured out
> why, yet.
>
> drivers/i2c/busses/i2c-cpm.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> Index: drivers/i2c/busses/i2c-cpm.c
> ===================================================================
> --- drivers/i2c/busses/i2c-cpm.c.orig
> +++ drivers/i2c/busses/i2c-cpm.c
> @@ -241,7 +241,7 @@
> eieio();
> setbits16(&tbdf->cbd_sc, BD_SC_READY);
> } else {
> - dev_dbg(&adap->dev, "cpm_iic_write(abyte=0x%x)\n", addr);
> + dev_dbg(&adap->dev, "cpm_i2c_write(abyte=0x%x)\n", addr);
>
> memcpy(tb+1, pmsg->buf, pmsg->len);
>
> @@ -350,7 +350,7 @@
> }
> /* Start transfer now */
> /* Enable RX/TX/Error interupts */
> - out_8(&i2c_reg->i2cmr, I2CER_BUSY | I2CER_TXB | I2CER_RXB);
> + out_8(&i2c_reg->i2cmr, I2CER_TXE | I2CER_TXB | I2CER_RXB);
> out_8(&i2c_reg->i2cer, 0xff); /* Clear interrupt status */
> /* Chip bug, set enable here */
> setbits8(&i2c_reg->i2mod, I2MOD_EN); /* Enable */
> @@ -553,8 +553,8 @@
>
> cpm_reset_i2c_params(cpm);
>
> - dev_dbg(&cpm->ofdev->dev, "i2c_ram %p, i2c_addr 0x%04x\n",
> - cpm->i2c_ram, cpm->i2c_addr);
> + dev_dbg(&cpm->ofdev->dev, "i2c_ram 0x%p, i2c_addr 0x%04x, freq %d\n",
> + cpm->i2c_ram, cpm->i2c_addr, cpm->freq);
> dev_dbg(&cpm->ofdev->dev, "tbase 0x%04x, rbase 0x%04x\n",
> (u8 __iomem *)cpm->tbase - DPRAM_BASE,
> (u8 __iomem *)cpm->rbase - DPRAM_BASE);
> @@ -568,7 +568,7 @@
>
> /*
> * PDIV is set to 00 in i2mod, so brgclk/32 is used as input to the
> - * i2c baud rate generator. This is devided by 2 x (DIV + 3) to get
> + * i2c baud rate generator. This is divided by 2 x (DIV + 3) to get
> * the actual i2c bus frequency.
> */
> brg = get_brgfreq() / (32 * 2 * cpm->freq) - 3;
>
> --
> Dipl.-Ing. Wolfram Sang | http://www.pengutronix.de
> Pengutronix - Linux Solutions for Science and Industry

> _______________________________________________
> i2c mailing list
> i2c-GZX6beZjE8VD60Wz+7aTrA@public.gmane.org
> http://lists.lm-sensors.org/mailman/listinfo/i2c

--
Dipl.-Ing. Wolfram Sang | http://www.pengutronix.de
Pengutronix - Linux Solutions for Science and Industry

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]