lkml.org 
[lkml]   [2011]   [Dec]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[003/104] i2c-algo-bit: Generate correct i2c address sequence for 10-bit target
    3.1-stable review patch.  If anyone has any objections, please let me know.

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

    From: "Jeffrey (Sheng-Hui) Chu" <jeffchu@broadcom.com>

    commit cc6bcf7d2ec2234e7b41770185e4dc826390185e upstream.

    The wrong bits were put on the wire, fix that.

    This fixes kernel bug #42562.

    Signed-off-by: Sheng-Hui J. Chu <jeffchu@broadcom.com>
    Signed-off-by: Jean Delvare <khali@linux-fr.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/i2c/algos/i2c-algo-bit.c | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    --- a/drivers/i2c/algos/i2c-algo-bit.c
    +++ b/drivers/i2c/algos/i2c-algo-bit.c
    @@ -486,7 +486,7 @@ static int bit_doAddress(struct i2c_adap

    if (flags & I2C_M_TEN) {
    /* a ten bit address */
    - addr = 0xf0 | ((msg->addr >> 7) & 0x03);
    + addr = 0xf0 | ((msg->addr >> 7) & 0x06);
    bit_dbg(2, &i2c_adap->dev, "addr0: %d\n", addr);
    /* try extended address code...*/
    ret = try_address(i2c_adap, addr, retries);
    @@ -496,7 +496,7 @@ static int bit_doAddress(struct i2c_adap
    return -EREMOTEIO;
    }
    /* the remaining 8 bit address */
    - ret = i2c_outb(i2c_adap, msg->addr & 0x7f);
    + ret = i2c_outb(i2c_adap, msg->addr & 0xff);
    if ((ret != 1) && !nak_ok) {
    /* the chip did not ack / xmission error occurred */
    dev_err(&i2c_adap->dev, "died at 2nd address code\n");



    \
     
     \ /
      Last update: 2011-12-07 17:37    [W:0.021 / U:180.084 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site