From 1f39b42525bf3ed8535927353449fd64c3bb0cf4 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Wed, 5 Jan 2022 16:59:19 -0500 Subject: [PATCH] WIP: device tree MVP --- .gitmodules | 3 + CMakeLists.txt | 2 + Tools/astyle/files_to_check_code_style.sh | 1 + Tools/dts/README.txt | 32 + Tools/dts/gen_defines.py | 1032 ++++++ Tools/dts/gen_dts_cmake.py | 151 + Tools/dts/python-devicetree/.gitignore | 7 + Tools/dts/python-devicetree/requirements.txt | 1 + Tools/dts/python-devicetree/setup.py | 42 + .../src/devicetree/__init__.py | 4 + .../python-devicetree/src/devicetree/dtlib.py | 2022 +++++++++++ .../src/devicetree/edtlib.py | 2996 ++++++++++++++++ .../src/devicetree/grutils.py | 161 + .../tests/test-bindings-2/multidir.yaml | 5 + .../tests/test-bindings-include/README.rst | 1 + .../allow-and-blocklist-child.yaml | 11 + .../allow-and-blocklist.yaml | 10 + .../test-bindings-include/allow-not-list.yaml | 10 + .../test-bindings-include/allowlist.yaml | 7 + .../test-bindings-include/block-not-list.yaml | 10 + .../test-bindings-include/blocklist.yaml | 7 + .../empty-allowlist.yaml | 7 + .../empty-blocklist.yaml | 7 + .../filter-child-bindings.yaml | 11 + .../test-bindings-include/include-2.yaml | 7 + .../include-invalid-keys.yaml | 10 + .../include-invalid-type.yaml | 5 + .../include-no-list.yaml | 6 + .../include-no-name.yaml | 7 + .../tests/test-bindings-include/include.yaml | 24 + .../test-bindings-include/intermixed.yaml | 8 + .../tests/test-bindings/bar-bus.yaml | 7 + .../child-binding-with-compat.yaml | 20 + .../tests/test-bindings/child-binding.yaml | 19 + .../tests/test-bindings/child.yaml | 8 + .../tests/test-bindings/defaults.yaml | 36 + .../tests/test-bindings/deprecated.yaml | 15 + .../test-bindings/device-on-any-bus.yaml | 5 + .../test-bindings/device-on-bar-bus.yaml | 7 + .../test-bindings/device-on-foo-bus.yaml | 7 + .../tests/test-bindings/enums.yaml | 36 + .../tests/test-bindings/false-positive.yaml | 4 + .../tests/test-bindings/foo-bus.yaml | 7 + .../tests/test-bindings/foo-optional.yaml | 4 + .../tests/test-bindings/foo-required.yaml | 4 + .../tests/test-bindings/gpio-dst.yaml | 8 + .../tests/test-bindings/gpio-src.yaml | 9 + .../tests/test-bindings/grandchild-1.yaml | 10 + .../tests/test-bindings/grandchild-2.yaml | 6 + .../tests/test-bindings/grandchild-3.yaml | 6 + .../tests/test-bindings/interrupt-1-cell.yaml | 8 + .../tests/test-bindings/interrupt-2-cell.yaml | 9 + .../tests/test-bindings/interrupt-3-cell.yaml | 10 + .../tests/test-bindings/multidir.yaml | 5 + .../tests/test-bindings/order-1.yaml | 7 + .../tests/test-bindings/order-2.yaml | 7 + .../tests/test-bindings/parent.yaml | 13 + .../phandle-array-controller-0.yaml | 7 + .../phandle-array-controller-1.yaml | 11 + .../phandle-array-controller-2.yaml | 9 + .../tests/test-bindings/props.yaml | 50 + .../python-devicetree/tests/test-multidir.dts | 19 + .../wrong-phandle-array-name.yaml | 9 + .../wrong-specifier-space-type.yaml | 10 + Tools/dts/python-devicetree/tests/test.dts | 534 +++ .../dts/python-devicetree/tests/test_dtlib.py | 2272 ++++++++++++ .../python-devicetree/tests/test_edtlib.py | 588 ++++ Tools/dts/python-devicetree/tox.ini | 19 + boards/px4/fmu-v5x/board.dts | 204 ++ boards/px4/fmu-v5x/src/init.cpp | 5 + cmake/dts.cmake | 281 ++ dts/Kconfig | 21 + dts/arm/armv6-m.dtsi | 27 + dts/arm/armv7-a.dtsi | 16 + dts/arm/armv7-m.dtsi | 27 + dts/arm/armv7-r.dtsi | 16 + dts/arm/nxp/nxp_k66.dtsi | 41 + dts/arm/nxp/nxp_k6x.dtsi | 572 +++ dts/arm/nxp/nxp_rt1060.dtsi | 38 + dts/arm/nxp/nxp_rt1064.dtsi | 23 + dts/arm/nxp/nxp_rt1160_cm4.dtsi | 87 + dts/arm/nxp/nxp_rt1160_cm7.dtsi | 85 + dts/arm/nxp/nxp_rt1170_cm4.dtsi | 85 + dts/arm/nxp/nxp_rt1170_cm7.dtsi | 87 + dts/arm/st/f0/stm32f0.dtsi | 390 +++ dts/arm/st/f0/stm32f030.dtsi | 17 + dts/arm/st/f0/stm32f030X4.dtsi | 22 + dts/arm/st/f0/stm32f030X8.dtsi | 32 + dts/arm/st/f0/stm32f030Xc.dtsi | 75 + dts/arm/st/f0/stm32f031.dtsi | 34 + dts/arm/st/f0/stm32f031X6.dtsi | 22 + dts/arm/st/f0/stm32f051.dtsi | 26 + dts/arm/st/f0/stm32f051X8.dtsi | 21 + dts/arm/st/f0/stm32f070.dtsi | 47 + dts/arm/st/f0/stm32f070Xb.dtsi | 21 + dts/arm/st/f0/stm32f072.dtsi | 104 + dts/arm/st/f0/stm32f072Xb.dtsi | 21 + dts/arm/st/f0/stm32f091.dtsi | 81 + dts/arm/st/f0/stm32f091Xc.dtsi | 21 + dts/arm/st/f0/stm32f098Xc.dtsi | 21 + dts/arm/st/f1/stm32f1.dtsi | 333 ++ dts/arm/st/f1/stm32f100Xb.dtsi | 46 + dts/arm/st/f1/stm32f100Xe.dtsi | 35 + dts/arm/st/f1/stm32f103X8.dtsi | 67 + dts/arm/st/f1/stm32f103Xb.dtsi | 27 + dts/arm/st/f1/stm32f103Xc.dtsi | 166 + dts/arm/st/f1/stm32f103Xd.dtsi | 26 + dts/arm/st/f1/stm32f103Xe.dtsi | 22 + dts/arm/st/f1/stm32f103Xg.dtsi | 141 + dts/arm/st/f1/stm32f105.dtsi | 141 + dts/arm/st/f1/stm32f105Xc.dtsi | 22 + dts/arm/st/f1/stm32f107.dtsi | 21 + dts/arm/st/f1/stm32f107Xc.dtsi | 22 + dts/arm/st/f2/stm32f2.dtsi | 570 +++ dts/arm/st/f2/stm32f205Xe.dtsi | 22 + dts/arm/st/f2/stm32f207.dtsi | 25 + dts/arm/st/f2/stm32f207Xe.dtsi | 21 + dts/arm/st/f2/stm32f207Xg.dtsi | 22 + dts/arm/st/f3/stm32f3.dtsi | 413 +++ dts/arm/st/f3/stm32f302.dtsi | 92 + dts/arm/st/f3/stm32f302X8.dtsi | 24 + dts/arm/st/f3/stm32f303.dtsi | 134 + dts/arm/st/f3/stm32f303X8.dtsi | 37 + dts/arm/st/f3/stm32f303Xc.dtsi | 38 + dts/arm/st/f3/stm32f303Xe.dtsi | 38 + dts/arm/st/f3/stm32f334.dtsi | 41 + dts/arm/st/f3/stm32f334X8.dtsi | 37 + dts/arm/st/f3/stm32f373.dtsi | 194 ++ dts/arm/st/f3/stm32f373Xc.dtsi | 40 + dts/arm/st/f4/stm32f4.dtsi | 526 +++ dts/arm/st/f4/stm32f401.dtsi | 72 + dts/arm/st/f4/stm32f401Xc.dtsi | 22 + dts/arm/st/f4/stm32f401Xe.dtsi | 22 + dts/arm/st/f4/stm32f405.dtsi | 275 ++ dts/arm/st/f4/stm32f405Xg.dtsi | 28 + dts/arm/st/f4/stm32f407.dtsi | 25 + dts/arm/st/f4/stm32f407Xe.dtsi | 28 + dts/arm/st/f4/stm32f407Xg.dtsi | 28 + dts/arm/st/f4/stm32f410.dtsi | 103 + dts/arm/st/f4/stm32f410Xb.dtsi | 22 + dts/arm/st/f4/stm32f411.dtsi | 64 + dts/arm/st/f4/stm32f411Xe.dtsi | 22 + dts/arm/st/f4/stm32f412.dtsi | 194 ++ dts/arm/st/f4/stm32f412Xe.dtsi | 22 + dts/arm/st/f4/stm32f412Xg.dtsi | 22 + dts/arm/st/f4/stm32f413.dtsi | 74 + dts/arm/st/f4/stm32f413Xg.dtsi | 22 + dts/arm/st/f4/stm32f413Xh.dtsi | 22 + dts/arm/st/f4/stm32f415.dtsi | 20 + dts/arm/st/f4/stm32f415Rg.dtsi | 28 + dts/arm/st/f4/stm32f417.dtsi | 20 + dts/arm/st/f4/stm32f417Xe.dtsi | 28 + dts/arm/st/f4/stm32f417Xg.dtsi | 28 + dts/arm/st/f4/stm32f427.dtsi | 107 + dts/arm/st/f4/stm32f427Xi.dtsi | 28 + dts/arm/st/f4/stm32f427vX.dtsi | 11 + dts/arm/st/f4/stm32f427vi.dtsi | 29 + dts/arm/st/f4/stm32f429.dtsi | 20 + dts/arm/st/f4/stm32f429Xi.dtsi | 28 + dts/arm/st/f4/stm32f429vX.dtsi | 21 + dts/arm/st/f4/stm32f429vi.dtsi | 29 + dts/arm/st/f4/stm32f437.dtsi | 113 + dts/arm/st/f4/stm32f437Xi.dtsi | 28 + dts/arm/st/f4/stm32f437vX.dtsi | 11 + dts/arm/st/f4/stm32f446.dtsi | 142 + dts/arm/st/f4/stm32f446Xe.dtsi | 22 + dts/arm/st/f4/stm32f469.dtsi | 19 + dts/arm/st/f4/stm32f469Xi.dtsi | 28 + dts/arm/st/f7/stm32f7.dtsi | 775 +++++ dts/arm/st/f7/stm32f723.dtsi | 48 + dts/arm/st/f7/stm32f723Xe.dtsi | 18 + dts/arm/st/f7/stm32f745.dtsi | 94 + dts/arm/st/f7/stm32f745Xe.dtsi | 18 + dts/arm/st/f7/stm32f745Xg.dtsi | 18 + dts/arm/st/f7/stm32f746.dtsi | 7 + dts/arm/st/f7/stm32f746Xg.dtsi | 18 + dts/arm/st/f7/stm32f756.dtsi | 7 + dts/arm/st/f7/stm32f756Xg.dtsi | 18 + dts/arm/st/f7/stm32f765.dtsi | 95 + dts/arm/st/f7/stm32f767.dtsi | 95 + dts/arm/st/f7/stm32f767Xi.dtsi | 18 + dts/arm/st/f7/stm32f769.dtsi | 7 + dts/arm/st/f7/stm32f769Xi.dtsi | 19 + dts/arm/st/g0/stm32g0.dtsi | 393 +++ dts/arm/st/g0/stm32g030.dtsi | 7 + dts/arm/st/g0/stm32g030X6.dtsi | 22 + dts/arm/st/g0/stm32g030X8.dtsi | 22 + dts/arm/st/g0/stm32g031.dtsi | 39 + dts/arm/st/g0/stm32g031X4.dtsi | 22 + dts/arm/st/g0/stm32g031X6.dtsi | 22 + dts/arm/st/g0/stm32g031X8.dtsi | 22 + dts/arm/st/g0/stm32g041.dtsi | 8 + dts/arm/st/g0/stm32g041X6.dtsi | 22 + dts/arm/st/g0/stm32g041X8.dtsi | 22 + dts/arm/st/g0/stm32g050.dtsi | 42 + dts/arm/st/g0/stm32g050X6.dtsi | 22 + dts/arm/st/g0/stm32g050X8.dtsi | 22 + dts/arm/st/g0/stm32g051.dtsi | 68 + dts/arm/st/g0/stm32g051X6.dtsi | 22 + dts/arm/st/g0/stm32g051X8.dtsi | 22 + dts/arm/st/g0/stm32g061.dtsi | 8 + dts/arm/st/g0/stm32g061X6.dtsi | 22 + dts/arm/st/g0/stm32g061X8.dtsi | 22 + dts/arm/st/g0/stm32g070.dtsi | 52 + dts/arm/st/g0/stm32g070Xb.dtsi | 23 + dts/arm/st/g0/stm32g071.dtsi | 53 + dts/arm/st/g0/stm32g071X8.dtsi | 22 + dts/arm/st/g0/stm32g071Xb.dtsi | 23 + dts/arm/st/g0/stm32g081.dtsi | 8 + dts/arm/st/g0/stm32g081Xb.dtsi | 22 + dts/arm/st/g0/stm32g0_crypt.dtsi | 31 + dts/arm/st/g0/stm32g0b0.dtsi | 117 + dts/arm/st/g0/stm32g0b0Xe.dtsi | 22 + dts/arm/st/g0/stm32g0b1.dtsi | 128 + dts/arm/st/g0/stm32g0b1Xb.dtsi | 22 + dts/arm/st/g0/stm32g0b1Xc.dtsi | 22 + dts/arm/st/g0/stm32g0b1Xe.dtsi | 22 + dts/arm/st/g0/stm32g0c1.dtsi | 8 + dts/arm/st/g0/stm32g0c1Xc.dtsi | 22 + dts/arm/st/g0/stm32g0c1Xe.dtsi | 22 + dts/arm/st/g4/stm32g4.dtsi | 621 ++++ dts/arm/st/g4/stm32g431.dtsi | 27 + dts/arm/st/g4/stm32g431X6.dtsi | 22 + dts/arm/st/g4/stm32g431X8.dtsi | 22 + dts/arm/st/g4/stm32g431Xb.dtsi | 22 + dts/arm/st/g4/stm32g441.dtsi | 7 + dts/arm/st/g4/stm32g441Xb.dtsi | 22 + dts/arm/st/g4/stm32g473.dtsi | 62 + dts/arm/st/g4/stm32g473Xb.dtsi | 22 + dts/arm/st/g4/stm32g473Xc.dtsi | 22 + dts/arm/st/g4/stm32g473Xe.dtsi | 22 + dts/arm/st/g4/stm32g474.dtsi | 126 + dts/arm/st/g4/stm32g474Xb.dtsi | 22 + dts/arm/st/g4/stm32g474Xc.dtsi | 22 + dts/arm/st/g4/stm32g474Xe.dtsi | 22 + dts/arm/st/g4/stm32g483.dtsi | 62 + dts/arm/st/g4/stm32g483Xe.dtsi | 22 + dts/arm/st/g4/stm32g484.dtsi | 62 + dts/arm/st/g4/stm32g484Xe.dtsi | 22 + dts/arm/st/g4/stm32g491.dtsi | 44 + dts/arm/st/g4/stm32g491Xc.dtsi | 22 + dts/arm/st/g4/stm32g491Xe.dtsi | 22 + dts/arm/st/g4/stm32g4a1.dtsi | 44 + dts/arm/st/g4/stm32g4a1Xe.dtsi | 22 + dts/arm/st/h7/stm32h7.dtsi | 848 +++++ dts/arm/st/h7/stm32h723.dtsi | 57 + dts/arm/st/h7/stm32h723Xe.dtsi | 19 + dts/arm/st/h7/stm32h723Xg.dtsi | 19 + dts/arm/st/h7/stm32h735.dtsi | 86 + dts/arm/st/h7/stm32h735Xg.dtsi | 19 + dts/arm/st/h7/stm32h743.dtsi | 82 + dts/arm/st/h7/stm32h743Xi.dtsi | 20 + dts/arm/st/h7/stm32h745.dtsi | 67 + dts/arm/st/h7/stm32h745Xi_m4.dtsi | 34 + dts/arm/st/h7/stm32h745Xi_m7.dtsi | 35 + dts/arm/st/h7/stm32h747.dtsi | 7 + dts/arm/st/h7/stm32h747Xi_m4.dtsi | 34 + dts/arm/st/h7/stm32h747Xi_m7.dtsi | 29 + dts/arm/st/h7/stm32h750.dtsi | 55 + dts/arm/st/h7/stm32h750Xb.dtsi | 20 + dts/arm/st/h7/stm32h753.dtsi | 7 + dts/arm/st/h7/stm32h753Xi.dtsi | 20 + dts/arm/st/h7/stm32h7_dualcore.dtsi | 27 + dts/arm/st/l0/stm32l0.dtsi | 308 ++ dts/arm/st/l0/stm32l010.dtsi | 15 + dts/arm/st/l0/stm32l010Xb.dtsi | 39 + dts/arm/st/l0/stm32l011X4.dtsi | 22 + dts/arm/st/l0/stm32l031.dtsi | 33 + dts/arm/st/l0/stm32l031X6.dtsi | 22 + dts/arm/st/l0/stm32l051.dtsi | 77 + dts/arm/st/l0/stm32l051X8.dtsi | 24 + dts/arm/st/l0/stm32l053.dtsi | 40 + dts/arm/st/l0/stm32l053X8.dtsi | 22 + dts/arm/st/l0/stm32l071.dtsi | 148 + dts/arm/st/l0/stm32l071Xb.dtsi | 22 + dts/arm/st/l0/stm32l072.dtsi | 53 + dts/arm/st/l0/stm32l072Xz.dtsi | 22 + dts/arm/st/l0/stm32l073.dtsi | 8 + dts/arm/st/l0/stm32l073Xz.dtsi | 22 + dts/arm/st/l1/stm32l1.dtsi | 440 +++ dts/arm/st/l1/stm32l151.dtsi | 7 + dts/arm/st/l1/stm32l151X8-a.dtsi | 25 + dts/arm/st/l1/stm32l151Xb-a.dtsi | 25 + dts/arm/st/l1/stm32l151Xb.dtsi | 25 + dts/arm/st/l1/stm32l151Xc.dtsi | 44 + dts/arm/st/l1/stm32l152.dtsi | 11 + dts/arm/st/l1/stm32l152Xc.dtsi | 44 + dts/arm/st/l1/stm32l152Xe.dtsi | 44 + dts/arm/st/l4/stm32l4.dtsi | 409 +++ dts/arm/st/l4/stm32l412.dtsi | 42 + dts/arm/st/l4/stm32l412X8.dtsi | 22 + dts/arm/st/l4/stm32l412XB.dtsi | 22 + dts/arm/st/l4/stm32l422.dtsi | 7 + dts/arm/st/l4/stm32l422Xb.dtsi | 22 + dts/arm/st/l4/stm32l432.dtsi | 77 + dts/arm/st/l4/stm32l432Xc.dtsi | 21 + dts/arm/st/l4/stm32l433.dtsi | 64 + dts/arm/st/l4/stm32l433Xb.dtsi | 21 + dts/arm/st/l4/stm32l433Xc.dtsi | 21 + dts/arm/st/l4/stm32l452.dtsi | 159 + dts/arm/st/l4/stm32l452Xc.dtsi | 22 + dts/arm/st/l4/stm32l452Xe.dtsi | 22 + dts/arm/st/l4/stm32l462.dtsi | 7 + dts/arm/st/l4/stm32l462Xe.dtsi | 22 + dts/arm/st/l4/stm32l471.dtsi | 256 ++ dts/arm/st/l4/stm32l471Xg.dtsi | 21 + dts/arm/st/l4/stm32l475.dtsi | 31 + dts/arm/st/l4/stm32l475Xg.dtsi | 21 + dts/arm/st/l4/stm32l476.dtsi | 21 + dts/arm/st/l4/stm32l476Xg.dtsi | 21 + dts/arm/st/l4/stm32l496.dtsi | 47 + dts/arm/st/l4/stm32l496Xe.dtsi | 21 + dts/arm/st/l4/stm32l496Xg.dtsi | 21 + dts/arm/st/l4/stm32l4r5.dtsi | 317 ++ dts/arm/st/l4/stm32l4r5Xi.dtsi | 18 + dts/arm/st/l4/stm32l4r9.dtsi | 9 + dts/arm/st/l4/stm32l4r9Xi.dtsi | 18 + dts/arm/st/l4/stm32l4s5.dtsi | 7 + dts/arm/st/l4/stm32l4s5Xi.dtsi | 18 + dts/arm/st/l5/stm32l5.dtsi | 616 ++++ dts/arm/st/l5/stm32l552.dtsi | 7 + dts/arm/st/l5/stm32l552Xe.dtsi | 21 + dts/arm/st/l5/stm32l562.dtsi | 20 + dts/arm/st/l5/stm32l562Xe.dtsi | 21 + dts/arm/st/mp1/stm32mp157.dtsi | 311 ++ dts/arm/st/u5/stm32u5.dtsi | 396 +++ dts/arm/st/u5/stm32u575.dtsi | 32 + dts/arm/st/u5/stm32u575Xi.dtsi | 21 + dts/arm/st/u5/stm32u585.dtsi | 7 + dts/arm/st/u5/stm32u585Xi.dtsi | 21 + dts/arm/st/wb/stm32wb.dtsi | 460 +++ dts/arm/st/wb/stm32wb55.dtsi | 7 + dts/arm/st/wb/stm32wb55Xg.dtsi | 21 + dts/arm/st/wl/stm32wl.dtsi | 457 +++ dts/arm/st/wl/stm32wl54Xc.dtsi | 21 + dts/arm/st/wl/stm32wl55.dtsi | 7 + dts/arm/st/wl/stm32wl55Xc.dtsi | 21 + dts/arm/st/wl/stm32wle4X8.dtsi | 21 + dts/arm/st/wl/stm32wle4Xb.dtsi | 21 + dts/arm/st/wl/stm32wle4Xc.dtsi | 21 + dts/arm/st/wl/stm32wle5.dtsi | 7 + dts/arm/st/wl/stm32wle5X8.dtsi | 21 + dts/arm/st/wl/stm32wle5Xb.dtsi | 21 + dts/arm/st/wl/stm32wle5Xc.dtsi | 21 + dts/binding-template.yaml | 10 + dts/bindings/adc/adc-controller.yaml | 14 + dts/bindings/adc/arduino,uno-adc.yaml | 34 + dts/bindings/adc/atmel,sam-afec.yaml | 35 + dts/bindings/adc/atmel,sam0-adc.yaml | 48 + dts/bindings/adc/ite,it8xxx2-adc.yaml | 16 + dts/bindings/adc/microchip,mcp3204.yaml | 5 + dts/bindings/adc/microchip,mcp3208.yaml | 5 + dts/bindings/adc/microchip,mcp320x-base.yaml | 10 + dts/bindings/adc/microchip,xec-adc-v2.yaml | 48 + dts/bindings/adc/microchip,xec-adc.yaml | 26 + dts/bindings/adc/nordic,nrf-adc.yaml | 21 + dts/bindings/adc/nordic,nrf-saadc.yaml | 21 + dts/bindings/adc/nxp,kinetis-adc12.yaml | 41 + dts/bindings/adc/nxp,kinetis-adc16.yaml | 63 + dts/bindings/adc/nxp,mcux-12b1msps-sar.yaml | 31 + dts/bindings/adc/st,stm32-adc.yaml | 31 + dts/bindings/adc/ti,cc32xx-adc.yaml | 21 + dts/bindings/adc/ti,lmp90077.yaml | 5 + dts/bindings/adc/ti,lmp90078.yaml | 5 + dts/bindings/adc/ti,lmp90079.yaml | 5 + dts/bindings/adc/ti,lmp90080.yaml | 5 + dts/bindings/adc/ti,lmp90097.yaml | 5 + dts/bindings/adc/ti,lmp90098.yaml | 5 + dts/bindings/adc/ti,lmp90099.yaml | 5 + dts/bindings/adc/ti,lmp90100.yaml | 5 + dts/bindings/adc/ti,lmp90xxx-base.yaml | 18 + dts/bindings/adc/ti,lmp90xxx-current.yaml | 9 + dts/bindings/adc/voltage-divider.yaml | 40 + dts/bindings/adc/zephyr,adc-emul.yaml | 46 + dts/bindings/arc/arc,dccm.yaml | 12 + dts/bindings/arc/arc,iccm.yaml | 12 + dts/bindings/arm/arm,dtcm.yaml | 11 + dts/bindings/arm/arm,itcm.yaml | 11 + dts/bindings/arm/arm,scc.yaml | 12 + dts/bindings/arm/atmel,sam-ssc.yaml | 52 + dts/bindings/arm/atmel,sam0-id.yaml | 10 + dts/bindings/arm/atmel,sam0-sercom.yaml | 15 + dts/bindings/arm/atmel,samd2x-pm.yaml | 19 + dts/bindings/arm/nordic,nrf-dppic.yaml | 13 + dts/bindings/arm/nordic,nrf-egu.yaml | 15 + dts/bindings/arm/nordic,nrf-ficr.yaml | 9 + dts/bindings/arm/nordic,nrf-kmu.yaml | 15 + dts/bindings/arm/nordic,nrf-spu.yaml | 12 + dts/bindings/arm/nordic,nrf-uicr.yaml | 9 + dts/bindings/arm/nxp,imx-dtcm.yaml | 12 + dts/bindings/arm/nxp,imx-epit.yaml | 28 + dts/bindings/arm/nxp,imx-itcm.yaml | 12 + dts/bindings/arm/nxp,imx-mu.yaml | 23 + dts/bindings/arm/nxp,kinetis-ftm.yaml | 29 + dts/bindings/arm/nxp,kinetis-ke1xf-sim.yaml | 25 + dts/bindings/arm/nxp,kinetis-mcg.yaml | 21 + dts/bindings/arm/nxp,kinetis-pcc.yaml | 22 + dts/bindings/arm/nxp,kinetis-scg.yaml | 26 + dts/bindings/arm/nxp,kinetis-sim.yaml | 45 + dts/bindings/arm/nxp,lpc-flexcomm.yaml | 15 + dts/bindings/arm/st,stm32-ccm.yaml | 11 + dts/bindings/audio/intel,dmic.yaml | 12 + dts/bindings/audio/nordic,nrf-pdm.yaml | 52 + dts/bindings/audio/st,mpxxdtyy-i2s.yaml | 12 + dts/bindings/audio/ti,tlv320dac.yaml | 13 + dts/bindings/base/base.yaml | 110 + dts/bindings/base/mem-region.yaml | 13 + dts/bindings/base/pm.yaml | 18 + dts/bindings/base/power.yaml | 33 + .../bluetooth/zephyr,bt-hci-spi-slave.yaml | 34 + dts/bindings/bluetooth/zephyr,bt-hci-spi.yaml | 19 + dts/bindings/can/bosch,m-can-base.yaml | 28 + dts/bindings/can/bosch,m-can.yaml | 12 + dts/bindings/can/can-controller.yaml | 36 + dts/bindings/can/can-device.yaml | 14 + dts/bindings/can/can-fd-controller.yaml | 36 + dts/bindings/can/microchip,mcp2515.yaml | 26 + dts/bindings/can/nxp,kinetis-flexcan.yaml | 23 + dts/bindings/can/renesas,rcar-can.yaml | 15 + dts/bindings/can/st,stm32-can.yaml | 26 + dts/bindings/can/st,stm32-fdcan.yaml | 5 + dts/bindings/clock/atmel,samd2x-gclk.yaml | 18 + dts/bindings/clock/atmel,samd5x-gclk.yaml | 18 + dts/bindings/clock/atmel,samd5x-mclk.yaml | 19 + dts/bindings/clock/clock-controller.yaml | 10 + dts/bindings/clock/espressif,esp32-rtc.yaml | 31 + dts/bindings/clock/fixed-clock.yaml | 27 + dts/bindings/clock/fixed-factor-clock.yaml | 24 + dts/bindings/clock/litex,clk.yaml | 93 + dts/bindings/clock/litex,clkout.yaml | 67 + dts/bindings/clock/microchip,xec-pcr.yaml | 52 + dts/bindings/clock/nordic,nrf-clock.yaml | 27 + dts/bindings/clock/nuvoton,npcx-pcc.yaml | 224 ++ dts/bindings/clock/nxp,imx-anatop.yaml | 38 + dts/bindings/clock/nxp,imx-ccm-rev2.yaml | 23 + dts/bindings/clock/nxp,imx-ccm.yaml | 23 + dts/bindings/clock/nxp,lpc-syscon.yaml | 21 + dts/bindings/clock/nxp,lpc11u6x-syscon.yaml | 31 + dts/bindings/clock/renesas,rcar-cpg-mssr.yaml | 19 + dts/bindings/clock/st,stm32-hse-clock.yaml | 16 + dts/bindings/clock/st,stm32-msi-clock.yaml | 36 + dts/bindings/clock/st,stm32-rcc.yaml | 96 + dts/bindings/clock/st,stm32f0-pll-clock.yaml | 40 + dts/bindings/clock/st,stm32f0-rcc.yaml | 13 + dts/bindings/clock/st,stm32f1-pll-clock.yaml | 47 + .../clock/st,stm32f100-pll-clock.yaml | 36 + .../clock/st,stm32f105-pll-clock.yaml | 55 + .../clock/st,stm32f105-pll2-clock.yaml | 36 + dts/bindings/clock/st,stm32f2-pll-clock.yaml | 61 + dts/bindings/clock/st,stm32f4-pll-clock.yaml | 64 + dts/bindings/clock/st,stm32f7-pll-clock.yaml | 59 + dts/bindings/clock/st,stm32g0-pll-clock.yaml | 66 + dts/bindings/clock/st,stm32g4-pll-clock.yaml | 44 + dts/bindings/clock/st,stm32h7-hsi-clock.yaml | 20 + dts/bindings/clock/st,stm32h7-pll-clock.yaml | 70 + dts/bindings/clock/st,stm32h7-rcc.yaml | 137 + dts/bindings/clock/st,stm32l0-msi-clock.yaml | 26 + dts/bindings/clock/st,stm32l0-pll-clock.yaml | 59 + dts/bindings/clock/st,stm32l4-pll-clock.yaml | 80 + dts/bindings/clock/st,stm32mp1-rcc.yaml | 17 + dts/bindings/clock/st,stm32u5-msi-clock.yaml | 37 + dts/bindings/clock/st,stm32u5-pll-clock.yaml | 67 + dts/bindings/clock/st,stm32u5-rcc.yaml | 22 + dts/bindings/clock/st,stm32wb-pll-clock.yaml | 71 + dts/bindings/clock/st,stm32wb-rcc.yaml | 77 + dts/bindings/clock/st,stm32wl-hse-clock.yaml | 23 + dts/bindings/clock/st,stm32wl-rcc.yaml | 55 + dts/bindings/counter/st,stm32-counter.yaml | 12 + dts/bindings/cpu/altr,nios2f.yaml | 15 + dts/bindings/cpu/arm,cortex-a53.yaml | 8 + dts/bindings/cpu/arm,cortex-a72.yaml | 7 + dts/bindings/cpu/arm,cortex-m.yaml | 12 + dts/bindings/cpu/arm,cortex-m0+.yaml | 8 + dts/bindings/cpu/arm,cortex-m0.yaml | 8 + dts/bindings/cpu/arm,cortex-m1.yaml | 8 + dts/bindings/cpu/arm,cortex-m23.yaml | 8 + dts/bindings/cpu/arm,cortex-m3.yaml | 8 + dts/bindings/cpu/arm,cortex-m33.yaml | 8 + dts/bindings/cpu/arm,cortex-m33f.yaml | 8 + dts/bindings/cpu/arm,cortex-m4.yaml | 8 + dts/bindings/cpu/arm,cortex-m4f.yaml | 8 + dts/bindings/cpu/arm,cortex-m7.yaml | 8 + dts/bindings/cpu/arm,cortex-r4.yaml | 8 + dts/bindings/cpu/arm,cortex-r4f.yaml | 8 + dts/bindings/cpu/arm,cortex-r5.yaml | 8 + dts/bindings/cpu/arm,cortex-r5f.yaml | 8 + dts/bindings/cpu/arm,cortex-r7.yaml | 8 + dts/bindings/cpu/arm,cortex-r82.yaml | 8 + .../cpu/cdns,tensilica-xtensa-lx4.yaml | 8 + .../cpu/cdns,tensilica-xtensa-lx6.yaml | 14 + .../cpu/cdns,tensilica-xtensa-lx7.yaml | 14 + dts/bindings/cpu/cpu.yaml | 24 + dts/bindings/cpu/espressif,riscv.yml | 14 + dts/bindings/cpu/intel,apollo_lake.yaml | 8 + dts/bindings/cpu/intel,atom.yaml | 8 + dts/bindings/cpu/intel,elkhart_lake.yaml | 8 + dts/bindings/cpu/intel,lakemont.yml | 8 + dts/bindings/cpu/intel,x86.yaml | 8 + dts/bindings/cpu/ite,riscv-ite.yaml | 8 + dts/bindings/cpu/neorv32-cpu.yaml | 8 + dts/bindings/cpu/nuclei,bumblebee.yaml | 14 + dts/bindings/cpu/qemu,nios2-zephyr.yaml | 15 + dts/bindings/cpu/sample_controller.yaml | 8 + dts/bindings/cpu/snps,arcem.yaml | 8 + dts/bindings/cpu/telink,b91.yaml | 8 + dts/bindings/crypto/arm,cryptocell-310.yaml | 18 + dts/bindings/crypto/arm,cryptocell-312.yaml | 18 + dts/bindings/crypto/nordic,nrf-cc310.yaml | 15 + dts/bindings/crypto/nordic,nrf-cc312.yaml | 15 + dts/bindings/crypto/nordic,nrf-ecb.yaml | 15 + dts/bindings/crypto/st,stm32-aes.yaml | 8 + dts/bindings/crypto/st,stm32-cryp.yaml | 8 + .../crypto/st,stm32-crypto-common.yaml | 17 + dts/bindings/dac/atmel,sam-dac.yaml | 34 + dts/bindings/dac/atmel,sam0-dac.yaml | 33 + dts/bindings/dac/dac-controller.yaml | 14 + dts/bindings/dac/gd,gd32-dac.yaml | 34 + dts/bindings/dac/microchip,mcp4725.yaml | 15 + dts/bindings/dac/nxp,kinetis-dac.yaml | 28 + dts/bindings/dac/nxp,kinetis-dac32.yaml | 33 + dts/bindings/dac/st,stm32-dac.yaml | 27 + dts/bindings/dac/ti,dac43608.yaml | 8 + dts/bindings/dac/ti,dac53608.yaml | 8 + dts/bindings/dac/ti,dac60508.yaml | 8 + dts/bindings/dac/ti,dac70508.yaml | 8 + dts/bindings/dac/ti,dac80508.yaml | 8 + dts/bindings/dac/ti,dacx0508-base.yaml | 83 + dts/bindings/dac/ti,dacx3608-base.yaml | 11 + dts/bindings/display/display-controller.yaml | 20 + dts/bindings/display/fsl,imx6sx-lcdif.yaml | 18 + dts/bindings/display/ftdi,ft800.yaml | 107 + dts/bindings/display/gooddisplay,gd7965.yaml | 56 + dts/bindings/display/ilitek,ili9340.yaml | 97 + dts/bindings/display/ilitek,ili9341.yaml | 146 + dts/bindings/display/ilitek,ili9488.yaml | 84 + .../display/ilitek,ili9xxx-common.yaml | 54 + .../display/nordic,nrf-led-matrix.yaml | 82 + .../display/rocktech,rk043fn02h-ct.yaml | 8 + dts/bindings/display/sharp,ls0xx.yaml | 35 + dts/bindings/display/sitronix,st7735r.yaml | 117 + dts/bindings/display/sitronix,st7789v.yaml | 115 + .../display/solomon,ssd1306fb-common.yaml | 54 + .../display/solomon,ssd1306fb-i2c.yaml | 8 + .../display/solomon,ssd1306fb-spi.yaml | 14 + dts/bindings/display/solomon,ssd16xxfb.yaml | 93 + dts/bindings/display/zephyr,dummy-dc.yaml | 8 + dts/bindings/display/zephyr,sdl-dc.yaml | 8 + dts/bindings/dma/altr,msgdma.yaml | 18 + dts/bindings/dma/arm,dma-pl330.yaml | 45 + dts/bindings/dma/atmel,sam-xdmac.yaml | 27 + dts/bindings/dma/atmel,sam0-dmac.yaml | 39 + dts/bindings/dma/brcm,iproc-pax-dma-v1.yaml | 38 + dts/bindings/dma/brcm,iproc-pax-dma-v2.yaml | 38 + dts/bindings/dma/dma-controller.yaml | 35 + dts/bindings/dma/dmamux-controller.yaml | 34 + dts/bindings/dma/nxp,lpc-dma.yaml | 29 + dts/bindings/dma/nxp,mcux-edma.yaml | 54 + dts/bindings/dma/snps,designware-dma.yaml | 21 + dts/bindings/dma/st,stm32-dma-v1.yaml | 90 + dts/bindings/dma/st,stm32-dma-v2.yaml | 83 + dts/bindings/dma/st,stm32-dma-v2bis.yaml | 77 + dts/bindings/dma/st,stm32-dma.yaml | 38 + dts/bindings/dma/st,stm32-dmamux.yaml | 83 + dts/bindings/dsa/microchip,ksz8794.yaml | 35 + dts/bindings/dsa/microchip,ksz8863.yaml | 9 + dts/bindings/dsa/microchip_dsa.yaml | 45 + .../zephyr,sim-ec-host-cmd-periph.yaml | 11 + dts/bindings/edac/intel,ibecc.yaml | 12 + dts/bindings/espi/espi-controller.yaml | 12 + .../espi/microchip,xec-espi-host-dev.yaml | 95 + dts/bindings/espi/microchip,xec-espi-saf.yaml | 44 + dts/bindings/espi/microchip,xec-espi-v2.yaml | 44 + .../espi/microchip,xec-espi-vw-routing.yaml | 25 + dts/bindings/espi/microchip,xec-espi.yaml | 28 + .../espi/nuvoton,npcx-espi-vw-conf.yaml | 22 + dts/bindings/espi/nuvoton,npcx-espi.yaml | 31 + dts/bindings/espi/nuvoton,npcx-host-sub.yaml | 27 + dts/bindings/espi/nuvoton,npcx-host-uart.yaml | 14 + .../espi/zephyr,espi-emul-controller.yaml | 12 + dts/bindings/ethernet/atmel,gmac-common.yaml | 73 + dts/bindings/ethernet/atmel,sam-gmac.yaml | 18 + dts/bindings/ethernet/atmel,sam0-gmac.yaml | 8 + .../ethernet/ethernet,fixed-link.yaml | 18 + dts/bindings/ethernet/ethernet-phy.yaml | 33 + dts/bindings/ethernet/ethernet.yaml | 27 + dts/bindings/ethernet/intel,e1000.yaml | 15 + dts/bindings/ethernet/litex,eth0.yaml | 15 + dts/bindings/ethernet/microchip,enc28j60.yaml | 18 + .../ethernet/microchip,enc424j600.yaml | 19 + .../ethernet/nxp,kinetis-ethernet.yaml | 14 + dts/bindings/ethernet/nxp,kinetis-ptp.yaml | 12 + dts/bindings/ethernet/phy.yaml | 6 + .../ethernet/silabs,gecko-ethernet.yaml | 101 + dts/bindings/ethernet/smsc,lan9220.yaml | 15 + .../ethernet/snps,designware-ethernet.yaml | 14 + dts/bindings/ethernet/st,stm32-ethernet.yaml | 22 + .../ethernet/ti,stellaris-ethernet.yaml | 14 + dts/bindings/ethernet/wiznet,w5500.yaml | 26 + dts/bindings/ethernet/xlnx,gem.yaml | 378 ++ .../atmel,sam-flash-controller.yaml | 14 + .../flash_controller/atmel,sam0-nvmctrl.yaml | 11 + .../cypress,psoc6-flash-controller.yaml | 8 + .../espressif,esp32-flash-controller.yaml | 5 + .../flash_controller/flash-controller.yaml | 10 + .../ite,it8xxx2-flash-controller.yaml | 8 + .../flash_controller/nordic,nrf-qspi.yaml | 76 + .../nordic,nrf51-flash-controller.yaml | 5 + .../nordic,nrf52-flash-controller.yaml | 5 + .../nordic,nrf53-flash-controller.yaml | 5 + .../nordic,nrf91-flash-controller.yaml | 5 + .../flash_controller/nxp,kinetis-ftfa.yaml | 5 + .../flash_controller/nxp,kinetis-ftfe.yaml | 5 + .../flash_controller/nxp,kinetis-ftfl.yaml | 5 + .../flash_controller/nxp,lpc-iap.yaml | 8 + .../flash_controller/openisa,rv32m1-ftfe.yaml | 5 + .../silabs,gecko-flash-controller.yaml | 8 + .../st,stm32-flash-controller.yaml | 5 + .../flash_controller/st,stm32-qspi-nor.yaml | 35 + .../st,stm32f0-flash-controller.yaml | 5 + .../st,stm32f1-flash-controller.yaml | 5 + .../st,stm32f2-flash-controller.yaml | 5 + .../st,stm32f3-flash-controller.yaml | 5 + .../st,stm32f4-flash-controller.yaml | 5 + .../st,stm32f7-flash-controller.yaml | 5 + .../st,stm32g0-flash-controller.yaml | 5 + .../st,stm32g4-flash-controller.yaml | 5 + .../st,stm32h7-flash-controller.yaml | 5 + .../st,stm32l0-flash-controller.yaml | 8 + .../st,stm32l1-flash-controller.yaml | 5 + .../st,stm32l4-flash-controller.yaml | 5 + .../st,stm32l5-flash-controller.yaml | 5 + .../st,stm32u5-flash-controller.yaml | 5 + .../st,stm32wb-flash-controller.yaml | 16 + .../telink,b91-flash-controller.yaml | 5 + .../ti,stellaris-flash-controller.yaml | 8 + .../flash_controller/zephyr,sim-flash.yaml | 16 + dts/bindings/fs/zephyr,fstab,littlefs.yaml | 78 + dts/bindings/fs/zephyr,fstab-common.yaml | 51 + dts/bindings/fs/zephyr,fstab.yaml | 12 + .../gpio/adafruit-feather-header.yaml | 39 + dts/bindings/gpio/andestech,atcgpio100.yaml | 27 + dts/bindings/gpio/arduino-header-r3.yaml | 50 + dts/bindings/gpio/arm,cmsdk-gpio.yaml | 22 + dts/bindings/gpio/arm,mps2-fpgaio-gpio.yaml | 18 + dts/bindings/gpio/arm,mps3-fpgaio-gpio.yaml | 18 + dts/bindings/gpio/atmel,sam-gpio.yaml | 38 + dts/bindings/gpio/atmel,sam0-gpio.yaml | 29 + dts/bindings/gpio/atmel,sam4l-gpio.yaml | 5 + dts/bindings/gpio/atmel-xplained-header.yaml | 45 + .../gpio/atmel-xplained-pro-header.yaml | 49 + .../gpio/cypress,cy8c95xx-gpio-port.yaml | 26 + dts/bindings/gpio/cypress,cy8c95xx-gpio.yaml | 15 + dts/bindings/gpio/cypress,psoc6-gpio.yaml | 35 + dts/bindings/gpio/cypress,psoc6-hsiom.yaml | 18 + dts/bindings/gpio/espressif,esp32-gpio.yaml | 22 + dts/bindings/gpio/fcs,fxl6408.yaml | 19 + dts/bindings/gpio/gd,gd32-gpio.yaml | 27 + dts/bindings/gpio/gpio-controller.yaml | 45 + dts/bindings/gpio/gpio-keys.yaml | 17 + dts/bindings/gpio/gpio-leds.yaml | 32 + dts/bindings/gpio/gpio-nexus.yaml | 22 + dts/bindings/gpio/intel,gpio.yaml | 38 + dts/bindings/gpio/ite,it8xxx2-gpio.yaml | 19 + dts/bindings/gpio/linaro,96b-lscon-1v8.yaml | 8 + dts/bindings/gpio/linaro,96b-lscon-3v3.yaml | 9 + dts/bindings/gpio/litex,gpio.yaml | 32 + .../gpio/microbit,edge-connector.yaml | 25 + dts/bindings/gpio/microchip,mcp230xx.yaml | 29 + dts/bindings/gpio/microchip,mcp23s17.yaml | 29 + dts/bindings/gpio/microchip,mcp23sxx.yaml | 32 + dts/bindings/gpio/microchip,xec-gpio-v2.yaml | 35 + dts/bindings/gpio/microchip,xec-gpio.yaml | 25 + dts/bindings/gpio/mikro-bus.yaml | 33 + dts/bindings/gpio/neorv32-gpio.yaml | 25 + dts/bindings/gpio/nordic,nrf-gpio.yaml | 41 + dts/bindings/gpio/nordic,nrf-gpiote.yaml | 18 + .../gpio/nuvoton,nct38xx-gpio-alert.yaml | 32 + .../gpio/nuvoton,nct38xx-gpio-port.yaml | 44 + dts/bindings/gpio/nuvoton,nct38xx-gpio.yaml | 83 + dts/bindings/gpio/nuvoton,npcx-gpio.yaml | 39 + dts/bindings/gpio/nuvoton,npcx-psl-out.yaml | 19 + dts/bindings/gpio/nxp,imx-gpio.yaml | 30 + dts/bindings/gpio/nxp,kinetis-gpio.yaml | 26 + dts/bindings/gpio/nxp,lpc-gpio.yaml | 31 + dts/bindings/gpio/nxp,lpc11u6x-gpio.yaml | 41 + dts/bindings/gpio/nxp,pca95xx.yaml | 29 + dts/bindings/gpio/nxp,pcal6408a.yaml | 35 + dts/bindings/gpio/openisa,rv32m1-gpio.yaml | 29 + dts/bindings/gpio/particle-gen3-header.yaml | 43 + dts/bindings/gpio/quicklogic,eos-s3-gpio.yaml | 39 + dts/bindings/gpio/renesas,rcar-gpio.yaml | 28 + dts/bindings/gpio/seeed-xiao-header.yaml | 33 + dts/bindings/gpio/semtech,sx1509b.yaml | 46 + dts/bindings/gpio/sifive,gpio0.yaml | 25 + dts/bindings/gpio/silabs,gecko-gpio-port.yaml | 24 + dts/bindings/gpio/silabs,gecko-gpio.yaml | 20 + dts/bindings/gpio/snps,creg-gpio.yaml | 34 + dts/bindings/gpio/snps,designware-gpio.yaml | 25 + dts/bindings/gpio/st,stm32-gpio.yaml | 25 + dts/bindings/gpio/st,stmpe1600.yaml | 19 + dts/bindings/gpio/telink,b91-gpio.yaml | 22 + dts/bindings/gpio/ti,boosterpack-header.yaml | 34 + dts/bindings/gpio/ti,cc13xx-cc26xx-gpio.yaml | 25 + dts/bindings/gpio/ti,cc32xx-gpio.yaml | 23 + dts/bindings/gpio/ti,lmp90xxx-gpio.yaml | 18 + dts/bindings/gpio/ti,stellaris-gpio.yaml | 24 + dts/bindings/gpio/ti,tca9538.yaml | 33 + .../gpio/xlnx,xps-gpio-1.00.a-gpio2.yaml | 18 + dts/bindings/gpio/xlnx,xps-gpio-1.00.a.yaml | 79 + dts/bindings/gpio/zephyr,gpio-emul.yaml | 38 + dts/bindings/hwinfo/atmel,sam4l-uid.yaml | 12 + dts/bindings/hwinfo/cypress,psoc6-uid.yaml | 12 + dts/bindings/hwinfo/litex,dna0.yaml | 12 + dts/bindings/hwinfo/nxp,lpc-uid.yaml | 12 + dts/bindings/i2c/altr,nios2-i2c.yaml | 15 + dts/bindings/i2c/arm,versatile-i2c.yaml | 12 + dts/bindings/i2c/asmedia,asm2364.yaml | 16 + dts/bindings/i2c/atmel,sam-i2c-twi.yaml | 32 + dts/bindings/i2c/atmel,sam-i2c-twihs.yaml | 32 + dts/bindings/i2c/atmel,sam-i2c-twim.yaml | 215 ++ dts/bindings/i2c/atmel,sam0-i2c.yaml | 38 + dts/bindings/i2c/espressif,esp32-i2c.yaml | 35 + dts/bindings/i2c/fsl,imx21-i2c.yaml | 20 + dts/bindings/i2c/gpio-i2c.yaml | 18 + dts/bindings/i2c/i2c-controller.yaml | 22 + dts/bindings/i2c/i2c-device.yaml | 15 + dts/bindings/i2c/ite,it8xxx2-i2c.yaml | 35 + dts/bindings/i2c/litex,i2c.yaml | 15 + dts/bindings/i2c/microchip,xec-i2c-v2.yaml | 43 + dts/bindings/i2c/microchip,xec-i2c.yaml | 27 + dts/bindings/i2c/nordic,nrf-twi-common.yaml | 37 + dts/bindings/i2c/nordic,nrf-twi.yaml | 45 + dts/bindings/i2c/nordic,nrf-twim.yaml | 63 + dts/bindings/i2c/nordic,nrf-twis.yaml | 41 + dts/bindings/i2c/nuvoton,npcx-i2c-ctrl.yaml | 16 + dts/bindings/i2c/nuvoton,npcx-i2c-port.yaml | 27 + dts/bindings/i2c/nxp,imx-lpi2c.yaml | 20 + dts/bindings/i2c/nxp,kinetis-i2c.yaml | 19 + dts/bindings/i2c/nxp,lpc-i2c.yaml | 8 + dts/bindings/i2c/nxp,lpc11u6x-i2c.yaml | 28 + dts/bindings/i2c/openisa,rv32m1-lpi2c.yaml | 15 + dts/bindings/i2c/renesas,rcar-i2c.yaml | 16 + dts/bindings/i2c/sifive,i2c0.yaml | 17 + dts/bindings/i2c/silabs,gecko-i2c.yaml | 28 + dts/bindings/i2c/snps,designware-i2c.yaml | 15 + dts/bindings/i2c/st,stm32-i2c-v1.yaml | 21 + dts/bindings/i2c/st,stm32-i2c-v2.yaml | 46 + dts/bindings/i2c/telink,b91-i2c.yaml | 16 + dts/bindings/i2c/ti,cc13xx-cc26xx-i2c.yaml | 25 + dts/bindings/i2c/ti,cc32xx-i2c.yaml | 12 + dts/bindings/i2c/ti,tca9546a.yaml | 10 + dts/bindings/i2c/ti,tca9548a.yaml | 10 + dts/bindings/i2c/ti,tca954x-base.yaml | 60 + .../i2c/zephyr,i2c-emul-controller.yaml | 12 + dts/bindings/i2s/i2s-controller.yaml | 18 + dts/bindings/i2s/i2s-device.yaml | 14 + dts/bindings/i2s/intel,cavs-i2s.yaml | 25 + dts/bindings/i2s/litex,i2s.yaml | 18 + dts/bindings/i2s/nordic,nrf-i2s.yaml | 60 + dts/bindings/i2s/nxp,lpc-i2s.yaml | 8 + dts/bindings/i2s/nxp,mcux-i2s.yaml | 70 + dts/bindings/i2s/st,stm32-i2s.yaml | 27 + dts/bindings/ieee802154/atmel,rf2xx.yaml | 40 + dts/bindings/ieee802154/decawave,dw1000.yaml | 37 + dts/bindings/ieee802154/nxp,mcr20a.yaml | 27 + dts/bindings/ieee802154/telink,b91-zb.yaml | 18 + dts/bindings/ieee802154/ti,cc1200.yaml | 13 + dts/bindings/ieee802154/ti,cc2520.yaml | 33 + dts/bindings/iio/adc/nuvoton,npcx-adc.yaml | 23 + dts/bindings/iio/adc/nxp,lpc-lpadc.yaml | 56 + .../interrupt-controller/arm,gic-v3-its.yaml | 15 + .../interrupt-controller/arm,gic.yaml | 21 + .../interrupt-controller/arm,v6m-nvic.yaml | 21 + .../interrupt-controller/arm,v7m-nvic.yaml | 21 + .../interrupt-controller/arm,v8.1m-nvic.yaml | 21 + .../interrupt-controller/arm,v8m-nvic.yaml | 21 + .../interrupt-controller/atmel,sam0-eic.yaml | 15 + .../cdns,xtensa-core-intc.yaml | 17 + .../cypress,psoc6-intmux-ch.yaml | 26 + .../cypress,psoc6-intmux.yaml | 79 + .../espressif,esp32-intc.yaml | 14 + .../interrupt-controller/gaisler,irqmp.yaml | 22 + .../interrupt-controller/intel,cavs-intc.yaml | 23 + .../interrupt-controller/intel,ioapic.yaml | 17 + .../interrupt-controller/intel,vt-d.yaml | 15 + .../interrupt-controller.yaml | 14 + .../ite,it8xxx2-intc.yaml | 15 + .../microchip,xec-ecia-girq.yaml | 26 + .../microchip,xec-ecia.yaml | 22 + .../interrupt-controller/nuclei,eclic.yaml | 19 + .../nuvoton,npcx-miwu-int-map.yaml | 32 + .../nuvoton,npcx-miwu-wui-map.yaml | 13 + .../nuvoton,npcx-miwu.yaml | 26 + .../openisa,rv32m1-event-unit.yaml | 19 + .../openisa,rv32m1-intmux-ch.yaml | 21 + .../openisa,rv32m1-intmux.yaml | 15 + .../interrupt-controller/riscv,clint0.yaml | 18 + .../interrupt-controller/riscv,cpu-intc.yaml | 15 + .../interrupt-controller/riscv,plic0.yaml | 22 + .../interrupt-controller/shared-irq.yaml | 12 + .../sifive,plic-1.0.0.yaml | 14 + .../snps,archs-idu-intc.yaml | 15 + .../interrupt-controller/snps,arcv2-intc.yaml | 16 + .../snps,designware-intc.yaml | 25 + .../interrupt-controller/st,stm32-exti.yaml | 9 + .../interrupt-controller/swerv,pic.yaml | 20 + .../interrupt-controller/vexriscv-intc0.yaml | 24 + .../ipc/zephyr,ipc-openamp-static-vrings.yaml | 30 + dts/bindings/ipm/intel,adsp-mailbox.yaml | 15 + dts/bindings/ipm/intel,cavs-idc.yaml | 15 + dts/bindings/ipm/nordic,nrf-ipc.yaml | 15 + dts/bindings/ipm/nxp,lpc-mailbox.yaml | 18 + dts/bindings/ipm/st,stm32-hsem-mailbox.yaml | 15 + dts/bindings/ipm/st,stm32-ipcc-mailbox.yaml | 12 + dts/bindings/ipm/zephyr,ipm-console.yaml | 12 + dts/bindings/kscan/focaltech,ft5336.yaml | 13 + .../kscan/holtek,ht16k33-keyscan.yaml | 11 + dts/bindings/kscan/ite,it8xxx2-kscan.yaml | 25 + dts/bindings/kscan/kscan.yaml | 12 + dts/bindings/kscan/microchip,xec-kscan.yaml | 21 + dts/bindings/led/holtek,ht16k33.yaml | 15 + dts/bindings/led/led-controller.yaml | 39 + dts/bindings/led/nxp,pca9633.yaml | 5 + dts/bindings/led/pwm-leds.yaml | 33 + dts/bindings/led/ti,lp3943.yaml | 5 + dts/bindings/led/ti,lp503x.yaml | 30 + dts/bindings/led/ti,lp5562.yaml | 5 + dts/bindings/led/ti,tlc59108.yaml | 5 + dts/bindings/led_strip/apa,apa102.yaml | 5 + dts/bindings/led_strip/greeled,lpd8803.yaml | 8 + dts/bindings/led_strip/greeled,lpd8806.yaml | 8 + .../led_strip/worldsemi,ws2812-gpio.yaml | 25 + .../led_strip/worldsemi,ws2812-spi.yaml | 35 + dts/bindings/led_strip/ws2812.yaml | 66 + dts/bindings/lora/semtech,sx1261.yaml | 16 + dts/bindings/lora/semtech,sx1262.yaml | 16 + dts/bindings/lora/semtech,sx126x-base.yaml | 70 + dts/bindings/lora/semtech,sx1272.yaml | 8 + dts/bindings/lora/semtech,sx1276.yaml | 8 + dts/bindings/lora/semtech,sx127x-base.yaml | 70 + .../lora/st,stm32wl-subghz-radio.yaml | 14 + dts/bindings/mailbox/mailbox-controller.yaml | 10 + dts/bindings/mbox/nordic,mbox-nrf-ipc.yaml | 25 + dts/bindings/mdio/atmel,sam-mdio.yaml | 18 + dts/bindings/mdio/mdio-controller.yaml | 27 + .../memory-controllers/ite,it8xxx2-bbram.yaml | 15 + .../nuvoton,npcx-bbram.yaml | 15 + .../memory-controllers/nxp,imx-semc.yaml | 18 + .../st,stm32-backup-sram.yaml | 22 + .../st,stm32-fmc-sdram.yaml | 169 + .../memory-controllers/st,stm32-fmc.yaml | 48 + .../memory-controllers/zephyr,bbram-emul.yaml | 17 + dts/bindings/mhu/arm,mhu.yaml | 18 + .../misc/nuvoton,npcx-booter-variant.yaml | 14 + dts/bindings/misc/nuvoton,npcx-soc-id.yaml | 27 + dts/bindings/misc/skyworks,sky13351.yaml | 18 + dts/bindings/misc/zephyr,modbus-serial.yaml | 27 + dts/bindings/mmc/mmc.yaml | 6 + dts/bindings/mmc/nxp,imx-usdhc.yaml | 48 + dts/bindings/mmc/st,stm32-sdmmc.yaml | 31 + dts/bindings/mmc/zephyr,mmc-spi-slot.yaml | 8 + dts/bindings/mmu_mpu/arm,armv6m-mpu.yaml | 18 + dts/bindings/mmu_mpu/arm,armv7m-mpu.yaml | 14 + dts/bindings/mmu_mpu/arm,armv8.1m-mpu.yaml | 14 + dts/bindings/mmu_mpu/arm,armv8m-mpu.yaml | 14 + dts/bindings/modem/openisa,rv32m1-genfsk.yaml | 15 + dts/bindings/modem/quectel,bg9x.yaml | 28 + dts/bindings/modem/simcom,sim7080.yaml | 16 + dts/bindings/modem/swir,hl7800.yaml | 51 + dts/bindings/modem/u-blox,sara-r4.yaml | 24 + dts/bindings/modem/wnc,m14a2a.yaml | 37 + dts/bindings/modem/zephyr,gsm-ppp.yaml | 8 + dts/bindings/mtd/atmel,at24.yaml | 9 + dts/bindings/mtd/atmel,at25.yaml | 8 + dts/bindings/mtd/atmel,at2x-base.yaml | 29 + dts/bindings/mtd/atmel,at45.yaml | 80 + dts/bindings/mtd/eeprom-base.yaml | 18 + dts/bindings/mtd/fixed-partitions.yaml | 39 + dts/bindings/mtd/jedec,jesd216.yaml | 75 + dts/bindings/mtd/jedec,spi-nor-common.yaml | 97 + dts/bindings/mtd/jedec,spi-nor.yaml | 26 + dts/bindings/mtd/nordic,qspi-nor.yaml | 102 + dts/bindings/mtd/nxp,imx-flexspi-device.yaml | 101 + .../mtd/nxp,imx-flexspi-hyperflash.yaml | 8 + .../mtd/nxp,imx-flexspi-hyperram.yaml | 8 + .../mtd/nxp,imx-flexspi-mx25um51345g.yaml | 8 + dts/bindings/mtd/nxp,imx-flexspi-nor.yaml | 8 + dts/bindings/mtd/nxp,lpc11u6x-eeprom.yaml | 8 + dts/bindings/mtd/soc-nv-flash.yaml | 19 + dts/bindings/mtd/st,stm32-eeprom.yaml | 12 + dts/bindings/mtd/st,stm32-nv-flash.yaml | 14 + dts/bindings/mtd/ti,tmp116-eeprom.yaml | 10 + dts/bindings/mtd/zephyr,emu-eeprom.yaml | 31 + dts/bindings/mtd/zephyr,sim-eeprom.yaml | 12 + .../multi_heap_manager/shared-multi-heap.yaml | 20 + .../wireless/generic-fem-two-ctrl-pins.yaml | 57 + .../net/wireless/nordic,nrf-radio.yaml | 217 ++ .../net/wireless/nordic,nrf21540-fem-spi.yaml | 10 + .../net/wireless/nordic,nrf21540-fem.yaml | 137 + dts/bindings/neural_net/intel,gna.yaml | 19 + .../pcie/endpoint/brcm,iproc-pcie-ep.yaml | 19 + dts/bindings/pcie/host/intel,pcie.yaml | 8 + .../pcie/host/pci-host-ecam-generic.yaml | 23 + dts/bindings/pcie/host/pcie-controller.yaml | 14 + dts/bindings/pcie/host/ptm-root.yaml | 10 + dts/bindings/peci/microchip,xec-peci.yaml | 15 + dts/bindings/peci/peci.yaml | 20 + dts/bindings/phy/phy-controller.yaml | 14 + dts/bindings/phy/st,stm32-usbphyc.yaml | 15 + dts/bindings/phy/usb-nop-xceiv.yaml | 14 + dts/bindings/pinctrl/atmel,sam-pinctrl.yaml | 33 + dts/bindings/pinctrl/atmel,sam0-pinctrl.yaml | 55 + dts/bindings/pinctrl/atmel,sam0-pinmux.yaml | 13 + .../pinctrl/cypress,psoc6-pinctrl.yaml | 36 + .../pinctrl/espressif,esp32-pinmux.yaml | 12 + dts/bindings/pinctrl/gd,gd32-afio.yaml | 30 + dts/bindings/pinctrl/gd,gd32-pinctrl-af.yaml | 111 + .../pinctrl/gd,gd32-pinctrl-afio.yaml | 137 + .../pinctrl/gd,gd32-pinctrl-common.yaml | 26 + dts/bindings/pinctrl/intel,s1000-pinmux.yaml | 14 + .../pinctrl/ite,it8xxx2-pinctrl-conf.yaml | 13 + dts/bindings/pinctrl/ite,it8xxx2-pinmux.yaml | 32 + .../pinctrl/microchip,xec-pinmux.yaml | 21 + dts/bindings/pinctrl/nordic,nrf-pinctrl.yaml | 110 + .../pinctrl/nuvoton,npcx-lvolctrl-conf.yaml | 17 + .../pinctrl/nuvoton,npcx-lvolctrl-def.yaml | 14 + .../pinctrl/nuvoton,npcx-pinctrl-conf.yaml | 16 + .../pinctrl/nuvoton,npcx-pinctrl-def.yaml | 14 + .../pinctrl/nuvoton,npcx-pslctrl-conf.yaml | 44 + .../pinctrl/nuvoton,npcx-pslctrl-def.yaml | 17 + dts/bindings/pinctrl/nuvoton,npcx-scfg.yaml | 33 + dts/bindings/pinctrl/nxp,imx-pinmux.yaml | 19 + dts/bindings/pinctrl/nxp,kinetis-pinmux.yaml | 39 + dts/bindings/pinctrl/nxp,lpc-iocon-pio.yaml | 12 + dts/bindings/pinctrl/nxp,lpc-iocon.yaml | 12 + dts/bindings/pinctrl/nxp,lpc11u6x-pinmux.yaml | 22 + .../pinctrl/openisa,rv32m1-pinmux.yaml | 16 + dts/bindings/pinctrl/pincfg-node-group.yaml | 165 + dts/bindings/pinctrl/pincfg-node.yaml | 160 + dts/bindings/pinctrl/pinctrl-device.yaml | 43 + dts/bindings/pinctrl/sifive,iof.yaml | 19 + .../pinctrl/snps,creg-gpio-mux-hsdk.yaml | 17 + dts/bindings/pinctrl/st,stm32-pinctrl.yaml | 94 + dts/bindings/pinctrl/st,stm32f1-pinctrl.yaml | 105 + dts/bindings/pinctrl/telink,b91-pinmux.yaml | 29 + .../pinctrl/ti,cc13xx-cc26xx-pinmux.yaml | 12 + dts/bindings/pm_cpu_ops/arm,psci-0.2.yaml | 20 + dts/bindings/power/nordic,nrf-power.yaml | 15 + dts/bindings/power/nordic,nrf-regulators.yaml | 12 + dts/bindings/power/nordic,nrf-vmc.yaml | 12 + dts/bindings/power/telink,b91-power.yaml | 27 + dts/bindings/power/zephyr,power-state.yaml | 36 + dts/bindings/ps2/microchip,xec-ps2.yaml | 25 + .../ps2/nuvoton,npcx-ps2-channel.yaml | 19 + dts/bindings/ps2/nuvoton,npcx-ps2-ctrl.yaml | 20 + dts/bindings/ps2/ps2.yaml | 20 + dts/bindings/pwm/atmel,sam-pwm.yaml | 38 + dts/bindings/pwm/atmel,sam0-tcc-pwm.yaml | 62 + dts/bindings/pwm/espressif,esp32-ledc.yaml | 17 + dts/bindings/pwm/fsl,imx27-pwm.yaml | 38 + dts/bindings/pwm/ite,it8xxx2-pwm.yaml | 63 + dts/bindings/pwm/ite,it8xxx2-pwmprs.yaml | 18 + dts/bindings/pwm/litex,pwm.yaml | 15 + dts/bindings/pwm/microchip,xec-pwm.yaml | 15 + dts/bindings/pwm/nordic,nrf-pwm.yaml | 77 + dts/bindings/pwm/nordic,nrf-sw-pwm.yaml | 36 + dts/bindings/pwm/nuvoton,npcx-pwm.yaml | 38 + dts/bindings/pwm/nxp,flexpwm.yaml | 15 + dts/bindings/pwm/nxp,imx-pwm.yaml | 26 + dts/bindings/pwm/nxp,kinetis-ftm-pwm.yaml | 22 + dts/bindings/pwm/nxp,kinetis-pwt.yaml | 38 + dts/bindings/pwm/nxp,kinetis-tpm.yaml | 28 + dts/bindings/pwm/nxp,sctimer-pwm.yaml | 31 + dts/bindings/pwm/openisa,rv32m1-tpm.yaml | 24 + dts/bindings/pwm/pwm-controller.yaml | 13 + dts/bindings/pwm/sifive,pwm0.yaml | 33 + dts/bindings/pwm/silabs,gecko-pwm.yaml | 36 + dts/bindings/pwm/snps,designware-pwm.yaml | 17 + dts/bindings/pwm/st,stm32-pwm.yaml | 34 + dts/bindings/pwm/telink,b91-pwm.yaml | 66 + .../pwm/xlnx,xps-timer-1.00.a-pwm.yaml | 24 + dts/bindings/qspi/st,stm32-qspi.yaml | 52 + dts/bindings/regulator/regulator-fixed.yaml | 50 + dts/bindings/regulator/regulator-pmic.yaml | 92 + dts/bindings/regulator/regulator.yaml | 17 + .../reserved-memory/reserved-memory.yaml | 23 + dts/bindings/riscv/openisa,rv32m1-pcc.yaml | 21 + dts/bindings/riscv/riscv,cpus.yaml | 31 + dts/bindings/riscv/riscv,sifive-e24.yaml | 8 + dts/bindings/riscv/riscv,sifive.yaml | 12 + dts/bindings/rng/atmel,sam-trng.yaml | 23 + dts/bindings/rng/espressif,esp32-trng.yaml | 22 + dts/bindings/rng/litex,prbs.yaml | 12 + dts/bindings/rng/neorv32-trng.yaml | 15 + dts/bindings/rng/nordic,nrf-rng.yaml | 15 + dts/bindings/rng/nxp,kinetis-rnga.yaml | 18 + dts/bindings/rng/nxp,kinetis-trng.yaml | 18 + dts/bindings/rng/nxp,lpc-rng.yaml | 18 + dts/bindings/rng/openisa,rv32m1-trng.yaml | 18 + dts/bindings/rng/silabs,gecko-trng.yaml | 21 + dts/bindings/rng/st,stm32-rng.yaml | 32 + dts/bindings/rng/telink,b91-trng.yaml | 15 + dts/bindings/rng/ti,cc13xx-cc26xx-trng.yaml | 18 + dts/bindings/rng/zephyr,native-posix-rng.yaml | 12 + dts/bindings/rtc/atmel,sam0-rtc.yaml | 17 + dts/bindings/rtc/maxim,ds3231.yaml | 39 + dts/bindings/rtc/microchip,mcp7940n.yaml | 24 + dts/bindings/rtc/microchip,xec-timer.yaml | 54 + dts/bindings/rtc/nordic,nrf-rtc.yaml | 37 + dts/bindings/rtc/nxp,imx-snvs-rtc.yaml | 11 + dts/bindings/rtc/nxp,kinetis-lptmr.yaml | 33 + dts/bindings/rtc/nxp,kinetis-pit.yaml | 22 + dts/bindings/rtc/nxp,kinetis-rtc.yaml | 12 + dts/bindings/rtc/rtc.yaml | 21 + dts/bindings/rtc/silabs,gecko-rtcc.yaml | 12 + dts/bindings/rtc/st,stm32-rtc.yaml | 12 + dts/bindings/rtc/ti,cc13xx-cc26xx-rtc.yaml | 15 + dts/bindings/rtc/xlnx,xps-timer-1.00.a.yaml | 71 + dts/bindings/sensor/adi,adt7420.yaml | 16 + dts/bindings/sensor/adi,adxl345.yaml | 8 + dts/bindings/sensor/adi,adxl362.yaml | 17 + dts/bindings/sensor/adi,adxl372-i2c.yaml | 17 + dts/bindings/sensor/adi,adxl372-spi.yaml | 18 + dts/bindings/sensor/ams,ccs811.yaml | 31 + dts/bindings/sensor/ams,ens210.yaml | 9 + dts/bindings/sensor/ams,iaqcore.yaml | 8 + dts/bindings/sensor/aosong,dht.yaml | 32 + dts/bindings/sensor/asahi-kasei,ak8975.yaml | 10 + dts/bindings/sensor/atmel,sam-tc-qdec.yaml | 36 + dts/bindings/sensor/avago,apds9960.yaml | 18 + dts/bindings/sensor/bosch,bma280.yaml | 26 + dts/bindings/sensor/bosch,bmc150_magn.yaml | 15 + dts/bindings/sensor/bosch,bme280-i2c.yaml | 8 + dts/bindings/sensor/bosch,bme280-spi.yaml | 8 + dts/bindings/sensor/bosch,bme680-i2c.yaml | 10 + dts/bindings/sensor/bosch,bmg160.yaml | 15 + dts/bindings/sensor/bosch,bmi160.yaml | 17 + dts/bindings/sensor/bosch,bmi270-i2c.yaml | 10 + dts/bindings/sensor/bosch,bmm150.yaml | 10 + dts/bindings/sensor/bosch,bmp388-i2c.yaml | 9 + dts/bindings/sensor/bosch,bmp388-spi.yaml | 9 + dts/bindings/sensor/bosch,bmp388.yaml | 109 + dts/bindings/sensor/honeywell,hmc5883l.yaml | 18 + dts/bindings/sensor/honeywell,mpr.yaml | 9 + dts/bindings/sensor/honeywell,sm351lt.yaml | 18 + dts/bindings/sensor/hoperf,hp206c.yaml | 11 + dts/bindings/sensor/hoperf,th02.yaml | 10 + dts/bindings/sensor/infineon,dps310.yaml | 11 + dts/bindings/sensor/invensense,icm42605.yaml | 89 + dts/bindings/sensor/invensense,mpu6050.yaml | 19 + dts/bindings/sensor/invensense,mpu9150.yaml | 23 + dts/bindings/sensor/isil,isl29035.yaml | 19 + dts/bindings/sensor/lm75.yaml | 8 + dts/bindings/sensor/lm77.yaml | 35 + dts/bindings/sensor/maxim,max17055.yaml | 48 + dts/bindings/sensor/maxim,max17262.yaml | 47 + dts/bindings/sensor/maxim,max30101.yaml | 8 + dts/bindings/sensor/maxim,max44009.yaml | 15 + dts/bindings/sensor/maxim,max6675.yaml | 8 + dts/bindings/sensor/meas,ms5607-i2c.yaml | 10 + dts/bindings/sensor/meas,ms5607-spi.yaml | 10 + dts/bindings/sensor/meas,ms5837.yaml | 8 + dts/bindings/sensor/microchip,mcp9808.yaml | 33 + dts/bindings/sensor/nordic,nrf-qdec.yaml | 65 + dts/bindings/sensor/nordic,nrf-temp.yaml | 18 + dts/bindings/sensor/nxp,fxas21002.yaml | 27 + dts/bindings/sensor/nxp,fxos8700.yaml | 159 + dts/bindings/sensor/nxp,kinetis-acmp.yaml | 68 + .../sensor/nxp,kinetis-temperature.yaml | 45 + dts/bindings/sensor/panasonic,amg88xx.yaml | 18 + dts/bindings/sensor/plantower,pms7003.yaml | 12 + dts/bindings/sensor/sbs,sbs-gauge.yaml | 5 + dts/bindings/sensor/seeed,grove-light.yaml | 14 + .../sensor/seeed,grove-temperature.yaml | 19 + dts/bindings/sensor/semtech,sx9500.yaml | 18 + dts/bindings/sensor/sensirion,sgp40.yaml | 17 + dts/bindings/sensor/sensirion,sht3xd.yaml | 19 + dts/bindings/sensor/sensirion,sht4x.yaml | 24 + dts/bindings/sensor/sensirion,shtcx.yaml | 37 + dts/bindings/sensor/silabs,si7006.yaml | 8 + dts/bindings/sensor/silabs,si7055.yaml | 8 + dts/bindings/sensor/silabs,si7060.yaml | 8 + dts/bindings/sensor/silabs,si7210.yaml | 8 + dts/bindings/sensor/st,hts221-common.yaml | 12 + dts/bindings/sensor/st,hts221-i2c.yaml | 9 + dts/bindings/sensor/st,hts221-spi.yaml | 9 + dts/bindings/sensor/st,i3g4250d.yaml | 9 + dts/bindings/sensor/st,iis2dh-i2c.yaml | 19 + dts/bindings/sensor/st,iis2dh-spi.yaml | 19 + dts/bindings/sensor/st,iis2dlpc-common.yaml | 116 + dts/bindings/sensor/st,iis2dlpc-i2c.yaml | 9 + dts/bindings/sensor/st,iis2dlpc-spi.yaml | 9 + dts/bindings/sensor/st,iis2iclx-common.yaml | 57 + dts/bindings/sensor/st,iis2iclx-i2c.yaml | 10 + dts/bindings/sensor/st,iis2iclx-spi.yaml | 10 + dts/bindings/sensor/st,iis2mdc-i2c.yaml | 19 + dts/bindings/sensor/st,iis2mdc-spi.yaml | 19 + dts/bindings/sensor/st,iis3dhhc-spi.yaml | 19 + dts/bindings/sensor/st,ism330dhcx-common.yaml | 136 + dts/bindings/sensor/st,ism330dhcx-i2c.yaml | 10 + dts/bindings/sensor/st,ism330dhcx-spi.yaml | 10 + dts/bindings/sensor/st,lis2dh-common.yaml | 19 + dts/bindings/sensor/st,lis2dh-i2c.yaml | 9 + dts/bindings/sensor/st,lis2dh-spi.yaml | 9 + dts/bindings/sensor/st,lis2dh12-i2c.yaml | 8 + dts/bindings/sensor/st,lis2ds12-common.yaml | 60 + dts/bindings/sensor/st,lis2ds12-i2c.yaml | 8 + dts/bindings/sensor/st,lis2ds12-spi.yaml | 9 + dts/bindings/sensor/st,lis2dw12-common.yaml | 140 + dts/bindings/sensor/st,lis2dw12-i2c.yaml | 8 + dts/bindings/sensor/st,lis2dw12-spi.yaml | 9 + dts/bindings/sensor/st,lis2mdl-common.yaml | 32 + dts/bindings/sensor/st,lis2mdl-i2c.yaml | 9 + dts/bindings/sensor/st,lis2mdl-spi.yaml | 9 + dts/bindings/sensor/st,lis3dh-i2c.yaml | 8 + dts/bindings/sensor/st,lis3mdl-magn.yaml | 18 + dts/bindings/sensor/st,lps22hb-press.yaml | 8 + dts/bindings/sensor/st,lps22hh-common.yaml | 30 + dts/bindings/sensor/st,lps22hh-i2c.yaml | 10 + dts/bindings/sensor/st,lps22hh-spi.yaml | 10 + dts/bindings/sensor/st,lps25hb-press.yaml | 8 + .../sensor/st,lsm303agr-accel-i2c.yaml | 9 + .../sensor/st,lsm303agr-accel-spi.yaml | 9 + dts/bindings/sensor/st,lsm303dlhc-accel.yaml | 8 + dts/bindings/sensor/st,lsm303dlhc-magn.yaml | 8 + dts/bindings/sensor/st,lsm6ds0.yaml | 8 + dts/bindings/sensor/st,lsm6dsl-i2c.yaml | 14 + dts/bindings/sensor/st,lsm6dsl-spi.yaml | 16 + dts/bindings/sensor/st,lsm6dso-common.yaml | 116 + dts/bindings/sensor/st,lsm6dso-i2c.yaml | 10 + dts/bindings/sensor/st,lsm6dso-spi.yaml | 10 + dts/bindings/sensor/st,lsm9ds0-gyro-i2c.yaml | 13 + dts/bindings/sensor/st,lsm9ds0-mfd-i2c.yaml | 13 + dts/bindings/sensor/st,stm32-temp.yaml | 43 + dts/bindings/sensor/st,stts751-i2c.yaml | 19 + dts/bindings/sensor/st,vl53l0x.yaml | 13 + dts/bindings/sensor/ti,bq274xx.yaml | 42 + dts/bindings/sensor/ti,fdc2x1x.yaml | 259 ++ dts/bindings/sensor/ti,hdc.yaml | 18 + dts/bindings/sensor/ti,hdc2010.yaml | 8 + dts/bindings/sensor/ti,hdc2021.yaml | 8 + dts/bindings/sensor/ti,hdc2022.yaml | 8 + dts/bindings/sensor/ti,hdc2080.yaml | 8 + dts/bindings/sensor/ti,hdc20xx.yaml | 18 + dts/bindings/sensor/ti,ina219.yaml | 131 + dts/bindings/sensor/ti,ina230.yaml | 36 + dts/bindings/sensor/ti,ina237.yaml | 23 + dts/bindings/sensor/ti,ina23x-common.yaml | 33 + dts/bindings/sensor/ti,opt3001.yaml | 8 + dts/bindings/sensor/ti,tmp007.yaml | 18 + dts/bindings/sensor/ti,tmp108.yaml | 18 + dts/bindings/sensor/ti,tmp112.yaml | 24 + dts/bindings/sensor/ti,tmp116.yaml | 10 + dts/bindings/sensor/vishay,vcnl4040.yaml | 88 + dts/bindings/sensor/we,wsen-itds.yaml | 41 + dts/bindings/sensor/winsen,mhz19b.yaml | 24 + dts/bindings/serial/altr,jtag-uart.yaml | 9 + dts/bindings/serial/arm,cmsdk-uart.yaml | 12 + dts/bindings/serial/arm,pl011.yaml | 12 + dts/bindings/serial/arm,sbsa-uart.yaml | 12 + dts/bindings/serial/atmel,sam-uart.yaml | 30 + dts/bindings/serial/atmel,sam-usart.yaml | 30 + dts/bindings/serial/atmel,sam0-uart.yaml | 62 + dts/bindings/serial/cypress,psoc6-uart.yaml | 34 + dts/bindings/serial/espressif,esp32-uart.yaml | 32 + dts/bindings/serial/gaisler,apbuart.yaml | 9 + dts/bindings/serial/gd,gd32-usart.yaml | 20 + .../serial/infineon,xmc4xxx-uart.yaml | 9 + dts/bindings/serial/ite,it8xxx2-uart.yaml | 26 + dts/bindings/serial/litex,uart0.yaml | 15 + dts/bindings/serial/microchip,xec-uart.yaml | 43 + dts/bindings/serial/microsemi,coreuart.yaml | 12 + dts/bindings/serial/neorv32-uart.yaml | 24 + .../serial/nordic,nrf-uart-common.yaml | 99 + dts/bindings/serial/nordic,nrf-uart.yaml | 10 + dts/bindings/serial/nordic,nrf-uarte.yaml | 5 + dts/bindings/serial/ns16550.yaml | 24 + dts/bindings/serial/nuvoton,npcx-uart.yaml | 26 + dts/bindings/serial/nuvoton,numicro-uart.yaml | 9 + dts/bindings/serial/nxp,imx-iuart.yaml | 16 + dts/bindings/serial/nxp,imx-uart.yaml | 25 + dts/bindings/serial/nxp,kinetis-lpsci.yaml | 16 + dts/bindings/serial/nxp,kinetis-lpuart.yaml | 12 + dts/bindings/serial/nxp,kinetis-uart.yaml | 19 + dts/bindings/serial/nxp,lpc-usart.yaml | 8 + dts/bindings/serial/nxp,lpc11u6x-uart.yaml | 25 + .../serial/openisa,rv32m1-lpuart.yaml | 12 + dts/bindings/serial/renesas,rcar-scif.yaml | 15 + dts/bindings/serial/segger,rtt-uart.yaml | 27 + dts/bindings/serial/sifive,uart0.yaml | 15 + dts/bindings/serial/silabs,gecko-leuart.yaml | 30 + dts/bindings/serial/silabs,gecko-uart.yaml | 30 + dts/bindings/serial/silabs,gecko-usart.yaml | 40 + dts/bindings/serial/snps,nsim-uart.yaml | 12 + dts/bindings/serial/st,stm32-lpuart.yaml | 21 + dts/bindings/serial/st,stm32-uart.yaml | 18 + dts/bindings/serial/st,stm32-usart.yaml | 18 + dts/bindings/serial/telink,b91-uart.yaml | 19 + .../serial/ti,cc13xx-cc26xx-uart.yaml | 25 + dts/bindings/serial/ti,cc32xx-uart.yaml | 12 + dts/bindings/serial/ti,msp432p4xx-uart.yaml | 12 + dts/bindings/serial/ti,stellaris-uart.yaml | 12 + dts/bindings/serial/uart-controller.yaml | 31 + dts/bindings/serial/uart-device.yaml | 12 + .../serial/xlnx,xps-uartlite-1.00.a.yaml | 9 + dts/bindings/serial/xlnx,xuartps.yaml | 9 + dts/bindings/serial/zephyr,cdc-acm-uart.yaml | 10 + .../serial/zephyr,native-posix-uart.yaml | 8 + dts/bindings/spi/atmel,sam-spi.yaml | 33 + dts/bindings/spi/atmel,sam0-spi.yaml | 45 + dts/bindings/spi/cypress,psoc6-spi.yaml | 34 + dts/bindings/spi/espressif,esp32-spi.yaml | 79 + dts/bindings/spi/ite,it8xxx2-sspi.yaml | 15 + dts/bindings/spi/litex,spi.yaml | 12 + .../spi/microchip,xec-qmspi-ldma.yaml | 106 + dts/bindings/spi/microchip,xec-qmspi.yaml | 57 + dts/bindings/spi/nordic,nrf-spi-common.yaml | 43 + dts/bindings/spi/nordic,nrf-spi.yaml | 19 + dts/bindings/spi/nordic,nrf-spim.yaml | 27 + dts/bindings/spi/nordic,nrf-spis.yaml | 23 + dts/bindings/spi/nuvoton,npcx-spi-fiu.yaml | 16 + dts/bindings/spi/nxp,imx-flexspi.yaml | 74 + dts/bindings/spi/nxp,imx-lpspi.yaml | 39 + dts/bindings/spi/nxp,kinetis-dspi.yaml | 95 + dts/bindings/spi/nxp,lpc-spi.yaml | 38 + dts/bindings/spi/opencores,spi-simple.yaml | 12 + dts/bindings/spi/openisa,rv32m1-lpspi.yaml | 15 + dts/bindings/spi/sifive,spi0.yaml | 12 + dts/bindings/spi/silabs,gecko-spi-usart.yaml | 35 + dts/bindings/spi/snps,designware-spi.yaml | 15 + dts/bindings/spi/spi-controller.yaml | 63 + dts/bindings/spi/spi-device.yaml | 45 + dts/bindings/spi/st,stm32-spi-common.yaml | 19 + dts/bindings/spi/st,stm32-spi-fifo.yaml | 8 + dts/bindings/spi/st,stm32-spi-subghz.yaml | 22 + dts/bindings/spi/st,stm32-spi.yaml | 8 + dts/bindings/spi/telink,b91-spi.yaml | 56 + dts/bindings/spi/ti,cc13xx-cc26xx-spi.yaml | 32 + dts/bindings/spi/xlnx,xps-spi-2.00.a.yaml | 39 + dts/bindings/spi/zephyr,spi-bitbang.yaml | 29 + .../spi/zephyr,spi-emul-controller.yaml | 12 + dts/bindings/sram/mmio-sram.yaml | 15 + dts/bindings/sram/sifive,dtim0.yaml | 12 + dts/bindings/syscon/syscon.yaml | 16 + dts/bindings/tach/ite,it8xxx2-tach.yaml | 40 + dts/bindings/tach/microchip,xec-tach.yaml | 21 + dts/bindings/tach/nuvoton,npcx-tach.yaml | 32 + dts/bindings/tach/tach.yaml | 12 + dts/bindings/tcpc/st,stm32-ucpd.yaml | 71 + dts/bindings/test/vnd,adc-temp-sensor.yaml | 32 + dts/bindings/test/vnd,adc.yaml | 15 + dts/bindings/test/vnd,array-holder.yaml | 17 + dts/bindings/test/vnd,busy-sim.yaml | 20 + dts/bindings/test/vnd,child-bindings.yaml | 15 + dts/bindings/test/vnd,clock.yaml | 16 + dts/bindings/test/vnd,disabled-compat.yaml | 8 + dts/bindings/test/vnd,dma.yaml | 22 + dts/bindings/test/vnd,enum-holder-inst.yaml | 8 + dts/bindings/test/vnd,enum-holder.yaml | 17 + .../vnd,enum-int-required-false-holder.yaml | 18 + .../vnd,enum-required-false-holder-inst.yaml | 8 + .../test/vnd,enum-required-false-holder.yaml | 17 + .../test/vnd,gpio-expander-common.yaml | 20 + dts/bindings/test/vnd,gpio-expander-i2c.yaml | 8 + dts/bindings/test/vnd,gpio-expander-spi.yaml | 8 + dts/bindings/test/vnd,gpio-one-cell.yaml | 21 + dts/bindings/test/vnd,gpio.yaml | 28 + .../test/vnd,great-grandchild-bindings.yaml | 27 + dts/bindings/test/vnd,i2c-device.yaml | 8 + dts/bindings/test/vnd,i2c-mux.yaml | 18 + dts/bindings/test/vnd,i2c.yaml | 8 + dts/bindings/test/vnd,intc.yaml | 19 + dts/bindings/test/vnd,interrupt-holder.yaml | 15 + dts/bindings/test/vnd,mbox-zero-cell.yaml | 11 + dts/bindings/test/vnd,mbox.yaml | 16 + dts/bindings/test/vnd,pcie.yaml | 10 + dts/bindings/test/vnd,phandle-holder.yaml | 23 + dts/bindings/test/vnd,pinctrl-device.yaml | 8 + dts/bindings/test/vnd,pinctrl-test.yaml | 59 + dts/bindings/test/vnd,pinctrl.yaml | 8 + dts/bindings/test/vnd,pwm.yaml | 20 + dts/bindings/test/vnd,reg-holder.yaml | 18 + dts/bindings/test/vnd,serial.yaml | 13 + dts/bindings/test/vnd,spi-device-2.yaml | 8 + dts/bindings/test/vnd,spi-device.yaml | 8 + dts/bindings/test/vnd,spi.yaml | 8 + dts/bindings/timer/arm,armv8-timer.yaml | 12 + dts/bindings/timer/arm,cmsdk-dtimer.yaml | 15 + dts/bindings/timer/arm,cmsdk-timer.yaml | 15 + dts/bindings/timer/atmel,sam-tc.yaml | 68 + dts/bindings/timer/atmel,sam0-tc32.yaml | 38 + .../timer/espressif,esp32-systimer.yaml | 18 + dts/bindings/timer/gaisler,gptimer.yaml | 12 + dts/bindings/timer/intel,hpet.yaml | 15 + dts/bindings/timer/ite,it8xxx2-timer.yaml | 18 + dts/bindings/timer/litex,timer0.yaml | 15 + .../timer/microchip,xec-rtos-timer.yaml | 31 + dts/bindings/timer/nordic,nrf-timer.yaml | 28 + .../timer/nuvoton,npcx-itim-timer.yaml | 18 + dts/bindings/timer/nxp,imx-gpt.yaml | 23 + dts/bindings/timer/nxp,lpc-ctimer.yaml | 38 + dts/bindings/timer/openisa,rv32m1-lptmr.yaml | 15 + dts/bindings/timer/renesas,rcar-cmt.yaml | 23 + dts/bindings/timer/riscv,machine-timer.yaml | 39 + dts/bindings/timer/silabs,gecko-timer.yaml | 15 + dts/bindings/timer/st,stm32-lptim.yaml | 11 + dts/bindings/timer/st,stm32-timers.yaml | 28 + dts/bindings/timer/xlnx,ttcps.yaml | 17 + dts/bindings/usb/atmel,sam-usbc.yaml | 34 + dts/bindings/usb/atmel,sam-usbhs.yaml | 21 + dts/bindings/usb/atmel,sam0-usb.yaml | 13 + dts/bindings/usb/nordic,nrf-usbd.yaml | 26 + dts/bindings/usb/nxp,kinetis-usbd.yaml | 16 + dts/bindings/usb/nxp,mcux-usbd.yaml | 16 + dts/bindings/usb/snps,designware-usb.yaml | 15 + dts/bindings/usb/st,stm32-otgfs.yaml | 30 + dts/bindings/usb/st,stm32-otghs.yaml | 30 + dts/bindings/usb/st,stm32-usb.yaml | 45 + dts/bindings/usb/usb-audio-hp.yaml | 121 + dts/bindings/usb/usb-audio-hs.yaml | 243 ++ dts/bindings/usb/usb-audio-mic.yaml | 134 + dts/bindings/usb/usb-audio.yaml | 13 + dts/bindings/usb/usb-controller.yaml | 31 + dts/bindings/usb/usb-ep.yaml | 28 + dts/bindings/usb/zephyr,native-posix-udc.yaml | 8 + dts/bindings/vendor-prefixes.txt | 691 ++++ dts/bindings/video/aptina,mt9m114.yaml | 8 + dts/bindings/video/nxp,imx-csi.yaml | 23 + dts/bindings/video/ovti,ov2640.yaml | 16 + dts/bindings/video/ovti,ov7725.yaml | 16 + dts/bindings/virtualization/qemu,ivshmem.yaml | 8 + dts/bindings/watchdog/arm,cmsdk-watchdog.yaml | 12 + dts/bindings/watchdog/atmel,sam-watchdog.yaml | 23 + .../watchdog/atmel,sam0-watchdog.yaml | 15 + .../watchdog/espressif,esp32-watchdog.yaml | 20 + .../watchdog/ite,it8xxx2-watchdog.yaml | 18 + .../watchdog/microchip,xec-watchdog.yaml | 18 + .../watchdog/nordic,nrf-watchdog.yaml | 18 + .../watchdog/nuvoton,npcx-watchdog.yaml | 21 + dts/bindings/watchdog/nxp,imx-wdog.yaml | 18 + dts/bindings/watchdog/nxp,kinetis-wdog.yaml | 21 + dts/bindings/watchdog/nxp,kinetis-wdog32.yaml | 31 + dts/bindings/watchdog/nxp,lpc-wwdt.yaml | 23 + dts/bindings/watchdog/sifive,wdt.yaml | 18 + dts/bindings/watchdog/silabs,gecko-wdog.yaml | 24 + dts/bindings/watchdog/st,stm32-watchdog.yaml | 15 + .../watchdog/st,stm32-window-watchdog.yaml | 18 + dts/bindings/watchdog/ti,cc32xx-watchdog.yaml | 15 + .../watchdog/zephyr,counter-watchdog.yaml | 16 + dts/bindings/wifi/atmel,winc1500.yaml | 21 + dts/bindings/wifi/espressif,esp-at.yaml | 27 + dts/bindings/wifi/inventek,eswifi-uart.yaml | 18 + dts/bindings/wifi/inventek,eswifi.yaml | 25 + dts/common/freq.h | 13 + dts/common/mem.h | 18 + dts/common/skeleton.dtsi | 14 + platforms/nuttx/cmake/px4_impl_os.cmake | 2 + platforms/nuttx/src/px4/stm/CMakeLists.txt | 1 + platforms/nuttx/src/px4/stm/hal_stm32 | 1 + src/include/devicetree.h | 3059 +++++++++++++++++ src/include/devicetree/clocks.h | 359 ++ src/include/devicetree/dma.h | 376 ++ src/include/devicetree/fixed-partitions.h | 90 + src/include/devicetree/gpio.h | 305 ++ src/include/devicetree/io-channels.h | 363 ++ src/include/devicetree/ordinals.h | 101 + src/include/devicetree/pinctrl.h | 455 +++ src/include/devicetree/pwms.h | 601 ++++ src/include/devicetree/spi.h | 349 ++ src/include/devicetree/zephyr.h | 63 + src/include/dt-bindings/adc/adc.h | 32 + src/include/dt-bindings/clock/imx_ccm.h | 27 + src/include/dt-bindings/clock/imx_ccm_rev2.h | 82 + src/include/dt-bindings/clock/kinetis_mcg.h | 13 + src/include/dt-bindings/clock/kinetis_pcc.h | 17 + src/include/dt-bindings/clock/kinetis_scg.h | 33 + src/include/dt-bindings/clock/kinetis_sim.h | 28 + src/include/dt-bindings/clock/stm32_clock.h | 26 + src/include/dt-bindings/dt-util.h | 21 + src/include/dt-bindings/gpio/gpio.h | 109 + src/include/dt-bindings/i2c/i2c.h | 15 + src/include/dt-bindings/led/led.h | 20 + .../memory-controller/stm32-fmc-sdram.h | 49 + .../pinctrl/stm32-pinctrl-common.h | 39 + .../dt-bindings/pinctrl/stm32-pinctrl.h | 110 + .../dt-bindings/pinctrl/stm32f1-afio.h | 212 ++ .../dt-bindings/pinctrl/stm32f1-pinctrl.h | 111 + src/include/dt-bindings/pwm/pwm.h | 27 + src/include/dt-bindings/spi/spi.h | 47 + src/include/dt-bindings/usb/usb.h | 22 + src/include/sys/util.h | 393 +++ src/include/sys/util_internal.h | 146 + src/include/sys/util_loops.h | 2108 ++++++++++++ src/include/sys/util_macro.h | 601 ++++ src/include/zephyr/types.h | 39 + 1395 files changed, 68755 insertions(+) create mode 100644 Tools/dts/README.txt create mode 100755 Tools/dts/gen_defines.py create mode 100755 Tools/dts/gen_dts_cmake.py create mode 100644 Tools/dts/python-devicetree/.gitignore create mode 100644 Tools/dts/python-devicetree/requirements.txt create mode 100644 Tools/dts/python-devicetree/setup.py create mode 100644 Tools/dts/python-devicetree/src/devicetree/__init__.py create mode 100644 Tools/dts/python-devicetree/src/devicetree/dtlib.py create mode 100644 Tools/dts/python-devicetree/src/devicetree/edtlib.py create mode 100644 Tools/dts/python-devicetree/src/devicetree/grutils.py create mode 100644 Tools/dts/python-devicetree/tests/test-bindings-2/multidir.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings-include/README.rst create mode 100644 Tools/dts/python-devicetree/tests/test-bindings-include/allow-and-blocklist-child.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings-include/allow-and-blocklist.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings-include/allow-not-list.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings-include/allowlist.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings-include/block-not-list.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings-include/blocklist.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings-include/empty-allowlist.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings-include/empty-blocklist.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings-include/filter-child-bindings.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings-include/include-2.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings-include/include-invalid-keys.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings-include/include-invalid-type.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings-include/include-no-list.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings-include/include-no-name.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings-include/include.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings-include/intermixed.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/bar-bus.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/child-binding-with-compat.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/child-binding.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/child.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/defaults.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/deprecated.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/device-on-any-bus.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/device-on-bar-bus.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/device-on-foo-bus.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/enums.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/false-positive.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/foo-bus.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/foo-optional.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/foo-required.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/gpio-dst.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/gpio-src.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/grandchild-1.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/grandchild-2.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/grandchild-3.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/interrupt-1-cell.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/interrupt-2-cell.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/interrupt-3-cell.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/multidir.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/order-1.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/order-2.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/parent.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/phandle-array-controller-0.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/phandle-array-controller-1.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/phandle-array-controller-2.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-bindings/props.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-multidir.dts create mode 100644 Tools/dts/python-devicetree/tests/test-wrong-bindings/wrong-phandle-array-name.yaml create mode 100644 Tools/dts/python-devicetree/tests/test-wrong-bindings/wrong-specifier-space-type.yaml create mode 100644 Tools/dts/python-devicetree/tests/test.dts create mode 100644 Tools/dts/python-devicetree/tests/test_dtlib.py create mode 100644 Tools/dts/python-devicetree/tests/test_edtlib.py create mode 100644 Tools/dts/python-devicetree/tox.ini create mode 100644 boards/px4/fmu-v5x/board.dts create mode 100644 cmake/dts.cmake create mode 100644 dts/Kconfig create mode 100644 dts/arm/armv6-m.dtsi create mode 100644 dts/arm/armv7-a.dtsi create mode 100644 dts/arm/armv7-m.dtsi create mode 100644 dts/arm/armv7-r.dtsi create mode 100644 dts/arm/nxp/nxp_k66.dtsi create mode 100644 dts/arm/nxp/nxp_k6x.dtsi create mode 100644 dts/arm/nxp/nxp_rt1060.dtsi create mode 100644 dts/arm/nxp/nxp_rt1064.dtsi create mode 100644 dts/arm/nxp/nxp_rt1160_cm4.dtsi create mode 100644 dts/arm/nxp/nxp_rt1160_cm7.dtsi create mode 100644 dts/arm/nxp/nxp_rt1170_cm4.dtsi create mode 100644 dts/arm/nxp/nxp_rt1170_cm7.dtsi create mode 100644 dts/arm/st/f0/stm32f0.dtsi create mode 100644 dts/arm/st/f0/stm32f030.dtsi create mode 100644 dts/arm/st/f0/stm32f030X4.dtsi create mode 100644 dts/arm/st/f0/stm32f030X8.dtsi create mode 100644 dts/arm/st/f0/stm32f030Xc.dtsi create mode 100644 dts/arm/st/f0/stm32f031.dtsi create mode 100644 dts/arm/st/f0/stm32f031X6.dtsi create mode 100644 dts/arm/st/f0/stm32f051.dtsi create mode 100644 dts/arm/st/f0/stm32f051X8.dtsi create mode 100644 dts/arm/st/f0/stm32f070.dtsi create mode 100644 dts/arm/st/f0/stm32f070Xb.dtsi create mode 100644 dts/arm/st/f0/stm32f072.dtsi create mode 100644 dts/arm/st/f0/stm32f072Xb.dtsi create mode 100644 dts/arm/st/f0/stm32f091.dtsi create mode 100644 dts/arm/st/f0/stm32f091Xc.dtsi create mode 100644 dts/arm/st/f0/stm32f098Xc.dtsi create mode 100644 dts/arm/st/f1/stm32f1.dtsi create mode 100644 dts/arm/st/f1/stm32f100Xb.dtsi create mode 100644 dts/arm/st/f1/stm32f100Xe.dtsi create mode 100644 dts/arm/st/f1/stm32f103X8.dtsi create mode 100644 dts/arm/st/f1/stm32f103Xb.dtsi create mode 100644 dts/arm/st/f1/stm32f103Xc.dtsi create mode 100644 dts/arm/st/f1/stm32f103Xd.dtsi create mode 100644 dts/arm/st/f1/stm32f103Xe.dtsi create mode 100644 dts/arm/st/f1/stm32f103Xg.dtsi create mode 100644 dts/arm/st/f1/stm32f105.dtsi create mode 100644 dts/arm/st/f1/stm32f105Xc.dtsi create mode 100644 dts/arm/st/f1/stm32f107.dtsi create mode 100644 dts/arm/st/f1/stm32f107Xc.dtsi create mode 100644 dts/arm/st/f2/stm32f2.dtsi create mode 100644 dts/arm/st/f2/stm32f205Xe.dtsi create mode 100644 dts/arm/st/f2/stm32f207.dtsi create mode 100644 dts/arm/st/f2/stm32f207Xe.dtsi create mode 100644 dts/arm/st/f2/stm32f207Xg.dtsi create mode 100644 dts/arm/st/f3/stm32f3.dtsi create mode 100644 dts/arm/st/f3/stm32f302.dtsi create mode 100644 dts/arm/st/f3/stm32f302X8.dtsi create mode 100644 dts/arm/st/f3/stm32f303.dtsi create mode 100644 dts/arm/st/f3/stm32f303X8.dtsi create mode 100644 dts/arm/st/f3/stm32f303Xc.dtsi create mode 100644 dts/arm/st/f3/stm32f303Xe.dtsi create mode 100644 dts/arm/st/f3/stm32f334.dtsi create mode 100644 dts/arm/st/f3/stm32f334X8.dtsi create mode 100644 dts/arm/st/f3/stm32f373.dtsi create mode 100644 dts/arm/st/f3/stm32f373Xc.dtsi create mode 100644 dts/arm/st/f4/stm32f4.dtsi create mode 100644 dts/arm/st/f4/stm32f401.dtsi create mode 100644 dts/arm/st/f4/stm32f401Xc.dtsi create mode 100644 dts/arm/st/f4/stm32f401Xe.dtsi create mode 100644 dts/arm/st/f4/stm32f405.dtsi create mode 100644 dts/arm/st/f4/stm32f405Xg.dtsi create mode 100644 dts/arm/st/f4/stm32f407.dtsi create mode 100644 dts/arm/st/f4/stm32f407Xe.dtsi create mode 100644 dts/arm/st/f4/stm32f407Xg.dtsi create mode 100644 dts/arm/st/f4/stm32f410.dtsi create mode 100644 dts/arm/st/f4/stm32f410Xb.dtsi create mode 100644 dts/arm/st/f4/stm32f411.dtsi create mode 100644 dts/arm/st/f4/stm32f411Xe.dtsi create mode 100644 dts/arm/st/f4/stm32f412.dtsi create mode 100644 dts/arm/st/f4/stm32f412Xe.dtsi create mode 100644 dts/arm/st/f4/stm32f412Xg.dtsi create mode 100644 dts/arm/st/f4/stm32f413.dtsi create mode 100644 dts/arm/st/f4/stm32f413Xg.dtsi create mode 100644 dts/arm/st/f4/stm32f413Xh.dtsi create mode 100644 dts/arm/st/f4/stm32f415.dtsi create mode 100644 dts/arm/st/f4/stm32f415Rg.dtsi create mode 100644 dts/arm/st/f4/stm32f417.dtsi create mode 100644 dts/arm/st/f4/stm32f417Xe.dtsi create mode 100644 dts/arm/st/f4/stm32f417Xg.dtsi create mode 100644 dts/arm/st/f4/stm32f427.dtsi create mode 100644 dts/arm/st/f4/stm32f427Xi.dtsi create mode 100644 dts/arm/st/f4/stm32f427vX.dtsi create mode 100644 dts/arm/st/f4/stm32f427vi.dtsi create mode 100644 dts/arm/st/f4/stm32f429.dtsi create mode 100644 dts/arm/st/f4/stm32f429Xi.dtsi create mode 100644 dts/arm/st/f4/stm32f429vX.dtsi create mode 100644 dts/arm/st/f4/stm32f429vi.dtsi create mode 100644 dts/arm/st/f4/stm32f437.dtsi create mode 100644 dts/arm/st/f4/stm32f437Xi.dtsi create mode 100644 dts/arm/st/f4/stm32f437vX.dtsi create mode 100644 dts/arm/st/f4/stm32f446.dtsi create mode 100644 dts/arm/st/f4/stm32f446Xe.dtsi create mode 100644 dts/arm/st/f4/stm32f469.dtsi create mode 100644 dts/arm/st/f4/stm32f469Xi.dtsi create mode 100644 dts/arm/st/f7/stm32f7.dtsi create mode 100644 dts/arm/st/f7/stm32f723.dtsi create mode 100644 dts/arm/st/f7/stm32f723Xe.dtsi create mode 100644 dts/arm/st/f7/stm32f745.dtsi create mode 100644 dts/arm/st/f7/stm32f745Xe.dtsi create mode 100644 dts/arm/st/f7/stm32f745Xg.dtsi create mode 100644 dts/arm/st/f7/stm32f746.dtsi create mode 100644 dts/arm/st/f7/stm32f746Xg.dtsi create mode 100644 dts/arm/st/f7/stm32f756.dtsi create mode 100644 dts/arm/st/f7/stm32f756Xg.dtsi create mode 100644 dts/arm/st/f7/stm32f765.dtsi create mode 100644 dts/arm/st/f7/stm32f767.dtsi create mode 100644 dts/arm/st/f7/stm32f767Xi.dtsi create mode 100644 dts/arm/st/f7/stm32f769.dtsi create mode 100644 dts/arm/st/f7/stm32f769Xi.dtsi create mode 100644 dts/arm/st/g0/stm32g0.dtsi create mode 100644 dts/arm/st/g0/stm32g030.dtsi create mode 100644 dts/arm/st/g0/stm32g030X6.dtsi create mode 100644 dts/arm/st/g0/stm32g030X8.dtsi create mode 100644 dts/arm/st/g0/stm32g031.dtsi create mode 100644 dts/arm/st/g0/stm32g031X4.dtsi create mode 100644 dts/arm/st/g0/stm32g031X6.dtsi create mode 100644 dts/arm/st/g0/stm32g031X8.dtsi create mode 100644 dts/arm/st/g0/stm32g041.dtsi create mode 100644 dts/arm/st/g0/stm32g041X6.dtsi create mode 100644 dts/arm/st/g0/stm32g041X8.dtsi create mode 100644 dts/arm/st/g0/stm32g050.dtsi create mode 100644 dts/arm/st/g0/stm32g050X6.dtsi create mode 100644 dts/arm/st/g0/stm32g050X8.dtsi create mode 100644 dts/arm/st/g0/stm32g051.dtsi create mode 100644 dts/arm/st/g0/stm32g051X6.dtsi create mode 100644 dts/arm/st/g0/stm32g051X8.dtsi create mode 100644 dts/arm/st/g0/stm32g061.dtsi create mode 100644 dts/arm/st/g0/stm32g061X6.dtsi create mode 100644 dts/arm/st/g0/stm32g061X8.dtsi create mode 100644 dts/arm/st/g0/stm32g070.dtsi create mode 100644 dts/arm/st/g0/stm32g070Xb.dtsi create mode 100644 dts/arm/st/g0/stm32g071.dtsi create mode 100644 dts/arm/st/g0/stm32g071X8.dtsi create mode 100644 dts/arm/st/g0/stm32g071Xb.dtsi create mode 100644 dts/arm/st/g0/stm32g081.dtsi create mode 100644 dts/arm/st/g0/stm32g081Xb.dtsi create mode 100644 dts/arm/st/g0/stm32g0_crypt.dtsi create mode 100644 dts/arm/st/g0/stm32g0b0.dtsi create mode 100644 dts/arm/st/g0/stm32g0b0Xe.dtsi create mode 100644 dts/arm/st/g0/stm32g0b1.dtsi create mode 100644 dts/arm/st/g0/stm32g0b1Xb.dtsi create mode 100644 dts/arm/st/g0/stm32g0b1Xc.dtsi create mode 100644 dts/arm/st/g0/stm32g0b1Xe.dtsi create mode 100644 dts/arm/st/g0/stm32g0c1.dtsi create mode 100644 dts/arm/st/g0/stm32g0c1Xc.dtsi create mode 100644 dts/arm/st/g0/stm32g0c1Xe.dtsi create mode 100644 dts/arm/st/g4/stm32g4.dtsi create mode 100644 dts/arm/st/g4/stm32g431.dtsi create mode 100644 dts/arm/st/g4/stm32g431X6.dtsi create mode 100644 dts/arm/st/g4/stm32g431X8.dtsi create mode 100644 dts/arm/st/g4/stm32g431Xb.dtsi create mode 100644 dts/arm/st/g4/stm32g441.dtsi create mode 100644 dts/arm/st/g4/stm32g441Xb.dtsi create mode 100644 dts/arm/st/g4/stm32g473.dtsi create mode 100644 dts/arm/st/g4/stm32g473Xb.dtsi create mode 100644 dts/arm/st/g4/stm32g473Xc.dtsi create mode 100644 dts/arm/st/g4/stm32g473Xe.dtsi create mode 100644 dts/arm/st/g4/stm32g474.dtsi create mode 100644 dts/arm/st/g4/stm32g474Xb.dtsi create mode 100644 dts/arm/st/g4/stm32g474Xc.dtsi create mode 100644 dts/arm/st/g4/stm32g474Xe.dtsi create mode 100644 dts/arm/st/g4/stm32g483.dtsi create mode 100644 dts/arm/st/g4/stm32g483Xe.dtsi create mode 100644 dts/arm/st/g4/stm32g484.dtsi create mode 100644 dts/arm/st/g4/stm32g484Xe.dtsi create mode 100644 dts/arm/st/g4/stm32g491.dtsi create mode 100644 dts/arm/st/g4/stm32g491Xc.dtsi create mode 100644 dts/arm/st/g4/stm32g491Xe.dtsi create mode 100644 dts/arm/st/g4/stm32g4a1.dtsi create mode 100644 dts/arm/st/g4/stm32g4a1Xe.dtsi create mode 100644 dts/arm/st/h7/stm32h7.dtsi create mode 100644 dts/arm/st/h7/stm32h723.dtsi create mode 100644 dts/arm/st/h7/stm32h723Xe.dtsi create mode 100644 dts/arm/st/h7/stm32h723Xg.dtsi create mode 100644 dts/arm/st/h7/stm32h735.dtsi create mode 100644 dts/arm/st/h7/stm32h735Xg.dtsi create mode 100644 dts/arm/st/h7/stm32h743.dtsi create mode 100644 dts/arm/st/h7/stm32h743Xi.dtsi create mode 100644 dts/arm/st/h7/stm32h745.dtsi create mode 100644 dts/arm/st/h7/stm32h745Xi_m4.dtsi create mode 100644 dts/arm/st/h7/stm32h745Xi_m7.dtsi create mode 100644 dts/arm/st/h7/stm32h747.dtsi create mode 100644 dts/arm/st/h7/stm32h747Xi_m4.dtsi create mode 100644 dts/arm/st/h7/stm32h747Xi_m7.dtsi create mode 100644 dts/arm/st/h7/stm32h750.dtsi create mode 100644 dts/arm/st/h7/stm32h750Xb.dtsi create mode 100644 dts/arm/st/h7/stm32h753.dtsi create mode 100644 dts/arm/st/h7/stm32h753Xi.dtsi create mode 100644 dts/arm/st/h7/stm32h7_dualcore.dtsi create mode 100644 dts/arm/st/l0/stm32l0.dtsi create mode 100644 dts/arm/st/l0/stm32l010.dtsi create mode 100644 dts/arm/st/l0/stm32l010Xb.dtsi create mode 100644 dts/arm/st/l0/stm32l011X4.dtsi create mode 100644 dts/arm/st/l0/stm32l031.dtsi create mode 100644 dts/arm/st/l0/stm32l031X6.dtsi create mode 100644 dts/arm/st/l0/stm32l051.dtsi create mode 100644 dts/arm/st/l0/stm32l051X8.dtsi create mode 100644 dts/arm/st/l0/stm32l053.dtsi create mode 100644 dts/arm/st/l0/stm32l053X8.dtsi create mode 100644 dts/arm/st/l0/stm32l071.dtsi create mode 100644 dts/arm/st/l0/stm32l071Xb.dtsi create mode 100644 dts/arm/st/l0/stm32l072.dtsi create mode 100644 dts/arm/st/l0/stm32l072Xz.dtsi create mode 100644 dts/arm/st/l0/stm32l073.dtsi create mode 100644 dts/arm/st/l0/stm32l073Xz.dtsi create mode 100644 dts/arm/st/l1/stm32l1.dtsi create mode 100644 dts/arm/st/l1/stm32l151.dtsi create mode 100644 dts/arm/st/l1/stm32l151X8-a.dtsi create mode 100644 dts/arm/st/l1/stm32l151Xb-a.dtsi create mode 100644 dts/arm/st/l1/stm32l151Xb.dtsi create mode 100644 dts/arm/st/l1/stm32l151Xc.dtsi create mode 100644 dts/arm/st/l1/stm32l152.dtsi create mode 100644 dts/arm/st/l1/stm32l152Xc.dtsi create mode 100644 dts/arm/st/l1/stm32l152Xe.dtsi create mode 100644 dts/arm/st/l4/stm32l4.dtsi create mode 100644 dts/arm/st/l4/stm32l412.dtsi create mode 100644 dts/arm/st/l4/stm32l412X8.dtsi create mode 100644 dts/arm/st/l4/stm32l412XB.dtsi create mode 100644 dts/arm/st/l4/stm32l422.dtsi create mode 100644 dts/arm/st/l4/stm32l422Xb.dtsi create mode 100644 dts/arm/st/l4/stm32l432.dtsi create mode 100644 dts/arm/st/l4/stm32l432Xc.dtsi create mode 100644 dts/arm/st/l4/stm32l433.dtsi create mode 100644 dts/arm/st/l4/stm32l433Xb.dtsi create mode 100644 dts/arm/st/l4/stm32l433Xc.dtsi create mode 100644 dts/arm/st/l4/stm32l452.dtsi create mode 100644 dts/arm/st/l4/stm32l452Xc.dtsi create mode 100644 dts/arm/st/l4/stm32l452Xe.dtsi create mode 100644 dts/arm/st/l4/stm32l462.dtsi create mode 100644 dts/arm/st/l4/stm32l462Xe.dtsi create mode 100644 dts/arm/st/l4/stm32l471.dtsi create mode 100644 dts/arm/st/l4/stm32l471Xg.dtsi create mode 100644 dts/arm/st/l4/stm32l475.dtsi create mode 100644 dts/arm/st/l4/stm32l475Xg.dtsi create mode 100644 dts/arm/st/l4/stm32l476.dtsi create mode 100644 dts/arm/st/l4/stm32l476Xg.dtsi create mode 100644 dts/arm/st/l4/stm32l496.dtsi create mode 100644 dts/arm/st/l4/stm32l496Xe.dtsi create mode 100644 dts/arm/st/l4/stm32l496Xg.dtsi create mode 100644 dts/arm/st/l4/stm32l4r5.dtsi create mode 100644 dts/arm/st/l4/stm32l4r5Xi.dtsi create mode 100644 dts/arm/st/l4/stm32l4r9.dtsi create mode 100644 dts/arm/st/l4/stm32l4r9Xi.dtsi create mode 100644 dts/arm/st/l4/stm32l4s5.dtsi create mode 100644 dts/arm/st/l4/stm32l4s5Xi.dtsi create mode 100644 dts/arm/st/l5/stm32l5.dtsi create mode 100644 dts/arm/st/l5/stm32l552.dtsi create mode 100644 dts/arm/st/l5/stm32l552Xe.dtsi create mode 100644 dts/arm/st/l5/stm32l562.dtsi create mode 100644 dts/arm/st/l5/stm32l562Xe.dtsi create mode 100644 dts/arm/st/mp1/stm32mp157.dtsi create mode 100644 dts/arm/st/u5/stm32u5.dtsi create mode 100644 dts/arm/st/u5/stm32u575.dtsi create mode 100644 dts/arm/st/u5/stm32u575Xi.dtsi create mode 100644 dts/arm/st/u5/stm32u585.dtsi create mode 100644 dts/arm/st/u5/stm32u585Xi.dtsi create mode 100644 dts/arm/st/wb/stm32wb.dtsi create mode 100644 dts/arm/st/wb/stm32wb55.dtsi create mode 100644 dts/arm/st/wb/stm32wb55Xg.dtsi create mode 100644 dts/arm/st/wl/stm32wl.dtsi create mode 100644 dts/arm/st/wl/stm32wl54Xc.dtsi create mode 100644 dts/arm/st/wl/stm32wl55.dtsi create mode 100644 dts/arm/st/wl/stm32wl55Xc.dtsi create mode 100644 dts/arm/st/wl/stm32wle4X8.dtsi create mode 100644 dts/arm/st/wl/stm32wle4Xb.dtsi create mode 100644 dts/arm/st/wl/stm32wle4Xc.dtsi create mode 100644 dts/arm/st/wl/stm32wle5.dtsi create mode 100644 dts/arm/st/wl/stm32wle5X8.dtsi create mode 100644 dts/arm/st/wl/stm32wle5Xb.dtsi create mode 100644 dts/arm/st/wl/stm32wle5Xc.dtsi create mode 100644 dts/binding-template.yaml create mode 100644 dts/bindings/adc/adc-controller.yaml create mode 100644 dts/bindings/adc/arduino,uno-adc.yaml create mode 100644 dts/bindings/adc/atmel,sam-afec.yaml create mode 100644 dts/bindings/adc/atmel,sam0-adc.yaml create mode 100644 dts/bindings/adc/ite,it8xxx2-adc.yaml create mode 100644 dts/bindings/adc/microchip,mcp3204.yaml create mode 100644 dts/bindings/adc/microchip,mcp3208.yaml create mode 100644 dts/bindings/adc/microchip,mcp320x-base.yaml create mode 100644 dts/bindings/adc/microchip,xec-adc-v2.yaml create mode 100644 dts/bindings/adc/microchip,xec-adc.yaml create mode 100644 dts/bindings/adc/nordic,nrf-adc.yaml create mode 100644 dts/bindings/adc/nordic,nrf-saadc.yaml create mode 100644 dts/bindings/adc/nxp,kinetis-adc12.yaml create mode 100644 dts/bindings/adc/nxp,kinetis-adc16.yaml create mode 100644 dts/bindings/adc/nxp,mcux-12b1msps-sar.yaml create mode 100644 dts/bindings/adc/st,stm32-adc.yaml create mode 100644 dts/bindings/adc/ti,cc32xx-adc.yaml create mode 100644 dts/bindings/adc/ti,lmp90077.yaml create mode 100644 dts/bindings/adc/ti,lmp90078.yaml create mode 100644 dts/bindings/adc/ti,lmp90079.yaml create mode 100644 dts/bindings/adc/ti,lmp90080.yaml create mode 100644 dts/bindings/adc/ti,lmp90097.yaml create mode 100644 dts/bindings/adc/ti,lmp90098.yaml create mode 100644 dts/bindings/adc/ti,lmp90099.yaml create mode 100644 dts/bindings/adc/ti,lmp90100.yaml create mode 100644 dts/bindings/adc/ti,lmp90xxx-base.yaml create mode 100644 dts/bindings/adc/ti,lmp90xxx-current.yaml create mode 100644 dts/bindings/adc/voltage-divider.yaml create mode 100644 dts/bindings/adc/zephyr,adc-emul.yaml create mode 100644 dts/bindings/arc/arc,dccm.yaml create mode 100644 dts/bindings/arc/arc,iccm.yaml create mode 100644 dts/bindings/arm/arm,dtcm.yaml create mode 100644 dts/bindings/arm/arm,itcm.yaml create mode 100644 dts/bindings/arm/arm,scc.yaml create mode 100644 dts/bindings/arm/atmel,sam-ssc.yaml create mode 100644 dts/bindings/arm/atmel,sam0-id.yaml create mode 100644 dts/bindings/arm/atmel,sam0-sercom.yaml create mode 100644 dts/bindings/arm/atmel,samd2x-pm.yaml create mode 100644 dts/bindings/arm/nordic,nrf-dppic.yaml create mode 100644 dts/bindings/arm/nordic,nrf-egu.yaml create mode 100644 dts/bindings/arm/nordic,nrf-ficr.yaml create mode 100644 dts/bindings/arm/nordic,nrf-kmu.yaml create mode 100644 dts/bindings/arm/nordic,nrf-spu.yaml create mode 100644 dts/bindings/arm/nordic,nrf-uicr.yaml create mode 100644 dts/bindings/arm/nxp,imx-dtcm.yaml create mode 100644 dts/bindings/arm/nxp,imx-epit.yaml create mode 100644 dts/bindings/arm/nxp,imx-itcm.yaml create mode 100644 dts/bindings/arm/nxp,imx-mu.yaml create mode 100644 dts/bindings/arm/nxp,kinetis-ftm.yaml create mode 100644 dts/bindings/arm/nxp,kinetis-ke1xf-sim.yaml create mode 100644 dts/bindings/arm/nxp,kinetis-mcg.yaml create mode 100644 dts/bindings/arm/nxp,kinetis-pcc.yaml create mode 100644 dts/bindings/arm/nxp,kinetis-scg.yaml create mode 100644 dts/bindings/arm/nxp,kinetis-sim.yaml create mode 100644 dts/bindings/arm/nxp,lpc-flexcomm.yaml create mode 100644 dts/bindings/arm/st,stm32-ccm.yaml create mode 100644 dts/bindings/audio/intel,dmic.yaml create mode 100644 dts/bindings/audio/nordic,nrf-pdm.yaml create mode 100644 dts/bindings/audio/st,mpxxdtyy-i2s.yaml create mode 100644 dts/bindings/audio/ti,tlv320dac.yaml create mode 100644 dts/bindings/base/base.yaml create mode 100644 dts/bindings/base/mem-region.yaml create mode 100644 dts/bindings/base/pm.yaml create mode 100644 dts/bindings/base/power.yaml create mode 100644 dts/bindings/bluetooth/zephyr,bt-hci-spi-slave.yaml create mode 100644 dts/bindings/bluetooth/zephyr,bt-hci-spi.yaml create mode 100644 dts/bindings/can/bosch,m-can-base.yaml create mode 100644 dts/bindings/can/bosch,m-can.yaml create mode 100644 dts/bindings/can/can-controller.yaml create mode 100644 dts/bindings/can/can-device.yaml create mode 100644 dts/bindings/can/can-fd-controller.yaml create mode 100644 dts/bindings/can/microchip,mcp2515.yaml create mode 100644 dts/bindings/can/nxp,kinetis-flexcan.yaml create mode 100644 dts/bindings/can/renesas,rcar-can.yaml create mode 100644 dts/bindings/can/st,stm32-can.yaml create mode 100644 dts/bindings/can/st,stm32-fdcan.yaml create mode 100644 dts/bindings/clock/atmel,samd2x-gclk.yaml create mode 100644 dts/bindings/clock/atmel,samd5x-gclk.yaml create mode 100644 dts/bindings/clock/atmel,samd5x-mclk.yaml create mode 100644 dts/bindings/clock/clock-controller.yaml create mode 100644 dts/bindings/clock/espressif,esp32-rtc.yaml create mode 100644 dts/bindings/clock/fixed-clock.yaml create mode 100644 dts/bindings/clock/fixed-factor-clock.yaml create mode 100644 dts/bindings/clock/litex,clk.yaml create mode 100644 dts/bindings/clock/litex,clkout.yaml create mode 100644 dts/bindings/clock/microchip,xec-pcr.yaml create mode 100644 dts/bindings/clock/nordic,nrf-clock.yaml create mode 100644 dts/bindings/clock/nuvoton,npcx-pcc.yaml create mode 100644 dts/bindings/clock/nxp,imx-anatop.yaml create mode 100644 dts/bindings/clock/nxp,imx-ccm-rev2.yaml create mode 100644 dts/bindings/clock/nxp,imx-ccm.yaml create mode 100644 dts/bindings/clock/nxp,lpc-syscon.yaml create mode 100644 dts/bindings/clock/nxp,lpc11u6x-syscon.yaml create mode 100644 dts/bindings/clock/renesas,rcar-cpg-mssr.yaml create mode 100644 dts/bindings/clock/st,stm32-hse-clock.yaml create mode 100644 dts/bindings/clock/st,stm32-msi-clock.yaml create mode 100644 dts/bindings/clock/st,stm32-rcc.yaml create mode 100644 dts/bindings/clock/st,stm32f0-pll-clock.yaml create mode 100644 dts/bindings/clock/st,stm32f0-rcc.yaml create mode 100644 dts/bindings/clock/st,stm32f1-pll-clock.yaml create mode 100644 dts/bindings/clock/st,stm32f100-pll-clock.yaml create mode 100644 dts/bindings/clock/st,stm32f105-pll-clock.yaml create mode 100644 dts/bindings/clock/st,stm32f105-pll2-clock.yaml create mode 100644 dts/bindings/clock/st,stm32f2-pll-clock.yaml create mode 100644 dts/bindings/clock/st,stm32f4-pll-clock.yaml create mode 100644 dts/bindings/clock/st,stm32f7-pll-clock.yaml create mode 100644 dts/bindings/clock/st,stm32g0-pll-clock.yaml create mode 100644 dts/bindings/clock/st,stm32g4-pll-clock.yaml create mode 100644 dts/bindings/clock/st,stm32h7-hsi-clock.yaml create mode 100644 dts/bindings/clock/st,stm32h7-pll-clock.yaml create mode 100644 dts/bindings/clock/st,stm32h7-rcc.yaml create mode 100644 dts/bindings/clock/st,stm32l0-msi-clock.yaml create mode 100644 dts/bindings/clock/st,stm32l0-pll-clock.yaml create mode 100644 dts/bindings/clock/st,stm32l4-pll-clock.yaml create mode 100644 dts/bindings/clock/st,stm32mp1-rcc.yaml create mode 100644 dts/bindings/clock/st,stm32u5-msi-clock.yaml create mode 100644 dts/bindings/clock/st,stm32u5-pll-clock.yaml create mode 100644 dts/bindings/clock/st,stm32u5-rcc.yaml create mode 100644 dts/bindings/clock/st,stm32wb-pll-clock.yaml create mode 100644 dts/bindings/clock/st,stm32wb-rcc.yaml create mode 100644 dts/bindings/clock/st,stm32wl-hse-clock.yaml create mode 100644 dts/bindings/clock/st,stm32wl-rcc.yaml create mode 100644 dts/bindings/counter/st,stm32-counter.yaml create mode 100644 dts/bindings/cpu/altr,nios2f.yaml create mode 100644 dts/bindings/cpu/arm,cortex-a53.yaml create mode 100644 dts/bindings/cpu/arm,cortex-a72.yaml create mode 100644 dts/bindings/cpu/arm,cortex-m.yaml create mode 100644 dts/bindings/cpu/arm,cortex-m0+.yaml create mode 100644 dts/bindings/cpu/arm,cortex-m0.yaml create mode 100644 dts/bindings/cpu/arm,cortex-m1.yaml create mode 100644 dts/bindings/cpu/arm,cortex-m23.yaml create mode 100644 dts/bindings/cpu/arm,cortex-m3.yaml create mode 100644 dts/bindings/cpu/arm,cortex-m33.yaml create mode 100644 dts/bindings/cpu/arm,cortex-m33f.yaml create mode 100644 dts/bindings/cpu/arm,cortex-m4.yaml create mode 100644 dts/bindings/cpu/arm,cortex-m4f.yaml create mode 100644 dts/bindings/cpu/arm,cortex-m7.yaml create mode 100644 dts/bindings/cpu/arm,cortex-r4.yaml create mode 100644 dts/bindings/cpu/arm,cortex-r4f.yaml create mode 100644 dts/bindings/cpu/arm,cortex-r5.yaml create mode 100644 dts/bindings/cpu/arm,cortex-r5f.yaml create mode 100644 dts/bindings/cpu/arm,cortex-r7.yaml create mode 100644 dts/bindings/cpu/arm,cortex-r82.yaml create mode 100644 dts/bindings/cpu/cdns,tensilica-xtensa-lx4.yaml create mode 100644 dts/bindings/cpu/cdns,tensilica-xtensa-lx6.yaml create mode 100644 dts/bindings/cpu/cdns,tensilica-xtensa-lx7.yaml create mode 100644 dts/bindings/cpu/cpu.yaml create mode 100644 dts/bindings/cpu/espressif,riscv.yml create mode 100644 dts/bindings/cpu/intel,apollo_lake.yaml create mode 100644 dts/bindings/cpu/intel,atom.yaml create mode 100644 dts/bindings/cpu/intel,elkhart_lake.yaml create mode 100644 dts/bindings/cpu/intel,lakemont.yml create mode 100644 dts/bindings/cpu/intel,x86.yaml create mode 100644 dts/bindings/cpu/ite,riscv-ite.yaml create mode 100644 dts/bindings/cpu/neorv32-cpu.yaml create mode 100644 dts/bindings/cpu/nuclei,bumblebee.yaml create mode 100644 dts/bindings/cpu/qemu,nios2-zephyr.yaml create mode 100644 dts/bindings/cpu/sample_controller.yaml create mode 100644 dts/bindings/cpu/snps,arcem.yaml create mode 100644 dts/bindings/cpu/telink,b91.yaml create mode 100644 dts/bindings/crypto/arm,cryptocell-310.yaml create mode 100644 dts/bindings/crypto/arm,cryptocell-312.yaml create mode 100644 dts/bindings/crypto/nordic,nrf-cc310.yaml create mode 100644 dts/bindings/crypto/nordic,nrf-cc312.yaml create mode 100644 dts/bindings/crypto/nordic,nrf-ecb.yaml create mode 100644 dts/bindings/crypto/st,stm32-aes.yaml create mode 100644 dts/bindings/crypto/st,stm32-cryp.yaml create mode 100644 dts/bindings/crypto/st,stm32-crypto-common.yaml create mode 100644 dts/bindings/dac/atmel,sam-dac.yaml create mode 100644 dts/bindings/dac/atmel,sam0-dac.yaml create mode 100644 dts/bindings/dac/dac-controller.yaml create mode 100644 dts/bindings/dac/gd,gd32-dac.yaml create mode 100644 dts/bindings/dac/microchip,mcp4725.yaml create mode 100644 dts/bindings/dac/nxp,kinetis-dac.yaml create mode 100644 dts/bindings/dac/nxp,kinetis-dac32.yaml create mode 100644 dts/bindings/dac/st,stm32-dac.yaml create mode 100644 dts/bindings/dac/ti,dac43608.yaml create mode 100644 dts/bindings/dac/ti,dac53608.yaml create mode 100644 dts/bindings/dac/ti,dac60508.yaml create mode 100644 dts/bindings/dac/ti,dac70508.yaml create mode 100644 dts/bindings/dac/ti,dac80508.yaml create mode 100644 dts/bindings/dac/ti,dacx0508-base.yaml create mode 100644 dts/bindings/dac/ti,dacx3608-base.yaml create mode 100644 dts/bindings/display/display-controller.yaml create mode 100644 dts/bindings/display/fsl,imx6sx-lcdif.yaml create mode 100644 dts/bindings/display/ftdi,ft800.yaml create mode 100644 dts/bindings/display/gooddisplay,gd7965.yaml create mode 100644 dts/bindings/display/ilitek,ili9340.yaml create mode 100644 dts/bindings/display/ilitek,ili9341.yaml create mode 100644 dts/bindings/display/ilitek,ili9488.yaml create mode 100644 dts/bindings/display/ilitek,ili9xxx-common.yaml create mode 100644 dts/bindings/display/nordic,nrf-led-matrix.yaml create mode 100644 dts/bindings/display/rocktech,rk043fn02h-ct.yaml create mode 100644 dts/bindings/display/sharp,ls0xx.yaml create mode 100644 dts/bindings/display/sitronix,st7735r.yaml create mode 100644 dts/bindings/display/sitronix,st7789v.yaml create mode 100644 dts/bindings/display/solomon,ssd1306fb-common.yaml create mode 100644 dts/bindings/display/solomon,ssd1306fb-i2c.yaml create mode 100644 dts/bindings/display/solomon,ssd1306fb-spi.yaml create mode 100644 dts/bindings/display/solomon,ssd16xxfb.yaml create mode 100644 dts/bindings/display/zephyr,dummy-dc.yaml create mode 100644 dts/bindings/display/zephyr,sdl-dc.yaml create mode 100644 dts/bindings/dma/altr,msgdma.yaml create mode 100644 dts/bindings/dma/arm,dma-pl330.yaml create mode 100644 dts/bindings/dma/atmel,sam-xdmac.yaml create mode 100644 dts/bindings/dma/atmel,sam0-dmac.yaml create mode 100644 dts/bindings/dma/brcm,iproc-pax-dma-v1.yaml create mode 100644 dts/bindings/dma/brcm,iproc-pax-dma-v2.yaml create mode 100644 dts/bindings/dma/dma-controller.yaml create mode 100644 dts/bindings/dma/dmamux-controller.yaml create mode 100644 dts/bindings/dma/nxp,lpc-dma.yaml create mode 100644 dts/bindings/dma/nxp,mcux-edma.yaml create mode 100644 dts/bindings/dma/snps,designware-dma.yaml create mode 100644 dts/bindings/dma/st,stm32-dma-v1.yaml create mode 100644 dts/bindings/dma/st,stm32-dma-v2.yaml create mode 100644 dts/bindings/dma/st,stm32-dma-v2bis.yaml create mode 100644 dts/bindings/dma/st,stm32-dma.yaml create mode 100644 dts/bindings/dma/st,stm32-dmamux.yaml create mode 100644 dts/bindings/dsa/microchip,ksz8794.yaml create mode 100644 dts/bindings/dsa/microchip,ksz8863.yaml create mode 100644 dts/bindings/dsa/microchip_dsa.yaml create mode 100644 dts/bindings/ec_host_cmd_perhip/zephyr,sim-ec-host-cmd-periph.yaml create mode 100644 dts/bindings/edac/intel,ibecc.yaml create mode 100644 dts/bindings/espi/espi-controller.yaml create mode 100644 dts/bindings/espi/microchip,xec-espi-host-dev.yaml create mode 100644 dts/bindings/espi/microchip,xec-espi-saf.yaml create mode 100644 dts/bindings/espi/microchip,xec-espi-v2.yaml create mode 100644 dts/bindings/espi/microchip,xec-espi-vw-routing.yaml create mode 100644 dts/bindings/espi/microchip,xec-espi.yaml create mode 100644 dts/bindings/espi/nuvoton,npcx-espi-vw-conf.yaml create mode 100644 dts/bindings/espi/nuvoton,npcx-espi.yaml create mode 100644 dts/bindings/espi/nuvoton,npcx-host-sub.yaml create mode 100644 dts/bindings/espi/nuvoton,npcx-host-uart.yaml create mode 100644 dts/bindings/espi/zephyr,espi-emul-controller.yaml create mode 100644 dts/bindings/ethernet/atmel,gmac-common.yaml create mode 100644 dts/bindings/ethernet/atmel,sam-gmac.yaml create mode 100644 dts/bindings/ethernet/atmel,sam0-gmac.yaml create mode 100644 dts/bindings/ethernet/ethernet,fixed-link.yaml create mode 100644 dts/bindings/ethernet/ethernet-phy.yaml create mode 100644 dts/bindings/ethernet/ethernet.yaml create mode 100644 dts/bindings/ethernet/intel,e1000.yaml create mode 100644 dts/bindings/ethernet/litex,eth0.yaml create mode 100644 dts/bindings/ethernet/microchip,enc28j60.yaml create mode 100644 dts/bindings/ethernet/microchip,enc424j600.yaml create mode 100644 dts/bindings/ethernet/nxp,kinetis-ethernet.yaml create mode 100644 dts/bindings/ethernet/nxp,kinetis-ptp.yaml create mode 100644 dts/bindings/ethernet/phy.yaml create mode 100644 dts/bindings/ethernet/silabs,gecko-ethernet.yaml create mode 100644 dts/bindings/ethernet/smsc,lan9220.yaml create mode 100644 dts/bindings/ethernet/snps,designware-ethernet.yaml create mode 100644 dts/bindings/ethernet/st,stm32-ethernet.yaml create mode 100644 dts/bindings/ethernet/ti,stellaris-ethernet.yaml create mode 100644 dts/bindings/ethernet/wiznet,w5500.yaml create mode 100644 dts/bindings/ethernet/xlnx,gem.yaml create mode 100644 dts/bindings/flash_controller/atmel,sam-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/atmel,sam0-nvmctrl.yaml create mode 100644 dts/bindings/flash_controller/cypress,psoc6-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/espressif,esp32-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/flash-controller.yaml create mode 100644 dts/bindings/flash_controller/ite,it8xxx2-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/nordic,nrf-qspi.yaml create mode 100644 dts/bindings/flash_controller/nordic,nrf51-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/nordic,nrf52-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/nordic,nrf53-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/nordic,nrf91-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/nxp,kinetis-ftfa.yaml create mode 100644 dts/bindings/flash_controller/nxp,kinetis-ftfe.yaml create mode 100644 dts/bindings/flash_controller/nxp,kinetis-ftfl.yaml create mode 100644 dts/bindings/flash_controller/nxp,lpc-iap.yaml create mode 100644 dts/bindings/flash_controller/openisa,rv32m1-ftfe.yaml create mode 100644 dts/bindings/flash_controller/silabs,gecko-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/st,stm32-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/st,stm32-qspi-nor.yaml create mode 100644 dts/bindings/flash_controller/st,stm32f0-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/st,stm32f1-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/st,stm32f2-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/st,stm32f3-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/st,stm32f4-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/st,stm32f7-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/st,stm32g0-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/st,stm32g4-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/st,stm32h7-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/st,stm32l0-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/st,stm32l1-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/st,stm32l4-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/st,stm32l5-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/st,stm32u5-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/st,stm32wb-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/telink,b91-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/ti,stellaris-flash-controller.yaml create mode 100644 dts/bindings/flash_controller/zephyr,sim-flash.yaml create mode 100644 dts/bindings/fs/zephyr,fstab,littlefs.yaml create mode 100644 dts/bindings/fs/zephyr,fstab-common.yaml create mode 100644 dts/bindings/fs/zephyr,fstab.yaml create mode 100644 dts/bindings/gpio/adafruit-feather-header.yaml create mode 100644 dts/bindings/gpio/andestech,atcgpio100.yaml create mode 100644 dts/bindings/gpio/arduino-header-r3.yaml create mode 100644 dts/bindings/gpio/arm,cmsdk-gpio.yaml create mode 100644 dts/bindings/gpio/arm,mps2-fpgaio-gpio.yaml create mode 100644 dts/bindings/gpio/arm,mps3-fpgaio-gpio.yaml create mode 100644 dts/bindings/gpio/atmel,sam-gpio.yaml create mode 100644 dts/bindings/gpio/atmel,sam0-gpio.yaml create mode 100644 dts/bindings/gpio/atmel,sam4l-gpio.yaml create mode 100644 dts/bindings/gpio/atmel-xplained-header.yaml create mode 100644 dts/bindings/gpio/atmel-xplained-pro-header.yaml create mode 100644 dts/bindings/gpio/cypress,cy8c95xx-gpio-port.yaml create mode 100644 dts/bindings/gpio/cypress,cy8c95xx-gpio.yaml create mode 100644 dts/bindings/gpio/cypress,psoc6-gpio.yaml create mode 100644 dts/bindings/gpio/cypress,psoc6-hsiom.yaml create mode 100644 dts/bindings/gpio/espressif,esp32-gpio.yaml create mode 100644 dts/bindings/gpio/fcs,fxl6408.yaml create mode 100644 dts/bindings/gpio/gd,gd32-gpio.yaml create mode 100644 dts/bindings/gpio/gpio-controller.yaml create mode 100644 dts/bindings/gpio/gpio-keys.yaml create mode 100644 dts/bindings/gpio/gpio-leds.yaml create mode 100644 dts/bindings/gpio/gpio-nexus.yaml create mode 100644 dts/bindings/gpio/intel,gpio.yaml create mode 100644 dts/bindings/gpio/ite,it8xxx2-gpio.yaml create mode 100644 dts/bindings/gpio/linaro,96b-lscon-1v8.yaml create mode 100644 dts/bindings/gpio/linaro,96b-lscon-3v3.yaml create mode 100644 dts/bindings/gpio/litex,gpio.yaml create mode 100644 dts/bindings/gpio/microbit,edge-connector.yaml create mode 100644 dts/bindings/gpio/microchip,mcp230xx.yaml create mode 100644 dts/bindings/gpio/microchip,mcp23s17.yaml create mode 100644 dts/bindings/gpio/microchip,mcp23sxx.yaml create mode 100644 dts/bindings/gpio/microchip,xec-gpio-v2.yaml create mode 100644 dts/bindings/gpio/microchip,xec-gpio.yaml create mode 100644 dts/bindings/gpio/mikro-bus.yaml create mode 100644 dts/bindings/gpio/neorv32-gpio.yaml create mode 100644 dts/bindings/gpio/nordic,nrf-gpio.yaml create mode 100644 dts/bindings/gpio/nordic,nrf-gpiote.yaml create mode 100644 dts/bindings/gpio/nuvoton,nct38xx-gpio-alert.yaml create mode 100644 dts/bindings/gpio/nuvoton,nct38xx-gpio-port.yaml create mode 100644 dts/bindings/gpio/nuvoton,nct38xx-gpio.yaml create mode 100644 dts/bindings/gpio/nuvoton,npcx-gpio.yaml create mode 100644 dts/bindings/gpio/nuvoton,npcx-psl-out.yaml create mode 100644 dts/bindings/gpio/nxp,imx-gpio.yaml create mode 100644 dts/bindings/gpio/nxp,kinetis-gpio.yaml create mode 100644 dts/bindings/gpio/nxp,lpc-gpio.yaml create mode 100644 dts/bindings/gpio/nxp,lpc11u6x-gpio.yaml create mode 100644 dts/bindings/gpio/nxp,pca95xx.yaml create mode 100644 dts/bindings/gpio/nxp,pcal6408a.yaml create mode 100644 dts/bindings/gpio/openisa,rv32m1-gpio.yaml create mode 100644 dts/bindings/gpio/particle-gen3-header.yaml create mode 100644 dts/bindings/gpio/quicklogic,eos-s3-gpio.yaml create mode 100644 dts/bindings/gpio/renesas,rcar-gpio.yaml create mode 100644 dts/bindings/gpio/seeed-xiao-header.yaml create mode 100644 dts/bindings/gpio/semtech,sx1509b.yaml create mode 100644 dts/bindings/gpio/sifive,gpio0.yaml create mode 100644 dts/bindings/gpio/silabs,gecko-gpio-port.yaml create mode 100644 dts/bindings/gpio/silabs,gecko-gpio.yaml create mode 100644 dts/bindings/gpio/snps,creg-gpio.yaml create mode 100644 dts/bindings/gpio/snps,designware-gpio.yaml create mode 100644 dts/bindings/gpio/st,stm32-gpio.yaml create mode 100644 dts/bindings/gpio/st,stmpe1600.yaml create mode 100644 dts/bindings/gpio/telink,b91-gpio.yaml create mode 100644 dts/bindings/gpio/ti,boosterpack-header.yaml create mode 100644 dts/bindings/gpio/ti,cc13xx-cc26xx-gpio.yaml create mode 100644 dts/bindings/gpio/ti,cc32xx-gpio.yaml create mode 100644 dts/bindings/gpio/ti,lmp90xxx-gpio.yaml create mode 100644 dts/bindings/gpio/ti,stellaris-gpio.yaml create mode 100644 dts/bindings/gpio/ti,tca9538.yaml create mode 100644 dts/bindings/gpio/xlnx,xps-gpio-1.00.a-gpio2.yaml create mode 100644 dts/bindings/gpio/xlnx,xps-gpio-1.00.a.yaml create mode 100644 dts/bindings/gpio/zephyr,gpio-emul.yaml create mode 100644 dts/bindings/hwinfo/atmel,sam4l-uid.yaml create mode 100644 dts/bindings/hwinfo/cypress,psoc6-uid.yaml create mode 100644 dts/bindings/hwinfo/litex,dna0.yaml create mode 100644 dts/bindings/hwinfo/nxp,lpc-uid.yaml create mode 100644 dts/bindings/i2c/altr,nios2-i2c.yaml create mode 100644 dts/bindings/i2c/arm,versatile-i2c.yaml create mode 100644 dts/bindings/i2c/asmedia,asm2364.yaml create mode 100644 dts/bindings/i2c/atmel,sam-i2c-twi.yaml create mode 100644 dts/bindings/i2c/atmel,sam-i2c-twihs.yaml create mode 100644 dts/bindings/i2c/atmel,sam-i2c-twim.yaml create mode 100644 dts/bindings/i2c/atmel,sam0-i2c.yaml create mode 100644 dts/bindings/i2c/espressif,esp32-i2c.yaml create mode 100644 dts/bindings/i2c/fsl,imx21-i2c.yaml create mode 100644 dts/bindings/i2c/gpio-i2c.yaml create mode 100644 dts/bindings/i2c/i2c-controller.yaml create mode 100644 dts/bindings/i2c/i2c-device.yaml create mode 100644 dts/bindings/i2c/ite,it8xxx2-i2c.yaml create mode 100644 dts/bindings/i2c/litex,i2c.yaml create mode 100644 dts/bindings/i2c/microchip,xec-i2c-v2.yaml create mode 100644 dts/bindings/i2c/microchip,xec-i2c.yaml create mode 100644 dts/bindings/i2c/nordic,nrf-twi-common.yaml create mode 100644 dts/bindings/i2c/nordic,nrf-twi.yaml create mode 100644 dts/bindings/i2c/nordic,nrf-twim.yaml create mode 100644 dts/bindings/i2c/nordic,nrf-twis.yaml create mode 100644 dts/bindings/i2c/nuvoton,npcx-i2c-ctrl.yaml create mode 100644 dts/bindings/i2c/nuvoton,npcx-i2c-port.yaml create mode 100644 dts/bindings/i2c/nxp,imx-lpi2c.yaml create mode 100644 dts/bindings/i2c/nxp,kinetis-i2c.yaml create mode 100644 dts/bindings/i2c/nxp,lpc-i2c.yaml create mode 100644 dts/bindings/i2c/nxp,lpc11u6x-i2c.yaml create mode 100644 dts/bindings/i2c/openisa,rv32m1-lpi2c.yaml create mode 100644 dts/bindings/i2c/renesas,rcar-i2c.yaml create mode 100644 dts/bindings/i2c/sifive,i2c0.yaml create mode 100644 dts/bindings/i2c/silabs,gecko-i2c.yaml create mode 100644 dts/bindings/i2c/snps,designware-i2c.yaml create mode 100644 dts/bindings/i2c/st,stm32-i2c-v1.yaml create mode 100644 dts/bindings/i2c/st,stm32-i2c-v2.yaml create mode 100644 dts/bindings/i2c/telink,b91-i2c.yaml create mode 100644 dts/bindings/i2c/ti,cc13xx-cc26xx-i2c.yaml create mode 100644 dts/bindings/i2c/ti,cc32xx-i2c.yaml create mode 100644 dts/bindings/i2c/ti,tca9546a.yaml create mode 100644 dts/bindings/i2c/ti,tca9548a.yaml create mode 100644 dts/bindings/i2c/ti,tca954x-base.yaml create mode 100644 dts/bindings/i2c/zephyr,i2c-emul-controller.yaml create mode 100644 dts/bindings/i2s/i2s-controller.yaml create mode 100644 dts/bindings/i2s/i2s-device.yaml create mode 100644 dts/bindings/i2s/intel,cavs-i2s.yaml create mode 100644 dts/bindings/i2s/litex,i2s.yaml create mode 100644 dts/bindings/i2s/nordic,nrf-i2s.yaml create mode 100644 dts/bindings/i2s/nxp,lpc-i2s.yaml create mode 100644 dts/bindings/i2s/nxp,mcux-i2s.yaml create mode 100644 dts/bindings/i2s/st,stm32-i2s.yaml create mode 100644 dts/bindings/ieee802154/atmel,rf2xx.yaml create mode 100644 dts/bindings/ieee802154/decawave,dw1000.yaml create mode 100644 dts/bindings/ieee802154/nxp,mcr20a.yaml create mode 100644 dts/bindings/ieee802154/telink,b91-zb.yaml create mode 100644 dts/bindings/ieee802154/ti,cc1200.yaml create mode 100644 dts/bindings/ieee802154/ti,cc2520.yaml create mode 100644 dts/bindings/iio/adc/nuvoton,npcx-adc.yaml create mode 100644 dts/bindings/iio/adc/nxp,lpc-lpadc.yaml create mode 100644 dts/bindings/interrupt-controller/arm,gic-v3-its.yaml create mode 100644 dts/bindings/interrupt-controller/arm,gic.yaml create mode 100644 dts/bindings/interrupt-controller/arm,v6m-nvic.yaml create mode 100644 dts/bindings/interrupt-controller/arm,v7m-nvic.yaml create mode 100644 dts/bindings/interrupt-controller/arm,v8.1m-nvic.yaml create mode 100644 dts/bindings/interrupt-controller/arm,v8m-nvic.yaml create mode 100644 dts/bindings/interrupt-controller/atmel,sam0-eic.yaml create mode 100644 dts/bindings/interrupt-controller/cdns,xtensa-core-intc.yaml create mode 100644 dts/bindings/interrupt-controller/cypress,psoc6-intmux-ch.yaml create mode 100644 dts/bindings/interrupt-controller/cypress,psoc6-intmux.yaml create mode 100644 dts/bindings/interrupt-controller/espressif,esp32-intc.yaml create mode 100644 dts/bindings/interrupt-controller/gaisler,irqmp.yaml create mode 100644 dts/bindings/interrupt-controller/intel,cavs-intc.yaml create mode 100644 dts/bindings/interrupt-controller/intel,ioapic.yaml create mode 100644 dts/bindings/interrupt-controller/intel,vt-d.yaml create mode 100644 dts/bindings/interrupt-controller/interrupt-controller.yaml create mode 100644 dts/bindings/interrupt-controller/ite,it8xxx2-intc.yaml create mode 100644 dts/bindings/interrupt-controller/microchip,xec-ecia-girq.yaml create mode 100644 dts/bindings/interrupt-controller/microchip,xec-ecia.yaml create mode 100644 dts/bindings/interrupt-controller/nuclei,eclic.yaml create mode 100644 dts/bindings/interrupt-controller/nuvoton,npcx-miwu-int-map.yaml create mode 100644 dts/bindings/interrupt-controller/nuvoton,npcx-miwu-wui-map.yaml create mode 100644 dts/bindings/interrupt-controller/nuvoton,npcx-miwu.yaml create mode 100644 dts/bindings/interrupt-controller/openisa,rv32m1-event-unit.yaml create mode 100644 dts/bindings/interrupt-controller/openisa,rv32m1-intmux-ch.yaml create mode 100644 dts/bindings/interrupt-controller/openisa,rv32m1-intmux.yaml create mode 100644 dts/bindings/interrupt-controller/riscv,clint0.yaml create mode 100644 dts/bindings/interrupt-controller/riscv,cpu-intc.yaml create mode 100644 dts/bindings/interrupt-controller/riscv,plic0.yaml create mode 100644 dts/bindings/interrupt-controller/shared-irq.yaml create mode 100644 dts/bindings/interrupt-controller/sifive,plic-1.0.0.yaml create mode 100644 dts/bindings/interrupt-controller/snps,archs-idu-intc.yaml create mode 100644 dts/bindings/interrupt-controller/snps,arcv2-intc.yaml create mode 100644 dts/bindings/interrupt-controller/snps,designware-intc.yaml create mode 100644 dts/bindings/interrupt-controller/st,stm32-exti.yaml create mode 100644 dts/bindings/interrupt-controller/swerv,pic.yaml create mode 100644 dts/bindings/interrupt-controller/vexriscv-intc0.yaml create mode 100644 dts/bindings/ipc/zephyr,ipc-openamp-static-vrings.yaml create mode 100644 dts/bindings/ipm/intel,adsp-mailbox.yaml create mode 100644 dts/bindings/ipm/intel,cavs-idc.yaml create mode 100644 dts/bindings/ipm/nordic,nrf-ipc.yaml create mode 100644 dts/bindings/ipm/nxp,lpc-mailbox.yaml create mode 100644 dts/bindings/ipm/st,stm32-hsem-mailbox.yaml create mode 100644 dts/bindings/ipm/st,stm32-ipcc-mailbox.yaml create mode 100644 dts/bindings/ipm/zephyr,ipm-console.yaml create mode 100644 dts/bindings/kscan/focaltech,ft5336.yaml create mode 100644 dts/bindings/kscan/holtek,ht16k33-keyscan.yaml create mode 100644 dts/bindings/kscan/ite,it8xxx2-kscan.yaml create mode 100644 dts/bindings/kscan/kscan.yaml create mode 100644 dts/bindings/kscan/microchip,xec-kscan.yaml create mode 100644 dts/bindings/led/holtek,ht16k33.yaml create mode 100644 dts/bindings/led/led-controller.yaml create mode 100644 dts/bindings/led/nxp,pca9633.yaml create mode 100644 dts/bindings/led/pwm-leds.yaml create mode 100644 dts/bindings/led/ti,lp3943.yaml create mode 100644 dts/bindings/led/ti,lp503x.yaml create mode 100644 dts/bindings/led/ti,lp5562.yaml create mode 100644 dts/bindings/led/ti,tlc59108.yaml create mode 100644 dts/bindings/led_strip/apa,apa102.yaml create mode 100644 dts/bindings/led_strip/greeled,lpd8803.yaml create mode 100644 dts/bindings/led_strip/greeled,lpd8806.yaml create mode 100644 dts/bindings/led_strip/worldsemi,ws2812-gpio.yaml create mode 100644 dts/bindings/led_strip/worldsemi,ws2812-spi.yaml create mode 100644 dts/bindings/led_strip/ws2812.yaml create mode 100644 dts/bindings/lora/semtech,sx1261.yaml create mode 100644 dts/bindings/lora/semtech,sx1262.yaml create mode 100644 dts/bindings/lora/semtech,sx126x-base.yaml create mode 100644 dts/bindings/lora/semtech,sx1272.yaml create mode 100644 dts/bindings/lora/semtech,sx1276.yaml create mode 100644 dts/bindings/lora/semtech,sx127x-base.yaml create mode 100644 dts/bindings/lora/st,stm32wl-subghz-radio.yaml create mode 100644 dts/bindings/mailbox/mailbox-controller.yaml create mode 100644 dts/bindings/mbox/nordic,mbox-nrf-ipc.yaml create mode 100644 dts/bindings/mdio/atmel,sam-mdio.yaml create mode 100644 dts/bindings/mdio/mdio-controller.yaml create mode 100644 dts/bindings/memory-controllers/ite,it8xxx2-bbram.yaml create mode 100644 dts/bindings/memory-controllers/nuvoton,npcx-bbram.yaml create mode 100644 dts/bindings/memory-controllers/nxp,imx-semc.yaml create mode 100644 dts/bindings/memory-controllers/st,stm32-backup-sram.yaml create mode 100644 dts/bindings/memory-controllers/st,stm32-fmc-sdram.yaml create mode 100644 dts/bindings/memory-controllers/st,stm32-fmc.yaml create mode 100644 dts/bindings/memory-controllers/zephyr,bbram-emul.yaml create mode 100644 dts/bindings/mhu/arm,mhu.yaml create mode 100644 dts/bindings/misc/nuvoton,npcx-booter-variant.yaml create mode 100644 dts/bindings/misc/nuvoton,npcx-soc-id.yaml create mode 100644 dts/bindings/misc/skyworks,sky13351.yaml create mode 100644 dts/bindings/misc/zephyr,modbus-serial.yaml create mode 100644 dts/bindings/mmc/mmc.yaml create mode 100644 dts/bindings/mmc/nxp,imx-usdhc.yaml create mode 100644 dts/bindings/mmc/st,stm32-sdmmc.yaml create mode 100644 dts/bindings/mmc/zephyr,mmc-spi-slot.yaml create mode 100644 dts/bindings/mmu_mpu/arm,armv6m-mpu.yaml create mode 100644 dts/bindings/mmu_mpu/arm,armv7m-mpu.yaml create mode 100644 dts/bindings/mmu_mpu/arm,armv8.1m-mpu.yaml create mode 100644 dts/bindings/mmu_mpu/arm,armv8m-mpu.yaml create mode 100644 dts/bindings/modem/openisa,rv32m1-genfsk.yaml create mode 100644 dts/bindings/modem/quectel,bg9x.yaml create mode 100644 dts/bindings/modem/simcom,sim7080.yaml create mode 100644 dts/bindings/modem/swir,hl7800.yaml create mode 100644 dts/bindings/modem/u-blox,sara-r4.yaml create mode 100644 dts/bindings/modem/wnc,m14a2a.yaml create mode 100644 dts/bindings/modem/zephyr,gsm-ppp.yaml create mode 100644 dts/bindings/mtd/atmel,at24.yaml create mode 100644 dts/bindings/mtd/atmel,at25.yaml create mode 100644 dts/bindings/mtd/atmel,at2x-base.yaml create mode 100644 dts/bindings/mtd/atmel,at45.yaml create mode 100644 dts/bindings/mtd/eeprom-base.yaml create mode 100644 dts/bindings/mtd/fixed-partitions.yaml create mode 100644 dts/bindings/mtd/jedec,jesd216.yaml create mode 100644 dts/bindings/mtd/jedec,spi-nor-common.yaml create mode 100644 dts/bindings/mtd/jedec,spi-nor.yaml create mode 100644 dts/bindings/mtd/nordic,qspi-nor.yaml create mode 100644 dts/bindings/mtd/nxp,imx-flexspi-device.yaml create mode 100644 dts/bindings/mtd/nxp,imx-flexspi-hyperflash.yaml create mode 100644 dts/bindings/mtd/nxp,imx-flexspi-hyperram.yaml create mode 100644 dts/bindings/mtd/nxp,imx-flexspi-mx25um51345g.yaml create mode 100644 dts/bindings/mtd/nxp,imx-flexspi-nor.yaml create mode 100644 dts/bindings/mtd/nxp,lpc11u6x-eeprom.yaml create mode 100644 dts/bindings/mtd/soc-nv-flash.yaml create mode 100644 dts/bindings/mtd/st,stm32-eeprom.yaml create mode 100644 dts/bindings/mtd/st,stm32-nv-flash.yaml create mode 100644 dts/bindings/mtd/ti,tmp116-eeprom.yaml create mode 100644 dts/bindings/mtd/zephyr,emu-eeprom.yaml create mode 100644 dts/bindings/mtd/zephyr,sim-eeprom.yaml create mode 100644 dts/bindings/multi_heap_manager/shared-multi-heap.yaml create mode 100644 dts/bindings/net/wireless/generic-fem-two-ctrl-pins.yaml create mode 100644 dts/bindings/net/wireless/nordic,nrf-radio.yaml create mode 100644 dts/bindings/net/wireless/nordic,nrf21540-fem-spi.yaml create mode 100644 dts/bindings/net/wireless/nordic,nrf21540-fem.yaml create mode 100644 dts/bindings/neural_net/intel,gna.yaml create mode 100644 dts/bindings/pcie/endpoint/brcm,iproc-pcie-ep.yaml create mode 100644 dts/bindings/pcie/host/intel,pcie.yaml create mode 100644 dts/bindings/pcie/host/pci-host-ecam-generic.yaml create mode 100644 dts/bindings/pcie/host/pcie-controller.yaml create mode 100644 dts/bindings/pcie/host/ptm-root.yaml create mode 100644 dts/bindings/peci/microchip,xec-peci.yaml create mode 100644 dts/bindings/peci/peci.yaml create mode 100644 dts/bindings/phy/phy-controller.yaml create mode 100644 dts/bindings/phy/st,stm32-usbphyc.yaml create mode 100644 dts/bindings/phy/usb-nop-xceiv.yaml create mode 100644 dts/bindings/pinctrl/atmel,sam-pinctrl.yaml create mode 100644 dts/bindings/pinctrl/atmel,sam0-pinctrl.yaml create mode 100644 dts/bindings/pinctrl/atmel,sam0-pinmux.yaml create mode 100644 dts/bindings/pinctrl/cypress,psoc6-pinctrl.yaml create mode 100644 dts/bindings/pinctrl/espressif,esp32-pinmux.yaml create mode 100644 dts/bindings/pinctrl/gd,gd32-afio.yaml create mode 100644 dts/bindings/pinctrl/gd,gd32-pinctrl-af.yaml create mode 100644 dts/bindings/pinctrl/gd,gd32-pinctrl-afio.yaml create mode 100644 dts/bindings/pinctrl/gd,gd32-pinctrl-common.yaml create mode 100644 dts/bindings/pinctrl/intel,s1000-pinmux.yaml create mode 100644 dts/bindings/pinctrl/ite,it8xxx2-pinctrl-conf.yaml create mode 100644 dts/bindings/pinctrl/ite,it8xxx2-pinmux.yaml create mode 100644 dts/bindings/pinctrl/microchip,xec-pinmux.yaml create mode 100644 dts/bindings/pinctrl/nordic,nrf-pinctrl.yaml create mode 100644 dts/bindings/pinctrl/nuvoton,npcx-lvolctrl-conf.yaml create mode 100644 dts/bindings/pinctrl/nuvoton,npcx-lvolctrl-def.yaml create mode 100644 dts/bindings/pinctrl/nuvoton,npcx-pinctrl-conf.yaml create mode 100644 dts/bindings/pinctrl/nuvoton,npcx-pinctrl-def.yaml create mode 100644 dts/bindings/pinctrl/nuvoton,npcx-pslctrl-conf.yaml create mode 100644 dts/bindings/pinctrl/nuvoton,npcx-pslctrl-def.yaml create mode 100644 dts/bindings/pinctrl/nuvoton,npcx-scfg.yaml create mode 100644 dts/bindings/pinctrl/nxp,imx-pinmux.yaml create mode 100644 dts/bindings/pinctrl/nxp,kinetis-pinmux.yaml create mode 100644 dts/bindings/pinctrl/nxp,lpc-iocon-pio.yaml create mode 100644 dts/bindings/pinctrl/nxp,lpc-iocon.yaml create mode 100644 dts/bindings/pinctrl/nxp,lpc11u6x-pinmux.yaml create mode 100644 dts/bindings/pinctrl/openisa,rv32m1-pinmux.yaml create mode 100644 dts/bindings/pinctrl/pincfg-node-group.yaml create mode 100644 dts/bindings/pinctrl/pincfg-node.yaml create mode 100644 dts/bindings/pinctrl/pinctrl-device.yaml create mode 100644 dts/bindings/pinctrl/sifive,iof.yaml create mode 100644 dts/bindings/pinctrl/snps,creg-gpio-mux-hsdk.yaml create mode 100644 dts/bindings/pinctrl/st,stm32-pinctrl.yaml create mode 100644 dts/bindings/pinctrl/st,stm32f1-pinctrl.yaml create mode 100644 dts/bindings/pinctrl/telink,b91-pinmux.yaml create mode 100644 dts/bindings/pinctrl/ti,cc13xx-cc26xx-pinmux.yaml create mode 100644 dts/bindings/pm_cpu_ops/arm,psci-0.2.yaml create mode 100644 dts/bindings/power/nordic,nrf-power.yaml create mode 100644 dts/bindings/power/nordic,nrf-regulators.yaml create mode 100644 dts/bindings/power/nordic,nrf-vmc.yaml create mode 100644 dts/bindings/power/telink,b91-power.yaml create mode 100644 dts/bindings/power/zephyr,power-state.yaml create mode 100644 dts/bindings/ps2/microchip,xec-ps2.yaml create mode 100644 dts/bindings/ps2/nuvoton,npcx-ps2-channel.yaml create mode 100644 dts/bindings/ps2/nuvoton,npcx-ps2-ctrl.yaml create mode 100644 dts/bindings/ps2/ps2.yaml create mode 100644 dts/bindings/pwm/atmel,sam-pwm.yaml create mode 100644 dts/bindings/pwm/atmel,sam0-tcc-pwm.yaml create mode 100644 dts/bindings/pwm/espressif,esp32-ledc.yaml create mode 100644 dts/bindings/pwm/fsl,imx27-pwm.yaml create mode 100644 dts/bindings/pwm/ite,it8xxx2-pwm.yaml create mode 100644 dts/bindings/pwm/ite,it8xxx2-pwmprs.yaml create mode 100644 dts/bindings/pwm/litex,pwm.yaml create mode 100644 dts/bindings/pwm/microchip,xec-pwm.yaml create mode 100644 dts/bindings/pwm/nordic,nrf-pwm.yaml create mode 100644 dts/bindings/pwm/nordic,nrf-sw-pwm.yaml create mode 100644 dts/bindings/pwm/nuvoton,npcx-pwm.yaml create mode 100644 dts/bindings/pwm/nxp,flexpwm.yaml create mode 100644 dts/bindings/pwm/nxp,imx-pwm.yaml create mode 100644 dts/bindings/pwm/nxp,kinetis-ftm-pwm.yaml create mode 100644 dts/bindings/pwm/nxp,kinetis-pwt.yaml create mode 100644 dts/bindings/pwm/nxp,kinetis-tpm.yaml create mode 100644 dts/bindings/pwm/nxp,sctimer-pwm.yaml create mode 100644 dts/bindings/pwm/openisa,rv32m1-tpm.yaml create mode 100644 dts/bindings/pwm/pwm-controller.yaml create mode 100644 dts/bindings/pwm/sifive,pwm0.yaml create mode 100644 dts/bindings/pwm/silabs,gecko-pwm.yaml create mode 100644 dts/bindings/pwm/snps,designware-pwm.yaml create mode 100644 dts/bindings/pwm/st,stm32-pwm.yaml create mode 100644 dts/bindings/pwm/telink,b91-pwm.yaml create mode 100644 dts/bindings/pwm/xlnx,xps-timer-1.00.a-pwm.yaml create mode 100644 dts/bindings/qspi/st,stm32-qspi.yaml create mode 100644 dts/bindings/regulator/regulator-fixed.yaml create mode 100644 dts/bindings/regulator/regulator-pmic.yaml create mode 100644 dts/bindings/regulator/regulator.yaml create mode 100644 dts/bindings/reserved-memory/reserved-memory.yaml create mode 100644 dts/bindings/riscv/openisa,rv32m1-pcc.yaml create mode 100644 dts/bindings/riscv/riscv,cpus.yaml create mode 100644 dts/bindings/riscv/riscv,sifive-e24.yaml create mode 100644 dts/bindings/riscv/riscv,sifive.yaml create mode 100644 dts/bindings/rng/atmel,sam-trng.yaml create mode 100644 dts/bindings/rng/espressif,esp32-trng.yaml create mode 100644 dts/bindings/rng/litex,prbs.yaml create mode 100644 dts/bindings/rng/neorv32-trng.yaml create mode 100644 dts/bindings/rng/nordic,nrf-rng.yaml create mode 100644 dts/bindings/rng/nxp,kinetis-rnga.yaml create mode 100644 dts/bindings/rng/nxp,kinetis-trng.yaml create mode 100644 dts/bindings/rng/nxp,lpc-rng.yaml create mode 100644 dts/bindings/rng/openisa,rv32m1-trng.yaml create mode 100644 dts/bindings/rng/silabs,gecko-trng.yaml create mode 100644 dts/bindings/rng/st,stm32-rng.yaml create mode 100644 dts/bindings/rng/telink,b91-trng.yaml create mode 100644 dts/bindings/rng/ti,cc13xx-cc26xx-trng.yaml create mode 100644 dts/bindings/rng/zephyr,native-posix-rng.yaml create mode 100644 dts/bindings/rtc/atmel,sam0-rtc.yaml create mode 100644 dts/bindings/rtc/maxim,ds3231.yaml create mode 100644 dts/bindings/rtc/microchip,mcp7940n.yaml create mode 100644 dts/bindings/rtc/microchip,xec-timer.yaml create mode 100644 dts/bindings/rtc/nordic,nrf-rtc.yaml create mode 100644 dts/bindings/rtc/nxp,imx-snvs-rtc.yaml create mode 100644 dts/bindings/rtc/nxp,kinetis-lptmr.yaml create mode 100644 dts/bindings/rtc/nxp,kinetis-pit.yaml create mode 100644 dts/bindings/rtc/nxp,kinetis-rtc.yaml create mode 100644 dts/bindings/rtc/rtc.yaml create mode 100644 dts/bindings/rtc/silabs,gecko-rtcc.yaml create mode 100644 dts/bindings/rtc/st,stm32-rtc.yaml create mode 100644 dts/bindings/rtc/ti,cc13xx-cc26xx-rtc.yaml create mode 100644 dts/bindings/rtc/xlnx,xps-timer-1.00.a.yaml create mode 100644 dts/bindings/sensor/adi,adt7420.yaml create mode 100644 dts/bindings/sensor/adi,adxl345.yaml create mode 100644 dts/bindings/sensor/adi,adxl362.yaml create mode 100644 dts/bindings/sensor/adi,adxl372-i2c.yaml create mode 100644 dts/bindings/sensor/adi,adxl372-spi.yaml create mode 100644 dts/bindings/sensor/ams,ccs811.yaml create mode 100644 dts/bindings/sensor/ams,ens210.yaml create mode 100644 dts/bindings/sensor/ams,iaqcore.yaml create mode 100644 dts/bindings/sensor/aosong,dht.yaml create mode 100644 dts/bindings/sensor/asahi-kasei,ak8975.yaml create mode 100644 dts/bindings/sensor/atmel,sam-tc-qdec.yaml create mode 100644 dts/bindings/sensor/avago,apds9960.yaml create mode 100644 dts/bindings/sensor/bosch,bma280.yaml create mode 100644 dts/bindings/sensor/bosch,bmc150_magn.yaml create mode 100644 dts/bindings/sensor/bosch,bme280-i2c.yaml create mode 100644 dts/bindings/sensor/bosch,bme280-spi.yaml create mode 100644 dts/bindings/sensor/bosch,bme680-i2c.yaml create mode 100644 dts/bindings/sensor/bosch,bmg160.yaml create mode 100644 dts/bindings/sensor/bosch,bmi160.yaml create mode 100644 dts/bindings/sensor/bosch,bmi270-i2c.yaml create mode 100644 dts/bindings/sensor/bosch,bmm150.yaml create mode 100644 dts/bindings/sensor/bosch,bmp388-i2c.yaml create mode 100644 dts/bindings/sensor/bosch,bmp388-spi.yaml create mode 100644 dts/bindings/sensor/bosch,bmp388.yaml create mode 100644 dts/bindings/sensor/honeywell,hmc5883l.yaml create mode 100644 dts/bindings/sensor/honeywell,mpr.yaml create mode 100644 dts/bindings/sensor/honeywell,sm351lt.yaml create mode 100644 dts/bindings/sensor/hoperf,hp206c.yaml create mode 100644 dts/bindings/sensor/hoperf,th02.yaml create mode 100644 dts/bindings/sensor/infineon,dps310.yaml create mode 100644 dts/bindings/sensor/invensense,icm42605.yaml create mode 100644 dts/bindings/sensor/invensense,mpu6050.yaml create mode 100644 dts/bindings/sensor/invensense,mpu9150.yaml create mode 100644 dts/bindings/sensor/isil,isl29035.yaml create mode 100644 dts/bindings/sensor/lm75.yaml create mode 100644 dts/bindings/sensor/lm77.yaml create mode 100644 dts/bindings/sensor/maxim,max17055.yaml create mode 100644 dts/bindings/sensor/maxim,max17262.yaml create mode 100644 dts/bindings/sensor/maxim,max30101.yaml create mode 100644 dts/bindings/sensor/maxim,max44009.yaml create mode 100644 dts/bindings/sensor/maxim,max6675.yaml create mode 100644 dts/bindings/sensor/meas,ms5607-i2c.yaml create mode 100644 dts/bindings/sensor/meas,ms5607-spi.yaml create mode 100644 dts/bindings/sensor/meas,ms5837.yaml create mode 100644 dts/bindings/sensor/microchip,mcp9808.yaml create mode 100644 dts/bindings/sensor/nordic,nrf-qdec.yaml create mode 100644 dts/bindings/sensor/nordic,nrf-temp.yaml create mode 100644 dts/bindings/sensor/nxp,fxas21002.yaml create mode 100644 dts/bindings/sensor/nxp,fxos8700.yaml create mode 100644 dts/bindings/sensor/nxp,kinetis-acmp.yaml create mode 100644 dts/bindings/sensor/nxp,kinetis-temperature.yaml create mode 100644 dts/bindings/sensor/panasonic,amg88xx.yaml create mode 100644 dts/bindings/sensor/plantower,pms7003.yaml create mode 100644 dts/bindings/sensor/sbs,sbs-gauge.yaml create mode 100644 dts/bindings/sensor/seeed,grove-light.yaml create mode 100644 dts/bindings/sensor/seeed,grove-temperature.yaml create mode 100644 dts/bindings/sensor/semtech,sx9500.yaml create mode 100644 dts/bindings/sensor/sensirion,sgp40.yaml create mode 100644 dts/bindings/sensor/sensirion,sht3xd.yaml create mode 100644 dts/bindings/sensor/sensirion,sht4x.yaml create mode 100644 dts/bindings/sensor/sensirion,shtcx.yaml create mode 100644 dts/bindings/sensor/silabs,si7006.yaml create mode 100644 dts/bindings/sensor/silabs,si7055.yaml create mode 100644 dts/bindings/sensor/silabs,si7060.yaml create mode 100644 dts/bindings/sensor/silabs,si7210.yaml create mode 100644 dts/bindings/sensor/st,hts221-common.yaml create mode 100644 dts/bindings/sensor/st,hts221-i2c.yaml create mode 100644 dts/bindings/sensor/st,hts221-spi.yaml create mode 100644 dts/bindings/sensor/st,i3g4250d.yaml create mode 100644 dts/bindings/sensor/st,iis2dh-i2c.yaml create mode 100644 dts/bindings/sensor/st,iis2dh-spi.yaml create mode 100644 dts/bindings/sensor/st,iis2dlpc-common.yaml create mode 100644 dts/bindings/sensor/st,iis2dlpc-i2c.yaml create mode 100644 dts/bindings/sensor/st,iis2dlpc-spi.yaml create mode 100644 dts/bindings/sensor/st,iis2iclx-common.yaml create mode 100644 dts/bindings/sensor/st,iis2iclx-i2c.yaml create mode 100644 dts/bindings/sensor/st,iis2iclx-spi.yaml create mode 100644 dts/bindings/sensor/st,iis2mdc-i2c.yaml create mode 100644 dts/bindings/sensor/st,iis2mdc-spi.yaml create mode 100644 dts/bindings/sensor/st,iis3dhhc-spi.yaml create mode 100644 dts/bindings/sensor/st,ism330dhcx-common.yaml create mode 100644 dts/bindings/sensor/st,ism330dhcx-i2c.yaml create mode 100644 dts/bindings/sensor/st,ism330dhcx-spi.yaml create mode 100644 dts/bindings/sensor/st,lis2dh-common.yaml create mode 100644 dts/bindings/sensor/st,lis2dh-i2c.yaml create mode 100644 dts/bindings/sensor/st,lis2dh-spi.yaml create mode 100644 dts/bindings/sensor/st,lis2dh12-i2c.yaml create mode 100644 dts/bindings/sensor/st,lis2ds12-common.yaml create mode 100644 dts/bindings/sensor/st,lis2ds12-i2c.yaml create mode 100644 dts/bindings/sensor/st,lis2ds12-spi.yaml create mode 100644 dts/bindings/sensor/st,lis2dw12-common.yaml create mode 100644 dts/bindings/sensor/st,lis2dw12-i2c.yaml create mode 100644 dts/bindings/sensor/st,lis2dw12-spi.yaml create mode 100644 dts/bindings/sensor/st,lis2mdl-common.yaml create mode 100644 dts/bindings/sensor/st,lis2mdl-i2c.yaml create mode 100644 dts/bindings/sensor/st,lis2mdl-spi.yaml create mode 100644 dts/bindings/sensor/st,lis3dh-i2c.yaml create mode 100644 dts/bindings/sensor/st,lis3mdl-magn.yaml create mode 100644 dts/bindings/sensor/st,lps22hb-press.yaml create mode 100644 dts/bindings/sensor/st,lps22hh-common.yaml create mode 100644 dts/bindings/sensor/st,lps22hh-i2c.yaml create mode 100644 dts/bindings/sensor/st,lps22hh-spi.yaml create mode 100644 dts/bindings/sensor/st,lps25hb-press.yaml create mode 100644 dts/bindings/sensor/st,lsm303agr-accel-i2c.yaml create mode 100644 dts/bindings/sensor/st,lsm303agr-accel-spi.yaml create mode 100644 dts/bindings/sensor/st,lsm303dlhc-accel.yaml create mode 100644 dts/bindings/sensor/st,lsm303dlhc-magn.yaml create mode 100644 dts/bindings/sensor/st,lsm6ds0.yaml create mode 100644 dts/bindings/sensor/st,lsm6dsl-i2c.yaml create mode 100644 dts/bindings/sensor/st,lsm6dsl-spi.yaml create mode 100644 dts/bindings/sensor/st,lsm6dso-common.yaml create mode 100644 dts/bindings/sensor/st,lsm6dso-i2c.yaml create mode 100644 dts/bindings/sensor/st,lsm6dso-spi.yaml create mode 100644 dts/bindings/sensor/st,lsm9ds0-gyro-i2c.yaml create mode 100644 dts/bindings/sensor/st,lsm9ds0-mfd-i2c.yaml create mode 100644 dts/bindings/sensor/st,stm32-temp.yaml create mode 100644 dts/bindings/sensor/st,stts751-i2c.yaml create mode 100644 dts/bindings/sensor/st,vl53l0x.yaml create mode 100644 dts/bindings/sensor/ti,bq274xx.yaml create mode 100644 dts/bindings/sensor/ti,fdc2x1x.yaml create mode 100644 dts/bindings/sensor/ti,hdc.yaml create mode 100644 dts/bindings/sensor/ti,hdc2010.yaml create mode 100644 dts/bindings/sensor/ti,hdc2021.yaml create mode 100644 dts/bindings/sensor/ti,hdc2022.yaml create mode 100644 dts/bindings/sensor/ti,hdc2080.yaml create mode 100644 dts/bindings/sensor/ti,hdc20xx.yaml create mode 100644 dts/bindings/sensor/ti,ina219.yaml create mode 100644 dts/bindings/sensor/ti,ina230.yaml create mode 100644 dts/bindings/sensor/ti,ina237.yaml create mode 100644 dts/bindings/sensor/ti,ina23x-common.yaml create mode 100644 dts/bindings/sensor/ti,opt3001.yaml create mode 100644 dts/bindings/sensor/ti,tmp007.yaml create mode 100644 dts/bindings/sensor/ti,tmp108.yaml create mode 100644 dts/bindings/sensor/ti,tmp112.yaml create mode 100644 dts/bindings/sensor/ti,tmp116.yaml create mode 100644 dts/bindings/sensor/vishay,vcnl4040.yaml create mode 100644 dts/bindings/sensor/we,wsen-itds.yaml create mode 100644 dts/bindings/sensor/winsen,mhz19b.yaml create mode 100644 dts/bindings/serial/altr,jtag-uart.yaml create mode 100644 dts/bindings/serial/arm,cmsdk-uart.yaml create mode 100644 dts/bindings/serial/arm,pl011.yaml create mode 100644 dts/bindings/serial/arm,sbsa-uart.yaml create mode 100644 dts/bindings/serial/atmel,sam-uart.yaml create mode 100644 dts/bindings/serial/atmel,sam-usart.yaml create mode 100644 dts/bindings/serial/atmel,sam0-uart.yaml create mode 100644 dts/bindings/serial/cypress,psoc6-uart.yaml create mode 100644 dts/bindings/serial/espressif,esp32-uart.yaml create mode 100644 dts/bindings/serial/gaisler,apbuart.yaml create mode 100644 dts/bindings/serial/gd,gd32-usart.yaml create mode 100644 dts/bindings/serial/infineon,xmc4xxx-uart.yaml create mode 100644 dts/bindings/serial/ite,it8xxx2-uart.yaml create mode 100644 dts/bindings/serial/litex,uart0.yaml create mode 100644 dts/bindings/serial/microchip,xec-uart.yaml create mode 100644 dts/bindings/serial/microsemi,coreuart.yaml create mode 100644 dts/bindings/serial/neorv32-uart.yaml create mode 100644 dts/bindings/serial/nordic,nrf-uart-common.yaml create mode 100644 dts/bindings/serial/nordic,nrf-uart.yaml create mode 100644 dts/bindings/serial/nordic,nrf-uarte.yaml create mode 100644 dts/bindings/serial/ns16550.yaml create mode 100644 dts/bindings/serial/nuvoton,npcx-uart.yaml create mode 100644 dts/bindings/serial/nuvoton,numicro-uart.yaml create mode 100644 dts/bindings/serial/nxp,imx-iuart.yaml create mode 100644 dts/bindings/serial/nxp,imx-uart.yaml create mode 100644 dts/bindings/serial/nxp,kinetis-lpsci.yaml create mode 100644 dts/bindings/serial/nxp,kinetis-lpuart.yaml create mode 100644 dts/bindings/serial/nxp,kinetis-uart.yaml create mode 100644 dts/bindings/serial/nxp,lpc-usart.yaml create mode 100644 dts/bindings/serial/nxp,lpc11u6x-uart.yaml create mode 100644 dts/bindings/serial/openisa,rv32m1-lpuart.yaml create mode 100644 dts/bindings/serial/renesas,rcar-scif.yaml create mode 100644 dts/bindings/serial/segger,rtt-uart.yaml create mode 100644 dts/bindings/serial/sifive,uart0.yaml create mode 100644 dts/bindings/serial/silabs,gecko-leuart.yaml create mode 100644 dts/bindings/serial/silabs,gecko-uart.yaml create mode 100644 dts/bindings/serial/silabs,gecko-usart.yaml create mode 100644 dts/bindings/serial/snps,nsim-uart.yaml create mode 100644 dts/bindings/serial/st,stm32-lpuart.yaml create mode 100644 dts/bindings/serial/st,stm32-uart.yaml create mode 100644 dts/bindings/serial/st,stm32-usart.yaml create mode 100644 dts/bindings/serial/telink,b91-uart.yaml create mode 100644 dts/bindings/serial/ti,cc13xx-cc26xx-uart.yaml create mode 100644 dts/bindings/serial/ti,cc32xx-uart.yaml create mode 100644 dts/bindings/serial/ti,msp432p4xx-uart.yaml create mode 100644 dts/bindings/serial/ti,stellaris-uart.yaml create mode 100644 dts/bindings/serial/uart-controller.yaml create mode 100644 dts/bindings/serial/uart-device.yaml create mode 100644 dts/bindings/serial/xlnx,xps-uartlite-1.00.a.yaml create mode 100644 dts/bindings/serial/xlnx,xuartps.yaml create mode 100644 dts/bindings/serial/zephyr,cdc-acm-uart.yaml create mode 100644 dts/bindings/serial/zephyr,native-posix-uart.yaml create mode 100644 dts/bindings/spi/atmel,sam-spi.yaml create mode 100644 dts/bindings/spi/atmel,sam0-spi.yaml create mode 100644 dts/bindings/spi/cypress,psoc6-spi.yaml create mode 100644 dts/bindings/spi/espressif,esp32-spi.yaml create mode 100644 dts/bindings/spi/ite,it8xxx2-sspi.yaml create mode 100644 dts/bindings/spi/litex,spi.yaml create mode 100644 dts/bindings/spi/microchip,xec-qmspi-ldma.yaml create mode 100644 dts/bindings/spi/microchip,xec-qmspi.yaml create mode 100644 dts/bindings/spi/nordic,nrf-spi-common.yaml create mode 100644 dts/bindings/spi/nordic,nrf-spi.yaml create mode 100644 dts/bindings/spi/nordic,nrf-spim.yaml create mode 100644 dts/bindings/spi/nordic,nrf-spis.yaml create mode 100644 dts/bindings/spi/nuvoton,npcx-spi-fiu.yaml create mode 100644 dts/bindings/spi/nxp,imx-flexspi.yaml create mode 100644 dts/bindings/spi/nxp,imx-lpspi.yaml create mode 100644 dts/bindings/spi/nxp,kinetis-dspi.yaml create mode 100644 dts/bindings/spi/nxp,lpc-spi.yaml create mode 100644 dts/bindings/spi/opencores,spi-simple.yaml create mode 100644 dts/bindings/spi/openisa,rv32m1-lpspi.yaml create mode 100644 dts/bindings/spi/sifive,spi0.yaml create mode 100644 dts/bindings/spi/silabs,gecko-spi-usart.yaml create mode 100644 dts/bindings/spi/snps,designware-spi.yaml create mode 100644 dts/bindings/spi/spi-controller.yaml create mode 100644 dts/bindings/spi/spi-device.yaml create mode 100644 dts/bindings/spi/st,stm32-spi-common.yaml create mode 100644 dts/bindings/spi/st,stm32-spi-fifo.yaml create mode 100644 dts/bindings/spi/st,stm32-spi-subghz.yaml create mode 100644 dts/bindings/spi/st,stm32-spi.yaml create mode 100644 dts/bindings/spi/telink,b91-spi.yaml create mode 100644 dts/bindings/spi/ti,cc13xx-cc26xx-spi.yaml create mode 100644 dts/bindings/spi/xlnx,xps-spi-2.00.a.yaml create mode 100644 dts/bindings/spi/zephyr,spi-bitbang.yaml create mode 100644 dts/bindings/spi/zephyr,spi-emul-controller.yaml create mode 100644 dts/bindings/sram/mmio-sram.yaml create mode 100644 dts/bindings/sram/sifive,dtim0.yaml create mode 100644 dts/bindings/syscon/syscon.yaml create mode 100644 dts/bindings/tach/ite,it8xxx2-tach.yaml create mode 100644 dts/bindings/tach/microchip,xec-tach.yaml create mode 100644 dts/bindings/tach/nuvoton,npcx-tach.yaml create mode 100644 dts/bindings/tach/tach.yaml create mode 100644 dts/bindings/tcpc/st,stm32-ucpd.yaml create mode 100644 dts/bindings/test/vnd,adc-temp-sensor.yaml create mode 100644 dts/bindings/test/vnd,adc.yaml create mode 100644 dts/bindings/test/vnd,array-holder.yaml create mode 100644 dts/bindings/test/vnd,busy-sim.yaml create mode 100644 dts/bindings/test/vnd,child-bindings.yaml create mode 100644 dts/bindings/test/vnd,clock.yaml create mode 100644 dts/bindings/test/vnd,disabled-compat.yaml create mode 100644 dts/bindings/test/vnd,dma.yaml create mode 100644 dts/bindings/test/vnd,enum-holder-inst.yaml create mode 100644 dts/bindings/test/vnd,enum-holder.yaml create mode 100644 dts/bindings/test/vnd,enum-int-required-false-holder.yaml create mode 100644 dts/bindings/test/vnd,enum-required-false-holder-inst.yaml create mode 100644 dts/bindings/test/vnd,enum-required-false-holder.yaml create mode 100644 dts/bindings/test/vnd,gpio-expander-common.yaml create mode 100644 dts/bindings/test/vnd,gpio-expander-i2c.yaml create mode 100644 dts/bindings/test/vnd,gpio-expander-spi.yaml create mode 100644 dts/bindings/test/vnd,gpio-one-cell.yaml create mode 100644 dts/bindings/test/vnd,gpio.yaml create mode 100644 dts/bindings/test/vnd,great-grandchild-bindings.yaml create mode 100644 dts/bindings/test/vnd,i2c-device.yaml create mode 100644 dts/bindings/test/vnd,i2c-mux.yaml create mode 100644 dts/bindings/test/vnd,i2c.yaml create mode 100644 dts/bindings/test/vnd,intc.yaml create mode 100644 dts/bindings/test/vnd,interrupt-holder.yaml create mode 100644 dts/bindings/test/vnd,mbox-zero-cell.yaml create mode 100644 dts/bindings/test/vnd,mbox.yaml create mode 100644 dts/bindings/test/vnd,pcie.yaml create mode 100644 dts/bindings/test/vnd,phandle-holder.yaml create mode 100644 dts/bindings/test/vnd,pinctrl-device.yaml create mode 100644 dts/bindings/test/vnd,pinctrl-test.yaml create mode 100644 dts/bindings/test/vnd,pinctrl.yaml create mode 100644 dts/bindings/test/vnd,pwm.yaml create mode 100644 dts/bindings/test/vnd,reg-holder.yaml create mode 100644 dts/bindings/test/vnd,serial.yaml create mode 100644 dts/bindings/test/vnd,spi-device-2.yaml create mode 100644 dts/bindings/test/vnd,spi-device.yaml create mode 100644 dts/bindings/test/vnd,spi.yaml create mode 100644 dts/bindings/timer/arm,armv8-timer.yaml create mode 100644 dts/bindings/timer/arm,cmsdk-dtimer.yaml create mode 100644 dts/bindings/timer/arm,cmsdk-timer.yaml create mode 100644 dts/bindings/timer/atmel,sam-tc.yaml create mode 100644 dts/bindings/timer/atmel,sam0-tc32.yaml create mode 100644 dts/bindings/timer/espressif,esp32-systimer.yaml create mode 100644 dts/bindings/timer/gaisler,gptimer.yaml create mode 100644 dts/bindings/timer/intel,hpet.yaml create mode 100644 dts/bindings/timer/ite,it8xxx2-timer.yaml create mode 100644 dts/bindings/timer/litex,timer0.yaml create mode 100644 dts/bindings/timer/microchip,xec-rtos-timer.yaml create mode 100644 dts/bindings/timer/nordic,nrf-timer.yaml create mode 100644 dts/bindings/timer/nuvoton,npcx-itim-timer.yaml create mode 100644 dts/bindings/timer/nxp,imx-gpt.yaml create mode 100644 dts/bindings/timer/nxp,lpc-ctimer.yaml create mode 100644 dts/bindings/timer/openisa,rv32m1-lptmr.yaml create mode 100644 dts/bindings/timer/renesas,rcar-cmt.yaml create mode 100644 dts/bindings/timer/riscv,machine-timer.yaml create mode 100644 dts/bindings/timer/silabs,gecko-timer.yaml create mode 100644 dts/bindings/timer/st,stm32-lptim.yaml create mode 100644 dts/bindings/timer/st,stm32-timers.yaml create mode 100644 dts/bindings/timer/xlnx,ttcps.yaml create mode 100644 dts/bindings/usb/atmel,sam-usbc.yaml create mode 100644 dts/bindings/usb/atmel,sam-usbhs.yaml create mode 100644 dts/bindings/usb/atmel,sam0-usb.yaml create mode 100644 dts/bindings/usb/nordic,nrf-usbd.yaml create mode 100644 dts/bindings/usb/nxp,kinetis-usbd.yaml create mode 100644 dts/bindings/usb/nxp,mcux-usbd.yaml create mode 100644 dts/bindings/usb/snps,designware-usb.yaml create mode 100644 dts/bindings/usb/st,stm32-otgfs.yaml create mode 100644 dts/bindings/usb/st,stm32-otghs.yaml create mode 100644 dts/bindings/usb/st,stm32-usb.yaml create mode 100644 dts/bindings/usb/usb-audio-hp.yaml create mode 100644 dts/bindings/usb/usb-audio-hs.yaml create mode 100644 dts/bindings/usb/usb-audio-mic.yaml create mode 100644 dts/bindings/usb/usb-audio.yaml create mode 100644 dts/bindings/usb/usb-controller.yaml create mode 100644 dts/bindings/usb/usb-ep.yaml create mode 100644 dts/bindings/usb/zephyr,native-posix-udc.yaml create mode 100644 dts/bindings/vendor-prefixes.txt create mode 100644 dts/bindings/video/aptina,mt9m114.yaml create mode 100644 dts/bindings/video/nxp,imx-csi.yaml create mode 100644 dts/bindings/video/ovti,ov2640.yaml create mode 100644 dts/bindings/video/ovti,ov7725.yaml create mode 100644 dts/bindings/virtualization/qemu,ivshmem.yaml create mode 100644 dts/bindings/watchdog/arm,cmsdk-watchdog.yaml create mode 100644 dts/bindings/watchdog/atmel,sam-watchdog.yaml create mode 100644 dts/bindings/watchdog/atmel,sam0-watchdog.yaml create mode 100644 dts/bindings/watchdog/espressif,esp32-watchdog.yaml create mode 100644 dts/bindings/watchdog/ite,it8xxx2-watchdog.yaml create mode 100644 dts/bindings/watchdog/microchip,xec-watchdog.yaml create mode 100644 dts/bindings/watchdog/nordic,nrf-watchdog.yaml create mode 100644 dts/bindings/watchdog/nuvoton,npcx-watchdog.yaml create mode 100644 dts/bindings/watchdog/nxp,imx-wdog.yaml create mode 100644 dts/bindings/watchdog/nxp,kinetis-wdog.yaml create mode 100644 dts/bindings/watchdog/nxp,kinetis-wdog32.yaml create mode 100644 dts/bindings/watchdog/nxp,lpc-wwdt.yaml create mode 100644 dts/bindings/watchdog/sifive,wdt.yaml create mode 100644 dts/bindings/watchdog/silabs,gecko-wdog.yaml create mode 100644 dts/bindings/watchdog/st,stm32-watchdog.yaml create mode 100644 dts/bindings/watchdog/st,stm32-window-watchdog.yaml create mode 100644 dts/bindings/watchdog/ti,cc32xx-watchdog.yaml create mode 100644 dts/bindings/watchdog/zephyr,counter-watchdog.yaml create mode 100644 dts/bindings/wifi/atmel,winc1500.yaml create mode 100644 dts/bindings/wifi/espressif,esp-at.yaml create mode 100644 dts/bindings/wifi/inventek,eswifi-uart.yaml create mode 100644 dts/bindings/wifi/inventek,eswifi.yaml create mode 100644 dts/common/freq.h create mode 100644 dts/common/mem.h create mode 100644 dts/common/skeleton.dtsi create mode 160000 platforms/nuttx/src/px4/stm/hal_stm32 create mode 100644 src/include/devicetree.h create mode 100644 src/include/devicetree/clocks.h create mode 100644 src/include/devicetree/dma.h create mode 100644 src/include/devicetree/fixed-partitions.h create mode 100644 src/include/devicetree/gpio.h create mode 100644 src/include/devicetree/io-channels.h create mode 100644 src/include/devicetree/ordinals.h create mode 100644 src/include/devicetree/pinctrl.h create mode 100644 src/include/devicetree/pwms.h create mode 100644 src/include/devicetree/spi.h create mode 100644 src/include/devicetree/zephyr.h create mode 100644 src/include/dt-bindings/adc/adc.h create mode 100644 src/include/dt-bindings/clock/imx_ccm.h create mode 100644 src/include/dt-bindings/clock/imx_ccm_rev2.h create mode 100644 src/include/dt-bindings/clock/kinetis_mcg.h create mode 100644 src/include/dt-bindings/clock/kinetis_pcc.h create mode 100644 src/include/dt-bindings/clock/kinetis_scg.h create mode 100644 src/include/dt-bindings/clock/kinetis_sim.h create mode 100644 src/include/dt-bindings/clock/stm32_clock.h create mode 100644 src/include/dt-bindings/dt-util.h create mode 100644 src/include/dt-bindings/gpio/gpio.h create mode 100644 src/include/dt-bindings/i2c/i2c.h create mode 100644 src/include/dt-bindings/led/led.h create mode 100644 src/include/dt-bindings/memory-controller/stm32-fmc-sdram.h create mode 100644 src/include/dt-bindings/pinctrl/stm32-pinctrl-common.h create mode 100644 src/include/dt-bindings/pinctrl/stm32-pinctrl.h create mode 100644 src/include/dt-bindings/pinctrl/stm32f1-afio.h create mode 100644 src/include/dt-bindings/pinctrl/stm32f1-pinctrl.h create mode 100644 src/include/dt-bindings/pwm/pwm.h create mode 100644 src/include/dt-bindings/spi/spi.h create mode 100644 src/include/dt-bindings/usb/usb.h create mode 100644 src/include/sys/util.h create mode 100644 src/include/sys/util_internal.h create mode 100644 src/include/sys/util_loops.h create mode 100644 src/include/sys/util_macro.h create mode 100644 src/include/zephyr/types.h diff --git a/.gitmodules b/.gitmodules index f23a7a3e78..f7387686e5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -64,3 +64,6 @@ path = src/lib/crypto/libtommath url = https://github.com/PX4/libtommath.git branch = px4 +[submodule "platforms/nuttx/src/px4/stm/hal_stm32"] + path = platforms/nuttx/src/px4/stm/hal_stm32 + url = git@github.com:zephyrproject-rtos/hal_stm32.git diff --git a/CMakeLists.txt b/CMakeLists.txt index bca9b38eaa..81c8610c31 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -413,6 +413,8 @@ add_subdirectory(src/lib EXCLUDE_FROM_ALL) add_subdirectory(platforms/${PX4_PLATFORM}/src/px4) add_subdirectory(platforms EXCLUDE_FROM_ALL) +include(dts) + if(EXISTS "${PX4_BOARD_DIR}/CMakeLists.txt") add_subdirectory(${PX4_BOARD_DIR}) endif() diff --git a/Tools/astyle/files_to_check_code_style.sh b/Tools/astyle/files_to_check_code_style.sh index 963c8a51cf..b71ff94869 100755 --- a/Tools/astyle/files_to_check_code_style.sh +++ b/Tools/astyle/files_to_check_code_style.sh @@ -10,6 +10,7 @@ fi exec find boards msg src platforms test \ -path msg/templates/urtps -prune -o \ -path platforms/nuttx/NuttX -prune -o \ + -path platforms/nuttx/src/px4/stm/hal_stm32 -prune -o \ -path platforms/qurt/dspal -prune -o \ -path src/drivers/uavcan/libuavcan -prune -o \ -path src/drivers/uavcan/uavcan_drivers/kinetis/driver/include/uavcan_kinetis -prune -o \ diff --git a/Tools/dts/README.txt b/Tools/dts/README.txt new file mode 100644 index 0000000000..f6705bcf78 --- /dev/null +++ b/Tools/dts/README.txt @@ -0,0 +1,32 @@ +This directory used to contain the edtlib.py and dtlib.py libraries +and tests, alongside the gen_defines.py script that uses them for +converting DTS to the C macros used by Zephyr. + +The libraries and tests have now been moved to the 'python-devicetree' +subdirectory. + +We are now in the process of extracting edtlib and dtlib into a +standalone source code library that we intend to share with other +projects. + +Links related to the work making this standalone: + + https://pypi.org/project/devicetree/ + https://python-devicetree.readthedocs.io/en/latest/ + https://github.com/zephyrproject-rtos/python-devicetree + +The 'python-devicetree' subdirectory you find here next to this +README.txt matches the standalone python-devicetree repository linked +above. + +For now, the 'main' copy will continue to be hosted here in the zephyr +repository. We will mirror changes into the standalone repository as +needed; you can just ignore it for now. + +Code in the zephyr repository which needs these libraries will import +devicetree.edtlib from now on, but the code will continue to be found +by manipulating sys.path for now. + +Eventually, as APIs stabilize, the python-devicetree code in this +repository will disappear, and a standalone repository will be the +'main' one. diff --git a/Tools/dts/gen_defines.py b/Tools/dts/gen_defines.py new file mode 100755 index 0000000000..7cff885edf --- /dev/null +++ b/Tools/dts/gen_defines.py @@ -0,0 +1,1032 @@ +#!/usr/bin/env python3 + +# Copyright (c) 2019 - 2020 Nordic Semiconductor ASA +# Copyright (c) 2019 Linaro Limited +# SPDX-License-Identifier: BSD-3-Clause + +# This script uses edtlib to generate a header file from a devicetree +# (.dts) file. Information from binding files in YAML format is used +# as well. +# +# Bindings are files that describe devicetree nodes. Devicetree nodes are +# usually mapped to bindings via their 'compatible = "..."' property. +# +# See Zephyr's Devicetree user guide for details. +# +# Note: Do not access private (_-prefixed) identifiers from edtlib here (and +# also note that edtlib is not meant to expose the dtlib API directly). +# Instead, think of what API you need, and add it as a public documented API in +# edtlib. This will keep this script simple. + +import argparse +from collections import defaultdict +import logging +import os +import pathlib +import pickle +import re +import sys + +sys.path.append(os.path.join(os.path.dirname(__file__), 'python-devicetree', + 'src')) + +from devicetree import edtlib + +# The set of binding types whose values can be iterated over with +# DT_FOREACH_PROP_ELEM(). If you change this, make sure to update the +# doxygen string for that macro. +FOREACH_PROP_ELEM_TYPES = set(['string', 'array', 'uint8-array', 'string-array', + 'phandles', 'phandle-array']) + +class LogFormatter(logging.Formatter): + '''A log formatter that prints the level name in lower case, + for compatibility with earlier versions of edtlib.''' + + def __init__(self): + super().__init__(fmt='%(levelnamelower)s: %(message)s') + + def format(self, record): + record.levelnamelower = record.levelname.lower() + return super().format(record) + +def main(): + global header_file + global flash_area_num + + args = parse_args() + + setup_edtlib_logging() + + vendor_prefixes = {} + for prefixes_file in args.vendor_prefixes: + vendor_prefixes.update(edtlib.load_vendor_prefixes_txt(prefixes_file)) + + try: + edt = edtlib.EDT(args.dts, args.bindings_dirs, + # Suppress this warning if it's suppressed in dtc + warn_reg_unit_address_mismatch= + "-Wno-simple_bus_reg" not in args.dtc_flags, + default_prop_types=True, + infer_binding_for_paths=["/zephyr,user"], + werror=args.edtlib_Werror, + vendor_prefixes=vendor_prefixes) + except edtlib.EDTError as e: + sys.exit(f"devicetree error: {e}") + + flash_area_num = 0 + + # Save merged DTS source, as a debugging aid + with open(args.dts_out, "w", encoding="utf-8") as f: + print(edt.dts_source, file=f) + + # The raw index into edt.compat2nodes[compat] is used for node + # instance numbering within a compatible. + # + # As a way to satisfy people's intuitions about instance numbers, + # though, we sort this list so enabled instances come first. + # + # This might look like a hack, but it keeps drivers and + # applications which don't use instance numbers carefully working + # as expected, since e.g. instance number 0 is always the + # singleton instance if there's just one enabled node of a + # particular compatible. + # + # This doesn't violate any devicetree.h API guarantees about + # instance ordering, since we make no promises that instance + # numbers are stable across builds. + for compat, nodes in edt.compat2nodes.items(): + edt.compat2nodes[compat] = sorted( + nodes, key=lambda node: 0 if node.status == "okay" else 1) + + # Create the generated header. + with open(args.header_out, "w", encoding="utf-8") as header_file: + write_top_comment(edt) + + # populate all z_path_id first so any children references will + # work correctly. + for node in sorted(edt.nodes, key=lambda node: node.dep_ordinal): + node.z_path_id = node_z_path_id(node) + + # Check to see if we have duplicate "zephyr,memory-region" property values. + regions = dict() + for node in sorted(edt.nodes, key=lambda node: node.dep_ordinal): + if 'zephyr,memory-region' in node.props: + region = node.props['zephyr,memory-region'].val + if region in regions: + sys.exit(f"ERROR: Duplicate 'zephyr,memory-region' ({region}) properties " + f"between {regions[region].path} and {node.path}") + regions[region] = node + + for node in sorted(edt.nodes, key=lambda node: node.dep_ordinal): + write_node_comment(node) + + out_comment("Node's full path:") + out_dt_define(f"{node.z_path_id}_PATH", f'"{escape(node.path)}"') + + out_comment("Node's name with unit-address:") + out_dt_define(f"{node.z_path_id}_FULL_NAME", + f'"{escape(node.name)}"') + + if node.parent is not None: + out_comment(f"Node parent ({node.parent.path}) identifier:") + out_dt_define(f"{node.z_path_id}_PARENT", + f"DT_{node.parent.z_path_id}") + + write_child_functions(node) + write_child_functions_status_okay(node) + write_dep_info(node) + write_idents_and_existence(node) + write_bus(node) + write_special_props(node) + write_vanilla_props(node) + + write_chosen(edt) + write_global_compat_info(edt) + + write_device_extern_header(args.device_header_out, edt) + + if args.edt_pickle_out: + write_pickled_edt(edt, args.edt_pickle_out) + + +def write_device_extern_header(device_header_out, edt): + # Generate header that will extern devicetree struct device's + + with open(device_header_out, "w", encoding="utf-8") as dev_header_file: + print("#ifndef DEVICE_EXTERN_GEN_H", file=dev_header_file) + print("#define DEVICE_EXTERN_GEN_H", file=dev_header_file) + print("", file=dev_header_file) + print("#ifdef __cplusplus", file=dev_header_file) + print('extern "C" {', file=dev_header_file) + print("#endif", file=dev_header_file) + print("", file=dev_header_file) + + for node in sorted(edt.nodes, key=lambda node: node.dep_ordinal): + print(f"extern const struct device DEVICE_DT_NAME_GET(DT_{node.z_path_id}); /* dts_ord_{node.dep_ordinal} */", + file=dev_header_file) + + print("", file=dev_header_file) + print("#ifdef __cplusplus", file=dev_header_file) + print("}", file=dev_header_file) + print("#endif", file=dev_header_file) + print("", file=dev_header_file) + print("#endif /* DEVICE_EXTERN_GEN_H */", file=dev_header_file) + + +def setup_edtlib_logging(): + # The edtlib module emits logs using the standard 'logging' module. + # Configure it so that warnings and above are printed to stderr, + # using the LogFormatter class defined above to format each message. + + handler = logging.StreamHandler(sys.stderr) + handler.setFormatter(LogFormatter()) + + logger = logging.getLogger('edtlib') + logger.setLevel(logging.WARNING) + logger.addHandler(handler) + +def node_z_path_id(node): + # Return the node specific bit of the node's path identifier: + # + # - the root node's path "/" has path identifier "N" + # - "/foo" has "N_S_foo" + # - "/foo/bar" has "N_S_foo_S_bar" + # - "/foo/bar@123" has "N_S_foo_S_bar_123" + # + # This is used throughout this file to generate macros related to + # the node. + + components = ["N"] + if node.parent is not None: + components.extend(f"S_{str2ident(component)}" for component in + node.path.split("/")[1:]) + + return "_".join(components) + +def parse_args(): + # Returns parsed command-line arguments + + parser = argparse.ArgumentParser() + parser.add_argument("--dts", required=True, help="DTS file") + parser.add_argument("--dtc-flags", + help="'dtc' devicetree compiler flags, some of which " + "might be respected here") + parser.add_argument("--bindings-dirs", nargs='+', required=True, + help="directory with bindings in YAML format, " + "we allow multiple") + parser.add_argument("--header-out", required=True, + help="path to write header to") + parser.add_argument("--dts-out", required=True, + help="path to write merged DTS source code to (e.g. " + "as a debugging aid)") + parser.add_argument("--device-header-out", required=True, + help="path to write device struct extern header to") + parser.add_argument("--edt-pickle-out", + help="path to write pickled edtlib.EDT object to") + parser.add_argument("--vendor-prefixes", action='append', default=[], + help="vendor-prefixes.txt path; used for validation; " + "may be given multiple times") + parser.add_argument("--edtlib-Werror", action="store_true", + help="if set, edtlib-specific warnings become errors. " + "(this does not apply to warnings shared " + "with dtc.)") + + return parser.parse_args() + + +def write_top_comment(edt): + # Writes an overview comment with misc. info at the top of the header and + # configuration file + + s = f"""\ +Generated by gen_defines.py + +DTS input file: + {edt.dts_path} + +Directories with bindings: + {", ".join(map(relativize, edt.bindings_dirs))} + +Node dependency ordering (ordinal and path): +""" + + for scc in edt.scc_order: + if len(scc) > 1: + err("cycle in devicetree involving " + + ", ".join(node.path for node in scc)) + s += f" {scc[0].dep_ordinal:<3} {scc[0].path}\n" + + s += """ +Definitions derived from these nodes in dependency order are next, +followed by /chosen nodes. +""" + + out_comment(s, blank_before=False) + + +def write_node_comment(node): + # Writes a comment describing 'node' to the header and configuration file + + s = f"""\ +Devicetree node: {node.path} + +Node identifier: DT_{node.z_path_id} +""" + + if node.matching_compat: + if node.binding_path: + s += f""" +Binding (compatible = {node.matching_compat}): + {relativize(node.binding_path)} +""" + else: + s += f""" +Binding (compatible = {node.matching_compat}): + No yaml (bindings inferred from properties) +""" + + if node.description: + # We used to put descriptions in the generated file, but + # devicetree bindings now have pages in the HTML + # documentation. Let users who are accustomed to digging + # around in the generated file where to find the descriptions + # now. + # + # Keeping them here would mean that the descriptions + # themselves couldn't contain C multi-line comments, which is + # inconvenient when we want to do things like quote snippets + # of .dtsi files within the descriptions, or otherwise + # include the string "*/". + s += ("\n(Descriptions have moved to the Devicetree Bindings Index\n" + "in the documentation.)\n") + + out_comment(s) + + +def relativize(path): + # If 'path' is within $ZEPHYR_BASE, returns it relative to $ZEPHYR_BASE, + # with a "$ZEPHYR_BASE/..." hint at the start of the string. Otherwise, + # returns 'path' unchanged. + + zbase = os.getenv("ZEPHYR_BASE") + if zbase is None: + return path + + try: + return str("$ZEPHYR_BASE" / pathlib.Path(path).relative_to(zbase)) + except ValueError: + # Not within ZEPHYR_BASE + return path + + +def write_idents_and_existence(node): + # Writes macros related to the node's aliases, labels, etc., + # as well as existence flags. + + # Aliases + idents = [f"N_ALIAS_{str2ident(alias)}" for alias in node.aliases] + # Instances + for compat in node.compats: + instance_no = node.edt.compat2nodes[compat].index(node) + idents.append(f"N_INST_{instance_no}_{str2ident(compat)}") + # Node labels + idents.extend(f"N_NODELABEL_{str2ident(label)}" for label in node.labels) + + out_comment("Existence and alternate IDs:") + out_dt_define(node.z_path_id + "_EXISTS", 1) + + # Only determine maxlen if we have any idents + if idents: + maxlen = max(len("DT_" + ident) for ident in idents) + for ident in idents: + out_dt_define(ident, "DT_" + node.z_path_id, width=maxlen) + + +def write_bus(node): + # Macros about the node's bus controller, if there is one + + bus = node.bus_node + if not bus: + return + + if not bus.label: + err(f"missing 'label' property on bus node {bus!r}") + + out_comment(f"Bus info (controller: '{bus.path}', type: '{node.on_bus}')") + out_dt_define(f"{node.z_path_id}_BUS_{str2ident(node.on_bus)}", 1) + out_dt_define(f"{node.z_path_id}_BUS", f"DT_{bus.z_path_id}") + + +def write_special_props(node): + # Writes required macros for special case properties, when the + # data cannot otherwise be obtained from write_vanilla_props() + # results + + # Macros that are special to the devicetree specification + out_comment("Macros for properties that are special in the specification:") + write_regs(node) + write_ranges(node) + write_interrupts(node) + write_compatibles(node) + write_status(node) + + # Macros that are special to bindings inherited from Linux, which + # we can't capture with the current bindings language. + write_pinctrls(node) + write_fixed_partitions(node) + +def write_ranges(node): + # ranges property: edtlib knows the right #address-cells and + # #size-cells of parent and child, and can therefore pack the + # child & parent addresses and sizes correctly + + idx_vals = [] + path_id = node.z_path_id + + if node.ranges is not None: + idx_vals.append((f"{path_id}_RANGES_NUM", len(node.ranges))) + + for i,range in enumerate(node.ranges): + idx_vals.append((f"{path_id}_RANGES_IDX_{i}_EXISTS", 1)) + + if node.bus == "pcie": + idx_vals.append((f"{path_id}_RANGES_IDX_{i}_VAL_CHILD_BUS_FLAGS_EXISTS", 1)) + idx_macro = f"{path_id}_RANGES_IDX_{i}_VAL_CHILD_BUS_FLAGS" + idx_value = range.child_bus_addr >> ((range.child_bus_cells - 1) * 32) + idx_vals.append((idx_macro, + f"{idx_value} /* {hex(idx_value)} */")) + if range.child_bus_addr is not None: + idx_macro = f"{path_id}_RANGES_IDX_{i}_VAL_CHILD_BUS_ADDRESS" + if node.bus == "pcie": + idx_value = range.child_bus_addr & ((1 << (range.child_bus_cells - 1) * 32) - 1) + else: + idx_value = range.child_bus_addr + idx_vals.append((idx_macro, + f"{idx_value} /* {hex(idx_value)} */")) + if range.parent_bus_addr is not None: + idx_macro = f"{path_id}_RANGES_IDX_{i}_VAL_PARENT_BUS_ADDRESS" + idx_vals.append((idx_macro, + f"{range.parent_bus_addr} /* {hex(range.parent_bus_addr)} */")) + if range.length is not None: + idx_macro = f"{path_id}_RANGES_IDX_{i}_VAL_LENGTH" + idx_vals.append((idx_macro, + f"{range.length} /* {hex(range.length)} */")) + + for macro, val in idx_vals: + out_dt_define(macro, val) + + out_dt_define(f"{path_id}_FOREACH_RANGE(fn)", + " ".join(f"fn(DT_{path_id}, {i})" for i,range in enumerate(node.ranges))) + +def write_regs(node): + # reg property: edtlib knows the right #address-cells and + # #size-cells, and can therefore pack the register base addresses + # and sizes correctly + + idx_vals = [] + name_vals = [] + path_id = node.z_path_id + + if node.regs is not None: + idx_vals.append((f"{path_id}_REG_NUM", len(node.regs))) + + for i, reg in enumerate(node.regs): + idx_vals.append((f"{path_id}_REG_IDX_{i}_EXISTS", 1)) + if reg.addr is not None: + idx_macro = f"{path_id}_REG_IDX_{i}_VAL_ADDRESS" + idx_vals.append((idx_macro, + f"{reg.addr} /* {hex(reg.addr)} */")) + if reg.name: + name_macro = f"{path_id}_REG_NAME_{reg.name}_VAL_ADDRESS" + name_vals.append((name_macro, f"DT_{idx_macro}")) + + if reg.size is not None: + idx_macro = f"{path_id}_REG_IDX_{i}_VAL_SIZE" + idx_vals.append((idx_macro, + f"{reg.size} /* {hex(reg.size)} */")) + if reg.name: + name_macro = f"{path_id}_REG_NAME_{reg.name}_VAL_SIZE" + name_vals.append((name_macro, f"DT_{idx_macro}")) + + for macro, val in idx_vals: + out_dt_define(macro, val) + for macro, val in name_vals: + out_dt_define(macro, val) + +def write_interrupts(node): + # interrupts property: we have some hard-coded logic for interrupt + # mapping here. + # + # TODO: can we push map_arm_gic_irq_type() and + # encode_zephyr_multi_level_irq() out of Python and into C with + # macro magic in devicetree.h? + + def map_arm_gic_irq_type(irq, irq_num): + # Maps ARM GIC IRQ (type)+(index) combo to linear IRQ number + if "type" not in irq.data: + err(f"Expected binding for {irq.controller!r} to have 'type' in " + "interrupt-cells") + irq_type = irq.data["type"] + + if irq_type == 0: # GIC_SPI + return irq_num + 32 + if irq_type == 1: # GIC_PPI + return irq_num + 16 + err(f"Invalid interrupt type specified for {irq!r}") + + def encode_zephyr_multi_level_irq(irq, irq_num): + # See doc/reference/kernel/other/interrupts.rst for details + # on how this encoding works + + irq_ctrl = irq.controller + # Look for interrupt controller parent until we have none + while irq_ctrl.interrupts: + irq_num = (irq_num + 1) << 8 + if "irq" not in irq_ctrl.interrupts[0].data: + err(f"Expected binding for {irq_ctrl!r} to have 'irq' in " + "interrupt-cells") + irq_num |= irq_ctrl.interrupts[0].data["irq"] + irq_ctrl = irq_ctrl.interrupts[0].controller + return irq_num + + idx_vals = [] + name_vals = [] + path_id = node.z_path_id + + if node.interrupts is not None: + idx_vals.append((f"{path_id}_IRQ_NUM", len(node.interrupts))) + + for i, irq in enumerate(node.interrupts): + for cell_name, cell_value in irq.data.items(): + name = str2ident(cell_name) + + if cell_name == "irq": + if "arm,gic" in irq.controller.compats: + cell_value = map_arm_gic_irq_type(irq, cell_value) + cell_value = encode_zephyr_multi_level_irq(irq, cell_value) + + idx_vals.append((f"{path_id}_IRQ_IDX_{i}_EXISTS", 1)) + idx_macro = f"{path_id}_IRQ_IDX_{i}_VAL_{name}" + idx_vals.append((idx_macro, cell_value)) + idx_vals.append((idx_macro + "_EXISTS", 1)) + if irq.name: + name_macro = \ + f"{path_id}_IRQ_NAME_{str2ident(irq.name)}_VAL_{name}" + name_vals.append((name_macro, f"DT_{idx_macro}")) + name_vals.append((name_macro + "_EXISTS", 1)) + + for macro, val in idx_vals: + out_dt_define(macro, val) + for macro, val in name_vals: + out_dt_define(macro, val) + + +def write_compatibles(node): + # Writes a macro for each of the node's compatibles. We don't care + # about whether edtlib / Zephyr's binding language recognizes + # them. The compatibles the node provides are what is important. + + for compat in node.compats: + out_dt_define( + f"{node.z_path_id}_COMPAT_MATCHES_{str2ident(compat)}", 1) + + +def write_child_functions(node): + # Writes macro that are helpers that will call a macro/function + # for each child node. + + out_dt_define(f"{node.z_path_id}_FOREACH_CHILD(fn)", + " ".join(f"fn(DT_{child.z_path_id})" for child in + node.children.values())) + + out_dt_define(f"{node.z_path_id}_FOREACH_CHILD_VARGS(fn, ...)", + " ".join(f"fn(DT_{child.z_path_id}, __VA_ARGS__)" for child in + node.children.values())) + +def write_child_functions_status_okay(node): + # Writes macros that are helpers that will call a macro/function + # for each child node with status "okay". + + functions = '' + functions_args = '' + for child in node.children.values(): + if child.status == "okay": + functions = functions + f"fn(DT_{child.z_path_id}) " + functions_args = functions_args + f"fn(DT_{child.z_path_id}, " \ + "__VA_ARGS__) " + + out_dt_define(f"{node.z_path_id}_FOREACH_CHILD_STATUS_OKAY(fn)", functions) + out_dt_define(f"{node.z_path_id}_FOREACH_CHILD_STATUS_OKAY_VARGS(fn, ...)", + functions_args) + + +def write_status(node): + out_dt_define(f"{node.z_path_id}_STATUS_{str2ident(node.status)}", 1) + + +def write_pinctrls(node): + # Write special macros for pinctrl- and pinctrl-names properties. + + out_comment("Pin control (pinctrl-, pinctrl-names) properties:") + + out_dt_define(f"{node.z_path_id}_PINCTRL_NUM", len(node.pinctrls)) + + if not node.pinctrls: + return + + for pc_idx, pinctrl in enumerate(node.pinctrls): + out_dt_define(f"{node.z_path_id}_PINCTRL_IDX_{pc_idx}_EXISTS", 1) + + if not pinctrl.name: + continue + + name = pinctrl.name_as_token + + # Below we rely on the fact that edtlib ensures the + # pinctrl- properties are contiguous, start from 0, + # and contain only phandles. + out_dt_define(f"{node.z_path_id}_PINCTRL_IDX_{pc_idx}_TOKEN", name) + out_dt_define(f"{node.z_path_id}_PINCTRL_IDX_{pc_idx}_UPPER_TOKEN", name.upper()) + out_dt_define(f"{node.z_path_id}_PINCTRL_NAME_{name}_EXISTS", 1) + out_dt_define(f"{node.z_path_id}_PINCTRL_NAME_{name}_IDX", pc_idx) + for idx, ph in enumerate(pinctrl.conf_nodes): + out_dt_define(f"{node.z_path_id}_PINCTRL_NAME_{name}_IDX_{idx}_PH", + f"DT_{ph.z_path_id}") + + +def write_fixed_partitions(node): + # Macros for child nodes of each fixed-partitions node. + + if not (node.parent and "fixed-partitions" in node.parent.compats): + return + + global flash_area_num + out_comment("fixed-partitions identifier:") + out_dt_define(f"{node.z_path_id}_PARTITION_ID", flash_area_num) + flash_area_num += 1 + + +def write_vanilla_props(node): + # Writes macros for any and all properties defined in the + # "properties" section of the binding for the node. + # + # This does generate macros for special properties as well, like + # regs, etc. Just let that be rather than bothering to add + # never-ending amounts of special case code here to skip special + # properties. This function's macros can't conflict with + # write_special_props() macros, because they're in different + # namespaces. Special cases aren't special enough to break the rules. + + macro2val = {} + for prop_name, prop in node.props.items(): + prop_id = str2ident(prop_name) + macro = f"{node.z_path_id}_P_{prop_id}" + val = prop2value(prop) + if val is not None: + # DT_N__P_ + macro2val[macro] = val + + if prop.spec.type == 'string': + macro2val[macro + "_STRING_TOKEN"] = prop.val_as_token + macro2val[macro + "_STRING_UPPER_TOKEN"] = prop.val_as_token.upper() + + if prop.enum_index is not None: + # DT_N__P__ENUM_IDX + macro2val[macro + "_ENUM_IDX"] = prop.enum_index + spec = prop.spec + + if spec.enum_tokenizable: + as_token = prop.val_as_token + + # DT_N__P__ENUM_TOKEN + macro2val[macro + "_ENUM_TOKEN"] = as_token + + if spec.enum_upper_tokenizable: + # DT_N__P__ENUM_UPPER_TOKEN + macro2val[macro + "_ENUM_UPPER_TOKEN"] = as_token.upper() + + if "phandle" in prop.type: + macro2val.update(phandle_macros(prop, macro)) + elif "array" in prop.type: + # DT_N__P__IDX_ + # DT_N__P__IDX__EXISTS + for i, subval in enumerate(prop.val): + if isinstance(subval, str): + macro2val[macro + f"_IDX_{i}"] = quote_str(subval) + else: + macro2val[macro + f"_IDX_{i}"] = subval + macro2val[macro + f"_IDX_{i}_EXISTS"] = 1 + + if prop.type in FOREACH_PROP_ELEM_TYPES: + # DT_N__P__FOREACH_PROP_ELEM + macro2val[f"{macro}_FOREACH_PROP_ELEM(fn)"] = \ + ' \\\n\t'.join(f'fn(DT_{node.z_path_id}, {prop_id}, {i})' + for i in range(len(prop.val))) + + macro2val[f"{macro}_FOREACH_PROP_ELEM_VARGS(fn, ...)"] = \ + ' \\\n\t'.join(f'fn(DT_{node.z_path_id}, {prop_id}, {i},' + ' __VA_ARGS__)' + for i in range(len(prop.val))) + + plen = prop_len(prop) + if plen is not None: + # DT_N__P__LEN + macro2val[macro + "_LEN"] = plen + + macro2val[f"{macro}_EXISTS"] = 1 + + if macro2val: + out_comment("Generic property macros:") + for macro, val in macro2val.items(): + out_dt_define(macro, val) + else: + out_comment("(No generic property macros)") + + +def write_dep_info(node): + # Write dependency-related information about the node. + + def fmt_dep_list(dep_list): + if dep_list: + # Sort the list by dependency ordinal for predictability. + sorted_list = sorted(dep_list, key=lambda node: node.dep_ordinal) + return "\\\n\t" + \ + " \\\n\t".join(f"{n.dep_ordinal}, /* {n.path} */" + for n in sorted_list) + else: + return "/* nothing */" + + out_comment("Node's dependency ordinal:") + out_dt_define(f"{node.z_path_id}_ORD", node.dep_ordinal) + + out_comment("Ordinals for what this node depends on directly:") + out_dt_define(f"{node.z_path_id}_REQUIRES_ORDS", + fmt_dep_list(node.depends_on)) + + out_comment("Ordinals for what depends directly on this node:") + out_dt_define(f"{node.z_path_id}_SUPPORTS_ORDS", + fmt_dep_list(node.required_by)) + + +def prop2value(prop): + # Gets the macro value for property 'prop', if there is + # a single well-defined C rvalue that it can be represented as. + # Returns None if there isn't one. + + if prop.type == "string": + return quote_str(prop.val) + + if prop.type == "int": + return prop.val + + if prop.type == "boolean": + return 1 if prop.val else 0 + + if prop.type in ["array", "uint8-array"]: + return list2init(f"{val} /* {hex(val)} */" for val in prop.val) + + if prop.type == "string-array": + return list2init(quote_str(val) for val in prop.val) + + # phandle, phandles, phandle-array, path, compound: nothing + return None + + +def prop_len(prop): + # Returns the property's length if and only if we should generate + # a _LEN macro for the property. Otherwise, returns None. + # + # This deliberately excludes ranges, dma-ranges, reg and interrupts. + # While they have array type, their lengths as arrays are + # basically nonsense semantically due to #address-cells and + # #size-cells for "reg", #interrupt-cells for "interrupts" + # and #address-cells, #size-cells and the #address-cells from the + # parent node for "ranges" and "dma-ranges". + # + # We have special purpose macros for the number of register blocks + # / interrupt specifiers. Excluding them from this list means + # DT_PROP_LEN(node_id, ...) fails fast at the devicetree.h layer + # with a build error. This forces users to switch to the right + # macros. + + if prop.type == "phandle": + return 1 + + if (prop.type in ["array", "uint8-array", "string-array", + "phandles", "phandle-array"] and + prop.name not in ["ranges", "dma-ranges", "reg", "interrupts"]): + return len(prop.val) + + return None + + +def phandle_macros(prop, macro): + # Returns a dict of macros for phandle or phandles property 'prop'. + # + # The 'macro' argument is the N__P_ bit. + # + # These are currently special because we can't serialize their + # values without using label properties, which we're trying to get + # away from needing in Zephyr. (Label properties are great for + # humans, but have drawbacks for code size and boot time.) + # + # The names look a bit weird to make it easier for devicetree.h + # to use the same macros for phandle, phandles, and phandle-array. + + ret = {} + + if prop.type == "phandle": + # A phandle is treated as a phandles with fixed length 1. + ret[f"{macro}"] = f"DT_{prop.val.z_path_id}" + ret[f"{macro}_IDX_0"] = f"DT_{prop.val.z_path_id}" + ret[f"{macro}_IDX_0_PH"] = f"DT_{prop.val.z_path_id}" + ret[f"{macro}_IDX_0_EXISTS"] = 1 + elif prop.type == "phandles": + for i, node in enumerate(prop.val): + ret[f"{macro}_IDX_{i}"] = f"DT_{node.z_path_id}" + ret[f"{macro}_IDX_{i}_PH"] = f"DT_{node.z_path_id}" + ret[f"{macro}_IDX_{i}_EXISTS"] = 1 + elif prop.type == "phandle-array": + for i, entry in enumerate(prop.val): + if entry is None: + # Unspecified element. The phandle-array at this index + # does not point at a ControllerAndData value, but + # subsequent indices in the array may. + ret[f"{macro}_IDX_{i}_EXISTS"] = 0 + continue + + ret.update(controller_and_data_macros(entry, i, macro)) + + return ret + + +def controller_and_data_macros(entry, i, macro): + # Helper procedure used by phandle_macros(). + # + # Its purpose is to write the "controller" (i.e. label property of + # the phandle's node) and associated data macros for a + # ControllerAndData. + + ret = {} + data = entry.data + + # DT_N__P__IDX__EXISTS + ret[f"{macro}_IDX_{i}_EXISTS"] = 1 + # DT_N__P__IDX__PH + ret[f"{macro}_IDX_{i}_PH"] = f"DT_{entry.controller.z_path_id}" + # DT_N__P__IDX__VAL_ + for cell, val in data.items(): + ret[f"{macro}_IDX_{i}_VAL_{str2ident(cell)}"] = val + ret[f"{macro}_IDX_{i}_VAL_{str2ident(cell)}_EXISTS"] = 1 + + if not entry.name: + return ret + + name = str2ident(entry.name) + # DT_N__P__IDX__EXISTS + ret[f"{macro}_IDX_{i}_EXISTS"] = 1 + # DT_N__P__IDX__NAME + ret[f"{macro}_IDX_{i}_NAME"] = quote_str(entry.name) + # DT_N__P__NAME__PH + ret[f"{macro}_NAME_{name}_PH"] = f"DT_{entry.controller.z_path_id}" + # DT_N__P__NAME__EXISTS + ret[f"{macro}_NAME_{name}_EXISTS"] = 1 + # DT_N__P__NAME__VAL_ + for cell, val in data.items(): + cell_ident = str2ident(cell) + ret[f"{macro}_NAME_{name}_VAL_{cell_ident}"] = \ + f"DT_{macro}_IDX_{i}_VAL_{cell_ident}" + ret[f"{macro}_NAME_{name}_VAL_{cell_ident}_EXISTS"] = 1 + + return ret + + +def write_chosen(edt): + # Tree-wide information such as chosen nodes is printed here. + + out_comment("Chosen nodes\n") + chosen = {} + for name, node in edt.chosen_nodes.items(): + chosen[f"DT_CHOSEN_{str2ident(name)}"] = f"DT_{node.z_path_id}" + chosen[f"DT_CHOSEN_{str2ident(name)}_EXISTS"] = 1 + max_len = max(map(len, chosen), default=0) + for macro, value in chosen.items(): + out_define(macro, value, width=max_len) + + +def write_global_compat_info(edt): + # Tree-wide information related to each compatible, such as number + # of instances with status "okay", is printed here. + + n_okay_macros = {} + for_each_macros = {} + compat2buses = defaultdict(list) # just for "okay" nodes + for compat, okay_nodes in edt.compat2okay.items(): + for node in okay_nodes: + bus = node.on_bus + if bus is not None and bus not in compat2buses[compat]: + compat2buses[compat].append(bus) + + ident = str2ident(compat) + n_okay_macros[f"DT_N_INST_{ident}_NUM_OKAY"] = len(okay_nodes) + + # Helpers for non-INST for-each macros that take node + # identifiers as arguments. + for_each_macros[f"DT_FOREACH_OKAY_{ident}(fn)"] = \ + " ".join(f"fn(DT_{node.z_path_id})" + for node in okay_nodes) + for_each_macros[f"DT_FOREACH_OKAY_VARGS_{ident}(fn, ...)"] = \ + " ".join(f"fn(DT_{node.z_path_id}, __VA_ARGS__)" + for node in okay_nodes) + + # Helpers for INST versions of for-each macros, which take + # instance numbers. We emit separate helpers for these because + # avoiding an intermediate node_id --> instance number + # conversion in the preprocessor helps to keep the macro + # expansions simpler. That hopefully eases debugging. + for_each_macros[f"DT_FOREACH_OKAY_INST_{ident}(fn)"] = \ + " ".join(f"fn({edt.compat2nodes[compat].index(node)})" + for node in okay_nodes) + for_each_macros[f"DT_FOREACH_OKAY_INST_VARGS_{ident}(fn, ...)"] = \ + " ".join(f"fn({edt.compat2nodes[compat].index(node)}, __VA_ARGS__)" + for node in okay_nodes) + + for compat, nodes in edt.compat2nodes.items(): + for node in nodes: + if compat == "fixed-partitions": + for child in node.children.values(): + if "label" in child.props: + label = child.props["label"].val + macro = f"COMPAT_{str2ident(compat)}_LABEL_{str2ident(label)}" + val = f"DT_{child.z_path_id}" + + out_dt_define(macro, val) + out_dt_define(macro + "_EXISTS", 1) + + out_comment('Macros for compatibles with status "okay" nodes\n') + for compat, okay_nodes in edt.compat2okay.items(): + if okay_nodes: + out_define(f"DT_COMPAT_HAS_OKAY_{str2ident(compat)}", 1) + + out_comment('Macros for status "okay" instances of each compatible\n') + for macro, value in n_okay_macros.items(): + out_define(macro, value) + for macro, value in for_each_macros.items(): + out_define(macro, value) + + out_comment('Bus information for status "okay" nodes of each compatible\n') + for compat, buses in compat2buses.items(): + for bus in buses: + out_define( + f"DT_COMPAT_{str2ident(compat)}_BUS_{str2ident(bus)}", 1) + +def str2ident(s): + # Converts 's' to a form suitable for (part of) an identifier + + return re.sub('[-,.@/+]', '_', s.lower()) + + +def list2init(l): + # Converts 'l', a Python list (or iterable), to a C array initializer + + return "{" + ", ".join(l) + "}" + + +def out_dt_define(macro, val, width=None, deprecation_msg=None): + # Writes "#define DT_ " to the header file + # + # The macro will be left-justified to 'width' characters if that + # is specified, and the value will follow immediately after in + # that case. Otherwise, this function decides how to add + # whitespace between 'macro' and 'val'. + # + # If a 'deprecation_msg' string is passed, the generated identifiers will + # generate a warning if used, via __WARN()). + # + # Returns the full generated macro for 'macro', with leading "DT_". + ret = "DT_" + macro + out_define(ret, val, width=width, deprecation_msg=deprecation_msg) + return ret + + +def out_define(macro, val, width=None, deprecation_msg=None): + # Helper for out_dt_define(). Outputs "#define ", + # adds a deprecation message if given, and allocates whitespace + # unless told not to. + + warn = fr' __WARN("{deprecation_msg}")' if deprecation_msg else "" + + if width: + s = f"#define {macro.ljust(width)}{warn} {val}" + else: + s = f"#define {macro}{warn} {val}" + + print(s, file=header_file) + + +def out_comment(s, blank_before=True): + # Writes 's' as a comment to the header and configuration file. 's' is + # allowed to have multiple lines. blank_before=True adds a blank line + # before the comment. + + if blank_before: + print(file=header_file) + + if "\n" in s: + # Format multi-line comments like + # + # /* + # * first line + # * second line + # * + # * empty line before this line + # */ + res = ["/*"] + for line in s.splitlines(): + # Avoid an extra space after '*' for empty lines. They turn red in + # Vim if space error checking is on, which is annoying. + res.append(" *" if not line.strip() else " * " + line) + res.append(" */") + print("\n".join(res), file=header_file) + else: + # Format single-line comments like + # + # /* foo bar */ + print("/* " + s + " */", file=header_file) + + +def escape(s): + # Backslash-escapes any double quotes and backslashes in 's' + + # \ must be escaped before " to avoid double escaping + return s.replace("\\", "\\\\").replace('"', '\\"') + + +def quote_str(s): + # Puts quotes around 's' and escapes any double quotes and + # backslashes within it + + return f'"{escape(s)}"' + + +def write_pickled_edt(edt, out_file): + # Writes the edt object in pickle format to out_file. + + with open(out_file, 'wb') as f: + # Pickle protocol version 4 is the default as of Python 3.8 + # and was introduced in 3.4, so it is both available and + # recommended on all versions of Python that Zephyr supports + # (at time of writing, Python 3.6 was Zephyr's minimum + # version, and 3.8 the most recent CPython release). + # + # Using a common protocol version here will hopefully avoid + # reproducibility issues in different Python installations. + pickle.dump(edt, f, protocol=4) + + +def err(s): + raise Exception(s) + + +if __name__ == "__main__": + main() diff --git a/Tools/dts/gen_dts_cmake.py b/Tools/dts/gen_dts_cmake.py new file mode 100755 index 0000000000..f86d2a875e --- /dev/null +++ b/Tools/dts/gen_dts_cmake.py @@ -0,0 +1,151 @@ +#!/usr/bin/env python3 + +# Copyright (c) 2021 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +''' +This script uses edtlib and the devicetree data in the build directory +to generate a CMake file which contains devicetree data. + +That data can then be used in the rest of the build system. + +The generated CMake file looks like this: + + add_custom_target(devicetree_target) + set_target_properties(devicetree_target PROPERTIES + "DT_PROP|/soc|compatible" "vnd,soc;") + ... + +It defines a special CMake target, and saves various values in the +devicetree as CMake target properties. + +Be careful: + + "Property" here can refer to a CMake target property or a + DTS property. DTS property values are stored inside + CMake target properties, along with other devicetree data. + +The build system includes this generated file early on, so +devicetree values can be used at CMake processing time. + +Accss is not done directly, but with Zephyr CMake extension APIs, +like this: + + # sets 'compat' to "vnd,soc" in CMake + dt_prop(compat PATH "/soc" PROPERTY compatible INDEX 0) + +This is analogous to how DTS values are encoded as C macros, +which can be read in source code using C APIs like +DT_PROP(node_id, foo) from devicetree.h. +''' + +import argparse +import os +import pickle +import sys + +sys.path.append(os.path.join(os.path.dirname(__file__), 'python-devicetree', + 'src')) + + +def parse_args(): + # Returns parsed command-line arguments + + parser = argparse.ArgumentParser() + parser.add_argument("--cmake-out", required=True, + help="path to write the CMake property file") + parser.add_argument("--edt-pickle", required=True, + help="path to read the pickled edtlib.EDT object from") + + return parser.parse_args() + + +def main(): + args = parse_args() + + with open(args.edt_pickle, 'rb') as f: + edt = pickle.load(f) + + # In what looks like an undocumented implementation detail, CMake + # target properties are stored in a C++ standard library map whose + # keys and values are each arbitrary strings, so we can use + # whatever we want as target property names. + # + # We therefore use '|' as a field separator character below within + # because it's not a valid character in DTS node paths or property + # names. This lets us store the "real" paths and property names + # without conversion to lowercase-and-underscores like we have to + # do in C. + # + # If CMake adds restrictions on target property names later, we + # can just tweak the generated file to use a more restrictive + # property encoding, perhaps reusing the same style documented in + # macros.bnf for C macros. + + cmake_props = [] + chosen_nodes = edt.chosen_nodes + for node in chosen_nodes: + path = chosen_nodes[node].path + cmake_props.append(f'"DT_CHOSEN|{node}" "{path}"') + + # The separate loop over edt.nodes here is meant to keep + # all of the alias-related properties in one place. + for node in edt.nodes: + path = node.path + for alias in node.aliases: + cmake_props.append(f'"DT_ALIAS|{alias}" "{path}"') + + for node in edt.nodes: + cmake_props.append(f'"DT_NODE|{node.path}" TRUE') + + for label in node.labels: + cmake_props.append(f'"DT_NODELABEL|{label}" "{node.path}"') + + for item in node.props: + # We currently do not support phandles for edt -> cmake conversion. + if "phandle" not in node.props[item].type: + if "array" in node.props[item].type: + # Convert array to CMake list + cmake_value = '' + for val in node.props[item].val: + cmake_value = f'{cmake_value}{val};' + else: + cmake_value = node.props[item].val + + # Encode node's property 'item' as a CMake target property + # with a name like 'DT_PROP||'. + cmake_prop = f'DT_PROP|{node.path}|{item}' + cmake_props.append(f'"{cmake_prop}" "{cmake_value}"') + + if node.regs is not None: + cmake_props.append(f'"DT_REG|{node.path}|NUM" "{len(node.regs)}"') + cmake_addr = '' + cmake_size = '' + + for reg in node.regs: + if reg.addr is None: + cmake_addr = f'{cmake_addr}NONE;' + else: + cmake_addr = f'{cmake_addr}{hex(reg.addr)};' + + if reg.size is None: + cmake_size = f'{cmake_size}NONE;' + else: + cmake_size = f'{cmake_size}{hex(reg.size)};' + + cmake_props.append(f'"DT_REG|{node.path}|ADDR" "{cmake_addr}"') + cmake_props.append(f'"DT_REG|{node.path}|SIZE" "{cmake_size}"') + + with open(args.cmake_out, "w", encoding="utf-8") as cmake_file: + print('add_custom_target(devicetree_target)', file=cmake_file) + print(file=cmake_file) + + for prop in cmake_props: + print( + f'set_target_properties(devicetree_target PROPERTIES {prop})', + file=cmake_file + ) + + +if __name__ == "__main__": + main() diff --git a/Tools/dts/python-devicetree/.gitignore b/Tools/dts/python-devicetree/.gitignore new file mode 100644 index 0000000000..20574a3456 --- /dev/null +++ b/Tools/dts/python-devicetree/.gitignore @@ -0,0 +1,7 @@ +dist/ +src/devicetree.egg-info/ +build/ +devicetree.egg-info/ +__pycache__/ +.tox/ +doc/build/ diff --git a/Tools/dts/python-devicetree/requirements.txt b/Tools/dts/python-devicetree/requirements.txt new file mode 100644 index 0000000000..f827ad8d1d --- /dev/null +++ b/Tools/dts/python-devicetree/requirements.txt @@ -0,0 +1 @@ +sphinx_rtd_theme # docs diff --git a/Tools/dts/python-devicetree/setup.py b/Tools/dts/python-devicetree/setup.py new file mode 100644 index 0000000000..590ba31510 --- /dev/null +++ b/Tools/dts/python-devicetree/setup.py @@ -0,0 +1,42 @@ +# Copyright (c) 2021, Nordic Semiconductor ASA +# +# SPDX-License-Identifier: Apache-2.0 + +import setuptools + +long_description = ''' +Placeholder +=========== + +This is just a placeholder for moving Zephyr's devicetree libraries +to PyPI. +''' + +version = '0.0.1' + +setuptools.setup( + # TBD, just use these for now. + author='Zephyr Project', + author_email='devel@lists.zephyrproject.org', + + name='devicetree', + version=version, + description='Python libraries for devicetree', + long_description=long_description, + # http://docutils.sourceforge.net/FAQ.html#what-s-the-official-mime-type-for-restructuredtext-data + long_description_content_type="text/x-rst", + url='https://github.com/zephyrproject-rtos/python-devicetree', + packages=setuptools.find_packages(where='src'), + package_dir={'': 'src'}, + classifiers=[ + 'Programming Language :: Python :: 3 :: Only', + 'License :: OSI Approved :: Apache Software License', + 'Operating System :: POSIX :: Linux', + 'Operating System :: MacOS :: MacOS X', + 'Operating System :: Microsoft :: Windows', + ], + install_requires=[ + 'PyYAML>=5.1', + ], + python_requires='>=3.6', +) diff --git a/Tools/dts/python-devicetree/src/devicetree/__init__.py b/Tools/dts/python-devicetree/src/devicetree/__init__.py new file mode 100644 index 0000000000..e9a568330b --- /dev/null +++ b/Tools/dts/python-devicetree/src/devicetree/__init__.py @@ -0,0 +1,4 @@ +# Copyright (c) 2021 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +__all__ = ['edtlib', 'dtlib'] diff --git a/Tools/dts/python-devicetree/src/devicetree/dtlib.py b/Tools/dts/python-devicetree/src/devicetree/dtlib.py new file mode 100644 index 0000000000..dc337a671f --- /dev/null +++ b/Tools/dts/python-devicetree/src/devicetree/dtlib.py @@ -0,0 +1,2022 @@ +# Copyright (c) 2019, Nordic Semiconductor +# SPDX-License-Identifier: BSD-3-Clause + +# Tip: You can view just the documentation with 'pydoc3 devicetree.dtlib' + +""" +A library for extracting information from .dts (devicetree) files. See the +documentation for the DT and Node classes for more information. + +The top-level entry point of the library is the DT class. DT.__init__() takes a +.dts file to parse and a list of directories to search for any /include/d +files. +""" + +import collections +import enum +import errno +import os +import re +import string +import sys +import textwrap +from typing import Any, Dict, Iterable, List, \ + NamedTuple, NoReturn, Optional, Tuple, Union + +# NOTE: tests/test_dtlib.py is the test suite for this library. + +class DTError(Exception): + "Exception raised for devicetree-related errors" + +class Node: + r""" + Represents a node in the devicetree ('node-name { ... };'). + + These attributes are available on Node instances: + + name: + The name of the node (a string). + + unit_addr: + The portion after the '@' in the node's name, or the empty string if the + name has no '@' in it. + + Note that this is a string. Run int(node.unit_addr, 16) to get an + integer. + + props: + A collections.OrderedDict that maps the properties defined on the node to + their values. 'props' is indexed by property name (a string), and values + are Property objects. + + To convert property values to Python numbers or strings, use + dtlib.to_num(), dtlib.to_nums(), or dtlib.to_string(). + + Property values are represented as 'bytes' arrays to support the full + generality of DTS, which allows assignments like + + x = "foo", < 0x12345678 >, [ 9A ]; + + This gives x the value b"foo\0\x12\x34\x56\x78\x9A". Numbers in DTS are + stored in big-endian format. + + nodes: + A collections.OrderedDict containing the subnodes of the node, indexed by + name. + + labels: + A list with all labels pointing to the node, in the same order as the + labels appear, but with duplicates removed. + + 'label_1: label_2: node { ... };' gives 'labels' the value + ["label_1", "label_2"]. + + parent: + The parent Node of the node. 'None' for the root node. + + path: + The path to the node as a string, e.g. "/foo/bar". + + dt: + The DT instance this node belongs to. + """ + + # + # Public interface + # + + def __init__(self, name: str, parent: Optional['Node'], dt: 'DT'): + """ + Node constructor. Not meant to be called directly by clients. + """ + self.name = name + self.parent = parent + self.dt = dt + + if name.count("@") > 1: + dt._parse_error("multiple '@' in node name") + if not name == "/": + for char in name: + if char not in _nodename_chars: + dt._parse_error(f"{self.path}: bad character '{char}' " + "in node name") + + self.props: Dict[str, 'Property'] = collections.OrderedDict() + self.nodes: Dict[str, 'Node'] = collections.OrderedDict() + self.labels: List[str] = [] + self._omit_if_no_ref = False + self._is_referenced = False + + @property + def unit_addr(self) -> str: + """ + See the class documentation. + """ + return self.name.partition("@")[2] + + @property + def path(self) -> str: + """ + See the class documentation. + """ + node_names = [] + + cur = self + while cur.parent: + node_names.append(cur.name) + cur = cur.parent + + return "/" + "/".join(reversed(node_names)) + + def node_iter(self) -> Iterable['Node']: + """ + Returns a generator for iterating over the node and its children, + recursively. + + For example, this will iterate over all nodes in the tree (like + dt.node_iter()). + + for node in dt.root.node_iter(): + ... + """ + yield self + for node in self.nodes.values(): + yield from node.node_iter() + + def _get_prop(self, name: str) -> 'Property': + # Returns the property named 'name' on the node, creating it if it + # doesn't already exist + + prop = self.props.get(name) + if not prop: + prop = Property(self, name) + self.props[name] = prop + return prop + + def _del(self) -> None: + # Removes the node from the tree + self.parent.nodes.pop(self.name) # type: ignore + + def __str__(self): + """ + Returns a DTS representation of the node. Called automatically if the + node is print()ed. + """ + s = "".join(label + ": " for label in self.labels) + + s += f"{self.name} {{\n" + + for prop in self.props.values(): + s += "\t" + str(prop) + "\n" + + for child in self.nodes.values(): + s += textwrap.indent(child.__str__(), "\t") + "\n" + + s += "};" + + return s + + def __repr__(self): + """ + Returns some information about the Node instance. Called automatically + if the Node instance is evaluated. + """ + return f"" + +# See Property.type +class Type(enum.IntEnum): + EMPTY = 0 + BYTES = 1 + NUM = 2 + NUMS = 3 + STRING = 4 + STRINGS = 5 + PATH = 6 + PHANDLE = 7 + PHANDLES = 8 + PHANDLES_AND_NUMS = 9 + COMPOUND = 10 + +class _MarkerType(enum.IntEnum): + # Types of markers in property values + + # References + PATH = 0 # &foo + PHANDLE = 1 # <&foo> + LABEL = 2 # foo: <1 2 3> + + # Start of data blocks of specific type + UINT8 = 3 # [00 01 02] (and also used for /incbin/) + UINT16 = 4 # /bits/ 16 <1 2 3> + UINT32 = 5 # <1 2 3> + UINT64 = 6 # /bits/ 64 <1 2 3> + STRING = 7 # "foo" + +class Property: + """ + Represents a property ('x = ...'). + + These attributes are available on Property instances: + + name: + The name of the property (a string). + + value: + The value of the property, as a 'bytes' string. Numbers are stored in + big-endian format, and strings are null-terminated. Putting multiple + comma-separated values in an assignment (e.g., 'x = < 1 >, "foo"') will + concatenate the values. + + See the to_*() methods for converting the value to other types. + + type: + The type of the property, inferred from the syntax used in the + assignment. This is one of the following constants (with example + assignments): + + Assignment | Property.type + ----------------------------+------------------------ + foo; | dtlib.Type.EMPTY + foo = []; | dtlib.Type.BYTES + foo = [01 02]; | dtlib.Type.BYTES + foo = /bits/ 8 <1>; | dtlib.Type.BYTES + foo = <1>; | dtlib.Type.NUM + foo = <>; | dtlib.Type.NUMS + foo = <1 2 3>; | dtlib.Type.NUMS + foo = <1 2>, <3>; | dtlib.Type.NUMS + foo = "foo"; | dtlib.Type.STRING + foo = "foo", "bar"; | dtlib.Type.STRINGS + foo = <&l>; | dtlib.Type.PHANDLE + foo = <&l1 &l2 &l3>; | dtlib.Type.PHANDLES + foo = <&l1 &l2>, <&l3>; | dtlib.Type.PHANDLES + foo = <&l1 1 2 &l2 3 4>; | dtlib.Type.PHANDLES_AND_NUMS + foo = <&l1 1 2>, <&l2 3 4>; | dtlib.Type.PHANDLES_AND_NUMS + foo = &l; | dtlib.Type.PATH + *Anything else* | dtlib.Type.COMPOUND + + *Anything else* includes properties mixing phandle (<&label>) and node + path (&label) references with other data. + + Data labels in the property value do not influence the type. + + labels: + A list with all labels pointing to the property, in the same order as the + labels appear, but with duplicates removed. + + 'label_1: label2: x = ...' gives 'labels' the value + {"label_1", "label_2"}. + + offset_labels: + A dictionary that maps any labels within the property's value to their + offset, in bytes. For example, 'x = < 0 label_1: 1 label_2: >' gives + 'offset_labels' the value {"label_1": 4, "label_2": 8}. + + Iteration order will match the order of the labels on Python versions + that preserve dict insertion order. + + node: + The Node the property is on. + """ + + # + # Public interface + # + + def __init__(self, node: Node, name: str): + if "@" in name: + node.dt._parse_error("'@' is only allowed in node names") + + self.name = name + self.node = node + self.value = b"" + self.labels: List[str] = [] + self._label_offset_lst: List[Tuple[str, int]] = [] + # We have to wait to set this until later, when we've got + # the entire tree. + self.offset_labels: Dict[str, int] = {} + + # A list of [offset, label, type] lists (sorted by offset), + # giving the locations of references within the value. 'type' + # is either _MarkerType.PATH, for a node path reference, + # _MarkerType.PHANDLE, for a phandle reference, or + # _MarkerType.LABEL, for a label on/within data. Node paths + # and phandles need to be patched in after parsing. + self._markers: List[List] = [] + + def to_num(self, signed=False) -> int: + """ + Returns the value of the property as a number. + + Raises DTError if the property was not assigned with this syntax (has + Property.type Type.NUM): + + foo = < 1 >; + + signed (default: False): + If True, the value will be interpreted as signed rather than + unsigned. + """ + if self.type is not Type.NUM: + _err("expected property '{0}' on {1} in {2} to be assigned with " + "'{0} = < (number) >;', not '{3}'" + .format(self.name, self.node.path, self.node.dt.filename, + self)) + + return int.from_bytes(self.value, "big", signed=signed) + + def to_nums(self, signed=False) -> List[int]: + """ + Returns the value of the property as a list of numbers. + + Raises DTError if the property was not assigned with this syntax (has + Property.type Type.NUM or Type.NUMS): + + foo = < 1 2 ... >; + + signed (default: False): + If True, the values will be interpreted as signed rather than + unsigned. + """ + if self.type not in (Type.NUM, Type.NUMS): + _err("expected property '{0}' on {1} in {2} to be assigned with " + "'{0} = < (number) (number) ... >;', not '{3}'" + .format(self.name, self.node.path, self.node.dt.filename, + self)) + + return [int.from_bytes(self.value[i:i + 4], "big", signed=signed) + for i in range(0, len(self.value), 4)] + + def to_bytes(self) -> bytes: + """ + Returns the value of the property as a raw 'bytes', like + Property.value, except with added type checking. + + Raises DTError if the property was not assigned with this syntax (has + Property.type Type.BYTES): + + foo = [ 01 ... ]; + """ + if self.type is not Type.BYTES: + _err("expected property '{0}' on {1} in {2} to be assigned with " + "'{0} = [ (byte) (byte) ... ];', not '{3}'" + .format(self.name, self.node.path, self.node.dt.filename, + self)) + + return self.value + + def to_string(self) -> str: + """ + Returns the value of the property as a string. + + Raises DTError if the property was not assigned with this syntax (has + Property.type Type.STRING): + + foo = "string"; + + This function might also raise UnicodeDecodeError if the string is + not valid UTF-8. + """ + if self.type is not Type.STRING: + _err("expected property '{0}' on {1} in {2} to be assigned with " + "'{0} = \"string\";', not '{3}'" + .format(self.name, self.node.path, self.node.dt.filename, + self)) + + try: + ret = self.value.decode("utf-8")[:-1] # Strip null + except UnicodeDecodeError: + _err(f"value of property '{self.name}' ({self.value!r}) " + f"on {self.node.path} in {self.node.dt.filename} " + "is not valid UTF-8") + + return ret # The separate 'return' appeases the type checker. + + def to_strings(self) -> List[str]: + """ + Returns the value of the property as a list of strings. + + Raises DTError if the property was not assigned with this syntax (has + Property.type Type.STRING or Type.STRINGS): + + foo = "string", "string", ... ; + + Also raises DTError if any of the strings are not valid UTF-8. + """ + if self.type not in (Type.STRING, Type.STRINGS): + _err("expected property '{0}' on {1} in {2} to be assigned with " + "'{0} = \"string\", \"string\", ... ;', not '{3}'" + .format(self.name, self.node.path, self.node.dt.filename, + self)) + + try: + ret = self.value.decode("utf-8").split("\0")[:-1] + except UnicodeDecodeError: + _err(f"value of property '{self.name}' ({self.value!r}) " + f"on {self.node.path} in {self.node.dt.filename} " + "is not valid UTF-8") + + return ret # The separate 'return' appeases the type checker. + + def to_node(self) -> Node: + """ + Returns the Node the phandle in the property points to. + + Raises DTError if the property was not assigned with this syntax (has + Property.type Type.PHANDLE). + + foo = < &bar >; + """ + if self.type is not Type.PHANDLE: + _err("expected property '{0}' on {1} in {2} to be assigned with " + "'{0} = < &foo >;', not '{3}'" + .format(self.name, self.node.path, self.node.dt.filename, + self)) + + return self.node.dt.phandle2node[int.from_bytes(self.value, "big")] + + def to_nodes(self) -> List[Node]: + """ + Returns a list with the Nodes the phandles in the property point to. + + Raises DTError if the property value contains anything other than + phandles. All of the following are accepted: + + foo = < > + foo = < &bar >; + foo = < &bar &baz ... >; + foo = < &bar ... >, < &baz ... >; + """ + def type_ok(): + if self.type in (Type.PHANDLE, Type.PHANDLES): + return True + # Also accept 'foo = < >;' + return self.type is Type.NUMS and not self.value + + if not type_ok(): + _err("expected property '{0}' on {1} in {2} to be assigned with " + "'{0} = < &foo &bar ... >;', not '{3}'" + .format(self.name, self.node.path, + self.node.dt.filename, self)) + + return [self.node.dt.phandle2node[int.from_bytes(self.value[i:i + 4], + "big")] + for i in range(0, len(self.value), 4)] + + def to_path(self) -> Node: + """ + Returns the Node referenced by the path stored in the property. + + Raises DTError if the property was not assigned with either of these + syntaxes (has Property.type Type.PATH or Type.STRING): + + foo = &bar; + foo = "/bar"; + + For the second case, DTError is raised if the path does not exist. + """ + if self.type not in (Type.PATH, Type.STRING): + _err("expected property '{0}' on {1} in {2} to be assigned with " + "either '{0} = &foo' or '{0} = \"/path/to/node\"', not '{3}'" + .format(self.name, self.node.path, self.node.dt.filename, + self)) + + try: + path = self.value.decode("utf-8")[:-1] + except UnicodeDecodeError: + _err(f"value of property '{self.name}' ({self.value!r}) " + f"on {self.node.path} in {self.node.dt.filename} " + "is not valid UTF-8") + + try: + ret = self.node.dt.get_node(path) + except DTError: + _err(f"property '{self.name}' on {self.node.path} in " + f"{self.node.dt.filename} points to the non-existent node " + f'"{path}"') + + return ret # The separate 'return' appeases the type checker. + + @property + def type(self) -> int: + """ + See the class docstring. + """ + # Data labels (e.g. 'foo = label: <3>') are irrelevant, so filter them + # out + types = [marker[1] for marker in self._markers + if marker[1] != _MarkerType.LABEL] + + if not types: + return Type.EMPTY + + if types == [_MarkerType.UINT8]: + return Type.BYTES + + if types == [_MarkerType.UINT32]: + return Type.NUM if len(self.value) == 4 else Type.NUMS + + # Treat 'foo = <1 2 3>, <4 5>, ...' as Type.NUMS too + if set(types) == {_MarkerType.UINT32}: + return Type.NUMS + + if set(types) == {_MarkerType.STRING}: + return Type.STRING if len(types) == 1 else Type.STRINGS + + if types == [_MarkerType.PATH]: + return Type.PATH + + if types == [_MarkerType.UINT32, _MarkerType.PHANDLE] and \ + len(self.value) == 4: + return Type.PHANDLE + + if set(types) == {_MarkerType.UINT32, _MarkerType.PHANDLE}: + if len(self.value) == 4*types.count(_MarkerType.PHANDLE): + # Array with just phandles in it + return Type.PHANDLES + # Array with both phandles and numbers + return Type.PHANDLES_AND_NUMS + + return Type.COMPOUND + + def __str__(self): + s = "".join(label + ": " for label in self.labels) + self.name + if not self.value: + return s + ";" + + s += " =" + + for i, (pos, marker_type, ref) in enumerate(self._markers): + if i < len(self._markers) - 1: + next_marker = self._markers[i + 1] + else: + next_marker = None + + # End of current marker + end = next_marker[0] if next_marker else len(self.value) + + if marker_type is _MarkerType.STRING: + # end - 1 to strip off the null terminator + s += f' "{_decode_and_escape(self.value[pos:end - 1])}"' + if end != len(self.value): + s += "," + elif marker_type is _MarkerType.PATH: + s += " &" + ref + if end != len(self.value): + s += "," + else: + # <> or [] + + if marker_type is _MarkerType.LABEL: + s += f" {ref}:" + elif marker_type is _MarkerType.PHANDLE: + s += " &" + ref + pos += 4 + # Subtle: There might be more data between the phandle and + # the next marker, so we can't 'continue' here + else: # marker_type is _MarkerType.UINT* + elm_size = _TYPE_TO_N_BYTES[marker_type] + s += _N_BYTES_TO_START_STR[elm_size] + + while pos != end: + num = int.from_bytes(self.value[pos:pos + elm_size], + "big") + if elm_size == 1: + s += f" {num:02X}" + else: + s += f" {hex(num)}" + + pos += elm_size + + if pos != 0 and \ + (not next_marker or + next_marker[1] not in (_MarkerType.PHANDLE, _MarkerType.LABEL)): + + s += _N_BYTES_TO_END_STR[elm_size] + if pos != len(self.value): + s += "," + + return s + ";" + + + def __repr__(self): + return f"" + + # + # Internal functions + # + + def _add_marker(self, marker_type: _MarkerType, data: Any = None): + # Helper for registering markers in the value that are processed after + # parsing. See _fixup_props(). 'marker_type' identifies the type of + # marker, and 'data' has any optional data associated with the marker. + + # len(self.value) gives the current offset. This function is called + # while the value is built. We use a list instead of a tuple to be able + # to fix up offsets later (they might increase if the value includes + # path references, e.g. 'foo = &bar, <3>;', which are expanded later). + self._markers.append([len(self.value), marker_type, data]) + + # For phandle references, add a dummy value with the same length as a + # phandle. This is handy for the length check in _register_phandles(). + if marker_type is _MarkerType.PHANDLE: + self.value += b"\0\0\0\0" + +class _T(enum.IntEnum): + # Token IDs used by the DT lexer. + + # These values must be contiguous and start from 1. + INCLUDE = 1 + LINE = 2 + STRING = 3 + DTS_V1 = 4 + PLUGIN = 5 + MEMRESERVE = 6 + BITS = 7 + DEL_PROP = 8 + DEL_NODE = 9 + OMIT_IF_NO_REF = 10 + LABEL = 11 + CHAR_LITERAL = 12 + REF = 13 + INCBIN = 14 + SKIP = 15 + EOF = 16 + + # These values must be larger than the above contiguous range. + NUM = 17 + PROPNODENAME = 18 + MISC = 19 + BYTE = 20 + BAD = 21 + +class _FileStackElt(NamedTuple): + # Used for maintaining the /include/ stack. + + filename: str + lineno: int + contents: str + pos: int + +_TokVal = Union[int, str] + +class _Token(NamedTuple): + id: int + val: _TokVal + + def __repr__(self): + id_repr = _T(self.id).name + return f'Token(id=_T.{id_repr}, val={repr(self.val)})' + +class DT: + """ + Represents a devicetree parsed from a .dts file (or from many files, if the + .dts file /include/s other files). Creating many instances of this class is + fine. The library has no global state. + + These attributes are available on DT instances: + + root: + A Node instance representing the root (/) node. + + alias2node: + A dictionary that maps maps alias strings (from /aliases) to Node + instances + + label2node: + A dictionary that maps each node label (a string) to the Node instance + for the node. + + label2prop: + A dictionary that maps each property label (a string) to a Property + instance. + + label2prop_offset: + A dictionary that maps each label (a string) within a property value + (e.g., 'x = label_1: < 1 label2: 2 >;') to a (prop, offset) tuple, where + 'prop' is a Property instance and 'offset' the byte offset (0 for label_1 + and 4 for label_2 in the example). + + phandle2node: + A dictionary that maps each phandle (a number) to a Node instance. + + memreserves: + A list of (labels, address, length) tuples for the /memreserve/s in the + .dts file, in the same order as they appear in the file. + + 'labels' is a possibly empty set with all labels preceding the memreserve + (e.g., 'label1: label2: /memreserve/ ...'). 'address' and 'length' are + numbers. + + filename: + The filename passed to the DT constructor. + """ + + # + # Public interface + # + + def __init__(self, filename: str, include_path: Iterable[str] = (), + force: bool = False): + """ + Parses a DTS file to create a DT instance. Raises OSError if 'filename' + can't be opened, and DTError for any parse errors. + + filename: + Path to the .dts file to parse. + + include_path: + An iterable (e.g. list or tuple) containing paths to search for + /include/d and /incbin/'d files. By default, files are only looked up + relative to the .dts file that contains the /include/ or /incbin/. + + force: + Try not to raise DTError even if the input tree has errors. + For experimental use; results not guaranteed. + """ + self.filename = filename + self._include_path = list(include_path) + self._force = force + + with open(filename, encoding="utf-8") as f: + self._file_contents = f.read() + + self._tok_i = self._tok_end_i = 0 + self._filestack: List[_FileStackElt] = [] + + self.alias2node: Dict[str, Node] = {} + + self._lexer_state: int = _DEFAULT + self._saved_token: Optional[_Token] = None + + self._lineno: int = 1 + + self._root: Optional[Node] = None + + self._parse_dt() + + self._register_phandles() + self._fixup_props() + self._register_aliases() + self._remove_unreferenced() + self._register_labels() + + @property + def root(self) -> Node: + """ + See the class documentation. + """ + # This is necessary because mypy can't tell that we never + # treat self._root as a non-None value until it's initialized + # properly in _parse_dt(). + return self._root # type: ignore + + def get_node(self, path: str) -> Node: + """ + Returns the Node instance for the node with path or alias 'path' (a + string). Raises DTError if the path or alias doesn't exist. + + For example, both dt.get_node("/foo/bar") and dt.get_node("bar-alias") + will return the 'bar' node below: + + /dts-v1/; + + / { + foo { + bar_label: bar { + baz { + }; + }; + }; + + aliases { + bar-alias = &bar-label; + }; + }; + + Fetching subnodes via aliases is supported: + dt.get_node("bar-alias/baz") returns the 'baz' node. + """ + if path.startswith("/"): + return _root_and_path_to_node(self.root, path, path) + + # Path does not start with '/'. First component must be an alias. + alias, _, rest = path.partition("/") + if alias not in self.alias2node: + _err(f"no alias '{alias}' found -- did you forget the leading " + "'/' in the node path?") + + return _root_and_path_to_node(self.alias2node[alias], rest, path) + + def has_node(self, path: str) -> bool: + """ + Returns True if the path or alias 'path' exists. See Node.get_node(). + """ + try: + self.get_node(path) + return True + except DTError: + return False + + def node_iter(self) -> Iterable[Node]: + """ + Returns a generator for iterating over all nodes in the devicetree. + + For example, this will print the name of each node that has a property + called 'foo': + + for node in dt.node_iter(): + if "foo" in node.props: + print(node.name) + """ + yield from self.root.node_iter() + + def __str__(self): + """ + Returns a DTS representation of the devicetree. Called automatically if + the DT instance is print()ed. + """ + s = "/dts-v1/;\n\n" + + if self.memreserves: + for labels, address, offset in self.memreserves: + # List the labels in a consistent order to help with testing + for label in labels: + s += f"{label}: " + s += f"/memreserve/ {address:#018x} {offset:#018x};\n" + s += "\n" + + return s + str(self.root) + + def __repr__(self): + """ + Returns some information about the DT instance. Called automatically if + the DT instance is evaluated. + """ + return f"DT(filename='{self.filename}', " \ + f"include_path={self._include_path})" + + # + # Parsing + # + + def _parse_dt(self): + # Top-level parsing loop + + self._parse_header() + self._parse_memreserves() + + while True: + tok = self._next_token() + + if tok.val == "/": + # '/ { ... };', the root node + if not self._root: + self._root = Node(name="/", parent=None, dt=self) + self._parse_node(self.root) + + elif tok.id in (_T.LABEL, _T.REF): + # '&foo { ... };' or 'label: &foo { ... };'. The C tools only + # support a single label here too. + + if tok.id == _T.LABEL: + label = tok.val + tok = self._next_token() + if tok.id != _T.REF: + self._parse_error("expected label reference (&foo)") + else: + label = None + + try: + node = self._ref2node(tok.val) + except DTError as e: + self._parse_error(e) + node = self._parse_node(node) + + if label: + _append_no_dup(node.labels, label) + + elif tok.id == _T.DEL_NODE: + self._next_ref2node()._del() + self._expect_token(";") + + elif tok.id == _T.OMIT_IF_NO_REF: + self._next_ref2node()._omit_if_no_ref = True + self._expect_token(";") + + elif tok.id == _T.EOF: + if not self._root: + self._parse_error("no root node defined") + return + + else: + self._parse_error("expected '/' or label reference (&foo)") + + def _parse_header(self): + # Parses /dts-v1/ (expected) and /plugin/ (unsupported) at the start of + # files. There may be multiple /dts-v1/ at the start of a file. + + has_dts_v1 = False + + while self._peek_token().id == _T.DTS_V1: + has_dts_v1 = True + self._next_token() + self._expect_token(";") + # /plugin/ always comes after /dts-v1/ + if self._peek_token().id == _T.PLUGIN: + self._parse_error("/plugin/ is not supported") + + if not has_dts_v1: + self._parse_error("expected '/dts-v1/;' at start of file") + + def _parse_memreserves(self): + # Parses /memreserve/, which appears after /dts-v1/ + + self.memreserves = [] + while True: + # Labels before /memreserve/ + labels = [] + while self._peek_token().id == _T.LABEL: + _append_no_dup(labels, self._next_token().val) + + if self._peek_token().id == _T.MEMRESERVE: + self._next_token() + self.memreserves.append( + (labels, self._eval_prim(), self._eval_prim())) + self._expect_token(";") + elif labels: + self._parse_error("expected /memreserve/ after labels at " + "beginning of file") + else: + return + + def _parse_node(self, node): + # Parses the '{ ... };' part of 'node-name { ... };'. Returns the new + # Node. + + self._expect_token("{") + while True: + labels, omit_if_no_ref = self._parse_propnode_labels() + tok = self._next_token() + + if tok.id == _T.PROPNODENAME: + if self._peek_token().val == "{": + # ' { ...', expect node + + # Fetch the existing node if it already exists. This + # happens when overriding nodes. + child = node.nodes.get(tok.val) or \ + Node(name=tok.val, parent=node, dt=self) + + for label in labels: + _append_no_dup(child.labels, label) + + if omit_if_no_ref: + child._omit_if_no_ref = True + + node.nodes[child.name] = child + self._parse_node(child) + + else: + # Not ' { ...', expect property assignment + + if omit_if_no_ref: + self._parse_error( + "/omit-if-no-ref/ can only be used on nodes") + + prop = node._get_prop(tok.val) + + if self._check_token("="): + self._parse_assignment(prop) + elif not self._check_token(";"): + # ';' is for an empty property, like 'foo;' + self._parse_error("expected '{', '=', or ';'") + + for label in labels: + _append_no_dup(prop.labels, label) + + elif tok.id == _T.DEL_NODE: + tok2 = self._next_token() + if tok2.id != _T.PROPNODENAME: + self._parse_error("expected node name") + if tok2.val in node.nodes: + node.nodes[tok2.val]._del() + self._expect_token(";") + + elif tok.id == _T.DEL_PROP: + tok2 = self._next_token() + if tok2.id != _T.PROPNODENAME: + self._parse_error("expected property name") + node.props.pop(tok2.val, None) + self._expect_token(";") + + elif tok.val == "}": + self._expect_token(";") + return node + + else: + self._parse_error("expected node name, property name, or '}'") + + def _parse_propnode_labels(self): + # _parse_node() helpers for parsing labels and /omit-if-no-ref/s before + # nodes and properties. Returns a (