Verdin AM62: Custom Device Tree Integration and Auto Load via Yocto

Hi Toradex community,
Hi @leonardo.costa.tx

In my last thread I am trying to say that I worked on overlays so am giving that as reference based on that how can I start with device tree is it we have to follow same structure for Meta-layer like i think some change so expecting example code for each file inside meta layer particularly for Verdin-Am62

I’m working on a custom carrier board based on the Verdin AM62 SoC.

I want to:

  1. Create and integrate a custom device tree (DTS) for my carrier board.

  2. Build the custom DTB using Yocto.

  3. Make the custom DTB automatically load at boot, without manually setting it via fw_setenv each time.

Could you please guide me on:

What is the recommended way to structure the meta-layer (e.g., meta-myboard) to add a new DTS for Verdin AM62?

How can I append the custom DTS to linux-toradex using a .bbappend?
( Code for this)

How can I configure Yocto or U-Boot to ensure my custom DTB is the one that boots by default?

Can u please provide Verdin AM62-specific example or template available for this?

Thanks in advance!

Best regards,
Uday

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 Uday,

Thank you for your detailed questions! I’ll guide you step-by-step on how to add and integrate a custom device tree for a Verdin AM62-based custom carrier with Yocto, making it load automatically at boot—no manual fw_setenv needed on each deployment.

Below you’ll find a ready-to-use example for each step and each file relevant for your meta-layer (e.g., meta-myboard).


1. Create Your Custom Meta Layer

First, create a dedicated meta-layer if you don’t have one already (here called meta-myboard):

cd <your-yocto-project-dir>/build/
bitbake-layers create-layer ../layers/meta-myboard

Initialize as a Git repo if developing Torizon OS:

cd ../layers/meta-myboard
git init
git commit -m "Initial Commit" -m "Add meta-myboard from template"

(Reference)


2. Add Your DTS to the Meta Layer

Inside your layer, create the folder for kernel recipes:

cd ../layers/meta-myboard
mkdir -p recipes-kernel/linux/linux-toradex/

Copy your custom DTS file (e.g., mycarrier-verdin-am62.dts) into this directory.


3. bbappend: Append the Custom DTS to linux-toradex

Create recipes-kernel/linux/linux-toradex%.bbappend with this content:

FILESEXTRAPATHS:prepend := "${THISDIR}/linux-toradex:"

# Do NOT use the in-tree defconfig
unset KBUILD_DEFCONFIG

SRC_URI += " \
    file://mycarrier-verdin-am62.dts \
"

do_configure:append() {
    cp ${WORKDIR}/mycarrier-verdin-am62.dts ${S}/arch/arm64/boot/dts/ti/
}

This code ensures your custom DTS is available for the build. For the Verdin AM62, the device trees are in arch/arm64/boot/dts/ti/.
(Full reference & step-by-step)


4. Extend Machine Configuration to Add Your DTB

Create or edit a .conf file (e.g., verdin-am62-mycarrier.conf) in conf/machine/ of your meta layer.

Instruct Yocto to build your DTB:

KERNEL_DEVICETREE:append = " ti/mycarrier-verdin-am62.dtb"

You can also include any existing .conf extension, for example by putting in your layer.conf:

include conf/machine/verdin-am62-mycarrier.conf

(Reference)


5. auto-load Custom DTB on Boot (No manual fw_setenv)

If you set KERNEL_DEVICETREE in your machine configuration, Yocto will set the default DTB in the generated U-Boot env during image creation. You won’t have to run fw_setenv manually unless switching DTBs post-deployment.


6. Example Directory Structure of meta-myboard

Your custom meta-layer might look like this:

meta-myboard/
├── conf/
│   ├── layer.conf
│   └── machine/
│       └── verdin-am62-mycarrier.conf
└── recipes-kernel/
    └── linux/
        └── linux-toradex%.bbappend
        └── mycarrier-verdin-am62.dts

