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.

DM355 i2c Timeout

Other Parts Discussed in Thread: TLV320AIC33

Hello every one ,
I m using Mv4 on EVMDM355.
I want to use J30 & J31 as general purpose GPIO pins.
For that I need to change the MUX select line via MS0430 using I2C.
To do so, I ve  used i2c-dev interface here is the code..
This is just to test I2C , so I tried to toggle LEDs on MSP430

//********************************************************************************
//         test_i2c.c
//********************************************************************************
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <getopt.h>
#include <errno.h>
#include "i2c-dev.h"

#define __E(fmt, args...) fprintf(stderr, "i2ctest Error: " fmt, ## args)

#define I2C_DEVICE "/dev/i2c/0"
#define I2C_DEV_ADDR 0x25 // address of MSP430


int init_i2c(void)
{
    int fd;
    fd = open(I2C_DEVICE, O_RDWR);
    if (fd < 0) {
        __E("Error while opening i2c device %s\n", I2C_DEVICE);
        return fd;
    }
    if (ioctl(fd, I2C_SLAVE, I2C_DEV_ADDR) == -1) {
        __E("Failed to set I2C_SLAVE %#x\n", I2C_DEV_ADDR);
        return -1;
    }
    return fd;
}

int main(int argc, char **argv)
{
    int     i2cfd;
    __u8    buf[256];
    
    i2cfd = init_i2c();

      buf[0] = 0x03;
      buf[1] = 0xFF;
      write(i2cfd, buf, 1);
      read(i2cfd, buf, 2);
   printf("data on Address %x is  %x   \n",buf[0], buf[1]);

      buf[0] = 0x03;
      buf[1] = 0x00;
      write(i2cfd, buf, 1);
      read(i2cfd, buf, 2);
   printf("data on Address %x is  %x   \n",buf[0], buf[1]);

    close(i2cfd);
    exit(EXIT_SUCCESS);
}
//************************************************************************
//        here is the log when I run this application...
//************************************************************************

root@192.168.2.229:/home# ./test_i2c        
data on Address 3 is  ff   
data on Address 3 is  0  

//************************************************************************
//        Kernel MSges
//************************************************************************

DaVinci I2C WARNING: timeout waiting for bus ready

DaVinci I2C WARNING: timeout waiting for bus ready

DaVinci I2C WARNING: timeout waiting for bus ready

SUCCESS gpio_direction_input(CORE)

SUCCESS gpio_direction_output(CORE)

SUCCESS __gpio_set(CORE)

MUX: initialized GPIO14

MUX: initialized GPIO15

SUCCESS __gpio_set(CORE)

SUCCESS __gpio_set(CORE)

.
.
.
SUCCESS __gpio_set(CORE)

SUCCESS __gpio_set(CORE)

SUCCESS __gpio_set(CORE)

MUX: initialized I2C_SDA

MUX: initialized I2C_SCL
//*****************************************************************

