piix4 fails to reset? (ticket #1078)

Kyösti Mälkki kmalkki at cc.hut.fi
Fri Dec 20 00:29:21 CET 2002


On Thu, 19 Dec 2002, Joe Drew wrote:

> On Thu, 2002-12-19 at 15:05, Joe Drew wrote:
> > >From a module compiled with debug information:
> >
> > i2c-piix4.o: Transaction (pre): CNT=00, CMD=19, ADD=78, DAT0=25, DAT1=00
> > i2c-piix4.o: SMBus busy (01). Resetting...
> > i2c-piix4.o: Failed! (01)
> >
> > It seems like the i2c bus is stuck, or the piix4 is in a pooched state.
> > Why would this be, and what can I do about it?
>
> I should have said, rather, "Why did this happen, and what can I do to
> prevent it in the future?" We've the knowledge to hack the drivers here,
> but we just don't know enough about SMBus to know what the problem
> probably is.

Had a quick look at PIIX4 specs and source.

IMO reset sequence is incorrect. The host busy flag is not
write-resettable, one should use KILL flag in control register.

As the busy status appears in the beginning of transaction, this could
be ACPI system accessing monitor data. In this case we should not touch
any status flags and maybe retry after 10ms.

I think "Bus collision" equals loosing in SDA arbitration cycle, so
another master completes the transmission. I do not agree the note about
clock stopping and slave stuck in mid-transmission.

No PIIX here for testing..

-- 
  Kyösti Mälkki
  kmalkki at cc.hut.fi



More information about the lm-sensors mailing list