The device tree is a data structure that describes the hardware components available on a system. The Linux kernel queries the device tree to find out which drivers to load during boot.

Device tree file types

Device tree files are located at arch/arm/boot/dts/ and can have two extensions:

  • .dtsi files are device tree source include files. They describe hardware that is common to several platforms that include these files in their .dts files.

  • .dts files are device tree source files. They describe one specific platform.

System-on-module device tree

The ConnectCore MP15 is a system-on-module (SOM) solution that integrates:

  • STMicroelectronics STM32MP15 system-on-chip featuring many interfaces such as UART, CAN, SPI, and I2C

  • DDR3L memory

  • NAND memory

  • PMIC chip

  • Crypto-authentication chip

  • Optional Wi-Fi + Bluetooth chip

The ConnectCore MP15 system-on-module needs to be soldered to a carrier board. For this reason, there is not a single .dts file for it. Instead, its hardware features are collected into .dtsi files that can be included by a final platform .dts.

Even though the ConnectCore MP15 system-on-module is offered in different variants, only one .dtsi file has been defined to describe the hardware inside: ccmp15.dtsi.

Your final platform .dts file must include this SOM include file.

Variants of the SOM are handled through the use of device tree overlays, which are explained later in this same page.

Carrier board device tree

The ConnectCore MP15 Development Kit is a carrier board assembling the ConnectCore MP15 system-on-module. The carrier board assembles additional hardware like a video port, Ethernet PHY, audio chip, PCIe minicard, microSD card holder, user LEDs, and so on.

As a final platform, the carrier board has a .dts file that includes the ConnectCore MP15 system-on-module .dtsi file: ccmp157-dvk.dts.

Device tree overlays

Complex embedded SoMs and carrier boards would require multiple device tree blobs to account for the many different SoM/board variants and feature combinations.

Device tree overlays are special device tree blob fragments that allow you to override specific parts of a device tree on-the-fly in the boot loader, before booting the operating system. This allows you to combine a base device tree with optional elements, that you decide at boot time, without the need to recompile a device tree for just a tiny change.

Overlays can only perform constructive changes such as adding or modifying nodes or properties. They cannot be used to perform destructive changes such as deleting nodes or properties.

File naming conventions

Digi device tree overlay filenames follow these conventions:

  • Source files use the regular .dts extension.

  • Compiled device tree overlay blobs use the .dtbo extension.

  • Filenames follow the syntax: _ov_<som|board>_<functionality>[_<hardware>].dts, where

    • _ov_ identifies the file as a device tree overlay.

    • <som|board> indicates whether the overlay affects the SoM or the carrier board.

    • <functionality> indicates the specific interface enabled/affected by the overlay.

    • <hardware> optionally describes the specific hardware targeted by the overlay.

Digi device tree overlays mechanism

The Digi ConnectCore MP15 carrier board has a base device tree blob with the default hardware configuration. Digi also provides a number of pre-compiled device tree overlays that enable different hardware and peripherals.

The custom Digi U-Boot dboot command does the following:

  1. Loads the base device tree (defined in variable fdt_file).

  2. Parses the contents of variable overlays (a comma-separated list of device tree overlay filenames).

  3. Sequentially loads and applies each overlay over the base device tree.

If an overlay fails to load, the boot process is aborted.

To apply an overlay to the base device tree, set the overlays variable to your device tree overlay filename. For example:

=> setenv overlays my-overlay.dtbo

You can instruct dboot to apply several device tree overlay files by separating them with commas:

=> setenv overlays my-overlay1.dtbo,my-overlay2.dtbo,my-overlay3.dtbo

Overlays on Digi Embedded Yocto boot script

Digi Embedded Yocto builds a U-Boot boot script (boot.scr) that runs automatically. The bootscript:

  1. Reads the hardware capabilities of the SOM variant, such as Wi-Fi or Bluetooth, and prepends any related device tree overlay to the overlays variable.

  2. Reads the SOM version and carrier board version and, if applicable, prepends any related device tree overlay to the overlays variable.

  3. Calls the dboot command to boot the system.

This mechanism resolves the overlays that need to be applied for the hardware detected on your ConnectCore MP15 variant. From there, you may set the overlays variable to any custom (or pre-compiled) overlay you want to additionally apply for your purposes.

Pre-compiled device tree overlays

Digi Embedded Yocto provides a number of pre-compiled device tree overlays that resolve combinations of ConnectCore MP15 SOM variants and hardware versions, as well as others that help test interfaces that are disabled on the default device tree due to multiplexing with other interfaces.

SOM overlays

File Description

_ov_som_bt_ccmp15.dtbo (dts)

Enable the Bluetooth interface

_ov_som_bt_test_ccmp15.dtbo (dts)

Enable the Bluetooth serial port to perform Bluetooth DTM tests

_ov_som_v1_ccmp15.dtbo (dts)

SOM hardware version 1 specific overlay

_ov_som_wifi_ccmp15.dtbo (dts)

Enable the Wi-Fi interface

As described in Overlays on Digi Embedded Yocto boot script, the SOM overlays are automatically added to the list in U-Boot overlays variable by the default boot script, based on the detected SOM variant.

Carrier board overlays

File Description

_ov_board_can1_ccmp15-dvk.dtbo (dts)

Enable CAN1 port

_ov_board_can2_ccmp15-dvk.dtbo (dts)

Enable CAN2 port

_ov_board_dlc0200ccp04df-mipi-dsi_ccmp15-dvk.dtbo (dts)

DLC0200CCP04DF-2 MIPI display

_ov_board_eth0-10-100_ccmp15-dvk.dtbo (dts)

Enable 10/100 Ethernet on SMSC LAN8720a PHY (not assembled by default)

_ov_board_fusion10-lvds_ccmp15-dvk.dtbo (dts)

Fusion 10" LCD display

_ov_board_fusion7-parallel_ccmp15-dvk.dtbo (dts)

Fusion 7" LCD display

_ov_board_g101evn010-lvds_ccmp15-dvk.dtbo (dts)

G101EVN010 10" LCD display

_ov_board_mikroe-accel2-click_ccmp15-dvk.dtbo (dts)

Demo overlay for MikroE Accel2 Click board

_ov_board_mikroe-gyro-click_ccmp15-dvk.dtbo (dts)

Demo overlay for MikroE Gyro Click board

_ov_board_mikroe-i2c-to-spi-click_ccmp15-dvk.dtbo (dts)

Demo overlay for MikroE I2C to SPI Click board

_ov_board_nhd-3-5-640480ef-msxp-mipi-dsi_ccmp15-dvk.dtbo (dts)

NHD-3.5-640480EF-MSXP MIPI display

_ov_board_sv4e-mipi-analyzer_ccmp15-dvk.dtbo (dts)

SV4E MIPI display analyzer

_ov_board_v1_ccmp15-dvk.dtbo (dts)

Overlay for DVK v1 board

_ov_board_v2_ccmp15-dvk.dtbo (dts)

Overlay for DVK v2 board