• Marek Vasut's avatar
    i2c: mxs: Rework the PIO mode operation · 29faeb38
    Marek Vasut authored
    Analyze and rework the PIO mode operation. The PIO mode operation
    was unreliable on MX28, by analyzing the bus with LA, the checks
    for when data were available or were to be sent were wrong.
    
    The PIO WRITE has to be completely reworked as it multiple problems.
    The MX23 datasheet helped here, see comments in the code for details.
    The problems boil down to:
    - RUN bit in CTRL0 must be set after DATA register was written
    - The PIO transfer must be 4 bytes long tops, otherwise use
      clock stretching.
    Both of these fixes are implemented.
    
    The PIO READ operation can only be done for up to four bytes as
    we are unable to read out the data from the DATA register fast
    enough.
    
    This patch also tries to document the investigation within the
    code.
    Signed-off-by: default avatarMarek Vasut <marex@denx.de>
    Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
    29faeb38
i2c-mxs.c 23.6 KB