IMX8QM Using LVDS1 I2C as general purpose I2C

I am trying to use the lvds1_i2c0 as a general purpose lp_i2c channel. However, I am having trouble finding any documentation about how to do this. The imx8 datasheet claims this is possible though, and I think the necessary step is to modify my device-tree dts file. Can you please point me to documentation on how to go about doing this. In addition, are there any special steps needed to communicate over this i2c channel? or will the MCUXpresso I2C drivers work?

related links that start to but dont fully answer my questions:

Hey @jjdang,

Can I ask what SoM/carrier board and if you using our Torizon OS based tools or a yocto based image?
The information is different based on this (mainly the latter information).

You should check out our developer website, i’ll link a few articles. But you are on the right track. You’ll need to modify the device tree. You’ll have to use pin multiplexing to change the pin functionality.
The easiest way is to make a device tree overlay that does this to disable to current function of the pins and re-defines what you want these pins to do.

Here is some more information on i2c with Torizon.


Hi @eric.tx, thank you for your reply! (-:

SoM == imx8qm V1.0b
Carrier board == Apalis evaluation board v1.1c
I am using a yocto based image

thanks! i will go through those links.

Would you happen to know, in this context: “Low-speed I2C without DMA support for a dedicated purpose. It could also be used as general-purpose but require the associated PHY (for example, MIPI) to be powered on”, what is the PHY in the device tree? Like for LVDS1_I2C0, clearly LVDS1 is the PHY, but is there an lvds1_phy node in the device tree i need to enable?

Hey @jjdang,

The articles I linked were for Torizon, so there are a few modifications towards the Linux based resource, you can find them on the developer website as well.

device tree documentation overview (linux)

I’m not exactly sure i understand the case example question. But navigating the device tree to find nodes can be a bit tricky. But understanding how the device tree nodes are ‘nested’ can help you find information on a particular node, generally this is a manual search through the device tree. You can also look at device tree bindings in the source code to find information.

Such as for LVDS you can find quite a bit of information about the LVDS nodes from imx8-apalis-v1.1dtsi


Yes very tricky. I’ve combed through all the imx8qm files in here before posting here: freescale « dts « boot « arm64 « arch - linux-toradex.git - Linux kernel for Apalis, Colibri and Verdin modules
I have tried pattern matching against what is in those files. its been a lot of trial and error without much progress since i do not really know what the node properties mean.

Can you please share a link to the source code with the device tree bindings you are referring to?


Binding information can be found in the docuemnts of the source code


Such as [below] for Our BSP 6 based image below.


Hey @jjdang,

Just checking in, were you able to get general purpose usage from the dedicated LVDS I2C?