Enable driver for ADV7511(ADV7535) in Torizon OS

Hi Team,

We are working on DSI to HDMI converter (ADV7511/ADV7535) on our custom carrier board, which is based on IMX8M Plus. We have replaced ADV7535 instead of LT8912B MIPI DSI to HDMI bridge, which comes with Toradex carrier board.

We are trying to enable driver ADV7511/ADV7535 in Torizon OS, which is running on IMX8M plus.

Kindly please clarify on below points:

  1. Do we need to use Yocto build project or simple kmod configurations?
  2. Which source branch of Torizon OS we have to use?
  3. How to enable the driver using kconfig?
  4. Do we have to make any changes in device tree for DSI to HDMI converter?

Below are the systems details:

Software summary

Bootloader: U-Boot
Kernel version: 5.15.129-6.5.0+git.6f8fd49366db #1-TorizonCore SMP PREEMPT Fri Dec 22 11:15:52 UTC 2023
Kernel command line: root=LABEL=otaroot rootfstype=ext4 quiet logo.nologo vt.global_cursor_default=0 plymouth.ignore-serial-consoles splash fbcon=map:3 ostree=/ostree/boot.0/torizon/0675ef60b6510e69b99103e48d52b4fc37504a16b10cb79a10beaee292d75b0c/0
Distro name: NAME=“TorizonCore”
Distro version: VERSION_ID=6.5.0-build.8
Distro variant: VARIANT=“Docker”
Hostname: verdin-imx8mp-147XXXXX

Hardware info

HW model: Toradex Verdin iMX8M Plus on Verdin Development Board
Toradex version: 0063 V1.1A
Serial number: 14XXXXXX
Processor arch: aarch64

Thanks & Regards,
Rupesh Kathar

Hi, I’m the Toradex AI Assistant.

I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.

Did you like my answer? :+1: :-1:


Hello Rupesh,

Thank you for providing detailed information about your setup. Here’s a step-by-step clarification for each of your questions regarding enabling the ADV7511/ADV7535 DSI-to-HDMI bridge on Torizon OS for your Verdin iMX8M Plus:


1. Do we need to use Yocto build project or simple kmod configurations?

For Torizon OS, direct kernel module (kmod) handling or manual builds are not recommended. The preferred approach for enabling new drivers (such as ADV7511/ADV7535) is to use TorizonCore Builder, not a full Yocto build, unless you need deep customizations not covered by overlays or available modules.


2. Which source branch of Torizon OS should we use?

Your TorizonCore version (6.5.0-build.8) is based on the Linux kernel branch toradex_6.6-2.1.x-imx for the i.MX8M Plus family. For customizations, refer to this kernel branch when preparing device tree overlays or compiling drivers:


3. How to enable the driver using kconfig?

If the ADV7511/ADV7535 driver is not built into your kernel, you may need to enable it via kernel configuration:

  • Use TorizonCore Builder to add or enable additional kernel modules, including ADV7511/ADV7535.
  • If you must manually configure, get the corresponding kernel source and use make menuconfig or make nconfig to enable the driver:
    • Device Drivers → Graphics Support → Display Interface Bridges
    • Enable options for ADV7511/ADV7535 as built-in or module.

After configuration, use TorizonCore Builder to integrate resulting modules/overlays into your Torizon OS image.


4. Do we have to make any changes in device tree for DSI to HDMI converter?

Yes, supporting the ADV7511/ADV7535 bridge requires device tree changes:

  • You must declare the ADV7511/ADV7535 node in your device tree or overlay, specifying:
    • Connection to the MIPI DSI host
    • I2C address/interface for control
    • HDMI output configuration
    • Any required GPIOs (e.g., for reset, enable)
  • PWM for backlight and any other display-specific signals (like hotplug detect) should also be configured.

TorizonCore Builder supports adding such overlays. For reference on MIPI DSI-related signals and how overlays are deployed, see:
MIPI DSI Signals Reference


Prototyping Tip:


