]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/commit
MFC: r266336, r270230 and r273263
authorloos <loos@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Mon, 27 Oct 2014 12:18:07 +0000 (12:18 +0000)
committerloos <loos@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Mon, 27 Oct 2014 12:18:07 +0000 (12:18 +0000)
commita55033696f488e39cfcaba960b3c10df8f96c484
treec4bc4ec3a3c3e880885481cd0fa6c55e74565204
parent8000bf1084d350e4ffcdf7c1ba27b4a61d443e43
MFC: r266336, r270230 and r273263

r266336:
Allow us to compile the Ti iic driver for both OMAP4 and AM335x.

r270230:
Rewrite of ti_i2c based on gonzo's patch, fix the following bugs/problems:

  . interrupt storm detected on "intr70:"; throttling interrupt source;

  . Added access serialization on iicbus_transfer(), previously there was
    no such protection and a new transfer could easily confuse the
    controller;

  . Add error checkings (i.e. stop the transfer when a error is detected
    and do _not_ overwrite the previous error);

  . On command done interrupt do not assume that the transfer was finished
    sucessfully as we will receive the command done interrupt even after
    errors;

  . Simplify the FIFO handling;

  . Reset the FIFO between the transfers as the FIFO may contain data from
    the last (failed) transfer;

  . Fix the iicbus speed for AM335x, which in turn will make better use of
    the I2C noise filter (set to one internal clock cycle);

  . Move the read and write handler to ithread instead of notifying the
    requesting thread with wakeup(9);

  . Fix the comments based on OMAP4 TRM.

The above changes allows me to read the EDID from my HDMI monitor on BBB
with gonzo's patches to support TDA19988 (which does 128 bytes reads) and
repeatedly scan the iicbus (with a modified i2c(8)) without lock up the bus.

r273263:
Fix the chan address for mtx_sleep() on bus wait.  Without this fix the
threads waiting for the bus would never wake.

git-svn-id: svn://svn.freebsd.org/base/stable/10@273735 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/arm/ti/ti_i2c.c
sys/arm/ti/ti_i2c.h