Re: [PATCH 0/3 v2] i2c: i801: enable irq

From: Jean Delvare
Date: Wed Jun 27 2012 - 10:01:51 EST


On Wed, 27 Jun 2012 21:56:34 +0800, Daniel Kurtz wrote:
> On Wed, Jun 27, 2012 at 5:24 PM, Jean Delvare <khali@xxxxxxxxxxxx> wrote:
> > I planned on testing this on my ICH3-M system, but it turns out your
> > interrupt-based implementation only works for ICH5 and later chips. As
> > ICH5 and later chips all implement the block buffer, there's no reason
> > for the byte-by-byte-code to ever be used for SMBus block transactions.
> > However, the block buffer feature can be disabled for testing purpose
> > by passing module parameter disable_features=0x0002.
> >
> > I just did, and actually it doesn't work. i2cdump shows 32 bytes no
> > matter what the device said. Debug log shows that the driver reads
> > fewer bytes from the device though, as it is supposed to. So I think
> > the problem is simply that the interrupt path is missing this compared
> > to the polled path:
> >
> > Â Â Â Â Â Â Â Âif (i == 1 && read_write == I2C_SMBUS_READ
> > Â Â Â Â Â Â Â Â && command != I2C_SMBUS_I2C_BLOCK_DATA) {
> > Â Â Â Â Â Â Â Â Â Â Â Âlen = inb_p(SMBHSTDAT0(priv));
> > Â Â Â Â Â Â Â Â Â Â Â Â(...)
> > Â Â Â Â Â Â Â Â Â Â Â Âdata->block[0] = len;
> > Â Â Â Â Â Â Â Â}
> >
> > I.e. we don't let the caller know how many bytes we actually read from
> > the device. I fixed it with:
> >
>
> I was just in the middle of finalizing a new patchset when I saw your
> last email.
> I incorporated (and tested for no-regressions) the snippet below.
> Unfortunately, I'm not set up to test this type of transaction, so
> hopefully you can double check my version of this patch with your
> setup.

Sure, no problem, I will do another full round of testing on the new
patchset.

--
Jean Delvare
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/