Summary of Steps:

  1. Prepare your device tree overlay for ADV7511/ADV7535.
  2. Enable the driver (as kernel config/module if not present).
  3. Use TorizonCore Builder to integrate your overlay and/or kernel modules.
  4. Deploy the image and test HDMI output.

If you need further details on writing the device tree overlay, let me know!

Best regards,
Toradex AI Assistant.

Hi @rkathar!

I’ll ask our R&D team to enable this driver. So, in a few days, it will be added to our nightly images and all other images after that (monthly, quarterly, etc). However, we won’t add new drivers to LTS versions (like 6.8), so I would recommend you use newer Torizon OS versions, such as 7.x. Is it possible for your project?

If you prefer, I can let you know once it has been added to Torizon OS 7.x.

Best regards.

Hi @lucas_az.tx,

Thank you for response!

We could not use Torizon OS version 7.x as our product has developed on version 6.8. We have followed below steps:

  1. Cloned downstream based linux kernel source code and switched to toradex_6.6-2.0.x-imx branch.
  2. Cloned Device tree overlay source code for the same branch (toradex_6.6-2.0.x-imx).

Please provide procedure to enable ADV7511/ADV7535 drivers, as we are working with strict deadline.

Let us know if any information is required from our end.

Thanks & Regards,
Rupesh

Hi @rkathar!

Version 6.6 of the Linux Kernel is used in Torizon 7, as you can see here.

That being said, you should use the menuconfig to enable the driver manually. If you are not familiar with menuconfig, follow these steps:

  1. Do the Kernel Configuration (in your case, you should use Verdin iMX8MP kernel-config).
  2. Go to Kernel folder and run make menuconfig.
  3. Search for the driver by typing /ADV7511.
  4. Select it by typing the respective number of the driver you need.
  5. Type y to enable the driver.
  6. Save and Exit.

After this, you can compile the kernel and deploy it to and image, don’t forget to configure your computer for cross-compilation before compiling the kernel.

Best regards.

Hi @lucas_az.tx !

I believe just enabling the driver in kernel won’t work? Or will it? I’ve to add device tree/device tree overlay for adv7535 as well.

I’m trying to go by the overlay method,
For that I’ve created two overlays in device-tree overlay directory,
1.adv7535-overlay.dts (1.3 KB)
2. Disable existing lontium overlay in dsi to hdmi overlay.
disable-lontium-overlay.dts (126 Bytes)

Now, in my root tcbdir I’ve below directories and files,
admin@PC1FMBN4:~/tcbdir$ ls
device-trees linux tcb-env-setup.sh tcbuild.yaml torizon-core-docker-verdin-imx8mp-Tezi_6.8.2+build.30.tar

I’ve placed the above 2 overlays I created in device-trees/overlays folder and created a tcbuild.yaml file as
tcbuild.yaml (332 Bytes)

Now using the torizon builder to apply overlay I’m facing below issue,

admin@PC1FMBN4:~/tcbdir$ torizoncore-builder dto apply device-trees/overlays/adv7535-overlay.dts --device-tree imx8mp-verdin-wifi-yavia.dtb
'adv7535-overlay.dts' compiles successfully.

Failed to apply '/tmp/tmp3oqczhb4': FDT_ERR_NOTFOUND

