This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Why I2C1 can't set clk under 2600?

Other Parts Discussed in Thread: TPS65950, TPS65930

Hello,

i used beagleboard xm android2.3.4 found the i2c1 set the clk as 2600.

omap_register_i2c_bus(1, 2600, beagle_i2c_boardinfo,
            ARRAY_SIZE(beagle_i2c_boardinfo));

now i have to add a device to the i2c1, but system can't run normal.

i change it to 400 and connect my device,then the system runs on. but report error,like below:

omap_i2c omap_i2c.1 : controller timed out

omap_i2c omap_i2c.1 : timeout waiting for bus ready

twl : i2c_write failed to transfer all messages

omap_i2c omap_i2c.1 : timeout waiting for bus ready

twl : i2c_write failed to transfer all messages

omap_i2c omap_i2c.1 : timeout waiting for bus ready

twl : i2c_write failed to transfer all messages

what's the problem?

i set it to 2600, and don't connect to my devices.the system work correctly.

when connect my device the system suspend like this:

Uncompressing Linux... done, booting the kernel.

Why the I2C1 clk cann't under 2600? the tps65950 on i2c1

  • Hi Jery,

    The unsuccessful connection to the your device via i2c probably due to that you try to use unsupported frequency (2600 KHz) but succeed registering bus at 400 KHz. I guess about the errors (timeouts) - it is possible after registration your device to work unstable at 400 KHz.

    Do you have information about supported frequencies by your device?

    BR

    Tsvetolin Shulev

  • Hi Cvetolin,

    thank you for your response. My device I2C can support to MAX speed 1MHz. So the 2.6MHz cause my device unstale.

    I found some strange for my board.if i connect my divice to my board,using 2600.the system will suspend at" Uncompressing Linux...done, booting the kernel." then wait a few minute, the system go on,but report i2c1 timeout, twl i2c_1 write error, twl cann't transfer all message and some trace log until the system kill. sometimes the system with my divece can work correctly but almost suspend.I comment my divice I2C board info that the system will doesn't do anything with my divice, so badly, it will suspend like last.

    I disconnect my divice the system runs OK,when the system work normal, connect my device, all my device and the system work correctly.

    What's the problem with my board or my divice? my device is a touchscreen of ft5x0x series. my driver read the data just the ts cause a interrupt,in the driver probe function,i didn't read or write the divece.

    In a word,connect my ts the system will suspend then i2c1 twl cause error when i2c1 work at 2600. Comment my ts boardinfo code,like before.so i cann't determine if the I2C cause the problem.

    this my log:4744.error_log.TXT

    BR.

  • Hi Jery,

    All about i2c1 bus clocked at 2600 KHz is clear - this frequency is not supported by the touch screen and the board waits for i2c bus ready endless in a while loop because the bus never becomes ready. See omap_i2c_wait_for_bb function in the i2c-omap.c file. Could you provide a log when the i2c1 bus is set at 400 KHz and what happens at this frequency? In addition you could test the behaviour with the i2c1 clocked at 100 KHz?

    BR

    Tsvetolin Shulev

  • Hi Cvetolin,

    Thanks very much.Our hardware engineer has changed the i2c speed to 400khz which connect to tps65930, the board work properly .