lkml.org 
[lkml]   [2014]   [Jun]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.10 093/103] i2c: rcar: bail out on zero length transfers
    Date
    3.10-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Wolfram Sang <wsa+renesas@sang-engineering.com>

    commit d7653964c590ba846aa11a8f6edf409773cbc492 upstream.

    This hardware does not support zero length transfers. Instead, the
    driver does one (random) byte transfers currently with undefined results
    for the slaves. We now bail out.

    Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
    Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/i2c/busses/i2c-rcar.c | 9 ++++++++-
    1 file changed, 8 insertions(+), 1 deletion(-)

    --- a/drivers/i2c/busses/i2c-rcar.c
    +++ b/drivers/i2c/busses/i2c-rcar.c
    @@ -541,6 +541,12 @@ static int rcar_i2c_master_xfer(struct i

    ret = -EINVAL;
    for (i = 0; i < num; i++) {
    + /* This HW can't send STOP after address phase */
    + if (msgs[i].len == 0) {
    + ret = -EOPNOTSUPP;
    + break;
    + }
    +
    /*-------------- spin lock -----------------*/
    spin_lock_irqsave(&priv->lock, flags);

    @@ -605,7 +611,8 @@ static int rcar_i2c_master_xfer(struct i

    static u32 rcar_i2c_func(struct i2c_adapter *adap)
    {
    - return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
    + /* This HW can't do SMBUS_QUICK and NOSTART */
    + return I2C_FUNC_I2C | (I2C_FUNC_SMBUS_EMUL & ~I2C_FUNC_SMBUS_QUICK);
    }

    static const struct i2c_algorithm rcar_i2c_algo = {



    \
     
     \ /
      Last update: 2014-06-06 10:41    [W:4.325 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site