• Rajendra Nayak's avatar
    i2c-omap: OMAP3: PM: (re)init for every transfer to support off-mode · ef871432
    Rajendra Nayak authored
    Because of OMAP off-mode, powerdomain can go off when I2C is idle.
    Save enough state, and do a re-init for each transfer.
    
    Additional save/restore state added by Jagadeesh Bhaskar Pakaravoor
    (SYSC_REG) and Aaro Koskinen (wakeup sources.)
    
    Also, The OMAP3430 TRM states:
    
    "During active mode (I2Ci.I2C_CON[15] I2C_EN bit is set to 1), make no
    changes to the I2Ci.I2C_SCLL and I2Ci.I2C_SCLH registers.  Changes may
    result in unpredictable behavior."
    
    Hence, the I2C_EN bit should be clearer when modifying these
    registers. Please note that clearing the entire I2C_CON register to
    disable the I2C module is safe, because the I2C_CON register is
    re-configured for each transfer.
    Signed-off-by: default avatarJouni Hogander <jouni.hogander@nokia.com>
    Signed-off-by: default avatarRajendra Nayak <rnayak@ti.com>
    Cc: Jagadeesh Bhaskar Pakaravoor <j-pakaravoor@ti.com>
    Cc: Aaro Koskinen <aaro.koskinen@nokia.com>
    Cc: Jon Hunter <jon-hunter@ti.com>
    Cc: Hu Tao <taohu@motorola.com>
    Cc: Xiaolong Chen <A21785@motorola.com>
    Signed-off-by: default avatarKevin Hilman <khilman@deeprootsystems.com>
    Signed-off-by: default avatarBen Dooks <ben-linux@fluff.org>
    ef871432
i2c-omap.c 27.4 KB