Though the reading and witting in file done successfully (I think so ;) ),but  the LEDs are "ON" throughout..:(

I have used printk in gpio.c file.

I am also getting the same "DaVinci I2C WARNING: timeout waiting for bus ready"while boot up.While booting it also shows i2c error -111.
Please help.


If you know any other simple way to change mux position than tell me ASAP.Thx in advance.

  • I have this on my dmesg:--

     

    i2c_adapter i2c-0: i2c-0 ioctl, cmd: 0x703, arg: 25.
    i2c-dev: i2c-0 writing 1 bytes.
    i2c_adapter i2c-0: master_send: writing 1 bytes.
    DaVinci I2C WARNING: timeout waiting for bus ready
    i2c-dev: i2c-0 reading 2 bytes.
    i2c_adapter i2c-0: master_recv: reading 2 bytes.
    SUCCESS gpio_direction_input(CORE)              // I have added Printk here
    SUCCESS gpio_direction_output(CORE)           // I have added Printk here
    MUX: initialized GPIO14
    MUX: initialized GPIO15
    MUX: initialized I2C_SDA
    MUX: initialized I2C_SCL
    i2c_adapter i2c-0: master_recv: return:-110 (count:2, addr:0x25)
    i2c-dev: i2c-0 writing 1 bytes.
    i2c_adapter i2c-0: master_send: writing 1 bytes.
    DaVinci I2C WARNING: timeout waiting for bus ready
    i2c-dev: i2c-0 reading 2 bytes.
    i2c_adapter i2c-0: master_recv: reading 2 bytes.
    DaVinci I2C WARNING: timeout waiting for bus ready
    i2c_adapter i2c-0: master_recv: return:-110 (count:2, addr:0x25)

     

    I don't know what is error  "  -110  " ? & how to get rid of it .....

  • I have tried increasing waiting_timeout time and number of retries but none of them worked, I am not getting "where is the problem ?"

    After that I used "ti-davinci/drivers/i2c/busses/ i2c-davinci.c" in debug-verbose mode and also kept few printks &

    I have got these kernel msges..

    see if this helps..

    //*******************************************************************************************

    DaVinci I2C DEBUG: msgs: 1

     i2c_wait_for_busreay..CORE   // I have put printk in i2c-davinci.c

     Disable_i2c_pins..CORE        // I have put printk in i2c-davinci.c

    SUCCESS gpio_direction_input(CORE)// I have put printk in gpio.c

    SUCCESS gpio_direction_output(CORE) // I have put printk in gpio.c

    MUX: initialized GPIO14

    MUX: initialized GPIO15

     pulse_i2c_clock..CORE        // I have put printk in i2c-davinci.c

     pulse_i2c_clock..CORE       

     pulse_i2c_clock..CORE

     pulse_i2c_clock..CORE

     pulse_i2c_clock..CORE

     pulse_i2c_clock..CORE

     pulse_i2c_clock..CORE

     pulse_i2c_clock..CORE

     pulse_i2c_clock..CORE

     pulse_i2c_clock..CORE

     Enable_i2c_pins..CORE        // I have put printk in i2c-davinci.c

    MUX: initialized I2C_SDA

    MUX: initialized I2C_SCL

    DaVinci I2C DEBUG: i2c: reset called

    DaVinci I2C DEBUG: CLK = 400 KHz

    DaVinci I2C DEBUG: PSC  = 1

    DaVinci I2C DEBUG: CLKL = 9

    DaVinci I2C DEBUG: CLKH = 9

     Enable_i2c_pins..CORE        // I have put printk in i2c-davinci.c

    DaVinci I2C DEBUG: msgs: 1

     i2c_wait_for_busreay..CORE    // I have put printk in i2c-davinci.c

    DaVinci I2C WARNING: timeout waiting for bus ready

    DaVinci I2C DEBUG: msgs: 1

     i2c_wait_for_busreay..CORE        // I have put printk in i2c-davinci.c

    DaVinci I2C WARNING: timeout waiting for bus ready

    DaVinci I2C DEBUG: msgs: 1

     i2c_wait_for_busreay..CORE        // I have put printk in i2c-davinci.c

    DaVinci I2C WARNING: timeout waiting for bus ready

    //*********************************************************************************

    Please help ASAP...Thx in advance

  • Hello,

    I have got this while booting up ..is there ny thing wrong with my hardware ???

    .

    .

    .

     

    : timer margin 64 sec

     

    Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled

     

    Registering platform device 'serial8250'. Parent at platform

     

    ttyS0 at MMIO 0x1c20000 (irq = 40) is a 16550A

     

    ttyS1 at MMIO 0x1c20400 (irq = 41) is a 16550A

     

    ttyS2 at MMIO 0x1e06000 (irq = 14) is a 16550A

     

    io scheduler noop registered

     

    io scheduler anticipatory registered

     

    RAMDISK driver initialized: 1 RAM disks of 32768K size 1024 blocksize

     

    loop: loaded (max 8 devices)

     

    dm9000 Ethernet Driver

     

    eth0: dm9000 at c7862000,c7864002 IRQ 45 MAC: 00:0e:99:02:c7:66

     

    i2c /dev entries driver

     

    Linux video capture interface: v1.00

     

    Registering platform device 'vpfe.1'. Parent at platform

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    DaVinci I2C DEBUG: msgs: 1

     

    MUX: initialized GPIO14

     

    MUX: initialized GPIO15

     

    MUX: initialized I2C_SDA

     

    MUX: initialized I2C_SCL

     

    DaVinci I2C DEBUG: i2c: reset called

     

    DaVinci I2C DEBUG: CLK = 400 KHz

     

    DaVinci I2C DEBUG: PSC  = 1

     

    DaVinci I2C DEBUG: CLKL = 9

     

    DaVinci I2C DEBUG: CLKH = 9

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    DaVinci I2C DEBUG: msgs: 1

     

    MUX: initialized GPIO14

     

    MUX: initialized GPIO15

     

    MUX: initialized I2C_SDA

     

    MUX: initialized I2C_SCL

     

    DaVinci I2C DEBUG: i2c: reset called

     

    DaVinci I2C DEBUG: CLK = 400 KHz

     

    DaVinci I2C DEBUG: PSC  = 1

     

    DaVinci I2C DEBUG: CLKL = 9

     

    DaVinci I2C DEBUG: CLKH = 9

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    DaVinci I2C DEBUG: msgs: 1

     

    MUX: initialized GPIO14

     

    MUX: initialized GPIO15

     

    MUX: initialized I2C_SDA

     

    MUX: initialized I2C_SCL

     

    DaVinci I2C DEBUG: i2c: reset called

     

    DaVinci I2C DEBUG: CLK = 400 KHz

     

    DaVinci I2C DEBUG: PSC  = 1

     

    DaVinci I2C DEBUG: CLKL = 9

     

    DaVinci I2C DEBUG: CLKH = 9

     

    Registering platform device 'DavinciDisplay.1'. Parent at platform

     

    Trying to register davinci display video device.

     

    layer=c07da000,layer->video_dev=c07da164

     

    Trying to register davinci display video device.

     

    layer=c07da200,layer->video_dev=c07da364

     

    davinci_init:DaVinci V4L2 Display Driver V1.0 loaded

     

    ipipe major#: 254, minor# 0

     

    Registering platform device 'dm355_ipipe.2'. Parent at platform

     

    ipipe driver registered

     

    af major#: 253, minor# 0

     

    Registering platform device 'dm355_af.2'. Parent at platform

     

    aew major#: 252, minor# 0

     

    Registering platform device 'dm355_aew.2'. Parent at platform

     

    elevator: using anticipatory as default io scheduler

     

    nand_davinci nand_davinci.0: Using 4-bit hardware ECC

     

    NAND device: Manufacturer ID: 0x2c, Chip ID: 0xd3 (Micron NAND 1GiB 3,3V 8-bit)

     

    2 NAND chips detected

     

    nand_bbt: ECC error while reading bad block table

     

    nand_bbt: ECC error while reading bad block table

     

    Creating 5 MTD partitions on "nand_davinci.0":

     

    0x00000000-0x003c0000 : "bootloader"

     

    0x003c0000-0x00400000 : "params"

     

    0x00400000-0x00800000 : "kernel"

     

    0x00800000-0x20800000 : "filesystem1"

     

    0x20800000-0x80000000 : "filesystem2"

     

    nand_davinci nand_davinci.0: hardware revision: 2.3

     

    dm_spi.0: davinci SPI Controller driver at 0xc7866000 (irq = 42) use_dma=0

     

    Initializing USB Mass Storage driver...

     

    usbcore: registered new driver usb-storage

     

    USB Mass Storage support registered.

     

    usbcore: registered new driver usbhid

     

    drivers/usb/input/hid-core.c: v2.0:USB HID core driver

     

    mice: PS/2 mouse device common for all mice

     

    mmc mmc.0: Supporting 4-bit mode

     

    mmc mmc.0: Using DMA mode

     

    mmc mmc.1: Supporting 4-bit mode

     

    mmc mmc.1: Using DMA mode

     

    Registering platform device 'davinci-audio.0'. Parent at platform

     

    DaVinci I2C DEBUG: msgs: 1

     

    mmcblk0: mmc1:8fe4 SD02G 1931264KiB 

     

     mmcblk0: p1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 0

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 42

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 51

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 65

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 86

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 93

     

    DaVinci I2C DEBUG: msgs: 1

     

    MUX: initialized GPIO14

     

    MUX: initialized GPIO15

     

    MUX: initialized I2C_SDA

     

    MUX: initialized I2C_SCL

     

    DaVinci I2C DEBUG: i2c: reset called

     

    DaVinci I2C DEBUG: CLK = 400 KHz

     

    DaVinci I2C DEBUG: PSC  = 1

     

    DaVinci I2C DEBUG: CLKL = 9

     

    DaVinci I2C DEBUG: CLKH = 9

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 37

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 8

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 15

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 16

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 47

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 64

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 82

     

    DaVinci I2C DEBUG: msgs: 1

     

    MUX: initialized GPIO14

     

    MUX: initialized GPIO15

     

    MUX: initialized I2C_SDA

     

    MUX: initialized I2C_SCL

     

    DaVinci I2C DEBUG: i2c: reset called

     

    DaVinci I2C DEBUG: CLK = 400 KHz

     

    DaVinci I2C DEBUG: PSC  = 1

     

    DaVinci I2C DEBUG: CLKL = 9

     

    DaVinci I2C DEBUG: CLKH = 9

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 92

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 19

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 22

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 17

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 18

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 26

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 27

     

    DaVinci I2C DEBUG: msgs: 1

     

    MUX: initialized GPIO14

     

    MUX: initialized GPIO15

     

    MUX: initialized I2C_SDA

     

    MUX: initialized I2C_SCL

     

    DaVinci I2C DEBUG: i2c: reset called

     

    DaVinci I2C DEBUG: CLK = 400 KHz

     

    DaVinci I2C DEBUG: PSC  = 1

     

    DaVinci I2C DEBUG: CLKL = 9

     

    DaVinci I2C DEBUG: CLKH = 9

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 28

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 29

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 30

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 31

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 43

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 44

     

    DaVinci I2C DEBUG: msgs: 1

     

    DaVinci I2C WARNING: timeout waiting for bus ready

     

    i2c write: error = -110

     

    tlv320aic33_write_value: aic33 write failed

     

    aic33 write failed for reg = 25

     

    NET: Registered protocol family 2

     

    IP: routing cache hash table of 512 buckets, 4Kbytes

     

    TCP: Hash tables configured (established 8192 bind 16384)

     

    Initializing XFRM netlink socket

     

    NET: Registered protocol family 1

     

    NET: Registered protocol family 10

     

    IPv6 over IPv4 tunneling driver

     

    NET: Registered protocol family 17

     

    &#x8;eth0: link down

     

    Sending DHCP requests ., OK

     

    IP-Config: Got DHCP answer from 192.168.2.51, my address is 192.168.2.229

     

    IP-Config: Complete:

     

          device=eth0, addr=192.168.2.229, mask=255.255.255.0, gw=192.168.2.1,

     

         host=192.168.2.229, domain=, nis-domain=(none),

     

         bootserver=192.168.2.51, rootserver=192.168.2.51, rootpath=

     

    Looking up port of RPC 100003/2 on 192.168.2.51

     

    Looking up port of RPC 100005/1 on 192.168.2.51

     

    VFS: Mounted root (nfs filesystem).

     

    Freeing init memory: 180K

     

    eth0: link up, 100Mbps, full-duplex, lpa 0xCDE1

     

     

    INIT: version 2.85 booting Mounting a tmpfs over /dev...done.

    Creating initial device nodes...done.