NPU usage in Verdin IMX8MP

I am deploying a custom SO using yocto scarthgap, but i have problems to use the NPU,

i am using this patch to enable the npu
From 0caf9cbbda24fb7450ef6ce9fdc9c9fd611b046b Mon Sep 17 00:00:00 2001

From: Alessandro Villegas <eavillegas@arquimea.com>

Date: Tue, 24 Feb 2026 15:42:29 +0100

Subject: [PATCH] Enable spi and npu for imx8mp




---

 arch/arm64/boot/dts/freescale/imx8mp.dtsi | 25 +++++++++++++++--------

 1 file changed, 17 insertions(+), 8 deletions(-)




diff --git a/arch/arm64/boot/dts/freescale/imx8mp.dtsi b/arch/arm64/boot/dts/freescale/imx8mp.dtsi

index 3025f89c28b0..f27354981f96 100644

--- a/arch/arm64/boot/dts/freescale/imx8mp.dtsi

+++ b/arch/arm64/boot/dts/freescale/imx8mp.dtsi

@@ -1005,20 +1005,29 @@ spba-bus@30800000 {

                ranges;

                ecspi1: spi@30820000 {

-                   #address-cells = <1>;

-                   #size-cells = <0>;

+                   /* Properties inherited from the SoC definition */

                    compatible = "fsl,imx8mp-ecspi", "fsl,imx6ul-ecspi";

                    reg = <0x30820000 0x10000>;

                    interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;

-                   clocks = <&clk IMX8MP_CLK_ECSPI1_ROOT>,

-                        <&clk IMX8MP_CLK_ECSPI1_ROOT>;

+                   clocks = <&clk IMX8MP_CLK_ECSPI1_ROOT>, <&clk IMX8MP_CLK_ECSPI1_ROOT>;

                    clock-names = "ipg", "per";

                    assigned-clock-rates = <80000000>;

                    assigned-clocks = <&clk IMX8MP_CLK_ECSPI1>;

                    assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>;

                    dmas = <&sdma1 0 7 1>, <&sdma1 1 7 2>;

                    dma-names = "rx", "tx";

-                   status = "disabled";

+

+                   /* Properties modified/added by your board file */

+                   #address-cells = <1>;

+                   #size-cells = <0>;

+                   status = "okay";  /* Changed from "disabled" to "okay" */

+

+                   /* New child node added by your board file */

+                   spidev@0 {

+                       compatible = "rohm,dh2228fv";

+                       reg = <0>;

+                       spi-max-frequency = <10000000>;

+                   };

                };

                ecspi2: spi@30830000 {

@@ -2417,7 +2426,7 @@ gpu_3d: gpu3d@38000000 {

        assigned-clock-rates = <1000000000>, <1000000000>,

                       <800000000>, <400000000>;

        power-domains = <&pgc_gpu3d>;

-       status = "disabled";

+       status = "okay";

    };

    gpu_2d: gpu2d@38008000 {

@@ -2436,7 +2445,7 @@ gpu_2d: gpu2d@38008000 {

                     <&clk IMX8MP_SYS_PLL1_800M>;

        assigned-clock-rates = <1000000000>, <800000000>, <400000000>;

        power-domains = <&pgc_gpu2d>;

-       status = "disabled";

+       status = "okay";

    };

    ml_vipsi: vipsi@38500000 {

@@ -2465,7 +2474,7 @@ mix_gpu_ml: mix_gpu_ml@40000000 {

        reg = <0x0 0x40000000 0x0 0xC0000000>, <0x0 0x0 0x0 0x10000000>;

        reg-names = "phys_baseaddr", "contiguous_mem";

        memory-region=<&gpu_reserved>;

-       status = "disabled";

+       status = "okay";

        throttle,max_state = <1>;

        #cooling-cells = <2>;

-- 

2.43.0

i am able to see /dev/galcore and

root@localhost:~# uname -a

Linux localhost.localdomain 6.6.94-0 #1 SMP PREEMPT Tue Jul 29 12:48:48 UTC 2025 aarch64 GNU/Linux

root@localhost:~# 


root@localhost:~# ls -l /lib/modules/$(uname -r)/updates/galcore.ko

-rw-r--r-- 1 root root 643856 Mar  9  2018 /lib/modules/6.6.94-0/updates/galcore.ko

root@localhost:~# 


root@localhost:~# ls -l /lib/modules/$(uname -r)/updates/galcore.ko

-rw-r--r-- 1 root root 643856 Mar  9  2018 /lib/modules/6.6.94-0/updates/galcore.ko
root@localhost:~# modinfo /lib/modules/$(uname -r)/updates/galcore.ko

filename:       /lib/modules/6.6.94-0/updates/galcore.ko

import_ns:      VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver

license:        Dual MIT/GPL

description:    Vivante Graphics Driver

import_ns:      DMA_BUF

import_ns:      DMA_BUF

import_ns:      DMA_BUF

import_ns:      DMA_BUF

alias:          of:N*T*Cfsl,imx6q-gpuC*

alias:          of:N*T*Cfsl,imx6q-gpu

alias:          of:N*T*Cfsl,imx8-gpu-ssC*

alias:          of:N*T*Cfsl,imx8-gpu-ss

depends:        

name:           galcore

vermagic:       6.6.94-0 SMP preempt mod_unload modversions aarch64

parm:           initgpu3DMinClock:int

parm:           registerMemBase:Base of bus address of GC core AHB register (ulong)

parm:           registerMemSize:Size of bus address range of GC core AHB register (ulong)

parm:           registerMemBase2D:Base of bus address of G2D core, if registerMemBase2D is used for a G3D core (ulong)

parm:           registerMemSize2D:Size of bus address range of G2D core, if registerMemSize is used for a G3D core (ulong)

parm:           registerMemBaseVG:Base of bus address of VG core (ulong)

parm:           registerMemSizeVG:Size of bus address range of VG core (ulong)

parm:           registerBases:Array of bases of bus address of register of multi-core (array of ullong)

parm:           registerSizes:Array of sizes of bus address range of register of multi-core (array of ulong)

parm:           register2DBases:Array of bases of bus address of register of multi-2D (array of ullong)

parm:           register2DSizes:Array of sizes of bus address range of register of multi-2D (array of ulong)

parm:           registerAPB:The offset of APB register to the register base address. (uint)

parm:           contiguousSize:Size of reserved system memory (ulong)

parm:           contiguousBase:Base address of reserved system memory (ullong)

parm:           contiguousSizes:Sizes of reserved system memory array (array of ulong)

parm:           contiguousBases:Base addresses of reserved system memory array (array of ullong)

parm:           externalSize:Size of external local memory, if it is 0, means there is no external pool (array of ulong)

parm:           externalBase:Base address of external memory (array of ullong)

parm:           exclusiveSize:Size of exclusive local memory, if it is 0, means there is no exclusive pool (array of ulong)

parm:           exclusiveBase:Base address of exclusive memory(GPU access only) (array of ullong)

parm:           irqLine:IRQ number of GC core (int)

parm:           irqLine2D:IRQ number of G2D core if irqLine is used for a G3D core (int)

parm:           irqLineVG:IRQ number of VG core (int)

parm:           irqs:Array of IRQ numbers of multi-core (array of int)

parm:           irq2Ds:Array of IRQ numbers of multi-2D (array of int)

parm:           isrPoll:Bits isr polling for per-core, default 0'1b means disable, 1'1b means auto enable isr polling mode (uint)

parm:           platformIDs:Array of platform id of each hardware device (array of uint)

parm:           hwDevCounts:Array of hw device count of each platform (array of uint)

parm:           devCoreCounts:Array of core count of each hardware device (array of uint)

parm:           dev2DCoreCounts:Array of core 2D count of each hardware device (array of uint)

parm:           devMemIDs:Array of local memory index of each hardware device (array of uint)

parm:           devSysMemIDs:Array of system reserved memory index of each hardware device, each bit represents memory id (array of uint)

parm:           devSRAMIDs:Array of SRAM index of each hardware device, each bit represents memory id (array of uint)

parm:           chipIDs:Array of chipIDs of multi-chips (array of uint)

parm:           fastClear:Disable fast clear if set it to 0, enabled by default (int)

parm:           compression:Disable compression if set it to 0, enabled by default (int)

parm:           powerManagement:Disable auto power saving if set it to 0, enabled by default (int)

parm:           recovery:Recover GPU from stuck (1: Enable, 0: Disable) (uint)

parm:           stuckDump:Level of stuck dump content. (uint)

parm:           debugLevel:Level of debug. (uint)

parm:           showArgs:Display parameters value when driver loaded (int)

parm:           userClusterMasks:Array of user defined per-core cluster enable mask (array of uint)

parm:           enableNN:How many NN cores will be enabled in one VIP, 0xFF means all enabled, 0 means all disabled, 1 means enable 1 NN core... (uint)

parm:           smallBatch:Enable/disable GPU small batch feature, enable by default (int)

parm:           allMapInOne:Mapping kernel video memory to user, 0 means mapping every time, otherwise only mapping one time (int)

parm:           gpuTimeout:Timeout of operation that needs to wait for the GPU (uint)

parm:           softReset:Disable soft reset when insert the driver if set it to 0, enabled by default. (uint)

parm:           sRAMLoopMode:Default 0 means SRAM pool must be specified when allocating SRAM memory, 1 means SRAM memory will be looped as default pool. (uint)

parm:           sRAMBases:Array of base of bus address of SRAM,INTERNAL, EXTERNAL0, EXTERNAL1..., gcvINVALID_PHYSICAL_ADDRESS means no bus address (array of ullong)

parm:           sRAMSizes:Array of size of per-core SRAMs, 0 means no SRAM (array of uint)

parm:           extSRAMBases:Shared SRAM physical address bases. (array of ullong)

parm:           extSRAMSizes:Shared SRAM sizes. (array of uint)

parm:           sRAMRequested:Default 1 means AXI-SRAM is already reserved for GPU, 0 means GPU driver need request the memory region. (uint)

parm:           mmu:Disable MMU if set it to 0, enabled by default (int)

parm:           mmuPageTablePool:Default 1 means alloc mmu page table in virtual memory(external if PCIE), 0 means auto select memory pool. (uint)

parm:           mmuCmdPool:Default 1 means auto select memory pool to allocate mmu initial command, specific the pool type with gcvPOOL_XXXX (uint)

parm:           mmuDynamicMap:Default 1 means enable mmu dynamic mapping in virsual memory, 0 means disable dynnamic mapping. (uint)

parm:           baseAddress:The pre-flatmapping CPU view base address in MMU page table. It's shared for all core (ulong)

parm:           physSize:The pre-flatmapping size in MMU page table. If set it to 0, driver will skip all the pre-flatmapping related work (ulong)

parm:           major:major device number for GC device (uint)

parm:           type:0 - Char Driver (Default), 1 - Misc Driver (uint)

root@localhost:~# 

However the NPU is not working

root@localhost:/usr/bin/tensorflow-lite-2.16.2/examples# USE_GPU_INFERENCE=1 ./label_image \
-m mobilenet_v1_1.0_224_quant.tflite \
-i grace_hopper.bmp \
-l labels.txt \
--external_delegate_path=/usr/lib/libvx_delegate.so

INFO: Loaded model mobilenet_v1_1.0_224_quant.tflite
INFO: resolved reporter
INFO: Vx delegate: allowed_cache_mode set to 0.
INFO: Vx delegate: device num set to 0.
INFO: Vx delegate: allowed_builtin_code set to 0.
INFO: Vx delegate: error_during_init set to 0.
INFO: Vx delegate: error_during_prepare set to 0.
INFO: Vx delegate: error_during_invoke set to 0.
INFO: EXTERNAL delegate created.
INFO: Applied EXTERNAL delegate.
W [query_hardware_caps:89] Unsupported evis version
W [HandleLayoutInfer:332] Op 162: default layout inference pass.
INFO: invoked
INFO: average time: 167.485 ms
INFO: 0.784314: 653 military uniform
INFO: 0.105882: 907 Windsor tie
INFO: 0.0156863: 458 bow tie
INFO: 0.00784314: 466 bulletproof vest
INFO: 0.00392157: 835 suit

root@localhost:/usr/bin/tensorflow-lite-2.16.2/examples# USE_GPU_INFERENCE=0 ./label_image \
-m mobilenet_v1_1.0_224_quant.tflite \
-i grace_hopper.bmp \
-l labels.txt \
--external_delegate_path=/usr/lib/libvx_delegate.so

INFO: Loaded model mobilenet_v1_1.0_224_quant.tflite
INFO: resolved reporter
INFO: Vx delegate: allowed_cache_mode set to 0.
INFO: Vx delegate: device num set to 0.
INFO: Vx delegate: allowed_builtin_code set to 0.
INFO: Vx delegate: error_during_init set to 0.
INFO: Vx delegate: error_during_prepare set to 0.
INFO: Vx delegate: error_during_invoke set to 0.
INFO: EXTERNAL delegate created.
INFO: Applied EXTERNAL delegate.
W [query_hardware_caps:89] Unsupported evis version
W [HandleLayoutInfer:332] Op 162: default layout inference pass.
INFO: invoked
INFO: average time: 167.506 ms
INFO: 0.784314: 653 military uniform
INFO: 0.105882: 907 Windsor tie
INFO: 0.0156863: 458 bow tie
INFO: 0.00784314: 466 bulletproof vest
INFO: 0.00392157: 835 suit

i compared with the reference image and there it is working

i am using the same kernel


root@verdin-imx8mp-08626514:~# uname -a

Linux verdin-imx8mp-08626514 6.6.94-7.4.0-devel #1 SMP PREEMPT Tue Jul 29 12:48:48 UTC 2025 aarch64 GNU/Linux

root@verdin-imx8mp-08626514:~# 

root@verdin-imx8mp-08626514:~# ls -l /lib/modules/$(uname -r)/updates/galcore.ko

-rw-r--r-- 1 root root 643872 Mar  9  2018 /lib/modules/6.6.94-7.4.0-devel/updates/galcore.ko

root@verdin-imx8mp-08626514:~# 

As far as i see the only difference is i am using 6.6.94-0 and reference image 6.6.94-7.4.0-devel due to i am not using tdx-base.inc

TDX_BUILD ?= “+build.${TDX_BUILDNBR}”
TDX_MATRIX_BUILD_TIME ?= “${DATETIME}”
TDX_MATRIX_BUILD_TIME[vardepsexclude] = “DATETIME”
TDX_PRERELEASE ?= “${@get_tdx_prerelease(d.getVar(‘TDX_PURPOSE’), d.getVar(‘TDX_MATRIX_BUILD_TIME’))}”
TDX_MAJOR ?= “7”
TDX_MINOR ?= “4”
TDX_PATCH ?= “0”
TDX_RELEASE ?= “${TDX_MAJOR}.${TDX_MINOR}.${TDX_PATCH}”

TDX_VERSION ?= “${TDX_RELEASE}${@‘’ if d.getVar(‘TDX_PURPOSE’) == ‘Release’ else ‘-devel’}”

but it shouldnt be a problem because there is no aditional config files or patch.

Hi, I’m the Toradex AI Assistant.

I might make mistakes or occasionally get you wrong. Our support team will step in if needed.


I’d be glad to help with your NPU configuration issue! To provide the most accurate guidance, could you let me know:

  1. Which specific hardware platform are you using (SoM and carrier board)?
  2. Which OS version are you running?

You can get this information by running the tdx-info command on your device. For more details on this command, please see: Getting Device Information with Tdx-Info | Toradex Developer Center

This information will help me provide platform-specific guidance for your NPU configuration with Yocto Scarthgap, as the implementation details can vary significantly between different Toradex platforms.

Best regards,
Toradex AI Assistant.


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

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

I am using Verdin IMX8MP with Dahlia Carrier board, i cannot run tdx-info i am not using tdx distro @ToradexAI

Based on your setup with Verdin iMX8M Plus and Dahlia Carrier Board, I can see the issue with your NPU configuration. The warning message W [query_hardware_caps:89] Unsupported evis version indicates that the NPU delegate isn’t recognizing the hardware properly.

Key Issues with Your NPU Configuration

Device Tree Configuration Problems

Looking at your patch, you’re enabling the GPU cores but not specifically configuring the NPU. The mix_gpu_ml node you’ve enabled is related to the GPU/ML mix, but the NPU requires additional configuration (1).

For Verdin iMX8M Plus, you need to ensure the NPU-specific device tree nodes are properly configured. The NPU on iMX8M Plus requires specific power domain and clock configurations that may not be included in your current patch.

Missing NPU-Specific Configuration

Your current patch focuses on GPU (2D/3D) enablement, but the NPU requires additional considerations:

  1. Power Domain Configuration: The NPU has its own power domain that needs to be enabled
  2. Clock Configuration: NPU-specific clocks need proper setup
  3. Memory Reservation: NPU may require reserved memory regions

Kernel Version Mismatch Impact

The difference between your kernel version (6.6.94-0) and the reference (6.6.94-7.4.0-devel) could be significant. The Toradex reference images include additional patches and configurations that may not be present in your custom build.

Recommendations

1. Device Tree Overlay Approach

Instead of patching the main device tree, consider using a device tree overlay for NPU enablement (1). This approach allows for:

  • Selective Modification: Enable NPU without affecting other subsystems (1)
  • Easier Debugging: Isolate NPU-specific changes (1)
  • Flexibility: Switch configurations without rebuilding the entire kernel (1)

2. Check NPU-Specific Nodes

Verify that your device tree includes the proper NPU nodes for iMX8M Plus. The NPU typically requires:

  • VPU/NPU power domain configuration
  • Proper clock assignments
  • Memory region definitions

3. Validate Yocto Configuration

Ensure your Yocto build includes all NPU-related packages and kernel configurations that are present in the Toradex reference build.

Next Steps

  1. Compare Device Trees: Compare your final device tree with the working Toradex reference to identify missing NPU-specific configurations
  2. Check Kernel Config: Verify that all NPU-related kernel configurations are enabled in your build
  3. Review Memory Configuration: Ensure proper memory regions are reserved for NPU operation

The timing difference between GPU and NPU execution (both showing ~167ms) suggests the NPU isn’t being utilized, which aligns with the “Unsupported evis version” warning.

Best regards,
Toradex AI Assistant.


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

If I answered your question, please tick the “Solution” checkbox.

For follow-up questions to me, please use @ToradexAI in your post.

I need some not AI help

Hi, make sure you have the NPU node in the device tree.

diff --git a/arch/arm64/boot/dts/freescale/imx8mp.dtsi b/arch/arm64/boot/dts/freescale/imx8mp.dtsi
index 4b50920ac204..56f72d264eee 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp.dtsi
+++ b/arch/arm64/boot/dts/freescale/imx8mp.dtsi
@@ -886,6 +886,15 @@ pgc_mlmix: power-domain@24 {
 						clocks = <&clk IMX8MP_CLK_ML_AXI>,
 							 <&clk IMX8MP_CLK_ML_AHB>,
 							 <&clk IMX8MP_CLK_NPU_ROOT>;
+						assigned-clocks = <&clk IMX8MP_CLK_ML_CORE>,
+								  <&clk IMX8MP_CLK_ML_AXI>,
+								  <&clk IMX8MP_CLK_ML_AHB>;
+						assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>,
+									 <&clk IMX8MP_SYS_PLL1_800M>,
+									 <&clk IMX8MP_SYS_PLL1_800M>;
+						assigned-clock-rates = <800000000>,
+								       <800000000>,
+								       <300000000>;
 					};
 				};
 			};
@@ -1970,6 +1979,18 @@ vpumix_blk_ctrl: blk-ctrl@38330000 {
 			interconnect-names = "g1", "g2", "vc8000e";
 		};
 
+		npu: npu@38500000 {
+			compatible = "vivante,gc";
+			reg = <0x38500000 0x200000>;
+			interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&clk IMX8MP_CLK_NPU_ROOT>,
+				 <&clk IMX8MP_CLK_NPU_ROOT>,
+				 <&clk IMX8MP_CLK_ML_AXI>,
+				 <&clk IMX8MP_CLK_ML_AHB>;
+			clock-names = "core", "shader", "bus", "reg";
+			power-domains = <&pgc_mlmix>;
+		};
+
 		gic: interrupt-controller@38800000 {
 			compatible = "arm,gic-v3";
 			reg = <0x38800000 0x10000>,

I was checking Toradex image where NPU is working and there is no any reference to NPU in the dtb or dtbo. Anyway i was able to solved it applying this patch

From 2c6ca48317948546c88e99a8d50d830771fc3b60 Mon Sep 17 00:00:00 2001

From: Alessandro Villegas eavillegas@arquimea.com

Date: Wed, 4 Mar 2026 09:46:36 +0100

Subject: [PATCH] Enable SPI and NPU for imx8mp

-–

arch/arm64/boot/dts/freescale/imx8mp.dtsi | 27 ++++++++++++++±-------

1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/arch/arm64/boot/dts/freescale/imx8mp.dtsi b/arch/arm64/boot/dts/freescale/imx8mp.dtsi

index 3025f89c28b0..c631c621a129 100644

-– a/arch/arm64/boot/dts/freescale/imx8mp.dtsi

+++ b/arch/arm64/boot/dts/freescale/imx8mp.dtsi

@@ -1005,20 +1005,29 @@ spba-bus@30800000 {

            ranges;

            ecspi1: spi@30820000 {

-                   #address-cells = <1>;

-                   #size-cells = <0>;

+                   /* Properties inherited from the SoC definition */

                compatible = "fsl,imx8mp-ecspi", "fsl,imx6ul-ecspi";

                reg = <0x30820000 0x10000>;

                interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;

-                   clocks = <&clk IMX8MP_CLK_ECSPI1_ROOT>,

-                        <&clk IMX8MP_CLK_ECSPI1_ROOT>;

+                   clocks = <&clk IMX8MP_CLK_ECSPI1_ROOT>, <&clk IMX8MP_CLK_ECSPI1_ROOT>;

                clock-names = "ipg", "per";

                assigned-clock-rates = <80000000>;

                assigned-clocks = <&clk IMX8MP_CLK_ECSPI1>;

                assigned-clock-parents = <&clk IMX8MP_SYS_PLL1_800M>;

                dmas = <&sdma1 0 7 1>, <&sdma1 1 7 2>;

                dma-names = "rx", "tx";

-                   status = “disabled”;



+                   /* Properties modified/added by your board file */

+                   #address-cells = <1>;

+                   #size-cells = <0>;

+                   status = “okay”;  /* Changed from “disabled” to “okay” */



+                   /* New child node added by your board file */

+                   spidev@0 {

+                       compatible = “rohm,dh2228fv”;

+                       reg = <0>;

+                       spi-max-frequency = <10000000>;

+                   };

            };

            ecspi2: spi@30830000 {

@@ -2417,7 +2426,7 @@ gpu_3d: gpu3d@38000000 {

    assigned-clock-rates = <1000000000>, <1000000000>,

                   <800000000>, <400000000>;

    power-domains = <&pgc_gpu3d>;

-       status = “disabled”;

+       status = “okay”;

};

gpu_2d: gpu2d@38008000 {

@@ -2436,7 +2445,7 @@ gpu_2d: gpu2d@38008000 {

                 <&clk IMX8MP_SYS_PLL1_800M>;

    assigned-clock-rates = <1000000000>, <800000000>, <400000000>;

    power-domains = <&pgc_gpu2d>;

-       status = “disabled”;

+       status = “okay”;

};

ml_vipsi: vipsi@38500000 {

@@ -2456,7 +2465,7 @@ ml_vipsi: vipsi@38500000 {

                 <&clk IMX8MP_SYS_PLL1_800M>;

    assigned-clock-rates = <1000000000>, <800000000>, <400000000>;

    power-domains = <&pgc_mlmix>;

-       status = “disabled”;

+       status = “okay”;

};

mix_gpu_ml: mix_gpu_ml@40000000 {

@@ -2465,7 +2474,7 @@ mix_gpu_ml: mix_gpu_ml@40000000 {

    reg = <0x0 0x40000000 0x0 0xC0000000>, <0x0 0x0 0x0 0x10000000>;

    reg-names = "phys_baseaddr", "contiguous_mem";

    memory-region=<&gpu_reserved>;

-       status = “disabled”;

+       status = “okay”;

    throttle,max_state = <1>;

    #cooling-cells = <2>;

--

2.43.0

any idea why? i understand this is for VPU but with this everything works fine.

HI @eavillegast!

I’m glad you were able to solve the issue.

From what you’ve described, your setup involves a significant level of customization.

While we’re glad to assist where we can, this particular setup involves some software-specific elements that aren’t typically covered by our usual support resources, such as using a non-Toradex distro base.

Although you can use Yocto to create your own distro, we strongly recommend using our reference images as a base and customizing them with the modifications you may need. That said, I’m not sure why your patch solved the issue, since it is a custom image and patch.

We also recommend reaching out to our partners on our Partner Network, as they can help you accelerate the development of your project.

Best regards

Hello.

Thank you. Yes, my setup is a custom yocto, so far i found a lot of limitations in toradex layers but i was able to solve all of them.

1 Like