piix4 fails to reset? (ticket #1078)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux