Introduction

Hello everyone! I am Bhargav Joshi, a Third year CSE student at Walchand College of engineering. I am an Open Source enthusiast with a strong interest in Linux, low level programming and embedded systems. I had the privilege of working as Contributor at Google Summer of Code with The Linux Foundation.

As my Google Summer of Code (GSoC) journey comes to an end, I am excited to share my final work report. In this post, I will walk you through my journey working the project Converting Device Tree bindings to DT schema.

Project Background

What is a Device Tree?

The Linux kernel needs to know what hardware it’s running on, but a lot of embedded hardware is undiscoverable: unlike PCI or USB devices, it can’t announce itself at boot. Device Tree is a data structure used by the Linux kernel to describe such hardware, including CPUs, buses, memory regions, and peripherals.

This description is written in .dts files for a specific board, with .dtsi files holding properties shared across a family of boards or an SoC, much like a C header. These source files are compiled by the Device Tree Compiler (dtc) into a binary blob, the .dtb, which the bootloader loads into memory alongside the kernel image. At boot, the kernel parses this DTB and matches each node’s compatible property against registered drivers to bind the right one, all driven by data instead of hardcoded board files.

Device Tree Bindings and DT Schema

For this to work, every driver and every .dts file need to agree on what properties a node should have, and that agreement is a DT binding: the spec for a given compatible string, defining its required/optional properties, types, and constraints. Bindings are effectively the ABI between the Device Tree and the kernel driver, so they need to stay stable once merged.

Historically They used to be written as free-form .txt files, which nothing enforced against actual .dts content, so errors often only showed up as boot failures. That’s why bindings are now being migrated to YAML Schema using the dtschema tooling, so tools like dt-doc-validate and make dtbs_check can catch mistakes automatically at build time.

my goal for this project

With that context, my GSoC project was to convert as many of the remaining legacy .txt Device Tree bindings to the dtschema format as possible.

My Experience

From a curious Linux user to contributing in Linux It was amazing experience working on this project.

The project pushed me to expand my knowledge far beyond just writing schema files. I gained a much deeper understanding of embedded systems, Linux internals, ARM architecture, bootloaders, firmware and how device drivers actually bind to and interact with physical hardware. Working intimately with the Devicetree subsystem taught me exactly how hardware is fundamentally represented through DT nodes and properties.

Beyond the code, Figuring out how to talk to maintainers on the mailing list, take review comments without getting defensive, and turn them around into a better patch quickly, that’s what actually stuck with me. It gave me a real sense of how open-source at this scale actually works.

Project Report

The core of my project involved converting legacy text bindings to DT schema. I mainly worked with bindings of hardware from Texas Instruments (TI). While converting bindings I often had to fix existing dts/dtsi files as well. Apart from that, I also fixed a critical bug in the irq-crossbar driver.

Here’s the complete list of my conversions and other patches:

Patches other than binding conversions:

What Is Left

There are still some bindings which are yet to be merged into mainline linux kernel. I’ll focus on completing them.

Future Plans

GSoC may be ending, but my journey with the Linux kernel is just beginning. Moving forward, I plan to:

  1. I’ll keep contributing to the Devicetree subsystem going forward.
  2. I plan to explore more about Embedded systems and ARM architecture.
  3. I also plan to deep dive into linux driver developement.

Thank you to Google and the Linux Foundation for this incredible opportunity! A massive thank you to my mentors, Daniel Baluta, Manorit Chawdhry, Dhurva Gole, and Simona Toaca, who patiently reviewed my early (and often flawed) patches and guided me throughout the project. Huge thanks to the Device tree maintainers Krzysztof Kozlowski, Rob Herring and other maintainers and reviewers, Learnt lot from their on point reviews and feedbacks. I am deeply grateful to my seniors and entire WLUG team for introducing me to the Linux and open source.

This journey has been the perfect introduction to the Linux kernel community, and I’m looking forward to staying involved and continuing to send patches long after GSoC ends.

Signed-off-by: Bhargav Joshi < j.bhargav.u@gmail.com >