^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) What: /sys/firmware/devicetree/*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) Date: November 2013
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) Contact: Grant Likely <grant.likely@arm.com>, devicetree@vger.kernel.org
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) Description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) When using OpenFirmware or a Flattened Device Tree to enumerate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) hardware, the device tree structure will be exposed in this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) directory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) It is possible for multiple device-tree directories to exist.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) Some device drivers use a separate detached device tree which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) have no attachment to the system tree and will appear in a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) different subdirectory under /sys/firmware/devicetree.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) Userspace must not use the /sys/firmware/devicetree/base
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) path directly, but instead should follow /proc/device-tree
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) symlink. It is possible that the absolute path will change
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) in the future, but the symlink is the stable ABI.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) The /proc/device-tree symlink replaces the devicetree /proc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) filesystem support, and has largely the same semantics and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) should be compatible with existing userspace.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) The contents of /sys/firmware/devicetree/ is a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) hierarchy of directories, one per device tree node. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) directory name is the resolved path component name (node
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) name plus address). Properties are represented as files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) in the directory. The contents of each file is the exact
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) binary data from the device tree.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) What: /sys/firmware/fdt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) Date: February 2015
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) KernelVersion: 3.19
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) Contact: Frank Rowand <frowand.list@gmail.com>, devicetree@vger.kernel.org
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) Description:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) Exports the FDT blob that was passed to the kernel by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) the bootloader. This allows userland applications such
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) as kexec to access the raw binary. This blob is also
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) useful when debugging since it contains any changes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) made to the blob by the bootloader.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) The fact that this node does not reside under
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) /sys/firmware/device-tree is deliberate: FDT is also used
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) on arm64 UEFI/ACPI systems to communicate just the UEFI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) and ACPI entry points, but the FDT is never unflattened
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) and used to configure the system.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) A CRC32 checksum is calculated over the entire FDT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) blob, and verified at late_initcall time. The sysfs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) entry is instantiated only if the checksum is valid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) i.e., if the FDT blob has not been modified in the mean
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) time. Otherwise, a warning is printed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) Users: kexec, debugging