Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| linux_device_trees [2018/11/17 16:14] – [Comparing two .dts files already in the kernel source tree (Part deux)] rpjday | linux_device_trees [2018/12/11 13:03] (current) – [Internal wiki pages] rpjday | ||
|---|---|---|---|
| Line 3: | Line 3: | ||
| Stuff related to device trees and the Linux kernel, using examples from the current Linux kernel. | Stuff related to device trees and the Linux kernel, using examples from the current Linux kernel. | ||
| - | To do: | + | ===== TO DO ===== |
| * overlays | * overlays | ||
| + | * keywords (/plugin/, / | ||
| + | |||
| + | ===== MISC (for now) ===== | ||
| + | |||
| + | * "The unit-address must match the first address specified in the reg property of the node. If the node has no reg property, the @unit-address must be omitted and the node-name alone differentiates the node from other nodes at the same level in the tree. The binding for a particular bus may specify additional, more specific requirements for the format of reg and the unit-address." | ||
| ===== Some links ===== | ===== Some links ===== | ||
| Line 46: | Line 51: | ||
| * [[Device tree naming conventions]] | * [[Device tree naming conventions]] | ||
| * [[Proper device tree design]] | * [[Proper device tree design]] | ||
| + | * [[Device tree standard properties]] | ||
| + | * [[Device tree node requirements]] | ||
| * [[Comparing device trees with dtx_diff]] | * [[Comparing device trees with dtx_diff]] | ||
| - | + | * [[Hierarchical device files]] | |
| - | ===== Proper device tree design ===== | + | |
| - | + | ||
| - | ==== One board, one .dts file ==== | + | |
| - | + | ||
| - | Every distinct board merits its own '' | + | |
| - | + | ||
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | + | ||
| - | ==== Proper use of .dtsi files ==== | + | |
| - | + | ||
| - | There is **//no reason//** to make local copies of kernel-supplied '' | + | |
| - | + | ||
| - | * ''/ | + | |
| - | * ''/ | + | |
| - | + | ||
| - | This functionality was introduced into the Linux kernel file '' | + | |
| - | + | ||
| - | < | + | |
| - | commit cd296721a9645f9f28800a072490fa15458d1fb7 | + | |
| - | Author: Stephen Warren < | + | |
| - | Date: | + | |
| - | + | ||
| - | dtc: import latest upstream dtc | + | |
| - | + | ||
| - | This updates scripts/dtc to commit 317a5d9 "dtc: zero out new label | + | |
| - | objects" | + | |
| - | + | ||
| - | This adds features such as: | + | |
| - | | + | |
| - | * Math expressions within cell data. | + | |
| - | * The ability to delete properties or nodes. | + | |
| - | * Support for #line directives in the input file, which allows the use of | + | |
| - | cpp on *.dts. | + | |
| - | * -i command-line option (/include/ path) | + | |
| - | * -W/-E command-line options for error/ | + | |
| - | * Removal of spew to STDOUT containing the filename being compiled. | + | |
| - | * Many additions to the libfdt API. | + | |
| - | + | ||
| - | Signed-off-by: | + | |
| - | Acked-by: Jon Loeliger < | + | |
| - | Signed-off-by: | + | |
| - | </ | + | |
| - | + | ||
| - | Examples can be seen [[https:// | + | |
| - | + | ||
| - | ==== Examples of / | + | |
| - | + | ||
| - | === imx6dl-tx6s-8034.dts === | + | |
| - | + | ||
| - | < | + | |
| - | #include " | + | |
| - | #include " | + | |
| - | + | ||
| - | / { | + | |
| - | model = "Ka-Ro electronics TX6S-8034 Module"; | + | |
| - | compatible = " | + | |
| - | + | ||
| - | aliases { | + | |
| - | display = & | + | |
| - | ipu1 = & | + | |
| - | }; | + | |
| - | + | ||
| - | cpus { | + | |
| - | / | + | |
| - | }; | + | |
| - | </ | + | |
| - | + | ||
| - | === imx6q-utilite-pro.dts === | + | |
| - | + | ||
| - | < | + | |
| - | #include < | + | |
| - | #include " | + | |
| - | + | ||
| - | / { | + | |
| - | model = " | + | |
| - | compatible = " | + | |
| - | + | ||
| - | ... | + | |
| - | + | ||
| - | }; | + | |
| - | + | ||
| - | /* | + | |
| - | * A single IPU is not able to drive both display interfaces available on the | + | |
| - | * Utilite Pro at high resolution due to its bandwidth limitation. Since the | + | |
| - | * tfp410 encoder is wired up to IPU1, sever the link between IPU1 and the | + | |
| - | * SoC-internal Designware HDMI encoder forcing the latter to be connected to | + | |
| - | * IPU2 instead of IPU1. | + | |
| - | */ | + | |
| - | / | + | |
| - | / | + | |
| - | / | + | |
| - | / | + | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | ==== Examples of / | + | |
| - | + | ||
| - | === imx6qp.dtsi === | + | |
| - | + | ||
| - | < | + | |
| - | #include " | + | |
| - | + | ||
| - | / { | + | |
| - | soc { | + | |
| - | + | ||
| - | ... | + | |
| - | + | ||
| - | }; | + | |
| - | + | ||
| - | &fec { | + | |
| - | / | + | |
| - | interrupts = <0 118 IRQ_TYPE_LEVEL_HIGH>, | + | |
| - | <0 119 IRQ_TYPE_LEVEL_HIGH>; | + | |
| - | }; | + | |
| - | </ | + | |
| - | + | ||
| - | === imx6ul-tx6ul-mainboard.dts === | + | |
| - | + | ||
| - | < | + | |
| - | #include " | + | |
| - | #include " | + | |
| - | + | ||
| - | / { | + | |
| - | model = "Ka-Ro electronics TXUL-0010 Module on TXUL Mainboard"; | + | |
| - | compatible = " | + | |
| - | + | ||
| - | aliases { | + | |
| - | lcdif_24bit_pins_a = & | + | |
| - | mmc0 = & | + | |
| - | / | + | |
| - | serial2 = & | + | |
| - | serial4 = & | + | |
| - | }; | + | |
| - | / | + | |
| - | }; | + | |
| - | + | ||
| - | ... | + | |
| - | + | ||
| - | &usdhc1 { | + | |
| - | pinctrl-0 = <& | + | |
| - | non-removable; | + | |
| - | / | + | |
| - | cap-sdio-irq; | + | |
| - | }; | + | |
| - | + | ||
| - | &uart1 { | + | |
| - | pinctrl-0 = <& | + | |
| - | / | + | |
| - | }; | + | |
| - | + | ||
| - | &uart2 { | + | |
| - | pinctrl-0 = <& | + | |
| - | / | + | |
| - | status = " | + | |
| - | }; | + | |
| - | </ | + | |
| - | + | ||
| - | ===== Comparing .dts files with dtx_diff ===== | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | ==== Comparing two device tree files out of tree -- apparent bug ==== | + | |
| - | + | ||
| - | What doesn' | + | |
| - | + | ||
| - | < | + | |
| - | $ cp imx6q{, | + | |
| - | $ cd /tmp | + | |
| - | $ dtx_diff -s ~/k/git imx6q{, | + | |
| - | imx6qp-sabresd.dts: | + | |
| - | # | + | |
| - | ^~~~~~~~~~~~~ | + | |
| - | imx6q-sabresd.dts: | + | |
| - | # | + | |
| - | ^~~~~~~~~~~~ | + | |
| - | compilation terminated. | + | |
| - | compilation terminated. | + | |
| - | Error: imx6qp-sabresd.dts: | + | |
| - | + | ||
| - | FATAL ERROR: FATAL ERROR: Unable to parse input tree | + | |
| - | Unable to parse input tree | + | |
| - | + | ||
| - | Possible hints to resolve the above error: | + | |
| - | + | ||
| - | (hints might not fix the problem) | + | |
| - | Possible hints to resolve the above error: | + | |
| - | (hints might not fix the problem) | + | |
| - | + | ||
| - | + | ||
| - | No hints available. | + | |
| - | No hints available. | + | |
| - | $ | + | |
| - | </ | + | |
| - | + | ||
| - | I have no idea why this fails -- obviously, even when telling '' | + | |