I am working on my first yocto and toradex project.
For that I use the Colibri Evaluation V3 Board and bitbake.
I have to add a AD7606-8 device and overwrite the gpios for the device.
Therefore I need to make changes to the device-tree.
I made changes to the colibri-eval-e3.dtsi files in /build/tmp/work-shared/colibri-imx6ull/kernel-source/arc/arm/boot/dts but with no impact. I also added a new file and included it in the makefile what either had not effect.
I don’t find other folders with dts files that I could change. I also don’t have an /opt folder on the target system, where I could test editing the dts files.
Maybe someone can help me and tell me where I have to look for the correct dts files to change?
Thanks for the response.
I’m still having problems finding a solution, although I followed several guides from Toradex.
I followed every step here, created a layer and a recipe, also an image, but my device-tree changes have no impact and are nowhere to be found in the created image.
I also followed this guides, compiled my own device-tree-overlay, copied it onto my device, created a /boot/overlays folder and a overlays.txt with: “fdt_overlays=my_overlay.dtbo”, set the env variables in u-boot (overlays_file, fdt_overlays, overlays_prefix), still no effect.
To simplify it, I just want to deactivate some device (like i2c-1) to see that my overlay has any impact.
In most tutorials i found, there always is a /opt-folder and an /boot/overlays-folder. I do not have that folders and I don’t know how to get those, so…
How can I deactivate f.e. i2c-1 with an overlay, that I compile, copy onto my device and set the env variables in u-boot?
Why is the /boot/overlays folder and the overlays.txt not created automatically? What do I have to do for that?
Maybe my overwrite is totally wrong? (at least it compiles without problems - if I implement an error, the compiler instantly reports that it is unable to parse the input tree - as it should)
/dts-v1/;
/plugin/;
To add a device tree overlay to your Yocto build, the Device Tree Overlays (Linux) | Toradex Developer Center article has the section Production: Add Your Overlays to a Custom Yocto Project Build that might help you on this.
You shouldn’t have to create the /boot/overlays folder if you use the default machine configurations from Toradex (the default MACHINE=colibri-imx6ull-emmc, in your case).
Another question: can I somehow check, if the overlay was included in the image without having to copy it to the board? (like there has to be my overlay-file or the overlays.txt somewhere in the image?)
In our call I talked about the different levels of device tree (SoC level, SoM level and carrier board). If you include the board level device tree in the beginning of the custom device tree, the module should boot as expected.
There you can add the changes that you want to apply to the device tree and then rebuild.
You can try to follow these steps and then if you want we can arrange another call, where we can look at it together in case it wont work.
Another question we talked about was the location of the uncompiled device tree files. You should be able to find them here: /build/tmp/work-shared/colibri-imx6ull/kernel-source/arch/arm/boot/dts
Let me know if you have questions about any of it.
another call would be helpful, as I already tried to follow this article.
Maybe the problem is with the defconfig, as I don’t know which is the correct one to use. I tried to go with unsetting KBUILD_DEFCONFIG or using no defconfig at all in my bbappend, but that did not help.
I also tried to make changes to files in /build/tmp/work-shared/colibri-imx6ull/kernel-source/arch/arm/boot/dts in order to get my changes into the image, but as those files a temporary, that had no effect.
After our call on Friday, we noticed something that we wanted to add.
It occurs that to make this setup work (after removing the _append from the KERNEL_DEVICETREE variable) there is another change needed successfully make it work.
The change would be done in your custom .conf file that we looked at together.
This would be the change (my-custom.dtb is a placeholder for your specific filename):
The first line should already be present (as mentioned before). The second line is responsible to tell the Toradex Easy Installer, which device tree file will be stored to the specific address (we briefly looked at this during the meeting) for a specific PID4 (Product ID) . In the codeline above you can see XXXX, which should then be replaced with your product’s PID4.
Even if you are only using one specific PID4 right now, you can add additional lines with different PID4s and other custom device tree files to be ready in case you use other products in the future.
If you add all PID4s that are currently available for Colibri iMX6ULL with Raw-Nand memory, it might look something like this:
I have activated the drivers for ad7606 analog devices and tried different approaches in my dts like changing the node / child node name (f.e. ad7606-8@0, adc3: adc@ad7606-8) or unit address. But the adc just does not appear in my devices (adc 1 (2198000) is already present). I checked that the gpios are not used by another device and also tried just to only set status = “okay” with no other properties.
By default, Toradex’s device trees enable the spidev for SPI interfaces on the modules. Colibri iMX6ULL also has this. This spidev helps to make it easier evaluation and tests with SPI interface.