18c2ecf20Sopenharmony_ciWhat: /sys/firmware/devicetree/* 28c2ecf20Sopenharmony_ciDate: November 2013 38c2ecf20Sopenharmony_ciContact: Grant Likely <grant.likely@arm.com>, devicetree@vger.kernel.org 48c2ecf20Sopenharmony_ciDescription: 58c2ecf20Sopenharmony_ci When using OpenFirmware or a Flattened Device Tree to enumerate 68c2ecf20Sopenharmony_ci hardware, the device tree structure will be exposed in this 78c2ecf20Sopenharmony_ci directory. 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci It is possible for multiple device-tree directories to exist. 108c2ecf20Sopenharmony_ci Some device drivers use a separate detached device tree which 118c2ecf20Sopenharmony_ci have no attachment to the system tree and will appear in a 128c2ecf20Sopenharmony_ci different subdirectory under /sys/firmware/devicetree. 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci Userspace must not use the /sys/firmware/devicetree/base 158c2ecf20Sopenharmony_ci path directly, but instead should follow /proc/device-tree 168c2ecf20Sopenharmony_ci symlink. It is possible that the absolute path will change 178c2ecf20Sopenharmony_ci in the future, but the symlink is the stable ABI. 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci The /proc/device-tree symlink replaces the devicetree /proc 208c2ecf20Sopenharmony_ci filesystem support, and has largely the same semantics and 218c2ecf20Sopenharmony_ci should be compatible with existing userspace. 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci The contents of /sys/firmware/devicetree/ is a 248c2ecf20Sopenharmony_ci hierarchy of directories, one per device tree node. The 258c2ecf20Sopenharmony_ci directory name is the resolved path component name (node 268c2ecf20Sopenharmony_ci name plus address). Properties are represented as files 278c2ecf20Sopenharmony_ci in the directory. The contents of each file is the exact 288c2ecf20Sopenharmony_ci binary data from the device tree. 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ciWhat: /sys/firmware/fdt 318c2ecf20Sopenharmony_ciDate: February 2015 328c2ecf20Sopenharmony_ciKernelVersion: 3.19 338c2ecf20Sopenharmony_ciContact: Frank Rowand <frowand.list@gmail.com>, devicetree@vger.kernel.org 348c2ecf20Sopenharmony_ciDescription: 358c2ecf20Sopenharmony_ci Exports the FDT blob that was passed to the kernel by 368c2ecf20Sopenharmony_ci the bootloader. This allows userland applications such 378c2ecf20Sopenharmony_ci as kexec to access the raw binary. This blob is also 388c2ecf20Sopenharmony_ci useful when debugging since it contains any changes 398c2ecf20Sopenharmony_ci made to the blob by the bootloader. 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ci The fact that this node does not reside under 428c2ecf20Sopenharmony_ci /sys/firmware/device-tree is deliberate: FDT is also used 438c2ecf20Sopenharmony_ci on arm64 UEFI/ACPI systems to communicate just the UEFI 448c2ecf20Sopenharmony_ci and ACPI entry points, but the FDT is never unflattened 458c2ecf20Sopenharmony_ci and used to configure the system. 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ci A CRC32 checksum is calculated over the entire FDT 488c2ecf20Sopenharmony_ci blob, and verified at late_initcall time. The sysfs 498c2ecf20Sopenharmony_ci entry is instantiated only if the checksum is valid, 508c2ecf20Sopenharmony_ci i.e., if the FDT blob has not been modified in the mean 518c2ecf20Sopenharmony_ci time. Otherwise, a warning is printed. 528c2ecf20Sopenharmony_ciUsers: kexec, debugging 53