7. Verdin AM62-specific Device Tree Example

See this example for inspiration:
What to add to the dts file to get remoteproc working for the M4 core on TI AM62x


Once you have built your image (bitbake <image-name>), your DTB will be included and set to boot by default matching your meta-layer settings.


Summary Checklist

  • Create meta-myboard layer
  • Add custom DTS to recipes-kernel/linux/linux-toradex/
  • Use a .bbappend as shown above to add your DTS to the build
  • Extend the machine conf for KERNEL_DEVICETREE
  • Build your image; your custom DTB will load by default

If you follow these steps and templates, your Verdin AM62 board will pick up your custom DTB automatically.

Best regards,
Toradex AI Assistant

@ToradexAI @leonardo.costa.tx
I’ve followed the steps to add a custom device tree, but the .dtb file is still not getting generated in the deploy directory.

Could you please help me figure out what might be missing?

Here’s the structure of my meta-custom-board layer:

meta-custom-board/
├── conf/layer.conf
├── recipes-kernel/
│   └── linux/
│       ├── linux-toradex-ti/
│       │   └── mycarrier-verdin-am62.dts
│       └── linux-toradex-ti_6.6.bbappend

My simple mycarrier-verdin-am62.dts looks like this:
I kept it minimal to confirm whether the .dtb gets generated:

// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;

/ {
    model = "Toradex Verdin AM62 on Custom Carrier";
    compatible = "toradex,mycarrier-verdin-am62", "toradex,verdin-am62";

    chosen {
        stdout-path = "serial2:115200n8";
    };
};

My .bbappend file (linux-toradex-ti_6.6.bbappend) has:

FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"

unset KBUILD_DEFCONFIG

SRC_URI += "file://mycarrier-verdin-am62.dts"

do_configure:append() {
    cp ${WORKDIR}/mycarrier-verdin-am62.dts ${S}/arch/arm64/boot/dts/ti/
}

Also, I modified the Makefile here:

dtb-$(CONFIG_ARCH_K3) += k3-am62-lp-sk-microtips-mf101hie-panel.dtbo
dtb-$(CONFIG_ARCH_K3) += k3-am625-sk-mcspi-loopback.dtbo
dtb-$(CONFIG_ARCH_K3) += k3-am62-lp-sk-nand.dtbo


dtb-$(CONFIG_ARCH_K3) += mycarrier-verdin-am62.dtb  (Added this line)

after build
I don’t see mycarrier-verdin-am62.dtb inside:

tmp/deploy/images/verdin-am62/

image that dts copied to /boot/dts/ti

Best regards
uday

Thanks for your response.

Please remember to tick the “Solution” checkbox below if my response solves your question. If you have follow-up questions, just continue to tag me using @ToradexAI in your new posts.

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


Hello Uday,

Thank you for the detailed description and structure overview. If your custom DTB is not being deployed, you are very close—the remaining step is typically to ensure your new DTB is listed in KERNEL_DEVICETREE so the kernel build and image deployment system knows to build and deploy it.

Here’s what you should check and do:


1. Add Your DTB to KERNEL_DEVICETREE

You need to explicitly tell Yocto to build and deploy your mycarrier-verdin-am62.dtb.
This is done by extending KERNEL_DEVICETREE, which you can add to your custom machine .conf file or in your own .bbappend if you wish to apply it generically.

Option A: Machine Configuration

Create or edit (if not already present):

meta-custom-board/conf/machine/verdin-am62-mycarrier.conf

Add:

require conf/machine/verdin-am62.conf

KERNEL_DEVICETREE:append = " ti/mycarrier-verdin-am62.dtb"

Option B: In Your .bbappend

You can also add the following to your linux-toradex-ti_6.6.bbappend (although the machine conf is preferred for larger projects):

KERNEL_DEVICETREE:append = " ti/mycarrier-verdin-am62.dtb"

2. Confirm the Device Tree Path

