Re: [PATCH 3/8 v3] i2c: i801: check INTR after every transaction

From: Jean Delvare
Date: Thu Jun 28 2012 - 07:37:11 EST


On Thu, 28 Jun 2012 15:51:34 +0800, Daniel Kurtz wrote:
> On Thu, Jun 28, 2012 at 12:07 AM, Jean Delvare <khali@xxxxxxxxxxxx> wrote:
> > On Wed, 27 Jun 2012 21:54:10 +0800, Daniel Kurtz wrote:
> >> +
> >> + Â Â if (timeout > MAX_RETRIES)
> >> + Â Â Â Â Â Â dev_dbg(&priv->pci_dev->dev, "INTR Timeout!\n");
> >> +
> >> + Â Â outb_p(status, SMBHSTSTS(priv));
> >
> > Wouldn't it be more correct to only write the INTR bit? Writing back
> > the whole 8 bits frightens me a little especially because of bit
> > INUSE_STS. If we ever want to support this feature, I think we have to
> > first ban writing back the whole status to register HST_STS. And this
> > is the only place where we still do AFAICS.
>
> It looks like the current code does it this way to clear any error
> bits that may be set in the timeout case (errors set, but no INTR).
> For example, if there was a bus / arbitration error while waiting for
> PEC.
>
> Perhaps we can split the difference (I tested this and it has no
> obvious regression):
>
> + /* Clear INTR, or in case of timeout, any other status bits. */
> + Â Â outb_p(status & STATUS_FLAGS, SMBHSTSTS(priv));
>
> But in a separate patch...
>

I agree, this would be a reasonable compromise.

--
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/