Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9f02fba8 authored by Wolfram Sang's avatar Wolfram Sang
Browse files

Documentation: i2c: improve section about flags mangling the protocol



Sort the entries alphabetically. Make the introductory paragraph more
precise. Skip useless 'Flag' introduction from the entries. Remove
trailing white spaces from the file. Add missing I2C_M_STOP entry.

Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
parent cf23e335
Loading
Loading
Loading
Loading
+20 −15
Original line number Diff line number Diff line
@@ -49,11 +49,20 @@ a byte read, followed by a byte write:
Modified transactions
=====================

The following modifications to the I2C protocol can also be generated,
with the exception of I2C_M_NOSTART these are usually only needed to
work around device issues:
The following modifications to the I2C protocol can also be generated by
setting these flags for i2c messages. With the exception of I2C_M_NOSTART, they
are usually only needed to work around device issues:

  Flag I2C_M_NOSTART: 
I2C_M_IGNORE_NAK:
    Normally message is interrupted immediately if there is [NA] from the
    client. Setting this flag treats any [NA] as [A], and all of
    message is sent.
    These messages may still fail to SCL lo->hi timeout.

I2C_M_NO_RD_ACK:
    In a read message, master A/NA bit is skipped.

I2C_M_NOSTART:
    In a combined transaction, no 'S Addr Wr/Rd [A]' is generated at some
    point. For example, setting I2C_M_NOSTART on the second partial message
    generates something like:
@@ -67,17 +76,13 @@ work around device issues:
    I2C device but may also be used between direction changes by some
    rare devices.

  Flags I2C_M_REV_DIR_ADDR
I2C_M_REV_DIR_ADDR:
    This toggles the Rd/Wr flag. That is, if you want to do a write, but
    need to emit an Rd instead of a Wr, or vice versa, you set this
    flag. For example:
      S Addr Rd [A] Data [A] Data [A] ... [A] Data [A] P

  Flags I2C_M_IGNORE_NAK
    Normally message is interrupted immediately if there is [NA] from the
    client. Setting this flag treats any [NA] as [A], and all of
    message is sent.
    These messages may still fail to SCL lo->hi timeout.

  Flags I2C_M_NO_RD_ACK
    In a read message, master A/NA bit is skipped.
I2C_M_STOP:
    Force a stop condition (P) after the message. Some I2C related protocols
    like SCCB require that. Normally, you really don't want to get interrupted
    between the messages of one transfer.