Since you’re storing the .dts in linux-toradex-ti/mycarrier-verdin-am62.dts, and copying into ${S}/arch/arm64/boot/dts/ti/, the reference in KERNEL_DEVICETREE is correct as "ti/mycarrier-verdin-am62.dtb".


3. Clean and Build the Kernel

After updating the KERNEL_DEVICETREE, force a clean rebuild to ensure no stale cache interferes:

bitbake -c cleansstate linux-toradex-ti
bitbake linux-toradex-ti

Then (or after building your full image):

ls tmp/deploy/images/verdin-am62/ | grep mycarrier-verdin-am62.dtb

You should see your DTB present.


4. No Need to Manually Edit the Makefile

If you append to KERNEL_DEVICETREE, Yocto will handle the device tree make targets for you. Adding to the Makefile inside the kernel tree is not required unless you’re also performing manual kernel builds outside Yocto.


References


Summary Checklist:

  • Make sure KERNEL_DEVICETREE:append = " ti/mycarrier-verdin-am62.dtb" is set
  • Clean and rebuild the kernel
  • Check for the .dtb in tmp/deploy/images/verdin-am62/

Let me know if this resolves your issue!

Best regards,
Toradex AI Assistant

@ToradexAI @leonardo.costa.tx

Adding the following line worked, and I was able to successfully generate the .dtb file:

KERNEL_DEVICETREE:append = " ti/mycarrier-verdin-am62.dtb"

Now, I’d like to boot the image using this DTB automatically—without having to manually set it each time using fw_setenv. Could you please guide me on how to make this configuration persistent or automated?

Best regards,
Uday

Hey, @Uday10122!

If I got it right, you were working with Device Tree Overlays, and now you also want to start using a custom device tree. Is that right? From your previous messages, what I understood is that you were able to deploy your custom device tree to your image and load it using U-Boot.

Now, to set the fdtfile variable in U-Boot to your custom device tree automatically during image build, you will need to create an append to the BSP U-boot recipe, where you will overwrite the fdt_board and fdtfile properties.

  1. Create a custom recipe for U-Boot and add a .bbappend for U-Boot. The Verdin AM62 uses the u-boot-toradex-ti image, so you must make the .bbappend file with the corresponding name:
cd layers/meta-custom-board/
mkdir -p recipes-bsp/u-boot && cd recipes-bsp/u-boot
touch u-boot-toradex-ti_%.bbappend

Your file structure should look like this:

meta-custom-board/
├── conf/layer.conf
├── recipes-bsp/
│   └── u-boot/
│       └── u-boot-toradex-ti_%.bbappend
├── recipes-kernel/
│   └── ...
  1. Open the u-boot-toradex-ti_%.bbappend file and append instructions to the end of the do_configure task to overwrite the fdtfile and fdt_board properties.
# u-boot-toradex-ti_%.bbappend
do_configure:append() {
    sed -i '/"fdtfile=.*\\0" \\/d' ${S}/include/configs/verdin-am62.h

    sed -i 's/\("fdt_board=.*\\0" \\\)/\0\n      "fdtfile=mycarrier-verdin-am62.dtb\\0" \\/' ${S}/include/configs/verdin-am62.h
}
  1. Run bitbake to build your image. You can also check if your .bbappend is being applied properly by running bitbake-layers show-appends u-boot-toradex-ti.
. export
# Inside the `build` directory
bitbake <your-image>

Let me know if this solves the issue.

Best regards,

1 Like

Hi @leonardo.costa.tx,

Before I start working on recipes-bsp, I have a quick question.

I can see that the k3-am625-teckinsoft.dtb file is successfully generated in the Yocto build output directory:

build/deploy/images/verdin-am62/

However, when I boot the image and check the /boot directory on the target, the k3-am625-teckinsoft.dtb file is missing.

I was expecting it to be present there so I could use fw_setenv to set it via the fdtfile variable. But since it’s not found, I’m unsure what might be going wrong or if I’m missing a step to include this DTB in the final image.

