HI, On Fri, Jun 07, 2013 at 03:36:38PM +0300, Grygorii Strashko wrote: > hi Tomi, > On 06/07/2013 02:53 PM, Tomi Valkeinen wrote: > >Hi, > > > >I was testing DT boot with 3.10-rc1 and Pandaboard, and couldn't get the > >DVI output's EDID reading to work. Testing with i2cget and i2cdump, I > >see that I can read individual bytes with i2cget, but using i2cdump > >doesn't work, it just shows 'XX'es. > > > >The same issue is there with 3.10-rc4, although with that one I get > >timeouts with i2cdump, whereas there were no timeouts with -rc1. > > > ># i2cget -y 2 0x50 0x10 > >0x0a > ># i2cget -y 2 0x50 0x20 > >0x0f > ># i2cget -y 2 0x50 0x30 > >0x01 > ># i2cget -y 2 0x50 0x40 > >0x36 > ># i2cget -y 2 0x50 0x50 > >0x4c > ># i2cdump -y 2 0x50 > >No size specified (using byte-data access) > > 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef > >00: 00 [ 72.814086] omap_i2c 48060000.i2c: timeout waiting for bus ready > >XX [ 73.825134] omap_i2c 48060000.i2c: timeout waiting for bus ready > >XX [ 74.835327] omap_i2c 48060000.i2c: timeout waiting for bus ready > >XX [ 76.097167] omap_i2c 48060000.i2c: timeout waiting for bus ready > >XX [ 77.160736] omap_i2c 48060000.i2c: timeout waiting for bus ready > >XX [ 78.174682] omap_i2c 48060000.i2c: timeout waiting for bus ready > >XX [ 79.194824] omap_i2c 48060000.i2c: timeout waiting for bus ready > >XX [ 80.242980] omap_i2c 48060000.i2c: timeout waiting for bus ready > > > >i2cdump works fine with non-DT boot (but the i2c bus number is 3). > > > >Any ideas? > > > > Tomi > > > Could you check if below change will help you, pls? > iff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c > index 13d1eca..66a62e7 100644 > --- a/drivers/i2c/busses/i2c-omap.c > +++ b/drivers/i2c/busses/i2c-omap.c > @@ -615,11 +615,11 @@ static int omap_i2c_xfer_msg(struct i2c_adapter *adap, > if (dev->cmd_err & OMAP_I2C_STAT_NACK) { > if (msg->flags & I2C_M_IGNORE_NAK) > return 0; > - if (stop) { > - w = omap_i2c_read_reg(dev, OMAP_I2C_CON_REG); > - w |= OMAP_I2C_CON_STP; > - omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, w); > - } > + > + w = omap_i2c_read_reg(dev, OMAP_I2C_CON_REG); > + w |= OMAP_I2C_CON_STP; > + omap_i2c_write_reg(dev, OMAP_I2C_CON_REG, w); > + don't do this, it will break repeated start. -- balbi
Attachment:
signature.asc
Description: Digital signature