error: cannot apply device tree overlays ['/storage/sysroot/ostree/deploy/torizon/deploy/632d2e063bc4774fd300dc99eaca7fba7669d41ebe2a289ae88ef476b1ce79e9.0/usr/lib/modules/5.15.177-6.8.2+git.5a6602cc6c32/dtb/overlays/verdin-imx8mp_hdmi_overlay.dtbo', '/storage/sysroot/ostree/deploy/torizon/deploy/632d2e063bc4774fd300dc99eaca7fba7669d41ebe2a289ae88ef476b1ce79e9.0/usr/lib/modules/5.15.177-6.8.2+git.5a6602cc6c32/dtb/overlays/verdin-imx8mp_dsi-to-hdmi_overlay.dtbo', '/storage/sysroot/ostree/deploy/torizon/deploy/632d2e063bc4774fd300dc99eaca7fba7669d41ebe2a289ae88ef476b1ce79e9.0/usr/lib/modules/5.15.177-6.8.2+git.5a6602cc6c32/dtb/overlays/verdin-imx8mp_spidev_overlay.dtbo', '/tmp/tmp3oqczhb4'] against device tree /storage/sysroot/ostree/deploy/torizon/deploy/632d2e063bc4774fd300dc99eaca7fba7669d41ebe2a289ae88ef476b1ce79e9.0/usr/lib/modules/5.15.177-6.8.2+git.5a6602cc6c32/dtb/imx8mp-verdin-wifi-yavia.dtb.
error: overlay 'device-trees/overlays/adv7535-overlay.dts' is not applicable.

The second issue I’m facing is at enabling ADV7511 driver for kernel 5.15.

In the linux folder where the kernel is cloned.
I ran make menuconfig as you suggested
but I don’t find the ADV7511 option in menuconfig for kernel 5.15 but it is there for kernel 6.6

In kernel 6.6 I did,
CONFIG_DRM_I2C_ADV7511=y
CONFIG_DRM_I2C_ADV7511_AUDIO=y
CONFIG_DRM_I2C_ADV7511_CEC=y

In kernel 5.15
CONFIG_VIDEO_ADV7511=y
CONFIG_VIDEO_ADV7511_CEC=y

Do I need to add AUDIO in version 5.15 of kernel?

If I’m proceeding with compiling kernel with these configuration,
Kernel compilation is successful and Image.gz is generated for kernel 6.6.

But the same doesn’t works for kernel 5.15, I run into issue

min@PC1FMBN4:~/tcbdir/linux$ make -j$(nproc) Image.gz 2>&1 | tee build.log
make DTC_FLAGS="-@" freescale/imx8mp-verdin-wifi-yavia.dtb
ls ./arch/arm64/boot/Image.gz
ls ./arch/arm64/boot/dts/freescale/imx8mp-verdin-wifi-yavia.dtb
  SYNC    include/config/auto.conf.cmd
  HOSTCC  scripts/kconfig/conf.o
  HOSTLD  scripts/kconfig/conf
.config:727:warning: symbol value 'm' invalid for KVM
*
* Restart config...
*
*
* Platform selection
*

And I’m trying to generate an installable iso/image that can be installed with easy installer.

For that,

I am unable to understand the step,
Build Linux Kernel from Source Code | Toradex Developer Center.

Where can I get these set of files bootfs tar, and how the image is generated without going Yocto way.

I’m reiterating the steps I’m trying, please provide alternative/corrections if any,
1. Get the kernel source for my required OS.
2. Enable kernel in .config and build kernel from source.
3.Create an overlay replacing the existing lontium overlay for dsi to hdmi, catering to ADV7535.
4.Merge the kernel image I created after enabling driver and the overlay into torizon os image,
5. Generate custom OS image that have my driver inbuilt into kernel and my overlay in place for ADV7535 replacing the existing Lontium based overlay.

Thanks & Regards,
Rupesh

Hi @lucas_az.tx ,

Any update on my previous comments?

Thanks & Regards,
Rupesh

Hi @rkathar!

The first error is caused by referencing nodes that do not exist. For example, in your adv7535-overlay.dts, you call the nodes &adv7535_in and &adv7535_out, but they are not defined, neither in our device tree nor your overlay.

About the kernel configuration, I’ve found the driver for it in kernel 5.15:

Regarding our developer article that you sent, the bootfs file is located inside the image’s folder. It means you should download the image from our artifacts and replace the files with the ones you built in the previous steps of the article.

If you are not experienced in writing overlays and/or working with device trees, I would recommend taking a look at our Partner Network, where you can find partners with the expertise necessary to accelerate your project.

Best regards.