Device Tree

Joel agnel.joel at gmail.com
Tue Oct 25 06:12:02 EDT 2016


> On Oct 25, 2016, at 12:39 AM, Valdis.Kletnieks at vt.edu wrote:
> 
> On Tue, 25 Oct 2016 11:51:38 +0530, Madhu K said:
> 
>> If in case Device tree is not there, where and how to pass the hardware
>> information to the linux kernel.
> 
> For many types of hardware, the bus protocol provides a standard way to
> find everything on the bus.  And that sort of bus scanning is how non-embedded
> systems find all their devices.  If it's a laptop or a desktop or server,
> there's always the possibility that the user has plugged in a new graphics
> card or a different network card - so being able to scan and detect is
> important there.
> 
> However, in an embedded system, the configuration is fixed - all the parts are
> soldered in place, and there's no place to add new devices.  So the hardware
> designers save the US$0.08 per chip by picking stripped down chips that don't
> have full function (for instance, leave off the PCI config circuitry and just
> provide a hardwired "this device will live at this address permanently")
> 
> And yes, if you're building microwave ovens, and selling 10 million of them,
> suddenly saving 8 cents US per chip adds up to some major profits...
> 
>> Does all embedded systems contains Device tree?
> 
> No, only embedded systems that have I/O devices that cannot be
> enumerated by the hardware.  So for instance, usually a PCI device
> or a USB device can be detected by a bus scan.  So if that's all you
> have, you don't need device tree - the system can find all the hardware
> resources.
> 
> But if you have GPIO pins, or an audio or ethernet card that's hard-wired in
> some non-scannable way, or weird clock chips, or anything like that, you'll
> need device tree.
> 
> And it's certainly possible to do *both* - let the kernel scan for PCI and
> USB devices, *and* provide a device tree for non-scannable resources.

This is not entirely true, usually things like the CPU and machine information can’t be auto detected and DT provides this info.

It is also used to communicate things like bootargs to the kernel [1]
[1] http://lxr.free-electrons.com/source/drivers/of/fdt.c#L1081

DT is not the only way to do these things. But I just wanted to highlight that DT is used as a vehicle for more than just solving “bus scanning” issues so you’ve to either use it or use other alternate methods to have such meta-data communicated from firmware.

- Joel




More information about the Kernelnewbies mailing list