Also, to proceed with the boot setup, the .bbappend file you provided will override the fdtfile, but if the corresponding DTB isn’t even present in the image, the system won’t boot at all, right?

for reference:
my meta-layer structure:

dts:

// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;

/ {
    model = "Toradex Verdin AM62 on Custom Carrier";
    compatible =  "toradex,verdin-am62";

    chosen {
        stdout-path = "serial2:115200n8";
    };
};

bbappend file:

FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"

unset KBUILD_DEFCONFIG

SRC_URI += "file://k3-am625-teckinsoft.dts"

do_configure:append() {
    cp ${WORKDIR}/k3-am625-teckinsoft.dts ${S}/arch/arm64/boot/dts/ti/
}

KERNEL_DEVICETREE:append = " ti/k3-am625-teckinsoft.dtb"

and also like i am getting warning like this everytime i build after adding this layer

WARNING: linux-toradex-ti-6.6.84+git-r0 do_kernel_configcheck: [kernel config]: specified values did not make it into the kernel's final configuration:

    [NOTE]: 'CONFIG_I2C_MUX' last val (m) and .config val (y) do not match
    [INFO]: CONFIG_I2C_MUX : y ## .config: 2820 :configs//cfg/arm64/arm64.cfg (m) 
    [INFO]: raw config text:

        config I2C_MUX
        	tristate "I2C bus multiplexing support"
        	depends on I2C
        	help
        	  Say Y here if you want the I2C core to support the ability to
        	  handle multiplexed I2C bus topologies, by presenting each
        	  multiplexed segment as a I2C adapter.
	  
        	  This support is also available as a module.  If so, the module
        	  will be called i2c-mux.

        Config 'I2C_MUX' has the following Direct dependencies (I2C_MUX=y):
                I2C(=y)
        Parent dependencies are:
             I2C [y]

    [INFO]: selection details for 'CONFIG_I2C_MUX':
        Symbols currently y-selecting this symbol:
          - MEDIA_SUBDRV_AUTOSELECT

        Symbols currently n-selecting this symbol (no effect):
          - DRM_SII902X
          - MPU3050_I2C
          - INV_MPU6050_I2C


    [NOTE]: 'CONFIG_IMX_IRQSTEER' last val (m) and .config val (y) do not match
    [INFO]: CONFIG_IMX_IRQSTEER : y ## .config: 6488 :configs//cfg/arm64/arm64.cfg (m) 
    [INFO]: raw config text:

        config IMX_IRQSTEER
        	bool "i.MX IRQSTEER support"
        	default ARCH_MXC
        	select IRQ_DOMAIN
        	depends on ARCH_MXC || COMPILE_TEST
        	help
        	  Support for the i.MX IRQSTEER interrupt multiplexer/remapper.

        Config 'IMX_IRQSTEER' has the following Direct dependencies (IMX_IRQSTEER=y):
                ARCH_MXC(=y) || COMPILE_TEST(=n)
        Parent dependencies are:
             COMPILE_TEST [n] ARCH_MXC [y]

    [INFO]: selection details for 'CONFIG_IMX_IRQSTEER':
        Symbols currently n-selecting this symbol (no effect):
          - DRM_IMX_DCSS


    [NOTE]: 'CONFIG_MUX_MMIO' last val (m) and .config val (y) do not match
    [INFO]: CONFIG_MUX_MMIO : y ## .config: 6613 :configs//cfg/base/base.cfg (m) 
    [INFO]: raw config text:

        config MUX_MMIO
        	tristate "MMIO/Regmap register bitfield-controlled Multiplexer"
        	depends on OF && MULTIPLEXER
        	help
        	  MMIO/Regmap register bitfield-controlled Multiplexer controller.
	  
        	  The driver builds multiplexer controllers for bitfields in either
        	  a syscon register or a driver regmap register. For N bit wide
        	  bitfields, there will be 2^N possible multiplexer states.
	  
        	  To compile the driver as a module, choose M here: the module will
        	  be called mux-mmio.

        Config 'MUX_MMIO' has the following Direct dependencies (MUX_MMIO=y):
                OF(=y) && MULTIPLEXER(=y)
        Parent dependencies are:
             MULTIPLEXER [y] OF [y]

    [INFO]: selection details for 'CONFIG_MUX_MMIO':
        Symbols currently y-selecting this symbol:
          - PHY_J721E_WIZ

        Symbols currently n-selecting this symbol (no effect):
          - MTD_PHYSMAP_BT1_ROM
          - PHY_AM654_SERDES

        Symbols currently n-implying this symbol (no effect):
          - HBMC_AM654


    [NOTE]: 'CONFIG_DRM_DW_HDMI_AHB_AUDIO' last val (m) and .config val (n) do not match
    [INFO]: CONFIG_DRM_DW_HDMI_AHB_AUDIO : n 
    [INFO]: raw config text:

        config DRM_DW_HDMI_AHB_AUDIO
        	tristate "Synopsys Designware AHB Audio interface"
        	select SND_PCM
        	select SND_PCM_ELD
        	select SND_PCM_IEC958
        	depends on DRM_DW_HDMI && SND && DRM && DRM_BRIDGE && HAS_IOMEM
        	help
        	  Support the AHB Audio interface which is part of the Synopsys
        	  Designware HDMI block.  This is used in conjunction with
        	  the i.MX6 HDMI driver.

        Config 'DRM_DW_HDMI_AHB_AUDIO' has the following Direct dependencies (DRM_DW_HDMI_AHB_AUDIO=n):
                DRM_DW_HDMI(=n) && SND(=y) && DRM(=y) && DRM_BRIDGE(=y) && HAS_IOMEM(=y)
        Parent dependencies are:
             DRM [y] DRM_BRIDGE [y] DRM_DW_HDMI [n] SND [y] HAS_IOMEM [y]
    [INFO]: config 'CONFIG_DRM_DW_HDMI_AHB_AUDIO' was set, but it wasn't assignable, check (parent) dependencies


    [NOTE]: 'CONFIG_DRM_DW_HDMI_CEC' last val (m) and .config val (n) do not match
    [INFO]: CONFIG_DRM_DW_HDMI_CEC : n 
    [INFO]: raw config text:

        config DRM_DW_HDMI_CEC
        	tristate "Synopsis Designware CEC interface"
        	select CEC_CORE
        	select CEC_NOTIFIER
        	depends on DRM_DW_HDMI && DRM && DRM_BRIDGE && HAS_IOMEM
        	help
        	  Support the CE interface which is part of the Synopsys
        	  Designware HDMI block.

        Config 'DRM_DW_HDMI_CEC' has the following Direct dependencies (DRM_DW_HDMI_CEC=n):
                DRM_DW_HDMI(=n) && DRM(=y) && DRM_BRIDGE(=y) && HAS_IOMEM(=y)
        Parent dependencies are:
             DRM [y] DRM_BRIDGE [y] DRM_DW_HDMI [n] HAS_IOMEM [y]
    [INFO]: config 'CONFIG_DRM_DW_HDMI_CEC' was set, but it wasn't assignable, check (parent) dependencies


    [NOTE]: 'CONFIG_DRM_DW_HDMI_GP_AUDIO' last val (m) and .config val (n) do not match
    [INFO]: CONFIG_DRM_DW_HDMI_GP_AUDIO : n 
    [INFO]: raw config text:

        config DRM_DW_HDMI_GP_AUDIO
        	tristate "Synopsys Designware GP Audio interface"
        	select SND_PCM
        	select SND_PCM_ELD
        	select SND_PCM_IEC958
        	depends on DRM_DW_HDMI && SND && DRM && DRM_BRIDGE && HAS_IOMEM
        	help
        	  Support the GP Audio interface which is part of the Synopsys
        	  Designware HDMI block.

        Config 'DRM_DW_HDMI_GP_AUDIO' has the following Direct dependencies (DRM_DW_HDMI_GP_AUDIO=n):
                DRM_DW_HDMI(=n) && SND(=y) && DRM(=y) && DRM_BRIDGE(=y) && HAS_IOMEM(=y)
        Parent dependencies are:
             DRM [y] DRM_BRIDGE [y] DRM_DW_HDMI [n] SND [y] HAS_IOMEM [y]
    [INFO]: config 'CONFIG_DRM_DW_HDMI_GP_AUDIO' was set, but it wasn't assignable, check (parent) dependencies


    [NOTE]: 'CONFIG_DRM_IMX' last val (y) and .config val (n) do not match
    [INFO]: CONFIG_DRM_IMX : n 
    [INFO]: raw config text:

        config DRM_IMX
        	tristate "DRM Support for Freescale i.MX"
        	select DRM_KMS_HELPER
        	select VIDEOMODE_HELPERS
        	select DRM_GEM_DMA_HELPER
        	depends on DRM && (ARCH_MXC || COMPILE_TEST) && IMX_IPUV3_CORE && HAS_IOMEM
        	help
        	  enable i.MX graphics support

        Config 'DRM_IMX' has the following Direct dependencies (DRM_IMX=n):
                DRM(=y) && ARCH_MXC(=y) || COMPILE_TEST(=n) (=y) && IMX_IPUV3_CORE(=n) && HAS_IOMEM(=y)
        Parent dependencies are:
             DRM [y] IMX_IPUV3_CORE [n] COMPILE_TEST [n] ARCH_MXC [y] HAS_IOMEM [y]
    [INFO]: config 'CONFIG_DRM_IMX' was set, but it wasn't assignable, check (parent) dependencies


    [NOTE]: 'CONFIG_DRM_IMX_PARALLEL_DISPLAY' last val (y) and .config val (n) do not match
    [INFO]: CONFIG_DRM_IMX_PARALLEL_DISPLAY : n 
    [INFO]: raw config text:

        config DRM_IMX_PARALLEL_DISPLAY
        	tristate "Support for parallel displays"
        	select DRM_PANEL
        	select VIDEOMODE_HELPERS
        	depends on DRM_IMX && HAS_IOMEM

        Config 'DRM_IMX_PARALLEL_DISPLAY' has the following Direct dependencies (DRM_IMX_PARALLEL_DISPLAY=n):
                DRM_IMX(=n) && HAS_IOMEM(=y)
        Parent dependencies are:
             HAS_IOMEM [y] DRM_IMX [n]
    [INFO]: config 'CONFIG_DRM_IMX_PARALLEL_DISPLAY' was set, but it wasn't assignable, check (parent) dependencies


    [NOTE]: 'CONFIG_DRM_IMX_TVE' last val (y) and .config val (n) do not match
    [INFO]: CONFIG_DRM_IMX_TVE : n 
    [INFO]: raw config text:

        config DRM_IMX_TVE
        	tristate "Support for TV and VGA displays"
        	select REGMAP_MMIO
        	depends on DRM_IMX && COMMON_CLK && HAS_IOMEM
        	help
        	  Choose this to enable the internal Television Encoder (TVe)
        	  found on i.MX53 processors.

        Config 'DRM_IMX_TVE' has the following Direct dependencies (DRM_IMX_TVE=n):
                DRM_IMX(=n) && COMMON_CLK(=y) && HAS_IOMEM(=y)
        Parent dependencies are:
             DRM_IMX [n] HAS_IOMEM [y] COMMON_CLK [y]
    [INFO]: config 'CONFIG_DRM_IMX_TVE' was set, but it wasn't assignable, check (parent) dependencies


    [NOTE]: 'CONFIG_DRM_IMX_LDB' last val (y) and .config val (n) do not match
    [INFO]: CONFIG_DRM_IMX_LDB : n 
    [INFO]: raw config text:

        config DRM_IMX_LDB
        	tristate "Support for LVDS displays"
        	select DRM_PANEL
        	depends on DRM_IMX && MFD_SYSCON && COMMON_CLK && HAS_IOMEM
        	help
        	  Choose this to enable the internal LVDS Display Bridge (LDB)
        	  found on i.MX53 and i.MX6 processors.

        Config 'DRM_IMX_LDB' has the following Direct dependencies (DRM_IMX_LDB=n):
                DRM_IMX(=n) && MFD_SYSCON(=y) && COMMON_CLK(=y) && HAS_IOMEM(=y)
        Parent dependencies are:
             MFD_SYSCON [y] DRM_IMX [n] HAS_IOMEM [y] COMMON_CLK [y]
    [INFO]: config 'CONFIG_DRM_IMX_LDB' was set, but it wasn't assignable, check (parent) dependencies


    [NOTE]: 'CONFIG_DRM_IMX_HDMI' last val (y) and .config val (n) do not match
    [INFO]: CONFIG_DRM_IMX_HDMI : n 
    [INFO]: raw config text:

        config DRM_IMX_HDMI
        	tristate "Freescale i.MX DRM HDMI"
        	select DRM_DW_HDMI
        	depends on DRM_IMX && OF && HAS_IOMEM
        	help
        	  Choose this if you want to use HDMI on i.MX6.

        Config 'DRM_IMX_HDMI' has the following Direct dependencies (DRM_IMX_HDMI=n):
                DRM_IMX(=n) && OF(=y) && HAS_IOMEM(=y)
        Parent dependencies are:
             OF [y] HAS_IOMEM [y] DRM_IMX [n]
    [INFO]: config 'CONFIG_DRM_IMX_HDMI' was set, but it wasn't assignable, check (parent) dependencies

