lkml.org 
[lkml]   [2016]   [Apr]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v6 08/19] i2c: octeon: Enable High-Level Controller
    On Wed, Apr 20, 2016 at 11:43:54PM +0200, Wolfram Sang wrote:
    > On Mon, Apr 11, 2016 at 05:28:39PM +0200, Jan Glauber wrote:
    > > From: David Daney <ddaney@caviumnetworks.com>
    > >
    > > Use High-Level Controller (HLC) when possible. The HLC can read/write
    > > up to 8 bytes and is completely optional. The most important difference
    > > of the HLC is that it only requires one interrupt for a transfer
    > > (up to 8 bytes) where the low-level read/write requires 2 interrupts
    > > plus one interrupt per transferred byte. Since the interrupts are costly
    > > using the HLC improves the performance. Also, the HLC provides improved error
    > > handling.
    >
    > Much better description, thanks!
    >
    > > + while (1) {
    > > + val = octeon_i2c_ctl_read(i2c);
    > > + if (!(val & (TWSI_CTL_STA | TWSI_CTL_STP)));
    > > + break;
    > > +
    > > + /* clear IFLG event */
    > > + if (val & TWSI_CTL_IFLG)
    > > + octeon_i2c_ctl_write(i2c, TWSI_CTL_ENAB);
    > > +
    > > + if (try++ > 100) {
    > > + pr_err("%s: giving up\n", __func__);
    > > + break;
    > > + }
    > > +
    > > + /* spin until any start/stop has finished */
    > > + udelay(10);
    > > + }
    >
    > Maybe you can use one of the readx_poll_timeout() functions?

    Nice, but I don't think we can use readx_poll_timeout() here because
    of the octeon_i2c_ctl_write inside the loop...

    \
     
     \ /
      Last update: 2016-04-21 16:21    [W:3.537 / U:0.740 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site