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

Reply via email to