Could you please guide me on this?

Thanks,
Uday

Hey, @Uday10122 ,

Sorry, from your previous response I thought you had been able to deploy the device tree to the device.

Can you tell me where you put the line KERNEL_DEVICETREE:append = " ti/mycarrier-verdin-am62.dtb"? It should be in the machine file for your board in your custom layer. In my test setup, I made a file machine/verdin-am62-extra.conf:

# conf/machine/verdin-am62-extra.conf
KERNEL_DEVICETREE:append = " ti/k3-am625-verdin-wifi-leo.dtb"

After creating the machine file, you have to include it in the layer.conf file. Make sure to include it AFTER the BBPATH .= ":${LAYERDIR}" line. Here is my example:

# We have a conf and classes directory, add to BBPATH
BBPATH .= ":${LAYERDIR}"

# We have recipes-* directories, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
            ${LAYERDIR}/recipes-*/*/*.bbappend"

BBFILE_COLLECTIONS += "meta-leo-custom"
BBFILE_PATTERN_meta-leo-custom = "^${LAYERDIR}/"
BBFILE_PRIORITY_meta-leo-custom = "25"

LAYERDEPENDS_meta-leo-custom = "core"
LAYERSERIES_COMPAT_meta-leo-custom = "scarthgap"

include conf/machine/verdin-am62-extra.conf

Before running your build, you can also run bitbake -e <your-image> | less and look for the KERNEL_DEVICETREE variable to verify that your device tree was actually appended to it (or you can run bitbake -e tdx-reference-minimal-image | grep "^KERNEL_DEVICETREE=" directly).

If the dtb file is deployed correctly, you can add the previous u-boot .bbappend and see if it works. Let me know if this solves the issue.

Best regards,

1 Like

Hi @leonardo.costa.tx

Thank you so much for your continuous help and support over the past week. Your guidance has been really valuable and helped me a lot in progressing with my Development.

I truly appreciate it!

Best regards,
Uday

Hi @Uday10122,

I’m glad you managed to solve the problem!

Best regards,

1 Like