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.

Linux/TMDXEVM368: i2c_davinci: Initiating Bus Recovery upon Controller Time-Out

Part Number: TMDXEVM368
Other Parts Discussed in Thread: TVP5146

Tool/software: Linux

Hello,

I use a DM368 EVM with IPNC RDK v5.1.0 for establishing and operating a video handling pipeline (using AV-Server). The DM368 EVM uses a TVP5146 for decoding input video and this has been configured both in the Linux kernel's defconfig as well as in the app's building rules. All necessary integrations in the board file are present.

However, at the time of booting the Linux Kernel, while initializing the I2C bus, in particular, I see several repetitive messages that indicate a failure:

i2c_davinci i2c_davinci.1: controller timed out
i2c_davinci i2c_davinci.1: initiating i2c bus recovery

At the time of running the apps, no I2C entry is populated in /dev/ and subsequently, no device is accessible.

Since there isn't anything perceptibly wrong with either the kernel or the apps or the hardware, what could typically cause this and what could fix that?

Thanks,

Anirudh

  • Hi Anirudh,

    " Linux kernel's defconfig" this means have you tried configuring the TVP5146 driver even in kernel ? If so, it is not required to configure TVP in kernel. Only in the IPNC
  • Hello, Dwarakesh,

    In the Kernel configuration, I2C (naturally), as well as the TVP514X driver, have been enabled. The IPNC app has the TVP514X configured as the imager type while the pipeline accesses video data using the IPIPE framework. Therefore, yes, I believe that the TVP5146 driver has been configured in the Kernel as well.

    Is this the conflicting configuration, if I understand your response correctly? Additionally, does this configuration cause all I2C devices to be unavailable in the /dev/ directory?

    Thanks,

    Anirudh

  • Hi Anirudh,

    Yes, it is conflicting, since TVP514x in kernel uses v4l2 framework to register itself and work. But IPNC package uses IPNC framework. So TVP514x needs to enabled in Rules.make and thereby in IPNC framework and disabled in kernel configuration.

    Not having /dev/ entry could be due to couple of reasons
    1. since udev generally don't run, we need to create the node manually in /dev/ if point 2 is taken care.
    2. In kernel, make sure CONGI_I2C_CHARDEV is set.