HomeFreeBSD

Mostly rewrite the imx i2c driver. This started out as an attempt to fix

Description

Mostly rewrite the imx i2c driver. This started out as an attempt to fix
one specific problem: the driver didn't check for ACK/NAK after writing a
slave address byte to the bus, and some slaves signal that they are busy
(such as when completing an internal write to flash memory) by sending a
NAK in response to being addressed.

While working on that problem I discovered that the driver's handling of
error conditions in general didn't match the state transition diagram in
the reference manual, and making that right resulted in a lot of code
reorganization.

Along the way various other changes also happened...

  • Remove a mutex that wasn't protecting anything.
  • Remove some mystery DELAY()s, document the few that remain.
  • Use pause_sbt(9) to yield the processor for the bulk of the time it takes to transfer each byte rather than busy-polling the whole time.
  • Disable the controller when no transfers are in progress; since we don't operate in slave mode, there's no reason to run the hardware.
  • Remove a bunch of unecessary code from probe().

Details

Provenance
ianAuthored on
Parents
rS289090: Install configuration files with CONFMODE instead of SHAREMODE
Branches
Unknown
Tags
Unknown