device-tree

v2026.09.24

Device tree skill for Linux hardware description. Use when writing DTS/DTSI, bindings, overlays, phandles, or debugging OF platform probe failures. Activates on queries about device tree, DTS syntax, phandle, devicetree bindings, DT overlay, or OF graph.

GitHub
Install command
npx skhub add mohitmishra786/device-tree
Markdown
SKILL.md

Device Tree (Devicetree)

Purpose

Guide agents through Linux device tree source (DTS): syntax, bindings, phandles, overlays, and how the kernel OF (Open Firmware) layer parses hardware description into platform_device instances.

When to Use

  • Platform driver not probing — DT mismatch
  • Adding a new board .dts or fragment overlay
  • Understanding compatible, reg, interrupts, clocks properties
  • Cross-checking hardware with skills/kernel-dev/platform-device-model

Workflow

1. DTS structure

/dts-v1/;
#include "soc.dtsi"

/ {
    model = "My Board";
    compatible = "vendor,my-board", "vendor,soc-family";

    soc {
        uart0: serial@40011000 {
            compatible = "vendor,uart";
            reg = <0x40011000 0x400>;
            interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
            clocks = <&clk_uart0>;
            status = "okay";
        };
    };
};

2. Key properties

PropertyMeaning
compatibleDriver match string (most specific first)
regMMIO address + length ( #address-cells, #size-cells )
interruptsIRQ specifier (interrupt parent defines cells)
clocks / clock-namesphandle to clock provider
status"disabled" skips probe

3. Phandles

clk_uart0: clock-uart {
    compatible = "vendor,clk";
    #clock-cells = <0>;
};

serial@... {
    clocks = <&clk_uart0>;  /* phandle reference */
};

4. Kernel parsing

OF core reads DTB at boot
├── of_platform_populate() creates platform_devices
└── driver `.of_match_table` matches `compatible`
static const struct of_device_id my_of_match[] = {
    { .compatible = "vendor,uart" },
    { }
};
MODULE_DEVICE_TABLE(of, my_of_match);

5. Compile and inspect

dtc -I dts -O dtb -o board.dtb board.dts
dtc -I fs -O dts /proc/device-tree 2>/dev/null | less
ls /sys/firmware/devicetree/base/

Bindings live at devicetree.org — always cite binding name in commits.

6. Overlays (configfs)

# Runtime overlay apply (when CONFIG_OF_OVERLAY)
mkdir -p /config/device-tree/overlays/my-overlay
cat my-overlay.dtbo > /config/device-tree/overlays/my-overlay/dtbo

7. Agent usage

/device-tree Write DTS fragment for I2C sensor on i2c1 with interrupt on GPIO5

Common Problems

SymptomCauseFix
Driver not boundcompatible typoMatch driver's of_match_table
Wrong MMIO#address-cells mismatchFollow SoC .dtsi
IRQ not firingWrong interrupt parent/cellsCopy from working board DTS
Probe defer loopClock/regulator missing-EPROBE_DEFER supplier in DT
Overlay failsSymbol unresolved__fixups__ / label exports

Related Skills

  • skills/kernel-dev/platform-device-model — probe and sysfs
  • skills/kernel/device-drivers — devm_of_iomap
  • skills/baremetal/datasheet-and-refmanual-reading — HW to DT mapping
  • skills/embedded/zephyr — Zephyr devicetree (different tooling)
  • skills/kernel-dev/bus-drivers-i2c-spi — bus node children
Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

MIT

Source path

skills/kernel-dev/device-tree

Default branch

main

Latest commit

bdc5847

Tree SHA

1178323