Custom device tree iMX7 Colibri YOCTO

Hello,

We made a custom carrier board for the i.MX7 Colibri based on the Iris board.

  1. Is this file the default device tree for the i.MX7 Colibri ?

  2. How can we recompile the new device tree and integrate it with YOCTO without following this tutorial ?

  3. We are using for example PIN_45 on the module, which GPIO and bank is it ? How can I manage to find easily this information ?

Thank you in advance.

Thank you for using our products.

  1. Details about iMX7 Device tree are there - https://developer.toradex.com/device-tree-customization#iMX_7_based_Modules

  2. The best way is to create your own meta-layer. Please see some details here - https://developer.toradex.com/knowledge-base/board-support-package/openembedded-(core)

  3. https://developer.toradex.com/knowledge-base/gpio-alphanumeric-to-gpio-numeric-assignment

Best regards,
Alex

Thank you for your response.

How can I change the device tree by creating a new layer ? I know how to create a layer, but is this accurate for the device tree ? If yes, how ?

Sorry I’m new to this stuff…

Thank for your help

hi, what do you mean by creating a layer?

I already have created my own meta-layer, incorporating libraries and make them work on my board.
But I don’t know I can do this with the device tree.

Hi,

I patch my device trees by creating a .bbappend for the kernel version. I don’t know which one yours is.

In that .bbappend you add the patches for your device trees and that’s it.

Best Regards,

Hi,

Thank you for your response.

Are you doing this just like the response here ?

Thank you for your help.

Hi,

I haven’t done exactly like that but Option Two: Manual - Kernel Configuration seems like it does the trick.

If you aren’t successful while doing it I can provide you an example.

Regards

Hi,

I will be glad if you had one…

Thank you for your help !

Hi

Here it is:

My bbappend (applying several patches)

FILESEXTRAPATHS_prepend := "${THISDIR}/linux-toradex-custom:"

SRC_URI += "file://0002-Update-device-trees.patch \
            file://0004-Add-nfc-nxp-pn5xx-driver.patch \
            file://0005-Add-splash-screen-image.patch \
            file://0006-Modify-wireless-driver.patch \
"

COMPATIBLE_MACHINE = "(apalis-imx6|apalis-imx6-custom)"

then in /linux-toradex-custom I add the patches

Here’s an example of the device tree patch. I create new dts files, I don’t really patch the available ones but you can adapt with a patch command

--- /dev/null
+++ b/arch/arm/boot/dts/imx6qdl-apalis-custom.dtsi
@@ -0,0 +1,1264 @@
+/*

(more content here but for example sake it isn’t necessary)

For more info I recommend you to watch Toradex’s Webinars on Yocto Project, they helped me in this regard

Thank you very much !
I’ll try this and let you know for progresses !

I forgot to mention one thing, before you actually do it and reach a dead end… You must also patch the makefile in the /arch/arm/boot/dts/your-machine-folder so it compiles your customized dts!

Other option is to apply the same .bbappend to the already existent dts.

The approach I mentioned creates a new one.

And don’t forget to add new dts name to the KERNEL_DEVICETREES in local.conf or the machine configuration.

Your best bet in my opinion is to apply the .bbappend as presented but instead of creating a new one, patch the existent dtsi.

In your Linux environment, I recommend you to install Meld, on which you cant put two files side-by-side and it can create a patch for you. You just need to modify the destination headers for something like

 --- a/arch/arm/boot/dts/your-dtsi-name.dtsi
 +++ b/arch/arm/boot/dts/your-dts-name.dtsi

Regards