Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'devicetree-for-5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux

Pull devicetree updates from Rob Herring:

- Update dtc to upstream version v1.6.0-31-gcbca977ea121

- dtx_diff help text reformatting

- Speed-up validation time for binding and dtb checks using json for
intermediate files

- Add support for running yamllint on DT schema files

- Remove old booting-without-of.rst

- Extend the example schema to address common issues

- Cleanup handling of additionalProperties/unevaluatedProperties

- Ensure all DSI controller schemas reference dsi-controller.yaml

- Vendor prefixes for Zealz, Wandbord/Technexion, Embest RIoT, Rex,
DFI, and Cisco Meraki

- Convert at25, SPMI bus, TI hwlock, HiSilicon Hi3660 USB3 PHY, Arm
SP805 watchdog, Arm SP804, and Samsung 11-pin USB connector to DT
schema

- Convert HiSilicon SoC and syscon bindings to DT schema

- Convert SiFive Risc-V L2 cache, PLIC, PRCI, and PWM to DT schema

- Convert i.MX bindings for w1, crypto, rng, SIM, PM, DDR, SATA, vf610
GPIO, and UART to DT schema

- Add i.MX 8M compatible strings

- Add LM81 and DS1780 as trivial devices

- Various missing properties added to fix dtb validation warnings

* tag 'devicetree-for-5.10' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (111 commits)
dt-bindings: misc: explicitly add #address-cells for slave mode
spi: dt-bindings: spi-controller: explicitly require #address-cells=<0> for slave mode
dt: Remove booting-without-of.rst
dt-bindings: update usb-c-connector example
dt-bindings: arm: hisilicon: add missing properties into cpuctrl.yaml
dt-bindings: arm: hisilicon: add missing properties into sysctrl.yaml
dt-bindings: pwm: imx: document i.MX compatibles
scripts/dtc: Update to upstream version v1.6.0-31-gcbca977ea121
dt-bindings: Add running yamllint to dt_binding_check
dt-bindings: powerpc: Add a schema for the 'sleep' property
dt-bindings: pinctrl: sirf: Fix typo abitrary
dt-bindings: pinctrl: qcom: Fix typo abitrary
dt-bindings: Explicitly allow additional properties in common schemas
dt-bindings: Use 'additionalProperties' instead of 'unevaluatedProperties'
dt-bindings: Add missing 'unevaluatedProperties'
Docs: Fixing spelling errors in Documentation/devicetree/bindings/
dt-bindings: arm: hisilicon: convert Hi6220 domain controller bindings to json-schema
dt-bindings: riscv: convert pwm bindings to json-schema
dt-bindings: riscv: convert plic bindings to json-schema
dt-bindings: fu540: prci: convert PRCI bindings to json-schema
...

+3774 -3417
+1
Documentation/devicetree/bindings/.gitignore
··· 1 1 # SPDX-License-Identifier: GPL-2.0-only 2 2 *.example.dts 3 3 processed-schema*.yaml 4 + processed-schema*.json
+39
Documentation/devicetree/bindings/.yamllint
··· 1 + extends: relaxed 2 + 3 + rules: 4 + line-length: 5 + # 80 chars should be enough, but don't fail if a line is longer 6 + max: 110 7 + allow-non-breakable-words: true 8 + level: warning 9 + braces: 10 + min-spaces-inside: 0 11 + max-spaces-inside: 1 12 + min-spaces-inside-empty: 0 13 + max-spaces-inside-empty: 0 14 + brackets: 15 + min-spaces-inside: 0 16 + max-spaces-inside: 1 17 + min-spaces-inside-empty: 0 18 + max-spaces-inside-empty: 0 19 + colons: {max-spaces-before: 0, max-spaces-after: 1} 20 + commas: {min-spaces-after: 1, max-spaces-after: 1} 21 + comments: 22 + require-starting-space: false 23 + min-spaces-from-content: 1 24 + comments-indentation: disable 25 + document-start: 26 + present: true 27 + empty-lines: 28 + max: 3 29 + max-end: 1 30 + empty-values: 31 + forbid-in-block-mappings: true 32 + forbid-in-flow-mappings: true 33 + hyphens: 34 + max-spaces-after: 1 35 + indentation: 36 + spaces: 2 37 + indent-sequences: true 38 + check-multi-line-strings: false 39 + trailing-spaces: false
+34 -18
Documentation/devicetree/bindings/Makefile
··· 3 3 DT_EXTRACT_EX ?= dt-extract-example 4 4 DT_MK_SCHEMA ?= dt-mk-schema 5 5 6 - DT_SCHEMA_MIN_VERSION = 2020.5 6 + DT_SCHEMA_LINT = $(shell which yamllint) 7 + 8 + DT_SCHEMA_MIN_VERSION = 2020.8.1 7 9 8 10 PHONY += check_dtschema_version 9 11 check_dtschema_version: ··· 13 11 $(DT_DOC_CHECKER) --version 2>/dev/null || echo 0; } | sort -VC || \ 14 12 { echo "ERROR: dtschema minimum version is v$(DT_SCHEMA_MIN_VERSION)" >&2; false; } 15 13 16 - quiet_cmd_chk_binding = CHKDT $(patsubst $(srctree)/%,%,$<) 17 - cmd_chk_binding = $(DT_DOC_CHECKER) -u $(srctree)/$(src) $< ; \ 18 - $(DT_EXTRACT_EX) $< > $@ 14 + quiet_cmd_extract_ex = DTEX $@ 15 + cmd_extract_ex = $(DT_EXTRACT_EX) $< > $@ 19 16 20 17 $(obj)/%.example.dts: $(src)/%.yaml check_dtschema_version FORCE 21 - $(call if_changed,chk_binding) 18 + $(call if_changed,extract_ex) 22 19 23 20 # Use full schemas when checking %.example.dts 24 - DT_TMP_SCHEMA := $(obj)/processed-schema-examples.yaml 21 + DT_TMP_SCHEMA := $(obj)/processed-schema-examples.json 25 22 26 23 find_cmd = find $(srctree)/$(src) \( -name '*.yaml' ! \ 27 24 -name 'processed-schema*' ! \ 28 25 -name '*.example.dt.yaml' \) 29 26 27 + quiet_cmd_yamllint = LINT $(src) 28 + cmd_yamllint = $(find_cmd) | \ 29 + xargs $(DT_SCHEMA_LINT) -f parsable -c $(srctree)/$(src)/.yamllint 30 + 31 + quiet_cmd_chk_bindings = CHKDT $@ 32 + cmd_chk_bindings = $(find_cmd) | \ 33 + xargs -n200 -P$$(nproc) $(DT_DOC_CHECKER) -u $(srctree)/$(src) 34 + 30 35 quiet_cmd_mk_schema = SCHEMA $@ 31 - cmd_mk_schema = rm -f $@ ; \ 36 + cmd_mk_schema = f=$$(mktemp) ; \ 32 37 $(if $(DT_MK_SCHEMA_FLAGS), \ 33 38 echo $(real-prereqs), \ 34 - $(find_cmd)) | \ 35 - xargs $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) >> $@ 39 + $(find_cmd)) > $$f ; \ 40 + $(DT_MK_SCHEMA) -j $(DT_MK_SCHEMA_FLAGS) @$$f > $@ ; \ 41 + rm -f $$f 42 + 43 + define rule_chkdt 44 + $(if $(DT_SCHEMA_LINT),$(call cmd,yamllint),) 45 + $(call cmd,chk_bindings) 46 + $(call cmd,mk_schema) 47 + endef 36 48 37 49 DT_DOCS = $(shell $(find_cmd) | sed -e 's|^$(srctree)/||') 38 50 ··· 55 39 -Wno-graph_child_address \ 56 40 -Wno-interrupt_provider 57 41 58 - $(obj)/processed-schema-examples.yaml: $(DT_DOCS) check_dtschema_version FORCE 59 - $(call if_changed,mk_schema) 42 + $(obj)/processed-schema-examples.json: $(DT_DOCS) $(src)/.yamllint check_dtschema_version FORCE 43 + $(call if_changed_rule,chkdt) 60 44 61 45 ifeq ($(DT_SCHEMA_FILES),) 62 46 63 47 # Unless DT_SCHEMA_FILES is specified, use the full schema for dtbs_check too. 64 - # Just copy processed-schema-examples.yaml 48 + # Just copy processed-schema-examples.json 65 49 66 - $(obj)/processed-schema.yaml: $(obj)/processed-schema-examples.yaml FORCE 50 + $(obj)/processed-schema.json: $(obj)/processed-schema-examples.json FORCE 67 51 $(call if_changed,copy) 68 52 69 53 DT_SCHEMA_FILES = $(DT_DOCS) 70 54 71 55 else 72 56 73 - # If DT_SCHEMA_FILES is specified, use it for processed-schema.yaml 57 + # If DT_SCHEMA_FILES is specified, use it for processed-schema.json 74 58 75 - $(obj)/processed-schema.yaml: DT_MK_SCHEMA_FLAGS := -u 76 - $(obj)/processed-schema.yaml: $(DT_SCHEMA_FILES) check_dtschema_version FORCE 59 + $(obj)/processed-schema.json: DT_MK_SCHEMA_FLAGS := -u 60 + $(obj)/processed-schema.json: $(DT_SCHEMA_FILES) check_dtschema_version FORCE 77 61 $(call if_changed,mk_schema) 78 62 79 63 endif 80 64 65 + extra-$(CHECK_DT_BINDING) += processed-schema-examples.json 66 + extra-$(CHECK_DTBS) += processed-schema.json 81 67 extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dts, $(DT_SCHEMA_FILES)) 82 68 extra-$(CHECK_DT_BINDING) += $(patsubst $(src)/%.yaml,%.example.dt.yaml, $(DT_SCHEMA_FILES)) 83 - extra-$(CHECK_DT_BINDING) += processed-schema-examples.yaml 84 - extra-$(CHECK_DTBS) += processed-schema.yaml 85 69 86 70 # Hack: avoid 'Argument list too long' error for 'make clean'. Remove most of 87 71 # build artifacts here before they are processed by scripts/Makefile.clean
+2
Documentation/devicetree/bindings/arm/actions.yaml
··· 11 11 - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> 12 12 13 13 properties: 14 + $nodename: 15 + const: "/" 14 16 compatible: 15 17 oneOf: 16 18 # The Actions Semi S500 is a quad-core ARM Cortex-A9 SoC.
+2
Documentation/devicetree/bindings/arm/altera.yaml
··· 10 10 - Dinh Nguyen <dinguyen@kernel.org> 11 11 12 12 properties: 13 + $nodename: 14 + const: "/" 13 15 compatible: 14 16 items: 15 17 - enum:
+2
Documentation/devicetree/bindings/arm/axxia.yaml
··· 10 10 - Anders Berg <anders.berg@lsi.com> 11 11 12 12 properties: 13 + $nodename: 14 + const: "/" 13 15 compatible: 14 16 description: LSI AXM5516 Validation board (Amarillo) 15 17 items:
+2
Documentation/devicetree/bindings/arm/bcm/raspberrypi,bcm2835-firmware.yaml
··· 54 54 - compatible 55 55 - mboxes 56 56 57 + additionalProperties: false 58 + 57 59 examples: 58 60 - | 59 61 firmware {
+2
Documentation/devicetree/bindings/arm/bitmain.yaml
··· 10 10 - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> 11 11 12 12 properties: 13 + $nodename: 14 + const: "/" 13 15 compatible: 14 16 items: 15 17 - enum:
+2
Documentation/devicetree/bindings/arm/coresight-cti.yaml
··· 220 220 required: 221 221 - cpu 222 222 223 + unevaluatedProperties: false 224 + 223 225 examples: 224 226 # minimum CTI definition. DEVID register used to set number of triggers. 225 227 - |
+2
Documentation/devicetree/bindings/arm/cpus.yaml
··· 341 341 dependencies: 342 342 rockchip,pmu: [enable-method] 343 343 344 + additionalProperties: true 345 + 344 346 examples: 345 347 - | 346 348 cpus {
+2
Documentation/devicetree/bindings/arm/digicolor.yaml
··· 10 10 - Baruch Siach <baruch@tkos.co.il> 11 11 12 12 properties: 13 + $nodename: 14 + const: "/" 13 15 compatible: 14 16 const: cnxt,cx92755 15 17
-23
Documentation/devicetree/bindings/arm/freescale/fsl,imx7ulp-pm.txt
··· 1 - Freescale i.MX7ULP Power Management Components 2 - ---------------------------------------------- 3 - 4 - The Multi-System Mode Controller (MSMC) is responsible for sequencing 5 - the MCU into and out of all stop and run power modes. Specifically, it 6 - monitors events to trigger transitions between power modes while 7 - controlling the power, clocks, and memories of the MCU to achieve the 8 - power consumption and functionality of that mode. 9 - 10 - The WFI or WFE instruction is used to invoke a Sleep, Deep Sleep or 11 - Standby modes for either Cortex family. Run, Wait, and Stop are the 12 - common terms used for the primary operating modes of Kinetis 13 - microcontrollers. 14 - 15 - Required properties: 16 - - compatible: Should be "fsl,imx7ulp-smc1". 17 - - reg: Specifies base physical address and size of the register sets. 18 - 19 - Example: 20 - smc1: smc1@40410000 { 21 - compatible = "fsl,imx7ulp-smc1"; 22 - reg = <0x40410000 0x1000>; 23 - };
+42
Documentation/devicetree/bindings/arm/freescale/fsl,imx7ulp-pm.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/arm/freescale/fsl,imx7ulp-pm.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Freescale i.MX7ULP Power Management Components 8 + 9 + maintainers: 10 + - A.s. Dong <aisheng.dong@nxp.com> 11 + 12 + description: | 13 + The Multi-System Mode Controller (MSMC) is responsible for sequencing 14 + the MCU into and out of all stop and run power modes. Specifically, it 15 + monitors events to trigger transitions between power modes while 16 + controlling the power, clocks, and memories of the MCU to achieve the 17 + power consumption and functionality of that mode. 18 + 19 + The WFI or WFE instruction is used to invoke a Sleep, Deep Sleep or 20 + Standby modes for either Cortex family. Run, Wait, and Stop are the 21 + common terms used for the primary operating modes of Kinetis 22 + microcontrollers. 23 + 24 + properties: 25 + compatible: 26 + const: fsl,imx7ulp-smc1 27 + 28 + reg: 29 + maxItems: 1 30 + 31 + required: 32 + - compatible 33 + - reg 34 + 35 + additionalProperties: false 36 + 37 + examples: 38 + - | 39 + smc1@40410000 { 40 + compatible = "fsl,imx7ulp-smc1"; 41 + reg = <0x40410000 0x1000>; 42 + };
-16
Documentation/devicetree/bindings/arm/freescale/fsl,imx7ulp-sim.txt
··· 1 - Freescale i.MX7ULP System Integration Module 2 - ---------------------------------------------- 3 - The system integration module (SIM) provides system control and chip configuration 4 - registers. In this module, chip revision information is located in JTAG ID register, 5 - and a set of registers have been made available in DGO domain for SW use, with the 6 - objective to maintain its value between system resets. 7 - 8 - Required properties: 9 - - compatible: Should be "fsl,imx7ulp-sim". 10 - - reg: Specifies base physical address and size of the register sets. 11 - 12 - Example: 13 - sim: sim@410a3000 { 14 - compatible = "fsl,imx7ulp-sim", "syscon"; 15 - reg = <0x410a3000 0x1000>; 16 - };
+38
Documentation/devicetree/bindings/arm/freescale/fsl,imx7ulp-sim.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/arm/freescale/fsl,imx7ulp-sim.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Freescale i.MX7ULP System Integration Module 8 + 9 + maintainers: 10 + - Anson Huang <anson.huang@nxp.com> 11 + 12 + description: | 13 + The system integration module (SIM) provides system control and chip configuration 14 + registers. In this module, chip revision information is located in JTAG ID register, 15 + and a set of registers have been made available in DGO domain for SW use, with the 16 + objective to maintain its value between system resets. 17 + 18 + properties: 19 + compatible: 20 + items: 21 + - const: fsl,imx7ulp-sim 22 + - const: syscon 23 + 24 + reg: 25 + maxItems: 1 26 + 27 + required: 28 + - compatible 29 + - reg 30 + 31 + additionalProperties: false 32 + 33 + examples: 34 + - | 35 + sim@410a3000 { 36 + compatible = "fsl,imx7ulp-sim", "syscon"; 37 + reg = <0x410a3000 0x1000>; 38 + };
+54
Documentation/devicetree/bindings/arm/hisilicon/controller/cpuctrl.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/arm/hisilicon/controller/cpuctrl.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Hisilicon CPU controller 8 + 9 + maintainers: 10 + - Wei Xu <xuwei5@hisilicon.com> 11 + 12 + description: | 13 + The clock registers and power registers of secondary cores are defined 14 + in CPU controller, especially in HIX5HD2 SoC. 15 + 16 + properties: 17 + compatible: 18 + items: 19 + - const: hisilicon,cpuctrl 20 + 21 + reg: 22 + maxItems: 1 23 + 24 + "#address-cells": 25 + const: 1 26 + 27 + "#size-cells": 28 + const: 1 29 + 30 + ranges: true 31 + 32 + required: 33 + - compatible 34 + - reg 35 + 36 + additionalProperties: 37 + type: object 38 + 39 + examples: 40 + - | 41 + cpuctrl@a22000 { 42 + compatible = "hisilicon,cpuctrl"; 43 + #address-cells = <1>; 44 + #size-cells = <1>; 45 + reg = <0x00a22000 0x2000>; 46 + ranges = <0 0x00a22000 0x2000>; 47 + 48 + clock: clock@0 { 49 + compatible = "hisilicon,hix5hd2-clock"; 50 + reg = <0 0x2000>; 51 + #clock-cells = <1>; 52 + }; 53 + }; 54 + ...
+64
Documentation/devicetree/bindings/arm/hisilicon/controller/hi3798cv200-perictrl.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/arm/hisilicon/controller/hi3798cv200-perictrl.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Hisilicon Hi3798CV200 Peripheral Controller 8 + 9 + maintainers: 10 + - Wei Xu <xuwei5@hisilicon.com> 11 + 12 + description: | 13 + The Hi3798CV200 Peripheral Controller controls peripherals, queries 14 + their status, and configures some functions of peripherals. 15 + 16 + properties: 17 + compatible: 18 + items: 19 + - const: hisilicon,hi3798cv200-perictrl 20 + - const: syscon 21 + - const: simple-mfd 22 + 23 + reg: 24 + maxItems: 1 25 + 26 + "#address-cells": 27 + const: 1 28 + 29 + "#size-cells": 30 + const: 1 31 + 32 + ranges: true 33 + 34 + required: 35 + - compatible 36 + - reg 37 + - "#address-cells" 38 + - "#size-cells" 39 + - ranges 40 + 41 + additionalProperties: 42 + type: object 43 + 44 + examples: 45 + - | 46 + peripheral-controller@8a20000 { 47 + compatible = "hisilicon,hi3798cv200-perictrl", "syscon", "simple-mfd"; 48 + reg = <0x8a20000 0x1000>; 49 + #address-cells = <1>; 50 + #size-cells = <1>; 51 + ranges = <0x0 0x8a20000 0x1000>; 52 + 53 + phy@850 { 54 + compatible = "hisilicon,hi3798cv200-combphy"; 55 + reg = <0x850 0x8>; 56 + #phy-cells = <1>; 57 + clocks = <&crg 42>; 58 + resets = <&crg 0x188 4>; 59 + assigned-clocks = <&crg 42>; 60 + assigned-clock-rates = <100000000>; 61 + hisilicon,fixed-mode = <4>; 62 + }; 63 + }; 64 + ...
+68
Documentation/devicetree/bindings/arm/hisilicon/controller/hi6220-domain-ctrl.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/arm/hisilicon/controller/hi6220-domain-ctrl.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Hisilicon Hi6220 domain controller 8 + 9 + maintainers: 10 + - Wei Xu <xuwei5@hisilicon.com> 11 + 12 + description: | 13 + Hisilicon designs some special domain controllers for mobile platform, 14 + such as: the power Always On domain controller, the Media domain 15 + controller(e.g. codec, G3D ...) and the Power Management domain 16 + controller. 17 + 18 + The compatible names of each domain controller are as follows: 19 + Power Always ON domain controller --> hisilicon,hi6220-aoctrl 20 + Media domain controller --> hisilicon,hi6220-mediactrl 21 + Power Management domain controller --> hisilicon,hi6220-pmctrl 22 + 23 + properties: 24 + compatible: 25 + items: 26 + - enum: 27 + - hisilicon,hi6220-aoctrl 28 + - hisilicon,hi6220-mediactrl 29 + - hisilicon,hi6220-pmctrl 30 + - const: syscon 31 + 32 + reg: 33 + maxItems: 1 34 + 35 + '#clock-cells': 36 + const: 1 37 + 38 + '#reset-cells': 39 + const: 1 40 + 41 + required: 42 + - compatible 43 + - reg 44 + - '#clock-cells' 45 + 46 + additionalProperties: false 47 + 48 + examples: 49 + - | 50 + ao_ctrl@f7800000 { 51 + compatible = "hisilicon,hi6220-aoctrl", "syscon"; 52 + reg = <0xf7800000 0x2000>; 53 + #clock-cells = <1>; 54 + #reset-cells = <1>; 55 + }; 56 + 57 + media_ctrl@f4410000 { 58 + compatible = "hisilicon,hi6220-mediactrl", "syscon"; 59 + reg = <0xf4410000 0x1000>; 60 + #clock-cells = <1>; 61 + }; 62 + 63 + pm_ctrl@f7032000 { 64 + compatible = "hisilicon,hi6220-pmctrl", "syscon"; 65 + reg = <0xf7032000 0x1000>; 66 + #clock-cells = <1>; 67 + }; 68 + ...
+34
Documentation/devicetree/bindings/arm/hisilicon/controller/hip04-bootwrapper.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/arm/hisilicon/controller/hip04-bootwrapper.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Bootwrapper boot method 8 + 9 + maintainers: 10 + - Wei Xu <xuwei5@hisilicon.com> 11 + 12 + description: Bootwrapper boot method (software protocol on SMP) 13 + 14 + properties: 15 + compatible: 16 + items: 17 + - const: hisilicon,hip04-bootwrapper 18 + 19 + boot-method: 20 + description: | 21 + Address and size of boot method. 22 + [0]: bootwrapper physical address 23 + [1]: bootwrapper size 24 + [2]: relocation physical address 25 + [3]: relocation size 26 + minItems: 1 27 + maxItems: 2 28 + 29 + required: 30 + - compatible 31 + - boot-method 32 + 33 + additionalProperties: false 34 + ...
+27
Documentation/devicetree/bindings/arm/hisilicon/controller/hip04-fabric.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/arm/hisilicon/controller/hip04-fabric.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Hisilicon Fabric controller 8 + 9 + maintainers: 10 + - Wei Xu <xuwei5@hisilicon.com> 11 + 12 + description: Hisilicon Fabric controller 13 + 14 + properties: 15 + compatible: 16 + items: 17 + - const: hisilicon,hip04-fabric 18 + 19 + reg: 20 + maxItems: 1 21 + 22 + required: 23 + - compatible 24 + - reg 25 + 26 + additionalProperties: false 27 + ...
+34
Documentation/devicetree/bindings/arm/hisilicon/controller/pctrl.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/arm/hisilicon/controller/pctrl.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Peripheral misc control register 8 + 9 + maintainers: 10 + - Wei Xu <xuwei5@hisilicon.com> 11 + 12 + description: Peripheral misc control register 13 + 14 + properties: 15 + compatible: 16 + items: 17 + - const: hisilicon,pctrl 18 + 19 + reg: 20 + maxItems: 1 21 + 22 + required: 23 + - compatible 24 + - reg 25 + 26 + additionalProperties: false 27 + 28 + examples: 29 + - | 30 + pctrl@fca09000 { 31 + compatible = "hisilicon,pctrl"; 32 + reg = <0xfca09000 0x1000>; 33 + }; 34 + ...
+132
Documentation/devicetree/bindings/arm/hisilicon/controller/sysctrl.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/arm/hisilicon/controller/sysctrl.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Hisilicon system controller 8 + 9 + maintainers: 10 + - Wei Xu <xuwei5@hisilicon.com> 11 + 12 + description: | 13 + The Hisilicon system controller is used on many Hisilicon boards, it can be 14 + used to assist the slave core startup, reboot the system, etc. 15 + 16 + There are some variants of the Hisilicon system controller, such as HiP01, 17 + Hi3519, Hi6220 system controller, each of them is mostly compatible with the 18 + Hisilicon system controller, but some same registers located at different 19 + offset. In addition, the HiP01 system controller has some specific control 20 + registers for HIP01 SoC family, such as slave core boot. 21 + 22 + The compatible names of each system controller are as follows: 23 + Hisilicon system controller --> hisilicon,sysctrl 24 + HiP01 system controller --> hisilicon,hip01-sysctrl 25 + Hi6220 system controller --> hisilicon,hi6220-sysctrl 26 + Hi3519 system controller --> hisilicon,hi3519-sysctrl 27 + 28 + allOf: 29 + - if: 30 + properties: 31 + compatible: 32 + contains: 33 + const: hisilicon,hi6220-sysctrl 34 + then: 35 + required: 36 + - '#clock-cells' 37 + 38 + properties: 39 + compatible: 40 + oneOf: 41 + - items: 42 + - enum: 43 + - hisilicon,sysctrl 44 + - hisilicon,hi6220-sysctrl 45 + - hisilicon,hi3519-sysctrl 46 + - const: syscon 47 + - items: 48 + - const: hisilicon,hip01-sysctrl 49 + - const: hisilicon,sysctrl 50 + 51 + reg: 52 + maxItems: 1 53 + 54 + smp-offset: 55 + description: | 56 + offset in sysctrl for notifying slave cpu booting 57 + cpu 1, reg; 58 + cpu 2, reg + 0x4; 59 + cpu 3, reg + 0x8; 60 + If reg value is not zero, cpun exit wfi and go 61 + $ref: /schemas/types.yaml#/definitions/uint32 62 + 63 + resume-offset: 64 + description: offset in sysctrl for notifying cpu0 when resume 65 + $ref: /schemas/types.yaml#/definitions/uint32 66 + 67 + reboot-offset: 68 + description: offset in sysctrl for system reboot 69 + $ref: /schemas/types.yaml#/definitions/uint32 70 + 71 + '#clock-cells': 72 + const: 1 73 + 74 + '#reset-cells': 75 + const: 1 76 + 77 + '#address-cells': 78 + const: 1 79 + 80 + '#size-cells': 81 + const: 1 82 + 83 + ranges: true 84 + 85 + required: 86 + - compatible 87 + - reg 88 + 89 + additionalProperties: 90 + type: object 91 + 92 + examples: 93 + - | 94 + /* Hisilicon system controller */ 95 + system-controller@802000 { 96 + compatible = "hisilicon,sysctrl", "syscon"; 97 + #address-cells = <1>; 98 + #size-cells = <1>; 99 + ranges = <0 0x802000 0x1000>; 100 + reg = <0x802000 0x1000>; 101 + 102 + smp-offset = <0x31c>; 103 + resume-offset = <0x308>; 104 + reboot-offset = <0x4>; 105 + 106 + clock: clock@0 { 107 + compatible = "hisilicon,hi3620-clock"; 108 + reg = <0 0x10000>; 109 + #clock-cells = <1>; 110 + }; 111 + }; 112 + 113 + /* HiP01 system controller */ 114 + system-controller@10000000 { 115 + compatible = "hisilicon,hip01-sysctrl", "hisilicon,sysctrl"; 116 + reg = <0x10000000 0x1000>; 117 + reboot-offset = <0x4>; 118 + }; 119 + 120 + /* Hi6220 system controller */ 121 + system-controller@f7030000 { 122 + compatible = "hisilicon,hi6220-sysctrl", "syscon"; 123 + reg = <0xf7030000 0x2000>; 124 + #clock-cells = <1>; 125 + }; 126 + 127 + /* Hi3519 system controller */ 128 + system-controller@12010000 { 129 + compatible = "hisilicon,hi3519-sysctrl", "syscon"; 130 + reg = <0x12010000 0x1000>; 131 + }; 132 + ...
-14
Documentation/devicetree/bindings/arm/hisilicon/hi3519-sysctrl.txt
··· 1 - * Hisilicon Hi3519 System Controller Block 2 - 3 - This bindings use the following binding: 4 - Documentation/devicetree/bindings/mfd/syscon.yaml 5 - 6 - Required properties: 7 - - compatible: "hisilicon,hi3519-sysctrl". 8 - - reg: the register region of this block 9 - 10 - Examples: 11 - sysctrl: system-controller@12010000 { 12 - compatible = "hisilicon,hi3519-sysctrl", "syscon"; 13 - reg = <0x12010000 0x1000>; 14 - };
-33
Documentation/devicetree/bindings/arm/hisilicon/hisilicon-low-pin-count.txt
··· 1 - Hisilicon Hip06 Low Pin Count device 2 - Hisilicon Hip06 SoCs implement a Low Pin Count (LPC) controller, which 3 - provides I/O access to some legacy ISA devices. 4 - Hip06 is based on arm64 architecture where there is no I/O space. So, the 5 - I/O ports here are not CPU addresses, and there is no 'ranges' property in 6 - LPC device node. 7 - 8 - Required properties: 9 - - compatible: value should be as follows: 10 - (a) "hisilicon,hip06-lpc" 11 - (b) "hisilicon,hip07-lpc" 12 - - #address-cells: must be 2 which stick to the ISA/EISA binding doc. 13 - - #size-cells: must be 1 which stick to the ISA/EISA binding doc. 14 - - reg: base memory range where the LPC register set is mapped. 15 - 16 - Note: 17 - The node name before '@' must be "isa" to represent the binding stick to the 18 - ISA/EISA binding specification. 19 - 20 - Example: 21 - 22 - isa@a01b0000 { 23 - compatible = "hisilicon,hip06-lpc"; 24 - #address-cells = <2>; 25 - #size-cells = <1>; 26 - reg = <0x0 0xa01b0000 0x0 0x1000>; 27 - 28 - ipmi0: bt@e4 { 29 - compatible = "ipmi-bt"; 30 - device_type = "ipmi"; 31 - reg = <0x01 0xe4 0x04>; 32 - }; 33 - };
-319
Documentation/devicetree/bindings/arm/hisilicon/hisilicon.txt
··· 1 - Hisilicon Platforms Device Tree Bindings 2 - ---------------------------------------------------- 3 - Hi3660 SoC 4 - Required root node properties: 5 - - compatible = "hisilicon,hi3660"; 6 - 7 - HiKey960 Board 8 - Required root node properties: 9 - - compatible = "hisilicon,hi3660-hikey960", "hisilicon,hi3660"; 10 - 11 - Hi3670 SoC 12 - Required root node properties: 13 - - compatible = "hisilicon,hi3670"; 14 - 15 - HiKey970 Board 16 - Required root node properties: 17 - - compatible = "hisilicon,hi3670-hikey970", "hisilicon,hi3670"; 18 - 19 - Hi3798cv200 SoC 20 - Required root node properties: 21 - - compatible = "hisilicon,hi3798cv200"; 22 - 23 - Hi3798cv200 Poplar Board 24 - Required root node properties: 25 - - compatible = "hisilicon,hi3798cv200-poplar", "hisilicon,hi3798cv200"; 26 - 27 - Hi4511 Board 28 - Required root node properties: 29 - - compatible = "hisilicon,hi3620-hi4511"; 30 - 31 - Hi6220 SoC 32 - Required root node properties: 33 - - compatible = "hisilicon,hi6220"; 34 - 35 - HiKey Board 36 - Required root node properties: 37 - - compatible = "hisilicon,hi6220-hikey", "hisilicon,hi6220"; 38 - 39 - HiP01 ca9x2 Board 40 - Required root node properties: 41 - - compatible = "hisilicon,hip01-ca9x2"; 42 - 43 - HiP04 D01 Board 44 - Required root node properties: 45 - - compatible = "hisilicon,hip04-d01"; 46 - 47 - HiP05 D02 Board 48 - Required root node properties: 49 - - compatible = "hisilicon,hip05-d02"; 50 - 51 - HiP06 D03 Board 52 - Required root node properties: 53 - - compatible = "hisilicon,hip06-d03"; 54 - 55 - HiP07 D05 Board 56 - Required root node properties: 57 - - compatible = "hisilicon,hip07-d05"; 58 - 59 - Hisilicon system controller 60 - 61 - Required properties: 62 - - compatible : "hisilicon,sysctrl" 63 - - reg : Register address and size 64 - 65 - Optional properties: 66 - - smp-offset : offset in sysctrl for notifying slave cpu booting 67 - cpu 1, reg; 68 - cpu 2, reg + 0x4; 69 - cpu 3, reg + 0x8; 70 - If reg value is not zero, cpun exit wfi and go 71 - - resume-offset : offset in sysctrl for notifying cpu0 when resume 72 - - reboot-offset : offset in sysctrl for system reboot 73 - 74 - Example: 75 - 76 - /* for Hi3620 */ 77 - sysctrl: system-controller@fc802000 { 78 - compatible = "hisilicon,sysctrl"; 79 - reg = <0xfc802000 0x1000>; 80 - smp-offset = <0x31c>; 81 - resume-offset = <0x308>; 82 - reboot-offset = <0x4>; 83 - }; 84 - 85 - ----------------------------------------------------------------------- 86 - Hisilicon Hi3798CV200 Peripheral Controller 87 - 88 - The Hi3798CV200 Peripheral Controller controls peripherals, queries 89 - their status, and configures some functions of peripherals. 90 - 91 - Required properties: 92 - - compatible: Should contain "hisilicon,hi3798cv200-perictrl", "syscon" 93 - and "simple-mfd". 94 - - reg: Register address and size of Peripheral Controller. 95 - - #address-cells: Should be 1. 96 - - #size-cells: Should be 1. 97 - 98 - Examples: 99 - 100 - perictrl: peripheral-controller@8a20000 { 101 - compatible = "hisilicon,hi3798cv200-perictrl", "syscon", 102 - "simple-mfd"; 103 - reg = <0x8a20000 0x1000>; 104 - #address-cells = <1>; 105 - #size-cells = <1>; 106 - }; 107 - 108 - ----------------------------------------------------------------------- 109 - Hisilicon Hi6220 system controller 110 - 111 - Required properties: 112 - - compatible : "hisilicon,hi6220-sysctrl" 113 - - reg : Register address and size 114 - - #clock-cells: should be set to 1, many clock registers are defined 115 - under this controller and this property must be present. 116 - 117 - Hisilicon designs this controller as one of the system controllers, 118 - its main functions are the same as Hisilicon system controller, but 119 - the register offset of some core modules are different. 120 - 121 - Example: 122 - /*for Hi6220*/ 123 - sys_ctrl: sys_ctrl@f7030000 { 124 - compatible = "hisilicon,hi6220-sysctrl", "syscon"; 125 - reg = <0x0 0xf7030000 0x0 0x2000>; 126 - #clock-cells = <1>; 127 - }; 128 - 129 - 130 - Hisilicon Hi6220 Power Always ON domain controller 131 - 132 - Required properties: 133 - - compatible : "hisilicon,hi6220-aoctrl" 134 - - reg : Register address and size 135 - - #clock-cells: should be set to 1, many clock registers are defined 136 - under this controller and this property must be present. 137 - 138 - Hisilicon designs this system controller to control the power always 139 - on domain for mobile platform. 140 - 141 - Example: 142 - /*for Hi6220*/ 143 - ao_ctrl: ao_ctrl@f7800000 { 144 - compatible = "hisilicon,hi6220-aoctrl", "syscon"; 145 - reg = <0x0 0xf7800000 0x0 0x2000>; 146 - #clock-cells = <1>; 147 - }; 148 - 149 - 150 - Hisilicon Hi6220 Media domain controller 151 - 152 - Required properties: 153 - - compatible : "hisilicon,hi6220-mediactrl" 154 - - reg : Register address and size 155 - - #clock-cells: should be set to 1, many clock registers are defined 156 - under this controller and this property must be present. 157 - 158 - Hisilicon designs this system controller to control the multimedia 159 - domain(e.g. codec, G3D ...) for mobile platform. 160 - 161 - Example: 162 - /*for Hi6220*/ 163 - media_ctrl: media_ctrl@f4410000 { 164 - compatible = "hisilicon,hi6220-mediactrl", "syscon"; 165 - reg = <0x0 0xf4410000 0x0 0x1000>; 166 - #clock-cells = <1>; 167 - }; 168 - 169 - 170 - Hisilicon Hi6220 Power Management domain controller 171 - 172 - Required properties: 173 - - compatible : "hisilicon,hi6220-pmctrl" 174 - - reg : Register address and size 175 - - #clock-cells: should be set to 1, some clock registers are define 176 - under this controller and this property must be present. 177 - 178 - Hisilicon designs this system controller to control the power management 179 - domain for mobile platform. 180 - 181 - Example: 182 - /*for Hi6220*/ 183 - pm_ctrl: pm_ctrl@f7032000 { 184 - compatible = "hisilicon,hi6220-pmctrl", "syscon"; 185 - reg = <0x0 0xf7032000 0x0 0x1000>; 186 - #clock-cells = <1>; 187 - }; 188 - 189 - 190 - Hisilicon Hi6220 SRAM controller 191 - 192 - Required properties: 193 - - compatible : "hisilicon,hi6220-sramctrl", "syscon" 194 - - reg : Register address and size 195 - 196 - Hisilicon's SoCs use sram for multiple purpose; on Hi6220 there have several 197 - SRAM banks for power management, modem, security, etc. Further, use "syscon" 198 - managing the common sram which can be shared by multiple modules. 199 - 200 - Example: 201 - /*for Hi6220*/ 202 - sram: sram@fff80000 { 203 - compatible = "hisilicon,hi6220-sramctrl", "syscon"; 204 - reg = <0x0 0xfff80000 0x0 0x12000>; 205 - }; 206 - 207 - ----------------------------------------------------------------------- 208 - Hisilicon HiP01 system controller 209 - 210 - Required properties: 211 - - compatible : "hisilicon,hip01-sysctrl" 212 - - reg : Register address and size 213 - 214 - The HiP01 system controller is mostly compatible with hisilicon 215 - system controller,but it has some specific control registers for 216 - HIP01 SoC family, such as slave core boot, and also some same 217 - registers located at different offset. 218 - 219 - Example: 220 - 221 - /* for hip01-ca9x2 */ 222 - sysctrl: system-controller@10000000 { 223 - compatible = "hisilicon,hip01-sysctrl", "hisilicon,sysctrl"; 224 - reg = <0x10000000 0x1000>; 225 - reboot-offset = <0x4>; 226 - }; 227 - 228 - ----------------------------------------------------------------------- 229 - Hisilicon HiP05/HiP06 PCIe-SAS sub system controller 230 - 231 - Required properties: 232 - - compatible : "hisilicon,pcie-sas-subctrl", "syscon"; 233 - - reg : Register address and size 234 - 235 - The PCIe-SAS sub system controller is shared by PCIe and SAS controllers in 236 - HiP05 or HiP06 Soc to implement some basic configurations. 237 - 238 - Example: 239 - /* for HiP05 PCIe-SAS sub system */ 240 - pcie_sas: system_controller@b0000000 { 241 - compatible = "hisilicon,pcie-sas-subctrl", "syscon"; 242 - reg = <0xb0000000 0x10000>; 243 - }; 244 - 245 - Hisilicon HiP05/HiP06 PERI sub system controller 246 - 247 - Required properties: 248 - - compatible : "hisilicon,peri-subctrl", "syscon"; 249 - - reg : Register address and size 250 - 251 - The PERI sub system controller is shared by peripheral controllers in 252 - HiP05 or HiP06 Soc to implement some basic configurations. The peripheral 253 - controllers include mdio, ddr, iic, uart, timer and so on. 254 - 255 - Example: 256 - /* for HiP05 sub peri system */ 257 - peri_c_subctrl: syscon@80000000 { 258 - compatible = "hisilicon,peri-subctrl", "syscon"; 259 - reg = <0x0 0x80000000 0x0 0x10000>; 260 - }; 261 - 262 - Hisilicon HiP05/HiP06 DSA sub system controller 263 - 264 - Required properties: 265 - - compatible : "hisilicon,dsa-subctrl", "syscon"; 266 - - reg : Register address and size 267 - 268 - The DSA sub system controller is shared by peripheral controllers in 269 - HiP05 or HiP06 Soc to implement some basic configurations. 270 - 271 - Example: 272 - /* for HiP05 dsa sub system */ 273 - pcie_sas: system_controller@a0000000 { 274 - compatible = "hisilicon,dsa-subctrl", "syscon"; 275 - reg = <0xa0000000 0x10000>; 276 - }; 277 - 278 - ----------------------------------------------------------------------- 279 - Hisilicon CPU controller 280 - 281 - Required properties: 282 - - compatible : "hisilicon,cpuctrl" 283 - - reg : Register address and size 284 - 285 - The clock registers and power registers of secondary cores are defined 286 - in CPU controller, especially in HIX5HD2 SoC. 287 - 288 - ----------------------------------------------------------------------- 289 - PCTRL: Peripheral misc control register 290 - 291 - Required Properties: 292 - - compatible: "hisilicon,pctrl" 293 - - reg: Address and size of pctrl. 294 - 295 - Example: 296 - 297 - /* for Hi3620 */ 298 - pctrl: pctrl@fca09000 { 299 - compatible = "hisilicon,pctrl"; 300 - reg = <0xfca09000 0x1000>; 301 - }; 302 - 303 - ----------------------------------------------------------------------- 304 - Fabric: 305 - 306 - Required Properties: 307 - - compatible: "hisilicon,hip04-fabric"; 308 - - reg: Address and size of Fabric 309 - 310 - ----------------------------------------------------------------------- 311 - Bootwrapper boot method (software protocol on SMP): 312 - 313 - Required Properties: 314 - - compatible: "hisilicon,hip04-bootwrapper"; 315 - - boot-method: Address and size of boot method. 316 - [0]: bootwrapper physical address 317 - [1]: bootwrapper size 318 - [2]: relocation physical address 319 - [3]: relocation size
+67
Documentation/devicetree/bindings/arm/hisilicon/hisilicon.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/arm/hisilicon/hisilicon.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Hisilicon Platforms Device Tree Bindings 8 + 9 + maintainers: 10 + - Wei Xu <xuwei5@hisilicon.com> 11 + 12 + properties: 13 + $nodename: 14 + const: '/' 15 + 16 + compatible: 17 + oneOf: 18 + - description: Hi3660 based boards. 19 + items: 20 + - const: hisilicon,hi3660-hikey960 21 + - const: hisilicon,hi3660 22 + 23 + - description: Hi3670 based boards. 24 + items: 25 + - const: hisilicon,hi3670-hikey970 26 + - const: hisilicon,hi3670 27 + 28 + - description: Hi3798cv200 based boards. 29 + items: 30 + - const: hisilicon,hi3798cv200-poplar 31 + - const: hisilicon,hi3798cv200 32 + 33 + - description: Hi4511 Board 34 + items: 35 + - const: hisilicon,hi3620-hi4511 36 + 37 + - description: Hi6220 based boards. 38 + items: 39 + - const: hisilicon,hi6220-hikey 40 + - const: hisilicon,hi6220 41 + 42 + - description: HiP01 based boards. 43 + items: 44 + - const: hisilicon,hip01-ca9x2 45 + - const: hisilicon,hip01 46 + 47 + - description: HiP04 D01 Board 48 + items: 49 + - const: hisilicon,hip04-d01 50 + 51 + - description: HiP05 D02 Board 52 + items: 53 + - const: hisilicon,hip05-d02 54 + 55 + - description: HiP06 D03 Board 56 + items: 57 + - const: hisilicon,hip06-d03 58 + 59 + - description: HiP07 D05 Board 60 + items: 61 + - const: hisilicon,hip07-d05 62 + 63 + - description: SD5203 based boards 64 + items: 65 + - const: H836ASDJ 66 + - const: hisilicon,sd5203 67 + ...
+61
Documentation/devicetree/bindings/arm/hisilicon/low-pin-count.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/arm/hisilicon/low-pin-count.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Hisilicon HiP06 Low Pin Count device 8 + 9 + maintainers: 10 + - Wei Xu <xuwei5@hisilicon.com> 11 + 12 + description: | 13 + Hisilicon HiP06 SoCs implement a Low Pin Count (LPC) controller, which 14 + provides I/O access to some legacy ISA devices. 15 + HiP06 is based on arm64 architecture where there is no I/O space. So, the 16 + I/O ports here are not CPU addresses, and there is no 'ranges' property in 17 + LPC device node. 18 + 19 + properties: 20 + $nodename: 21 + pattern: '^isa@[0-9a-f]+$' 22 + description: | 23 + The node name before '@' must be "isa" to represent the binding stick 24 + to the ISA/EISA binding specification. 25 + 26 + compatible: 27 + enum: 28 + - hisilicon,hip06-lpc 29 + - hisilicon,hip07-lpc 30 + 31 + reg: 32 + maxItems: 1 33 + 34 + '#address-cells': 35 + const: 2 36 + 37 + '#size-cells': 38 + const: 1 39 + 40 + required: 41 + - compatible 42 + - reg 43 + 44 + additionalProperties: 45 + type: object 46 + 47 + examples: 48 + - | 49 + isa@a01b0000 { 50 + compatible = "hisilicon,hip06-lpc"; 51 + #address-cells = <2>; 52 + #size-cells = <1>; 53 + reg = <0xa01b0000 0x1000>; 54 + 55 + ipmi0: bt@e4 { 56 + compatible = "ipmi-bt"; 57 + device_type = "ipmi"; 58 + reg = <0x01 0xe4 0x04>; 59 + }; 60 + }; 61 + ...
+2
Documentation/devicetree/bindings/arm/intel-ixp4xx.yaml
··· 10 10 - Linus Walleij <linus.walleij@linaro.org> 11 11 12 12 properties: 13 + $nodename: 14 + const: "/" 13 15 compatible: 14 16 oneOf: 15 17 - items:
+2
Documentation/devicetree/bindings/arm/mediatek/mediatek,pericfg.yaml
··· 47 47 - compatible 48 48 - reg 49 49 50 + additionalProperties: false 51 + 50 52 examples: 51 53 - | 52 54 pericfg@10003000 {
+2
Documentation/devicetree/bindings/arm/nvidia,tegra194-ccplex.yaml
··· 30 30 Specifies the bpmp node that needs to be queried to get 31 31 operating point data for all CPUs. 32 32 33 + additionalProperties: true 34 + 33 35 examples: 34 36 - | 35 37 cpus {
+2
Documentation/devicetree/bindings/arm/pmu.yaml
··· 93 93 required: 94 94 - compatible 95 95 96 + additionalProperties: false 97 + 96 98 ...
+3
Documentation/devicetree/bindings/arm/primecell.yaml
··· 33 33 contains: 34 34 const: apb_pclk 35 35 additionalItems: true 36 + 37 + additionalProperties: true 38 + 36 39 ...
+2
Documentation/devicetree/bindings/arm/qcom.yaml
··· 73 73 foundry 2. 74 74 75 75 properties: 76 + $nodename: 77 + const: "/" 76 78 compatible: 77 79 oneOf: 78 80 - items:
+2
Documentation/devicetree/bindings/arm/rda.yaml
··· 10 10 - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> 11 11 12 12 properties: 13 + $nodename: 14 + const: "/" 13 15 compatible: 14 16 items: 15 17 - enum:
+3
Documentation/devicetree/bindings/arm/samsung/pmu.yaml
··· 45 45 reg: 46 46 maxItems: 1 47 47 48 + assigned-clock-parents: true 49 + assigned-clocks: true 50 + 48 51 '#clock-cells': 49 52 const: 1 50 53
+2
Documentation/devicetree/bindings/arm/stm32/st,mlahb.yaml
··· 50 50 - '#size-cells' 51 51 - dma-ranges 52 52 53 + unevaluatedProperties: false 54 + 53 55 examples: 54 56 - | 55 57 mlahb: ahb@38000000 {
+2
Documentation/devicetree/bindings/arm/stm32/stm32.yaml
··· 10 10 - Alexandre Torgue <alexandre.torgue@st.com> 11 11 12 12 properties: 13 + $nodename: 14 + const: "/" 13 15 compatible: 14 16 oneOf: 15 17 - items:
+2
Documentation/devicetree/bindings/arm/tegra.yaml
··· 11 11 - Jonathan Hunter <jonathanh@nvidia.com> 12 12 13 13 properties: 14 + $nodename: 15 + const: "/" 14 16 compatible: 15 17 oneOf: 16 18 - items:
+2
Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-pmc.yaml
··· 308 308 - clocks 309 309 - '#clock-cells' 310 310 311 + additionalProperties: false 312 + 311 313 dependencies: 312 314 "nvidia,suspend-mode": ["nvidia,core-pwr-off-time", "nvidia,cpu-pwr-off-time"] 313 315 "nvidia,core-pwr-off-time": ["nvidia,core-pwr-good-time"]
+2
Documentation/devicetree/bindings/ata/faraday,ftide010.yaml
··· 64 64 required: 65 65 - sata 66 66 67 + unevaluatedProperties: false 68 + 67 69 examples: 68 70 - | 69 71 #include <dt-bindings/interrupt-controller/irq.h>
-37
Documentation/devicetree/bindings/ata/imx-sata.txt
··· 1 - * Freescale i.MX AHCI SATA Controller 2 - 3 - The Freescale i.MX SATA controller mostly conforms to the AHCI interface 4 - with some special extensions at integration level. 5 - 6 - Required properties: 7 - - compatible : should be one of the following: 8 - - "fsl,imx53-ahci" for i.MX53 SATA controller 9 - - "fsl,imx6q-ahci" for i.MX6Q SATA controller 10 - - "fsl,imx6qp-ahci" for i.MX6QP SATA controller 11 - - interrupts : interrupt mapping for SATA IRQ 12 - - reg : registers mapping 13 - - clocks : list of clock specifiers, must contain an entry for each 14 - required entry in clock-names 15 - - clock-names : should include "sata", "sata_ref" and "ahb" entries 16 - 17 - Optional properties: 18 - - fsl,transmit-level-mV : transmit voltage level, in millivolts. 19 - - fsl,transmit-boost-mdB : transmit boost level, in milli-decibels 20 - - fsl,transmit-atten-16ths : transmit attenuation, in 16ths 21 - - fsl,receive-eq-mdB : receive equalisation, in milli-decibels 22 - Please refer to the technical documentation or the driver source code 23 - for the list of legal values for these options. 24 - - fsl,no-spread-spectrum : disable spread-spectrum clocking on the SATA 25 - link. 26 - 27 - Examples: 28 - 29 - sata@2200000 { 30 - compatible = "fsl,imx6q-ahci"; 31 - reg = <0x02200000 0x4000>; 32 - interrupts = <0 39 IRQ_TYPE_LEVEL_HIGH>; 33 - clocks = <&clks IMX6QDL_CLK_SATA>, 34 - <&clks IMX6QDL_CLK_SATA_REF_100M>, 35 - <&clks IMX6QDL_CLK_AHB>; 36 - clock-names = "sata", "sata_ref", "ahb"; 37 - };
+83
Documentation/devicetree/bindings/ata/imx-sata.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/ata/imx-sata.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Freescale i.MX AHCI SATA Controller 8 + 9 + maintainers: 10 + - Shawn Guo <shawn.guo@linaro.org> 11 + 12 + description: | 13 + The Freescale i.MX SATA controller mostly conforms to the AHCI interface 14 + with some special extensions at integration level. 15 + 16 + properties: 17 + compatible: 18 + enum: 19 + - fsl,imx53-ahci 20 + - fsl,imx6q-ahci 21 + - fsl,imx6qp-ahci 22 + 23 + reg: 24 + maxItems: 1 25 + 26 + interrupts: 27 + maxItems: 1 28 + 29 + clocks: 30 + items: 31 + - description: sata clock 32 + - description: sata reference clock 33 + - description: ahb clock 34 + 35 + clock-names: 36 + items: 37 + - const: sata 38 + - const: sata_ref 39 + - const: ahb 40 + 41 + fsl,transmit-level-mV: 42 + $ref: /schemas/types.yaml#/definitions/uint32 43 + description: transmit voltage level, in millivolts. 44 + 45 + fsl,transmit-boost-mdB: 46 + $ref: /schemas/types.yaml#/definitions/uint32 47 + description: transmit boost level, in milli-decibels. 48 + 49 + fsl,transmit-atten-16ths: 50 + $ref: /schemas/types.yaml#/definitions/uint32 51 + description: transmit attenuation, in 16ths. 52 + 53 + fsl,receive-eq-mdB: 54 + $ref: /schemas/types.yaml#/definitions/uint32 55 + description: receive equalisation, in milli-decibels. 56 + 57 + fsl,no-spread-spectrum: 58 + $ref: /schemas/types.yaml#/definitions/flag 59 + description: if present, disable spread-spectrum clocking on the SATA link. 60 + 61 + required: 62 + - compatible 63 + - reg 64 + - interrupts 65 + - clocks 66 + - clock-names 67 + 68 + additionalProperties: false 69 + 70 + examples: 71 + - | 72 + #include <dt-bindings/clock/imx6qdl-clock.h> 73 + #include <dt-bindings/interrupt-controller/arm-gic.h> 74 + 75 + sata@2200000 { 76 + compatible = "fsl,imx6q-ahci"; 77 + reg = <0x02200000 0x4000>; 78 + interrupts = <0 39 IRQ_TYPE_LEVEL_HIGH>; 79 + clocks = <&clks IMX6QDL_CLK_SATA>, 80 + <&clks IMX6QDL_CLK_SATA_REF_100M>, 81 + <&clks IMX6QDL_CLK_AHB>; 82 + clock-names = "sata", "sata_ref", "ahb"; 83 + };
+2
Documentation/devicetree/bindings/ata/pata-common.yaml
··· 47 47 The ID number of the drive port, 0 for the master port and 1 for the 48 48 slave port. 49 49 50 + additionalProperties: true 51 + 50 52 ...
+2
Documentation/devicetree/bindings/ata/sata-common.yaml
··· 47 47 multiplier making it possible to connect up to 15 disks to a single 48 48 SATA port. 49 49 50 + additionalProperties: true 51 + 50 52 ...
+2
Documentation/devicetree/bindings/bus/mti,mips-cdmm.yaml
··· 26 26 - compatible 27 27 - reg 28 28 29 + additionalProperties: false 30 + 29 31 examples: 30 32 - | 31 33 cdmm@1bde8000 {
+2
Documentation/devicetree/bindings/bus/renesas,bsc.yaml
··· 44 44 required: 45 45 - reg 46 46 47 + unevaluatedProperties: false 48 + 47 49 examples: 48 50 - | 49 51 #include <dt-bindings/interrupt-controller/irq.h>
+2
Documentation/devicetree/bindings/bus/simple-pm-bus.yaml
··· 61 61 - required: 62 62 - power-domains 63 63 64 + additionalProperties: true 65 + 64 66 examples: 65 67 - | 66 68 #include <dt-bindings/clock/qcom,gcc-msm8996.h>
+7
Documentation/devicetree/bindings/bus/socionext,uniphier-system-bus.yaml
··· 57 57 "ranges" property should provide a "reasonable" default that is known to 58 58 work. The software should initialize the bus controller according to it. 59 59 60 + patternProperties: 61 + "^.*@[1-5],[1-9a-f][0-9a-f]+$": 62 + description: Devices attached to chip selects 63 + type: object 64 + 60 65 required: 61 66 - compatible 62 67 - reg 63 68 - "#address-cells" 64 69 - "#size-cells" 65 70 - ranges 71 + 72 + additionalProperties: false 66 73 67 74 examples: 68 75 - |
+2
Documentation/devicetree/bindings/chrome/google,cros-ec-typec.yaml
··· 26 26 required: 27 27 - compatible 28 28 29 + additionalProperties: true #fixme 30 + 29 31 examples: 30 32 - |+ 31 33 spi0 {
+2
Documentation/devicetree/bindings/clock/arm,syscon-icst.yaml
··· 89 89 - compatible 90 90 - clocks 91 91 92 + additionalProperties: false 93 + 92 94 examples: 93 95 - | 94 96 vco1: clock {
+5 -1
Documentation/devicetree/bindings/clock/baikal,bt1-ccu-div.yaml
··· 134 134 "#reset-cells": 135 135 const: 1 136 136 137 - unevaluatedProperties: false 137 + clocks: true 138 + 139 + clock-names: true 140 + 141 + additionalProperties: false 138 142 139 143 required: 140 144 - compatible
+1 -1
Documentation/devicetree/bindings/clock/baikal,bt1-ccu-pll.yaml
··· 101 101 clock-names: 102 102 const: ref_clk 103 103 104 - unevaluatedProperties: false 104 + additionalProperties: false 105 105 106 106 required: 107 107 - compatible
+11 -9
Documentation/devicetree/bindings/clock/idt,versaclock5.yaml
··· 50 50 '#clock-cells': 51 51 const: 1 52 52 53 + clock-names: 54 + minItems: 1 55 + maxItems: 2 56 + items: 57 + enum: [ xin, clkin ] 58 + clocks: 59 + minItems: 1 60 + maxItems: 2 61 + 53 62 patternProperties: 54 63 "^OUT[1-4]$": 55 64 type: object ··· 102 93 maxItems: 1 103 94 else: 104 95 # Devices without builtin crystal 105 - properties: 106 - clock-names: 107 - minItems: 1 108 - maxItems: 2 109 - items: 110 - enum: [ xin, clkin ] 111 - clocks: 112 - minItems: 1 113 - maxItems: 2 114 96 required: 115 97 - clock-names 116 98 - clocks 99 + 100 + additionalProperties: false 117 101 118 102 examples: 119 103 - |
+3 -1
Documentation/devicetree/bindings/clock/imx23-clock.yaml
··· 87 87 serial@8006c000 { 88 88 compatible = "fsl,imx23-auart"; 89 89 reg = <0x8006c000 0x2000>; 90 - interrupts = <24 25 23>; 90 + interrupts = <24>; 91 91 clocks = <&clks 32>; 92 + dmas = <&dma_apbx 6>, <&dma_apbx 7>; 93 + dma-names = "rx", "tx"; 92 94 };
+4 -2
Documentation/devicetree/bindings/clock/imx28-clock.yaml
··· 108 108 }; 109 109 110 110 serial@8006a000 { 111 - compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 111 + compatible = "fsl,imx28-auart"; 112 112 reg = <0x8006a000 0x2000>; 113 - interrupts = <112 70 71>; 113 + interrupts = <112>; 114 + dmas = <&dma_apbx 8>, <&dma_apbx 9>; 115 + dma-names = "rx", "tx"; 114 116 clocks = <&clks 45>; 115 117 };
+2
Documentation/devicetree/bindings/clock/imx6q-clock.yaml
··· 57 57 - interrupts 58 58 - '#clock-cells' 59 59 60 + additionalProperties: false 61 + 60 62 examples: 61 63 # Clock Control Module node: 62 64 - |
+2
Documentation/devicetree/bindings/clock/imx6sl-clock.yaml
··· 33 33 - interrupts 34 34 - '#clock-cells' 35 35 36 + additionalProperties: false 37 + 36 38 examples: 37 39 # Clock Control Module node: 38 40 - |
+2
Documentation/devicetree/bindings/clock/imx6sll-clock.yaml
··· 49 49 - clocks 50 50 - clock-names 51 51 52 + additionalProperties: false 53 + 52 54 examples: 53 55 # Clock Control Module node: 54 56 - |
+2
Documentation/devicetree/bindings/clock/imx6sx-clock.yaml
··· 53 53 - clocks 54 54 - clock-names 55 55 56 + additionalProperties: false 57 + 56 58 examples: 57 59 # Clock Control Module node: 58 60 - |
+2
Documentation/devicetree/bindings/clock/imx6ul-clock.yaml
··· 49 49 - clocks 50 50 - clock-names 51 51 52 + additionalProperties: false 53 + 52 54 examples: 53 55 # Clock Control Module node: 54 56 - |
+125
Documentation/devicetree/bindings/clock/imx8m-clock.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/imx8m-clock.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: NXP i.MX8M Family Clock Control Module Binding 8 + 9 + maintainers: 10 + - Anson Huang <Anson.Huang@nxp.com> 11 + 12 + description: | 13 + NXP i.MX8M Mini/Nano/Plus/Quad clock control module is an integrated clock 14 + controller, which generates and supplies to all modules. 15 + 16 + properties: 17 + compatible: 18 + enum: 19 + - fsl,imx8mm-ccm 20 + - fsl,imx8mn-ccm 21 + - fsl,imx8mp-ccm 22 + - fsl,imx8mq-ccm 23 + 24 + reg: 25 + maxItems: 1 26 + 27 + clocks: 28 + minItems: 6 29 + maxItems: 7 30 + 31 + clock-names: 32 + minItems: 6 33 + maxItems: 7 34 + 35 + '#clock-cells': 36 + const: 1 37 + description: 38 + The clock consumer should specify the desired clock by having the clock 39 + ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx8m-clock.h 40 + for the full list of i.MX8M clock IDs. 41 + 42 + required: 43 + - compatible 44 + - reg 45 + - clocks 46 + - clock-names 47 + - '#clock-cells' 48 + 49 + allOf: 50 + - if: 51 + properties: 52 + compatible: 53 + contains: 54 + const: fsl,imx8mq-ccm 55 + then: 56 + properties: 57 + clocks: 58 + minItems: 7 59 + maxItems: 7 60 + items: 61 + - description: 32k osc 62 + - description: 25m osc 63 + - description: 27m osc 64 + - description: ext1 clock input 65 + - description: ext2 clock input 66 + - description: ext3 clock input 67 + - description: ext4 clock input 68 + clock-names: 69 + minItems: 7 70 + maxItems: 7 71 + items: 72 + - const: ckil 73 + - const: osc_25m 74 + - const: osc_27m 75 + - const: clk_ext1 76 + - const: clk_ext2 77 + - const: clk_ext3 78 + - const: clk_ext4 79 + else: 80 + properties: 81 + clocks: 82 + items: 83 + - description: 32k osc 84 + - description: 24m osc 85 + - description: ext1 clock input 86 + - description: ext2 clock input 87 + - description: ext3 clock input 88 + - description: ext4 clock input 89 + 90 + clock-names: 91 + items: 92 + - const: osc_32k 93 + - const: osc_24m 94 + - const: clk_ext1 95 + - const: clk_ext2 96 + - const: clk_ext3 97 + - const: clk_ext4 98 + 99 + additionalProperties: false 100 + 101 + examples: 102 + # Clock Control Module node: 103 + - | 104 + clock-controller@30380000 { 105 + compatible = "fsl,imx8mm-ccm"; 106 + reg = <0x30380000 0x10000>; 107 + #clock-cells = <1>; 108 + clocks = <&osc_32k>, <&osc_24m>, <&clk_ext1>, <&clk_ext2>, 109 + <&clk_ext3>, <&clk_ext4>; 110 + clock-names = "osc_32k", "osc_24m", "clk_ext1", "clk_ext2", 111 + "clk_ext3", "clk_ext4"; 112 + }; 113 + 114 + - | 115 + clock-controller@30390000 { 116 + compatible = "fsl,imx8mq-ccm"; 117 + reg = <0x30380000 0x10000>; 118 + #clock-cells = <1>; 119 + clocks = <&ckil>, <&osc_25m>, <&osc_27m>, <&clk_ext1>, 120 + <&clk_ext2>, <&clk_ext3>, <&clk_ext4>; 121 + clock-names = "ckil", "osc_25m", "osc_27m", "clk_ext1", 122 + "clk_ext2", "clk_ext3", "clk_ext4"; 123 + }; 124 + 125 + ...
-68
Documentation/devicetree/bindings/clock/imx8mm-clock.yaml
··· 1 - # SPDX-License-Identifier: GPL-2.0 2 - %YAML 1.2 3 - --- 4 - $id: http://devicetree.org/schemas/clock/imx8mm-clock.yaml# 5 - $schema: http://devicetree.org/meta-schemas/core.yaml# 6 - 7 - title: NXP i.MX8M Mini Clock Control Module Binding 8 - 9 - maintainers: 10 - - Anson Huang <Anson.Huang@nxp.com> 11 - 12 - description: | 13 - NXP i.MX8M Mini clock control module is an integrated clock controller, which 14 - generates and supplies to all modules. 15 - 16 - properties: 17 - compatible: 18 - const: fsl,imx8mm-ccm 19 - 20 - reg: 21 - maxItems: 1 22 - 23 - clocks: 24 - items: 25 - - description: 32k osc 26 - - description: 24m osc 27 - - description: ext1 clock input 28 - - description: ext2 clock input 29 - - description: ext3 clock input 30 - - description: ext4 clock input 31 - 32 - clock-names: 33 - items: 34 - - const: osc_32k 35 - - const: osc_24m 36 - - const: clk_ext1 37 - - const: clk_ext2 38 - - const: clk_ext3 39 - - const: clk_ext4 40 - 41 - '#clock-cells': 42 - const: 1 43 - description: 44 - The clock consumer should specify the desired clock by having the clock 45 - ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx8mm-clock.h 46 - for the full list of i.MX8M Mini clock IDs. 47 - 48 - required: 49 - - compatible 50 - - reg 51 - - clocks 52 - - clock-names 53 - - '#clock-cells' 54 - 55 - examples: 56 - # Clock Control Module node: 57 - - | 58 - clk: clock-controller@30380000 { 59 - compatible = "fsl,imx8mm-ccm"; 60 - reg = <0x30380000 0x10000>; 61 - #clock-cells = <1>; 62 - clocks = <&osc_32k>, <&osc_24m>, <&clk_ext1>, <&clk_ext2>, 63 - <&clk_ext3>, <&clk_ext4>; 64 - clock-names = "osc_32k", "osc_24m", "clk_ext1", "clk_ext2", 65 - "clk_ext3", "clk_ext4"; 66 - }; 67 - 68 - ...
-70
Documentation/devicetree/bindings/clock/imx8mn-clock.yaml
··· 1 - # SPDX-License-Identifier: GPL-2.0 2 - %YAML 1.2 3 - --- 4 - $id: http://devicetree.org/schemas/clock/imx8mn-clock.yaml# 5 - $schema: http://devicetree.org/meta-schemas/core.yaml# 6 - 7 - title: NXP i.MX8M Nano Clock Control Module Binding 8 - 9 - maintainers: 10 - - Anson Huang <Anson.Huang@nxp.com> 11 - 12 - description: | 13 - NXP i.MX8M Nano clock control module is an integrated clock controller, which 14 - generates and supplies to all modules. 15 - 16 - properties: 17 - compatible: 18 - const: fsl,imx8mn-ccm 19 - 20 - reg: 21 - maxItems: 1 22 - 23 - clocks: 24 - items: 25 - - description: 32k osc 26 - - description: 24m osc 27 - - description: ext1 clock input 28 - - description: ext2 clock input 29 - - description: ext3 clock input 30 - - description: ext4 clock input 31 - 32 - clock-names: 33 - items: 34 - - const: osc_32k 35 - - const: osc_24m 36 - - const: clk_ext1 37 - - const: clk_ext2 38 - - const: clk_ext3 39 - - const: clk_ext4 40 - 41 - '#clock-cells': 42 - const: 1 43 - description: 44 - The clock consumer should specify the desired clock by having the clock 45 - ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx8mn-clock.h 46 - for the full list of i.MX8M Nano clock IDs. 47 - 48 - required: 49 - - compatible 50 - - reg 51 - - clocks 52 - - clock-names 53 - - '#clock-cells' 54 - 55 - additionalProperties: false 56 - 57 - examples: 58 - # Clock Control Module node: 59 - - | 60 - clk: clock-controller@30380000 { 61 - compatible = "fsl,imx8mn-ccm"; 62 - reg = <0x30380000 0x10000>; 63 - #clock-cells = <1>; 64 - clocks = <&osc_32k>, <&osc_24m>, <&clk_ext1>, 65 - <&clk_ext2>, <&clk_ext3>, <&clk_ext4>; 66 - clock-names = "osc_32k", "osc_24m", "clk_ext1", 67 - "clk_ext2", "clk_ext3", "clk_ext4"; 68 - }; 69 - 70 - ...
-70
Documentation/devicetree/bindings/clock/imx8mp-clock.yaml
··· 1 - # SPDX-License-Identifier: GPL-2.0 2 - %YAML 1.2 3 - --- 4 - $id: http://devicetree.org/schemas/clock/imx8mp-clock.yaml# 5 - $schema: http://devicetree.org/meta-schemas/core.yaml# 6 - 7 - title: NXP i.MX8M Plus Clock Control Module Binding 8 - 9 - maintainers: 10 - - Anson Huang <Anson.Huang@nxp.com> 11 - 12 - description: 13 - NXP i.MX8M Plus clock control module is an integrated clock controller, which 14 - generates and supplies to all modules. 15 - 16 - properties: 17 - compatible: 18 - const: fsl,imx8mp-ccm 19 - 20 - reg: 21 - maxItems: 1 22 - 23 - clocks: 24 - items: 25 - - description: 32k osc 26 - - description: 24m osc 27 - - description: ext1 clock input 28 - - description: ext2 clock input 29 - - description: ext3 clock input 30 - - description: ext4 clock input 31 - 32 - clock-names: 33 - items: 34 - - const: osc_32k 35 - - const: osc_24m 36 - - const: clk_ext1 37 - - const: clk_ext2 38 - - const: clk_ext3 39 - - const: clk_ext4 40 - 41 - '#clock-cells': 42 - const: 1 43 - description: 44 - The clock consumer should specify the desired clock by having the clock 45 - ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx8mp-clock.h 46 - for the full list of i.MX8M Plus clock IDs. 47 - 48 - required: 49 - - compatible 50 - - reg 51 - - clocks 52 - - clock-names 53 - - '#clock-cells' 54 - 55 - additionalProperties: false 56 - 57 - examples: 58 - # Clock Control Module node: 59 - - | 60 - clk: clock-controller@30380000 { 61 - compatible = "fsl,imx8mp-ccm"; 62 - reg = <0x30380000 0x10000>; 63 - #clock-cells = <1>; 64 - clocks = <&osc_32k>, <&osc_24m>, <&clk_ext1>, 65 - <&clk_ext2>, <&clk_ext3>, <&clk_ext4>; 66 - clock-names = "osc_32k", "osc_24m", "clk_ext1", 67 - "clk_ext2", "clk_ext3", "clk_ext4"; 68 - }; 69 - 70 - ...
-72
Documentation/devicetree/bindings/clock/imx8mq-clock.yaml
··· 1 - # SPDX-License-Identifier: GPL-2.0 2 - %YAML 1.2 3 - --- 4 - $id: http://devicetree.org/schemas/clock/imx8mq-clock.yaml# 5 - $schema: http://devicetree.org/meta-schemas/core.yaml# 6 - 7 - title: NXP i.MX8M Quad Clock Control Module Binding 8 - 9 - maintainers: 10 - - Anson Huang <Anson.Huang@nxp.com> 11 - 12 - description: | 13 - NXP i.MX8M Quad clock control module is an integrated clock controller, which 14 - generates and supplies to all modules. 15 - 16 - properties: 17 - compatible: 18 - const: fsl,imx8mq-ccm 19 - 20 - reg: 21 - maxItems: 1 22 - 23 - clocks: 24 - items: 25 - - description: 32k osc 26 - - description: 25m osc 27 - - description: 27m osc 28 - - description: ext1 clock input 29 - - description: ext2 clock input 30 - - description: ext3 clock input 31 - - description: ext4 clock input 32 - 33 - clock-names: 34 - items: 35 - - const: ckil 36 - - const: osc_25m 37 - - const: osc_27m 38 - - const: clk_ext1 39 - - const: clk_ext2 40 - - const: clk_ext3 41 - - const: clk_ext4 42 - 43 - '#clock-cells': 44 - const: 1 45 - description: 46 - The clock consumer should specify the desired clock by having the clock 47 - ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx8mq-clock.h 48 - for the full list of i.MX8M Quad clock IDs. 49 - 50 - required: 51 - - compatible 52 - - reg 53 - - clocks 54 - - clock-names 55 - - '#clock-cells' 56 - 57 - examples: 58 - # Clock Control Module node: 59 - - | 60 - clk: clock-controller@30380000 { 61 - compatible = "fsl,imx8mq-ccm"; 62 - reg = <0x30380000 0x10000>; 63 - #clock-cells = <1>; 64 - clocks = <&ckil>, <&osc_25m>, <&osc_27m>, 65 - <&clk_ext1>, <&clk_ext2>, 66 - <&clk_ext3>, <&clk_ext4>; 67 - clock-names = "ckil", "osc_25m", "osc_27m", 68 - "clk_ext1", "clk_ext2", 69 - "clk_ext3", "clk_ext4"; 70 - }; 71 - 72 - ...
+2
Documentation/devicetree/bindings/clock/intel,cgu-lgm.yaml
··· 33 33 - reg 34 34 - '#clock-cells' 35 35 36 + additionalProperties: false 37 + 36 38 examples: 37 39 - | 38 40 cgu: clock-controller@e0200000 {
+2
Documentation/devicetree/bindings/clock/qcom,gcc-sm8250.yaml
··· 56 56 - '#reset-cells' 57 57 - '#power-domain-cells' 58 58 59 + additionalProperties: false 60 + 59 61 examples: 60 62 - | 61 63 #include <dt-bindings/clock/qcom,rpmh.h>
-46
Documentation/devicetree/bindings/clock/sifive/fu540-prci.txt
··· 1 - SiFive FU540 PRCI bindings 2 - 3 - On the FU540 family of SoCs, most system-wide clock and reset integration 4 - is via the PRCI IP block. 5 - 6 - Required properties: 7 - - compatible: Should be "sifive,<chip>-prci". Only one value is 8 - supported: "sifive,fu540-c000-prci" 9 - - reg: Should describe the PRCI's register target physical address region 10 - - clocks: Should point to the hfclk device tree node and the rtcclk 11 - device tree node. The RTC clock here is not a time-of-day clock, 12 - but is instead a high-stability clock source for system timers 13 - and cycle counters. 14 - - #clock-cells: Should be <1> 15 - 16 - The clock consumer should specify the desired clock via the clock ID 17 - macros defined in include/dt-bindings/clock/sifive-fu540-prci.h. 18 - These macros begin with PRCI_CLK_. 19 - 20 - The hfclk and rtcclk nodes are required, and represent physical 21 - crystals or resonators located on the PCB. These nodes should be present 22 - underneath /, rather than /soc. 23 - 24 - Examples: 25 - 26 - /* under /, in PCB-specific DT data */ 27 - hfclk: hfclk { 28 - #clock-cells = <0>; 29 - compatible = "fixed-clock"; 30 - clock-frequency = <33333333>; 31 - clock-output-names = "hfclk"; 32 - }; 33 - rtcclk: rtcclk { 34 - #clock-cells = <0>; 35 - compatible = "fixed-clock"; 36 - clock-frequency = <1000000>; 37 - clock-output-names = "rtcclk"; 38 - }; 39 - 40 - /* under /soc, in SoC-specific DT data */ 41 - prci: clock-controller@10000000 { 42 - compatible = "sifive,fu540-c000-prci"; 43 - reg = <0x0 0x10000000 0x0 0x1000>; 44 - clocks = <&hfclk>, <&rtcclk>; 45 - #clock-cells = <1>; 46 - };
+60
Documentation/devicetree/bindings/clock/sifive/fu540-prci.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + # Copyright (C) 2020 SiFive, Inc. 3 + %YAML 1.2 4 + --- 5 + $id: http://devicetree.org/schemas/clock/sifive/fu540-prci.yaml# 6 + $schema: http://devicetree.org/meta-schemas/core.yaml# 7 + 8 + title: SiFive FU540 Power Reset Clock Interrupt Controller (PRCI) 9 + 10 + maintainers: 11 + - Sagar Kadam <sagar.kadam@sifive.com> 12 + - Paul Walmsley <paul.walmsley@sifive.com> 13 + 14 + description: 15 + On the FU540 family of SoCs, most system-wide clock and reset integration 16 + is via the PRCI IP block. 17 + The clock consumer should specify the desired clock via the clock ID 18 + macros defined in include/dt-bindings/clock/sifive-fu540-prci.h. 19 + These macros begin with PRCI_CLK_. 20 + 21 + The hfclk and rtcclk nodes are required, and represent physical 22 + crystals or resonators located on the PCB. These nodes should be present 23 + underneath /, rather than /soc. 24 + 25 + properties: 26 + compatible: 27 + const: sifive,fu540-c000-prci 28 + 29 + reg: 30 + maxItems: 1 31 + 32 + clocks: 33 + items: 34 + - description: high frequency clock. 35 + - description: RTL clock. 36 + 37 + clock-names: 38 + items: 39 + - const: hfclk 40 + - const: rtcclk 41 + 42 + "#clock-cells": 43 + const: 1 44 + 45 + required: 46 + - compatible 47 + - reg 48 + - clocks 49 + - "#clock-cells" 50 + 51 + additionalProperties: false 52 + 53 + examples: 54 + - | 55 + prci: clock-controller@10000000 { 56 + compatible = "sifive,fu540-c000-prci"; 57 + reg = <0x10000000 0x1000>; 58 + clocks = <&hfclk>, <&rtcclk>; 59 + #clock-cells = <1>; 60 + };
+2
Documentation/devicetree/bindings/clock/sprd,sc9863a-clk.yaml
··· 73 73 The 'reg' property for the clock node is also required if there is a sub 74 74 range of registers for the clocks. 75 75 76 + additionalProperties: false 77 + 76 78 examples: 77 79 - | 78 80 ap_clk: clock-controller@21500000 {
+2
Documentation/devicetree/bindings/clock/ti,am654-ehrpwm-tbclk.yaml
··· 26 26 - "#clock-cells" 27 27 - reg 28 28 29 + additionalProperties: false 30 + 29 31 examples: 30 32 - | 31 33 ehrpwm_tbclk: syscon@4140 {
-49
Documentation/devicetree/bindings/connector/samsung,usb-connector-11pin.txt
··· 1 - Samsung micro-USB 11-pin connector 2 - ================================== 3 - 4 - Samsung micro-USB 11-pin connector is an extension of micro-USB connector. 5 - It is present in multiple Samsung mobile devices. 6 - It has additional pins to route MHL traffic simultanously with USB. 7 - 8 - The bindings are superset of usb-connector bindings for micro-USB connector[1]. 9 - 10 - Required properties: 11 - - compatible: must be: "samsung,usb-connector-11pin", "usb-b-connector", 12 - - type: must be "micro". 13 - 14 - Required nodes: 15 - - any data bus to the connector should be modeled using the OF graph bindings 16 - specified in bindings/graph.txt, unless the bus is between parent node and 17 - the connector. Since single connector can have multpile data buses every bus 18 - has assigned OF graph port number as follows: 19 - 0: High Speed (HS), 20 - 3: Mobile High-Definition Link (MHL), specific to 11-pin Samsung micro-USB. 21 - 22 - [1]: bindings/connector/usb-connector.yaml 23 - 24 - Example 25 - ------- 26 - 27 - Micro-USB connector with HS lines routed via controller (MUIC) and MHL lines 28 - connected to HDMI-MHL bridge (sii8620): 29 - 30 - muic-max77843@66 { 31 - ... 32 - usb_con: connector { 33 - compatible = "samsung,usb-connector-11pin", "usb-b-connector"; 34 - label = "micro-USB"; 35 - type = "micro"; 36 - 37 - ports { 38 - #address-cells = <1>; 39 - #size-cells = <0>; 40 - 41 - port@3 { 42 - reg = <3>; 43 - usb_con_mhl: endpoint { 44 - remote-endpoint = <&sii8620_mhl>; 45 - }; 46 - }; 47 - }; 48 - }; 49 - };
+75 -1
Documentation/devicetree/bindings/connector/usb-connector.yaml
··· 11 11 12 12 description: 13 13 A USB connector node represents a physical USB connector. It should be a child 14 - of a USB interface controller. 14 + of a USB interface controller or a separate node when it is attached to both 15 + MUX and USB interface controller. 15 16 16 17 properties: 17 18 compatible: ··· 24 23 25 24 - items: 26 25 - const: gpio-usb-b-connector 26 + - const: usb-b-connector 27 + 28 + - items: 29 + - const: samsung,usb-connector-11pin 27 30 - const: usb-b-connector 28 31 29 32 label: ··· 163 158 - required: 164 159 - id-gpios 165 160 161 + - if: 162 + properties: 163 + compatible: 164 + contains: 165 + const: samsung,usb-connector-11pin 166 + then: 167 + properties: 168 + type: 169 + const: micro 170 + 171 + additionalProperties: true 172 + 166 173 examples: 167 174 # Micro-USB connector with HS lines routed via controller (MUIC). 168 175 - | ··· 238 221 }; 239 222 }; 240 223 224 + # USB-C connector attached to SoC and USB3 typec port controller(hd3ss3220) 225 + # with SS 2:1 MUX. HS lines routed to SoC, SS lines routed to the MUX and 226 + # the output of MUX is connected to the SoC. 227 + - | 228 + connector { 229 + compatible = "usb-c-connector"; 230 + label = "USB-C"; 231 + data-role = "dual"; 232 + 233 + ports { 234 + #address-cells = <1>; 235 + #size-cells = <0>; 236 + port@0 { 237 + reg = <0>; 238 + hs_ep: endpoint { 239 + remote-endpoint = <&usb3_hs_ep>; 240 + }; 241 + }; 242 + port@1 { 243 + reg = <1>; 244 + ss_ep: endpoint { 245 + remote-endpoint = <&hd3ss3220_in_ep>; 246 + }; 247 + }; 248 + }; 249 + }; 250 + 241 251 # USB connector with GPIO control lines 242 252 - | 243 253 #include <dt-bindings/gpio/gpio.h> ··· 275 231 type = "micro"; 276 232 id-gpios = <&pio 12 GPIO_ACTIVE_HIGH>; 277 233 vbus-supply = <&usb_p0_vbus>; 234 + }; 235 + }; 236 + 237 + # Micro-USB connector with HS lines routed via controller (MUIC) and MHL 238 + # lines connected to HDMI-MHL bridge (sii8620) on Samsung Exynos5433-based 239 + # mobile phone 240 + - | 241 + muic-max77843 { 242 + usb_con4: connector { 243 + compatible = "samsung,usb-connector-11pin", "usb-b-connector"; 244 + label = "micro-USB"; 245 + type = "micro"; 246 + 247 + ports { 248 + #address-cells = <1>; 249 + #size-cells = <0>; 250 + 251 + port@0 { 252 + reg = <0>; 253 + muic_to_usb: endpoint { 254 + remote-endpoint = <&usb_to_muic>; 255 + }; 256 + }; 257 + port@3 { 258 + reg = <3>; 259 + usb_con_mhl: endpoint { 260 + remote-endpoint = <&sii8620_mhl>; 261 + }; 262 + }; 263 + }; 278 264 }; 279 265 };
-18
Documentation/devicetree/bindings/crypto/fsl-dcp.txt
··· 1 - Freescale DCP (Data Co-Processor) found on i.MX23/i.MX28 . 2 - 3 - Required properties: 4 - - compatible : Should be "fsl,<soc>-dcp" 5 - - reg : Should contain MXS DCP registers location and length 6 - - interrupts : Should contain MXS DCP interrupt numbers, VMI IRQ and DCP IRQ 7 - must be supplied, optionally Secure IRQ can be present, but 8 - is currently not implemented and not used. 9 - - clocks : Clock reference (only required on some SOCs: 6ull and 6sll). 10 - - clock-names : Must be "dcp". 11 - 12 - Example: 13 - 14 - dcp: crypto@80028000 { 15 - compatible = "fsl,imx28-dcp", "fsl,imx23-dcp"; 16 - reg = <0x80028000 0x2000>; 17 - interrupts = <52 53>; 18 - };
+51
Documentation/devicetree/bindings/crypto/fsl-dcp.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/crypto/fsl-dcp.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Freescale DCP (Data Co-Processor) found on i.MX23/i.MX28 8 + 9 + maintainers: 10 + - Marek Vasut <marex@denx.de> 11 + 12 + properties: 13 + compatible: 14 + enum: 15 + - fsl,imx23-dcp 16 + - fsl,imx28-dcp 17 + 18 + reg: 19 + maxItems: 1 20 + 21 + interrupts: 22 + description: Should contain MXS DCP interrupt numbers, VMI IRQ and DCP IRQ 23 + must be supplied, optionally Secure IRQ can be present, but is currently 24 + not implemented and not used. 25 + items: 26 + - description: MXS DCP VMI interrupt 27 + - description: MXS DCP DCP interrupt 28 + - description: MXS DCP secure interrupt 29 + minItems: 2 30 + maxItems: 3 31 + 32 + clocks: 33 + maxItems: 1 34 + 35 + clock-names: 36 + const: dcp 37 + 38 + required: 39 + - compatible 40 + - reg 41 + - interrupts 42 + 43 + additionalProperties: false 44 + 45 + examples: 46 + - | 47 + crypto@80028000 { 48 + compatible = "fsl,imx23-dcp"; 49 + reg = <0x80028000 0x2000>; 50 + interrupts = <53>, <54>; 51 + };
-15
Documentation/devicetree/bindings/crypto/fsl-imx-sahara.txt
··· 1 - Freescale SAHARA Cryptographic Accelerator included in some i.MX chips. 2 - Currently only i.MX27 and i.MX53 are supported. 3 - 4 - Required properties: 5 - - compatible : Should be "fsl,<soc>-sahara" 6 - - reg : Should contain SAHARA registers location and length 7 - - interrupts : Should contain SAHARA interrupt number 8 - 9 - Example: 10 - 11 - sah: crypto@10025000 { 12 - compatible = "fsl,imx27-sahara"; 13 - reg = < 0x10025000 0x800>; 14 - interrupts = <75>; 15 - };
+37
Documentation/devicetree/bindings/crypto/fsl-imx-sahara.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/crypto/fsl-imx-sahara.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Freescale SAHARA Cryptographic Accelerator included in some i.MX chips 8 + 9 + maintainers: 10 + - Steffen Trumtrar <s.trumtrar@pengutronix.de> 11 + 12 + properties: 13 + compatible: 14 + enum: 15 + - fsl,imx27-sahara 16 + - fsl,imx53-sahara 17 + 18 + reg: 19 + maxItems: 1 20 + 21 + interrupts: 22 + maxItems: 1 23 + 24 + required: 25 + - compatible 26 + - reg 27 + - interrupts 28 + 29 + additionalProperties: false 30 + 31 + examples: 32 + - | 33 + crypto@10025000 { 34 + compatible = "fsl,imx27-sahara"; 35 + reg = < 0x10025000 0x800>; 36 + interrupts = <75>; 37 + };
-21
Documentation/devicetree/bindings/crypto/fsl-imx-scc.txt
··· 1 - Freescale Security Controller (SCC) 2 - 3 - Required properties: 4 - - compatible : Should be "fsl,imx25-scc". 5 - - reg : Should contain register location and length. 6 - - interrupts : Should contain interrupt numbers for SCM IRQ and SMN IRQ. 7 - - interrupt-names : Should specify the names "scm" and "smn" for the 8 - SCM IRQ and SMN IRQ. 9 - - clocks: Should contain the clock driving the SCC core. 10 - - clock-names: Should be set to "ipg". 11 - 12 - Example: 13 - 14 - scc: crypto@53fac000 { 15 - compatible = "fsl,imx25-scc"; 16 - reg = <0x53fac000 0x4000>; 17 - clocks = <&clks 111>; 18 - clock-names = "ipg"; 19 - interrupts = <49>, <50>; 20 - interrupt-names = "scm", "smn"; 21 - };
+54
Documentation/devicetree/bindings/crypto/fsl-imx-scc.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/crypto/fsl-imx-scc.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Freescale Security Controller (SCC) 8 + 9 + maintainers: 10 + - Steffen Trumtrar <s.trumtrar@pengutronix.de> 11 + 12 + properties: 13 + compatible: 14 + const: fsl,imx25-scc 15 + 16 + reg: 17 + maxItems: 1 18 + 19 + interrupts: 20 + items: 21 + - description: SCC SCM interrupt 22 + - description: SCC SMN interrupt 23 + 24 + interrupt-names: 25 + items: 26 + - const: scm 27 + - const: smn 28 + 29 + clocks: 30 + maxItems: 1 31 + 32 + clock-names: 33 + const: ipg 34 + 35 + required: 36 + - compatible 37 + - reg 38 + - interrupts 39 + - interrupt-names 40 + - clocks 41 + - clock-names 42 + 43 + additionalProperties: false 44 + 45 + examples: 46 + - | 47 + crypto@53fac000 { 48 + compatible = "fsl,imx25-scc"; 49 + reg = <0x53fac000 0x4000>; 50 + clocks = <&clks 111>; 51 + clock-names = "ipg"; 52 + interrupts = <49>, <50>; 53 + interrupt-names = "scm", "smn"; 54 + };
+1 -1
Documentation/devicetree/bindings/crypto/samsung-slimsss.yaml
··· 19 19 properties: 20 20 compatible: 21 21 items: 22 - - const: samsung,exynos5433-slim-ss 22 + - const: samsung,exynos5433-slim-sss 23 23 24 24 reg: 25 25 maxItems: 1
+2 -9
Documentation/devicetree/bindings/display/allwinner,sun6i-a31-mipi-dsi.yaml
··· 11 11 - Maxime Ripard <mripard@kernel.org> 12 12 13 13 properties: 14 - "#address-cells": true 15 - "#size-cells": true 16 - 17 14 compatible: 18 15 enum: 19 16 - allwinner,sun6i-a31-mipi-dsi ··· 54 57 port should be the input endpoint, usually coming from the 55 58 associated TCON. 56 59 57 - patternProperties: 58 - "^panel@[0-9]+$": true 59 - 60 60 required: 61 - - "#address-cells" 62 - - "#size-cells" 63 61 - compatible 64 62 - reg 65 63 - interrupts ··· 66 74 - port 67 75 68 76 allOf: 77 + - $ref: dsi-controller.yaml# 69 78 - if: 70 79 properties: 71 80 compatible: ··· 92 99 clocks: 93 100 minItems: 1 94 101 95 - additionalProperties: false 102 + unevaluatedProperties: false 96 103 97 104 examples: 98 105 - |
+3
Documentation/devicetree/bindings/display/brcm,bcm2835-dsi0.yaml
··· 9 9 maintainers: 10 10 - Eric Anholt <eric@anholt.net> 11 11 12 + allOf: 13 + - $ref: dsi-controller.yaml# 14 + 12 15 properties: 13 16 "#clock-cells": 14 17 const: 1
+5
Documentation/devicetree/bindings/display/bridge/ite,it6505.yaml
··· 31 31 compatible: 32 32 const: ite,it6505 33 33 34 + reg: 35 + maxItems: 1 36 + 34 37 ovdd-supply: 35 38 maxItems: 1 36 39 description: I/O voltage ··· 65 62 - interrupts 66 63 - reset-gpios 67 64 - extcon 65 + 66 + additionalProperties: false 68 67 69 68 examples: 70 69 - |
+3
Documentation/devicetree/bindings/display/bridge/lvds-codec.yaml
··· 83 83 - compatible 84 84 - ports 85 85 86 + additionalProperties: false 87 + 88 + 86 89 examples: 87 90 - | 88 91 lvds-encoder {
+9 -6
Documentation/devicetree/bindings/display/bridge/nwl-dsi.yaml
··· 14 14 NWL MIPI-DSI host controller found on i.MX8 platforms. This is a dsi bridge for 15 15 the SOCs NWL MIPI-DSI host controller. 16 16 17 + allOf: 18 + - $ref: ../dsi-controller.yaml# 19 + 17 20 properties: 18 21 compatible: 19 22 const: fsl,imx8mq-nwl-dsi ··· 32 29 33 30 '#size-cells': 34 31 const: 0 32 + 33 + assigned-clock-parents: true 34 + assigned-clock-rates: true 35 + assigned-clocks: true 35 36 36 37 clocks: 37 38 items: ··· 147 140 148 141 additionalProperties: false 149 142 150 - patternProperties: 151 - "^panel@[0-9]+$": 152 - type: object 153 - 154 143 required: 155 144 - '#address-cells' 156 145 - '#size-cells' ··· 162 159 - reset-names 163 160 - resets 164 161 165 - additionalProperties: false 162 + unevaluatedProperties: false 166 163 167 164 examples: 168 165 - | ··· 171 168 #include <dt-bindings/interrupt-controller/arm-gic.h> 172 169 #include <dt-bindings/reset/imx8mq-reset.h> 173 170 174 - mipi_dsi: mipi_dsi@30a00000 { 171 + dsi@30a00000 { 175 172 #address-cells = <1>; 176 173 #size-cells = <0>; 177 174 compatible = "fsl,imx8mq-nwl-dsi";
+2
Documentation/devicetree/bindings/display/bridge/snps,dw-mipi-dsi.yaml
··· 66 66 - clocks 67 67 - ports 68 68 - reg 69 + 70 + additionalProperties: true
+2
Documentation/devicetree/bindings/display/dsi-controller.yaml
··· 73 73 required: 74 74 - reg 75 75 76 + additionalProperties: true 77 + 76 78 examples: 77 79 - | 78 80 #include <dt-bindings/gpio/gpio.h>
+2
Documentation/devicetree/bindings/display/msm/gmu.yaml
··· 89 89 - iommus 90 90 - operating-points-v2 91 91 92 + additionalProperties: false 93 + 92 94 examples: 93 95 - | 94 96 #include <dt-bindings/clock/qcom,gpucc-sdm845.h>
+2
Documentation/devicetree/bindings/display/panel/lvds.yaml
··· 112 112 - required: 113 113 - ports 114 114 115 + additionalProperties: true 116 + 115 117 ...
+2
Documentation/devicetree/bindings/display/panel/panel-common.yaml
··· 163 163 width-mm: [ height-mm ] 164 164 height-mm: [ width-mm ] 165 165 166 + additionalProperties: true 167 + 166 168 ...
+11 -1
Documentation/devicetree/bindings/display/panel/samsung,amoled-mipi-dsi.yaml
··· 12 12 allOf: 13 13 - $ref: panel-common.yaml# 14 14 15 + - if: 16 + properties: 17 + compatible: 18 + contains: 19 + enum: 20 + - samsung,s6e3ha2 21 + - samsung,s6e3hf2 22 + then: 23 + required: 24 + - enable-gpios 25 + 15 26 properties: 16 27 compatible: 17 28 enum: ··· 50 39 - vdd3-supply 51 40 - vci-supply 52 41 - reset-gpios 53 - - enable-gpios 54 42 55 43 additionalProperties: false 56 44
+2
Documentation/devicetree/bindings/display/panel/tpo,tpg110.yaml
··· 72 72 - spi-max-frequency 73 73 - port 74 74 75 + unevaluatedProperties: false 76 + 75 77 examples: 76 78 - |+ 77 79 spi {
+4 -19
Documentation/devicetree/bindings/display/st,stm32-dsi.yaml
··· 13 13 description: 14 14 The STMicroelectronics STM32 DSI controller uses the Synopsys DesignWare MIPI-DSI host controller. 15 15 16 + allOf: 17 + - $ref: dsi-controller.yaml# 18 + 16 19 properties: 17 20 compatible: 18 21 const: st,stm32-dsi ··· 68 65 description: 69 66 DSI output port node, connected to a panel or a bridge input port" 70 67 71 - patternProperties: 72 - "^(panel|panel-dsi)@[0-9]$": 73 - type: object 74 - description: 75 - A node containing the panel or bridge description as documented in 76 - Documentation/devicetree/bindings/display/mipi-dsi-bus.txt 77 - properties: 78 - port: 79 - type: object 80 - description: 81 - Panel or bridge port node, connected to the DSI output port (port@1) 82 - 83 - "#address-cells": 84 - const: 1 85 - 86 - "#size-cells": 87 - const: 0 88 - 89 68 required: 90 69 - "#address-cells" 91 70 - "#size-cells" ··· 77 92 - clock-names 78 93 - ports 79 94 80 - additionalProperties: false 95 + unevaluatedProperties: false 81 96 82 97 examples: 83 98 - |
+2
Documentation/devicetree/bindings/dma/dma-common.yaml
··· 49 49 50 50 required: 51 51 - "#dma-cells" 52 + 53 + additionalProperties: true
+2
Documentation/devicetree/bindings/dma/dma-controller.yaml
··· 17 17 $nodename: 18 18 pattern: "^dma-controller(@.*)?$" 19 19 20 + additionalProperties: true 21 + 20 22 examples: 21 23 - | 22 24 dma: dma-controller@48000000 {
+2
Documentation/devicetree/bindings/dma/dma-router.yaml
··· 36 36 - "#dma-cells" 37 37 - dma-masters 38 38 39 + additionalProperties: true 40 + 39 41 examples: 40 42 - | 41 43 sdma_xbar: dma-router@4a002b78 {
+2
Documentation/devicetree/bindings/dma/ingenic,dma.yaml
··· 62 62 - interrupts 63 63 - clocks 64 64 65 + unevaluatedProperties: false 66 + 65 67 examples: 66 68 - | 67 69 #include <dt-bindings/clock/jz4780-cgu.h>
+2
Documentation/devicetree/bindings/dma/st,stm32-dma.yaml
··· 81 81 - clocks 82 82 - interrupts 83 83 84 + unevaluatedProperties: false 85 + 84 86 examples: 85 87 - | 86 88 #include <dt-bindings/interrupt-controller/arm-gic.h>
+2
Documentation/devicetree/bindings/dma/st,stm32-dmamux.yaml
··· 33 33 - reg 34 34 - dma-masters 35 35 36 + unevaluatedProperties: false 37 + 36 38 examples: 37 39 - | 38 40 #include <dt-bindings/interrupt-controller/arm-gic.h>
+2
Documentation/devicetree/bindings/dma/st,stm32-mdma.yaml
··· 84 84 - clocks 85 85 - interrupts 86 86 87 + unevaluatedProperties: false 88 + 87 89 examples: 88 90 - | 89 91 #include <dt-bindings/interrupt-controller/arm-gic.h>
+2
Documentation/devicetree/bindings/dma/ti/k3-udma.yaml
··· 141 141 required: 142 142 - ti,udma-atype 143 143 144 + unevaluatedProperties: false 145 + 144 146 examples: 145 147 - |+ 146 148 cbass_main {
+2
Documentation/devicetree/bindings/edac/dmc-520.yaml
··· 49 49 - interrupts 50 50 - interrupt-names 51 51 52 + additionalProperties: false 53 + 52 54 examples: 53 55 - | 54 56 dmc0: dmc@200000 {
-45
Documentation/devicetree/bindings/eeprom/at25.txt
··· 1 - EEPROMs (SPI) compatible with Atmel at25. 2 - 3 - Required properties: 4 - - compatible : Should be "<vendor>,<type>", and generic value "atmel,at25". 5 - Example "<vendor>,<type>" values: 6 - "anvo,anv32e61w" 7 - "microchip,25lc040" 8 - "st,m95m02" 9 - "st,m95256" 10 - 11 - - reg : chip select number 12 - - spi-max-frequency : max spi frequency to use 13 - - pagesize : size of the eeprom page 14 - - size : total eeprom size in bytes 15 - - address-width : number of address bits (one of 8, 9, 16, or 24). 16 - For 9 bits, the MSB of the address is sent as bit 3 of the instruction 17 - byte, before the address byte. 18 - 19 - Optional properties: 20 - - spi-cpha : SPI shifted clock phase, as per spi-bus bindings. 21 - - spi-cpol : SPI inverse clock polarity, as per spi-bus bindings. 22 - - read-only : this parameter-less property disables writes to the eeprom 23 - - wp-gpios : GPIO to which the write-protect pin of the chip is connected 24 - 25 - Obsolete legacy properties can be used in place of "size", "pagesize", 26 - "address-width", and "read-only": 27 - - at25,byte-len : total eeprom size in bytes 28 - - at25,addr-mode : addr-mode flags, as defined in include/linux/spi/eeprom.h 29 - - at25,page-size : size of the eeprom page 30 - 31 - Additional compatible properties are also allowed. 32 - 33 - Example: 34 - eeprom@0 { 35 - compatible = "st,m95256", "atmel,at25"; 36 - reg = <0> 37 - spi-max-frequency = <5000000>; 38 - spi-cpha; 39 - spi-cpol; 40 - wp-gpios = <&gpio1 3 0>; 41 - 42 - pagesize = <64>; 43 - size = <32768>; 44 - address-width = <16>; 45 - };
+129
Documentation/devicetree/bindings/eeprom/at25.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: "http://devicetree.org/schemas/eeprom/at25.yaml#" 5 + $schema: "http://devicetree.org/meta-schemas/core.yaml#" 6 + 7 + title: SPI EEPROMs compatible with Atmel's AT25 8 + 9 + maintainers: 10 + - Christian Eggers <ceggers@arri.de> 11 + 12 + properties: 13 + $nodename: 14 + pattern: "^eeprom@[0-9a-f]{1,2}$" 15 + 16 + # There are multiple known vendors who manufacture EEPROM chips compatible 17 + # with Atmel's AT25. The compatible string requires two items where the 18 + # 'vendor' and 'model' parts of the first are the actual chip and the second 19 + # item is fixed to "atmel,at25". Some existing bindings only have the 20 + # "atmel,at25" part and should be fixed by somebody who knows vendor and 21 + # product. 22 + compatible: 23 + oneOf: 24 + - items: 25 + - enum: 26 + - anvo,anv32e61w 27 + - atmel,at25256B 28 + - fujitsu,mb85rs1mt 29 + - fujitsu,mb85rs64 30 + - microchip,at25160bn 31 + - microchip,25lc040 32 + - st,m95m02 33 + - st,m95256 34 + 35 + - const: atmel,at25 36 + 37 + # Please don't use this alternative for new bindings. 38 + - items: 39 + - const: atmel,at25 40 + 41 + reg: 42 + description: 43 + Chip select number. 44 + 45 + spi-max-frequency: true 46 + 47 + pagesize: 48 + $ref: /schemas/types.yaml#definitions/uint32 49 + enum: [1, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072] 50 + description: 51 + Size of the eeprom page. 52 + 53 + size: 54 + $ref: /schemas/types.yaml#definitions/uint32 55 + description: 56 + Total eeprom size in bytes. 57 + 58 + address-width: 59 + $ref: /schemas/types.yaml#/definitions/uint32 60 + enum: [ 8, 9, 16, 24 ] 61 + description: 62 + Number of address bits. 63 + For 9 bits, the MSB of the address is sent as bit 3 of the instruction 64 + byte, before the address byte. 65 + 66 + spi-cpha: true 67 + 68 + spi-cpol: true 69 + 70 + read-only: 71 + description: 72 + Disable writes to the eeprom. 73 + type: boolean 74 + 75 + wp-gpios: 76 + maxItems: 1 77 + description: 78 + GPIO to which the write-protect pin of the chip is connected. 79 + 80 + # Deprecated: at25,byte-len, at25,addr-mode, at25,page-size 81 + at25,byte-len: 82 + $ref: /schemas/types.yaml#/definitions/uint32 83 + description: 84 + Total eeprom size in bytes. Deprecated, use "size" property instead. 85 + deprecated: true 86 + 87 + at25,addr-mode: 88 + $ref: /schemas/types.yaml#/definitions/uint32 89 + description: 90 + Addr-mode flags, as defined in include/linux/spi/eeprom.h. 91 + Deprecated, use "address-width" property instead. 92 + deprecated: true 93 + 94 + at25,page-size: 95 + $ref: /schemas/types.yaml#/definitions/uint32 96 + description: 97 + Size of the eeprom page. Deprecated, use "pagesize" property instead. 98 + deprecated: true 99 + 100 + required: 101 + - compatible 102 + - reg 103 + - spi-max-frequency 104 + - pagesize 105 + - size 106 + - address-width 107 + 108 + additionalProperties: false 109 + 110 + examples: 111 + - | 112 + #include <dt-bindings/gpio/gpio.h> 113 + spi0 { 114 + #address-cells = <1>; 115 + #size-cells = <0>; 116 + 117 + eeprom@0 { 118 + compatible = "st,m95256", "atmel,at25"; 119 + reg = <0>; 120 + spi-max-frequency = <5000000>; 121 + spi-cpha; 122 + spi-cpol; 123 + wp-gpios = <&gpio1 3 0>; 124 + 125 + pagesize = <64>; 126 + size = <32768>; 127 + address-width = <16>; 128 + }; 129 + };
+25 -8
Documentation/devicetree/bindings/example-schema.yaml
··· 81 81 maxItems: 1 82 82 description: bus clock. A description is only needed for a single item if 83 83 there's something unique to add. 84 + The items should have a fixed order, so pattern matching names are 85 + discouraged. 84 86 85 87 clock-names: 86 88 items: ··· 99 97 A variable number of interrupts warrants a description of what conditions 100 98 affect the number of interrupts. Otherwise, descriptions on standard 101 99 properties are not necessary. 100 + The items should have a fixed order, so pattern matching names are 101 + discouraged. 102 102 103 103 interrupt-names: 104 104 # minItems must be specified here because the default would be 2 ··· 200 196 # 201 197 # If the conditionals become too unweldy, then it may be better to just split 202 198 # the binding into separate schema documents. 203 - if: 204 - properties: 205 - compatible: 206 - contains: 207 - const: vendor,soc2-ip 208 - then: 209 - required: 210 - - foo-supply 199 + allOf: 200 + - if: 201 + properties: 202 + compatible: 203 + contains: 204 + const: vendor,soc2-ip 205 + then: 206 + required: 207 + - foo-supply 208 + # Altering schema depending on presence of properties is usually done by 209 + # dependencies (see above), however some adjustments might require if: 210 + - if: 211 + required: 212 + - vendor,bool-property 213 + then: 214 + properties: 215 + vendor,int-property: 216 + enum: [2, 4, 6] 211 217 212 218 # Ideally, the schema should have this line otherwise any other properties 213 219 # present are allowed. There's a few common properties such as 'status' and ··· 225 211 # 226 212 # This can't be used in cases where another schema is referenced 227 213 # (i.e. allOf: [{$ref: ...}]). 214 + # If and only if another schema is referenced and arbitrary children nodes can 215 + # appear, "unevaluatedProperties: false" could be used. A typical example is 216 + # an I2C controller where no name pattern matching for children can be added. 228 217 additionalProperties: false 229 218 230 219 examples:
+2
Documentation/devicetree/bindings/extcon/wlf,arizona.yaml
··· 123 123 $ref: "/schemas/types.yaml#/definitions/uint32" 124 124 minimum: 0 125 125 maximum: 3 126 + 127 + additionalProperties: true
+2
Documentation/devicetree/bindings/fsi/ibm,fsi2spi.yaml
··· 29 29 - compatible 30 30 - reg 31 31 32 + additionalProperties: false 33 + 32 34 examples: 33 35 - | 34 36 fsi2spi@1c00 {
-63
Documentation/devicetree/bindings/gpio/gpio-vf610.txt
··· 1 - * Freescale VF610 PORT/GPIO module 2 - 3 - The Freescale PORT/GPIO modules are two adjacent modules providing GPIO 4 - functionality. Each pair serves 32 GPIOs. The VF610 has 5 instances of 5 - each, and each PORT module has its own interrupt. 6 - 7 - Required properties for GPIO node: 8 - - compatible : Should be "fsl,<soc>-gpio", below is supported list: 9 - "fsl,vf610-gpio" 10 - "fsl,imx7ulp-gpio" 11 - - reg : The first reg tuple represents the PORT module, the second tuple 12 - the GPIO module. 13 - - interrupts : Should be the port interrupt shared by all 32 pins. 14 - - gpio-controller : Marks the device node as a gpio controller. 15 - - #gpio-cells : Should be two. The first cell is the pin number and 16 - the second cell is used to specify the gpio polarity: 17 - 0 = active high 18 - 1 = active low 19 - - interrupt-controller: Marks the device node as an interrupt controller. 20 - - #interrupt-cells : Should be 2. The first cell is the GPIO number. 21 - The second cell bits[3:0] is used to specify trigger type and level flags: 22 - 1 = low-to-high edge triggered. 23 - 2 = high-to-low edge triggered. 24 - 4 = active high level-sensitive. 25 - 8 = active low level-sensitive. 26 - 27 - Optional properties: 28 - -clocks: Must contain an entry for each entry in clock-names. 29 - See common clock-bindings.txt for details. 30 - -clock-names: A list of clock names. For imx7ulp, it must contain 31 - "gpio", "port". 32 - 33 - Note: Each GPIO port should have an alias correctly numbered in "aliases" 34 - node. 35 - 36 - Examples: 37 - 38 - aliases { 39 - gpio0 = &gpio1; 40 - gpio1 = &gpio2; 41 - }; 42 - 43 - gpio1: gpio@40049000 { 44 - compatible = "fsl,vf610-gpio"; 45 - reg = <0x40049000 0x1000 0x400ff000 0x40>; 46 - interrupts = <0 107 IRQ_TYPE_LEVEL_HIGH>; 47 - gpio-controller; 48 - #gpio-cells = <2>; 49 - interrupt-controller; 50 - #interrupt-cells = <2>; 51 - gpio-ranges = <&iomuxc 0 0 32>; 52 - }; 53 - 54 - gpio2: gpio@4004a000 { 55 - compatible = "fsl,vf610-gpio"; 56 - reg = <0x4004a000 0x1000 0x400ff040 0x40>; 57 - interrupts = <0 108 IRQ_TYPE_LEVEL_HIGH>; 58 - gpio-controller; 59 - #gpio-cells = <2>; 60 - interrupt-controller; 61 - #interrupt-cells = <2>; 62 - gpio-ranges = <&iomuxc 0 32 32>; 63 - };
+83
Documentation/devicetree/bindings/gpio/gpio-vf610.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/gpio/gpio-vf610.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Freescale VF610 PORT/GPIO module 8 + 9 + maintainers: 10 + - Stefan Agner <stefan@agner.ch> 11 + 12 + description: | 13 + The Freescale PORT/GPIO modules are two adjacent modules providing GPIO 14 + functionality. Each pair serves 32 GPIOs. The VF610 has 5 instances of 15 + each, and each PORT module has its own interrupt. 16 + 17 + Note: Each GPIO port should have an alias correctly numbered in "aliases" 18 + node. 19 + 20 + properties: 21 + compatible: 22 + oneOf: 23 + - const: fsl,vf610-gpio 24 + - items: 25 + - const: fsl,imx7ulp-gpio 26 + - const: fsl,vf610-gpio 27 + 28 + reg: 29 + description: The first reg tuple represents the PORT module, the second tuple 30 + represents the GPIO module. 31 + maxItems: 2 32 + 33 + interrupts: 34 + maxItems: 1 35 + 36 + interrupt-controller: true 37 + 38 + "#interrupt-cells": 39 + const: 2 40 + 41 + "#gpio-cells": 42 + const: 2 43 + 44 + gpio-controller: true 45 + 46 + clocks: 47 + items: 48 + - description: SoC GPIO clock 49 + - description: SoC PORT clock 50 + 51 + clock-names: 52 + items: 53 + - const: gpio 54 + - const: port 55 + 56 + gpio-ranges: 57 + maxItems: 1 58 + 59 + required: 60 + - compatible 61 + - reg 62 + - interrupts 63 + - interrupt-controller 64 + - "#interrupt-cells" 65 + - "#gpio-cells" 66 + - gpio-controller 67 + 68 + additionalProperties: false 69 + 70 + examples: 71 + - | 72 + #include <dt-bindings/interrupt-controller/arm-gic.h> 73 + 74 + gpio1: gpio@40049000 { 75 + compatible = "fsl,vf610-gpio"; 76 + reg = <0x40049000 0x1000>, <0x400ff000 0x40>; 77 + interrupts = <0 107 IRQ_TYPE_LEVEL_HIGH>; 78 + gpio-controller; 79 + #gpio-cells = <2>; 80 + interrupt-controller; 81 + #interrupt-cells = <2>; 82 + gpio-ranges = <&iomuxc 0 0 32>; 83 + };
+2
Documentation/devicetree/bindings/gpio/socionext,uniphier-gpio.yaml
··· 64 64 - gpio-ranges 65 65 - socionext,interrupt-ranges 66 66 67 + additionalProperties: false 68 + 67 69 examples: 68 70 - | 69 71 #include <dt-bindings/gpio/gpio.h>
+1
Documentation/devicetree/bindings/gpu/arm,mali-midgard.yaml
··· 74 74 - const: bus 75 75 76 76 mali-supply: true 77 + opp-table: true 77 78 78 79 power-domains: 79 80 maxItems: 1
+3 -1
Documentation/devicetree/bindings/gpu/arm,mali-utgard.yaml
··· 8 8 9 9 maintainers: 10 10 - Rob Herring <robh@kernel.org> 11 - - Maxime Ripard <maxime.ripard@free-electrons.com> 11 + - Maxime Ripard <mripard@kernel.org> 12 12 - Heiko Stuebner <heiko@sntech.de> 13 13 14 14 properties: ··· 99 99 memory-region: true 100 100 101 101 mali-supply: true 102 + 103 + opp-table: true 102 104 103 105 power-domains: 104 106 maxItems: 1
+6
Documentation/devicetree/bindings/gpu/samsung-rotator.yaml
··· 22 22 interrupts: 23 23 maxItems: 1 24 24 25 + iommus: 26 + maxItems: 1 27 + 28 + power-domains: 29 + maxItems: 1 30 + 25 31 clocks: 26 32 maxItems: 1 27 33
+8 -1
Documentation/devicetree/bindings/gpu/vivante,gc.yaml
··· 21 21 interrupts: 22 22 maxItems: 1 23 23 24 + '#cooling-cells': 25 + const: 2 26 + 27 + assigned-clock-parents: true 28 + assigned-clock-rates: true 29 + assigned-clocks: true 30 + 24 31 clocks: 25 32 items: 26 33 - description: AXI/master interface clock 27 34 - description: GPU core clock 28 35 - description: Shader clock (only required if GPU has feature PIPE_3D) 29 - - description: AHB/slave interface clock (only required if GPU can gate 36 + - description: AHB/slave interface clock (only required if GPU can gate 30 37 slave interface independently) 31 38 minItems: 1 32 39 maxItems: 4
-41
Documentation/devicetree/bindings/hwlock/omap-hwspinlock.txt
··· 1 - TI HwSpinlock for OMAP and K3 based SoCs 2 - ========================================= 3 - 4 - Required properties: 5 - - compatible: Should be one of the following, 6 - "ti,omap4-hwspinlock" for 7 - OMAP44xx, OMAP54xx, AM33xx, AM43xx, DRA7xx SoCs 8 - "ti,am654-hwspinlock" for 9 - K3 AM65x and J721E SoCs 10 - - reg: Contains the hwspinlock module register address space 11 - (base address and length) 12 - - ti,hwmods: Name of the hwmod associated with the hwspinlock device 13 - (for OMAP architecture based SoCs only) 14 - - #hwlock-cells: Should be 1. The OMAP hwspinlock users will use a 15 - 0-indexed relative hwlock number as the argument 16 - specifier value for requesting a specific hwspinlock 17 - within a hwspinlock bank. 18 - 19 - Please look at the generic hwlock binding for usage information for consumers, 20 - "Documentation/devicetree/bindings/hwlock/hwlock.txt" 21 - 22 - Example: 23 - 24 - 1. OMAP4 SoCs 25 - hwspinlock: spinlock@4a0f6000 { 26 - compatible = "ti,omap4-hwspinlock"; 27 - reg = <0x4a0f6000 0x1000>; 28 - ti,hwmods = "spinlock"; 29 - #hwlock-cells = <1>; 30 - }; 31 - 32 - 2. AM65x SoCs and J721E SoCs 33 - &cbass_main { 34 - cbass_main_navss: interconnect0 { 35 - hwspinlock: spinlock@30e00000 { 36 - compatible = "ti,am654-hwspinlock"; 37 - reg = <0x00 0x30e00000 0x00 0x1000>; 38 - #hwlock-cells = <1>; 39 - }; 40 - }; 41 - };
+76
Documentation/devicetree/bindings/hwlock/ti,omap-hwspinlock.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/hwlock/ti,omap-hwspinlock.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: TI HwSpinlock for OMAP and K3 based SoCs 8 + 9 + maintainers: 10 + - Suman Anna <s-anna@ti.com> 11 + 12 + properties: 13 + compatible: 14 + enum: 15 + - ti,omap4-hwspinlock # for OMAP44xx, OMAP54xx, AM33xx, AM43xx, DRA7xx SoCs 16 + - ti,am654-hwspinlock # for K3 AM65x, J721E and J7200 SoCs 17 + 18 + reg: 19 + maxItems: 1 20 + 21 + "#hwlock-cells": 22 + const: 1 23 + description: | 24 + The OMAP hwspinlock users will use a 0-indexed relative hwlock number as 25 + the argument specifier value for requesting a specific hwspinlock within 26 + a hwspinlock bank. 27 + 28 + Please look at the generic hwlock binding for usage information for 29 + consumers, "Documentation/devicetree/bindings/hwlock/hwlock.txt" 30 + 31 + required: 32 + - compatible 33 + - reg 34 + - "#hwlock-cells" 35 + 36 + additionalProperties: false 37 + 38 + examples: 39 + 40 + - | 41 + /* OMAP4 SoCs */ 42 + hwspinlock: spinlock@4a0f6000 { 43 + compatible = "ti,omap4-hwspinlock"; 44 + reg = <0x4a0f6000 0x1000>; 45 + #hwlock-cells = <1>; 46 + }; 47 + 48 + - | 49 + / { 50 + /* K3 AM65x SoCs */ 51 + model = "Texas Instruments K3 AM654 SoC"; 52 + compatible = "ti,am654-evm", "ti,am654"; 53 + #address-cells = <2>; 54 + #size-cells = <2>; 55 + 56 + bus@100000 { 57 + compatible = "simple-bus"; 58 + #address-cells = <2>; 59 + #size-cells = <2>; 60 + ranges = <0x00 0x00100000 0x00 0x00100000 0x00 0x00020000>, /* ctrl mmr */ 61 + <0x00 0x30800000 0x00 0x30800000 0x00 0x0bc00000>; /* Main NavSS */ 62 + 63 + bus@30800000 { 64 + compatible = "simple-mfd"; 65 + #address-cells = <2>; 66 + #size-cells = <2>; 67 + ranges = <0x00 0x30800000 0x00 0x30800000 0x00 0x0bc00000>; 68 + 69 + spinlock@30e00000 { 70 + compatible = "ti,am654-hwspinlock"; 71 + reg = <0x00 0x30e00000 0x00 0x1000>; 72 + #hwlock-cells = <1>; 73 + }; 74 + }; 75 + }; 76 + };
+2
Documentation/devicetree/bindings/hwmon/adi,axi-fan-control.yaml
··· 44 44 - interrupts 45 45 - pulses-per-revolution 46 46 47 + additionalProperties: false 48 + 47 49 examples: 48 50 - | 49 51 fpga_axi: fpga-axi {
+2
Documentation/devicetree/bindings/hwmon/adt7475.yaml
··· 65 65 - compatible 66 66 - reg 67 67 68 + additionalProperties: false 69 + 68 70 examples: 69 71 - | 70 72 i2c {
+2 -2
Documentation/devicetree/bindings/hwmon/baikal,bt1-pvt.yaml
··· 79 79 minimum: 0 80 80 maximum: 7130 81 81 82 - unevaluatedProperties: false 82 + additionalProperties: false 83 83 84 84 required: 85 85 - compatible ··· 99 99 100 100 interrupts = <GIC_SHARED 31 IRQ_TYPE_LEVEL_HIGH>; 101 101 102 - baikal,pvt-temp-trim-millicelsius = <1000>; 102 + baikal,pvt-temp-offset-millicelsius = <1000>; 103 103 104 104 clocks = <&ccu_sys>, <&ccu_sys>; 105 105 clock-names = "ref", "pclk";
+2
Documentation/devicetree/bindings/i2c/amlogic,meson6-i2c.yaml
··· 36 36 - interrupts 37 37 - clocks 38 38 39 + unevaluatedProperties: false 40 + 39 41 examples: 40 42 - | 41 43 i2c@c8100500 {
+2
Documentation/devicetree/bindings/i2c/cdns,i2c-r1p10.yaml
··· 44 44 - clocks 45 45 - interrupts 46 46 47 + unevaluatedProperties: false 48 + 47 49 examples: 48 50 - | 49 51 #include <dt-bindings/interrupt-controller/arm-gic.h>
+2
Documentation/devicetree/bindings/i2c/i2c-gpio.yaml
··· 70 70 - sda-gpios 71 71 - scl-gpios 72 72 73 + unevaluatedProperties: false 74 + 73 75 ...
+2
Documentation/devicetree/bindings/i2c/i2c-rk3x.yaml
··· 117 117 required: 118 118 - rockchip,grf 119 119 120 + unevaluatedProperties: false 121 + 120 122 examples: 121 123 - | 122 124 #include <dt-bindings/clock/rk3188-cru-common.h>
+2
Documentation/devicetree/bindings/i2c/socionext,uniphier-fi2c.yaml
··· 37 37 - interrupts 38 38 - clocks 39 39 40 + unevaluatedProperties: false 41 + 40 42 examples: 41 43 - | 42 44 i2c0: i2c@58780000 {
+2
Documentation/devicetree/bindings/i2c/socionext,uniphier-i2c.yaml
··· 37 37 - interrupts 38 38 - clocks 39 39 40 + unevaluatedProperties: false 41 + 40 42 examples: 41 43 - | 42 44 i2c0: i2c@58400000 {
+2
Documentation/devicetree/bindings/i2c/st,stm32-i2c.yaml
··· 94 94 - resets 95 95 - clocks 96 96 97 + unevaluatedProperties: false 98 + 97 99 examples: 98 100 - | 99 101 #include <dt-bindings/mfd/stm32f7-rcc.h>
+2
Documentation/devicetree/bindings/i2c/xlnx,xps-iic-2.00.a.yaml
··· 36 36 - interrupts 37 37 - clocks 38 38 39 + unevaluatedProperties: false 40 + 39 41 examples: 40 42 - | 41 43 axi_iic_0: i2c@40800000 {
+4
Documentation/devicetree/bindings/iio/accel/adi,adis16240.yaml
··· 25 25 interrupts: 26 26 maxItems: 1 27 27 28 + spi-max-frequency: true 29 + 28 30 required: 29 31 - compatible 30 32 - reg 31 33 - interrupts 34 + 35 + additionalProperties: false 32 36 33 37 examples: 34 38 - |
+4
Documentation/devicetree/bindings/iio/accel/adi,adxl345.yaml
··· 32 32 33 33 spi-cpol: true 34 34 35 + spi-max-frequency: true 36 + 35 37 interrupts: 36 38 maxItems: 1 37 39 ··· 41 39 - compatible 42 40 - reg 43 41 - interrupts 42 + 43 + additionalProperties: false 44 44 45 45 examples: 46 46 - |
+4
Documentation/devicetree/bindings/iio/accel/adi,adxl372.yaml
··· 25 25 interrupts: 26 26 maxItems: 1 27 27 28 + spi-max-frequency: true 29 + 28 30 required: 29 31 - compatible 30 32 - reg 31 33 - interrupts 34 + 35 + additionalProperties: false 32 36 33 37 examples: 34 38 - |
+4
Documentation/devicetree/bindings/iio/accel/kionix,kxsd9.yaml
··· 29 29 mount-matrix: 30 30 description: an optional 3x3 mounting rotation matrix. 31 31 32 + spi-max-frequency: true 33 + 32 34 required: 33 35 - compatible 34 36 - reg 37 + 38 + additionalProperties: false 35 39 36 40 examples: 37 41 - |
+4
Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml
··· 52 52 avdd-supply: 53 53 description: avdd supply can be used as reference for conversion. 54 54 55 + spi-max-frequency: true 56 + 55 57 required: 56 58 - compatible 57 59 - reg ··· 109 107 required: 110 108 - reg 111 109 - diff-channels 110 + 111 + additionalProperties: false 112 112 113 113 examples: 114 114 - |
+4
Documentation/devicetree/bindings/iio/adc/adi,ad7192.yaml
··· 30 30 31 31 spi-cpha: true 32 32 33 + spi-max-frequency: true 34 + 33 35 clocks: 34 36 maxItems: 1 35 37 description: phandle to the master clock (mclk) ··· 93 91 - avdd-supply 94 92 - spi-cpol 95 93 - spi-cpha 94 + 95 + additionalProperties: false 96 96 97 97 examples: 98 98 - |
+4
Documentation/devicetree/bindings/iio/adc/adi,ad7292.yaml
··· 30 30 31 31 spi-cpha: true 32 32 33 + spi-max-frequency: true 34 + 33 35 '#address-cells': 34 36 const: 1 35 37 ··· 64 62 65 63 required: 66 64 - reg 65 + 66 + additionalProperties: false 67 67 68 68 examples: 69 69 - |
+6
Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml
··· 31 31 32 32 spi-cpha: true 33 33 34 + spi-cpol: true 35 + 36 + spi-max-frequency: true 37 + 34 38 avcc-supply: true 35 39 36 40 interrupts: ··· 105 101 - avcc-supply 106 102 - interrupts 107 103 - adi,conversion-start-gpios 104 + 105 + additionalProperties: false 108 106 109 107 examples: 110 108 - |
+4
Documentation/devicetree/bindings/iio/adc/adi,ad7923.yaml
··· 43 43 '#size-cells': 44 44 const: 0 45 45 46 + spi-max-frequency: true 47 + 46 48 required: 47 49 - compatible 48 50 - reg 51 + 52 + additionalProperties: false 49 53 50 54 examples: 51 55 - |
+2
Documentation/devicetree/bindings/iio/adc/maxim,max1238.yaml
··· 62 62 - compatible 63 63 - reg 64 64 65 + additionalProperties: false 66 + 65 67 examples: 66 68 - | 67 69 i2c {
+4
Documentation/devicetree/bindings/iio/adc/maxim,max1241.yaml
··· 39 39 thus enabling power-down mode. 40 40 maxItems: 1 41 41 42 + spi-max-frequency: true 43 + 42 44 required: 43 45 - compatible 44 46 - reg 45 47 - vdd-supply 46 48 - vref-supply 49 + 50 + additionalProperties: false 47 51 48 52 examples: 49 53 - |
+2
Documentation/devicetree/bindings/iio/adc/maxim,max1363.yaml
··· 36 36 - compatible 37 37 - reg 38 38 39 + additionalProperties: false 40 + 39 41 examples: 40 42 - | 41 43 i2c {
+4
Documentation/devicetree/bindings/iio/adc/qcom,spmi-vadc.yaml
··· 48 48 description: 49 49 End of conversion interrupt. 50 50 51 + io-channel-ranges: true 52 + 51 53 required: 52 54 - compatible 53 55 - reg ··· 233 231 qcom,avg-samples: 234 232 enum: [ 1, 2, 4, 8, 16 ] 235 233 default: 1 234 + 235 + additionalProperties: false 236 236 237 237 examples: 238 238 - |
+5
Documentation/devicetree/bindings/iio/adc/samsung,exynos-adc.yaml
··· 46 46 "#io-channel-cells": 47 47 const: 1 48 48 49 + io-channel-ranges: true 50 + 49 51 vdd-supply: true 50 52 51 53 samsung,syscon-phandle: ··· 69 67 - interrupts 70 68 - "#io-channel-cells" 71 69 - vdd-supply 70 + 71 + additionalProperties: 72 + type: object 72 73 73 74 allOf: 74 75 - if:
+4
Documentation/devicetree/bindings/iio/adc/ti,ads8688.yaml
··· 25 25 description: Optional external reference. If not supplied, assume 26 26 REFSEL input tied low to enable the internal reference. 27 27 28 + spi-max-frequency: true 29 + 28 30 required: 29 31 - compatible 30 32 - reg 33 + 34 + additionalProperties: false 31 35 32 36 examples: 33 37 - |
+2
Documentation/devicetree/bindings/iio/amplifiers/adi,hmc425a.yaml
··· 33 33 - compatible 34 34 - ctrl-gpios 35 35 36 + additionalProperties: false 37 + 36 38 examples: 37 39 - | 38 40 #include <dt-bindings/gpio/gpio.h>
+2
Documentation/devicetree/bindings/iio/common.yaml
··· 32 32 considered 'near' to the device (an object is near to the 33 33 sensor). 34 34 35 + additionalProperties: true 36 + 35 37 ...
+10
Documentation/devicetree/bindings/iio/dac/adi,ad5770r.yaml
··· 49 49 asserted during driver probe. 50 50 maxItems: 1 51 51 52 + spi-max-frequency: true 53 + 54 + '#address-cells': 55 + const: 1 56 + 57 + '#size-cells': 58 + const: 0 59 + 52 60 channel@0: 53 61 description: Represents an external channel which are 54 62 connected to the DAC. Channel 0 can act both as a current ··· 137 129 - channel@3 138 130 - channel@4 139 131 - channel@5 132 + 133 + additionalProperties: false 140 134 141 135 examples: 142 136 - |
+4
Documentation/devicetree/bindings/iio/frequency/adf4371.yaml
··· 40 40 output stage will shut down until the ADF4371/ADF4372 achieves lock as 41 41 measured by the digital lock detect circuitry. 42 42 43 + spi-max-frequency: true 44 + 43 45 required: 44 46 - compatible 45 47 - reg 46 48 - clocks 47 49 - clock-names 50 + 51 + additionalProperties: false 48 52 49 53 examples: 50 54 - |
+4
Documentation/devicetree/bindings/iio/imu/adi,adis16460.yaml
··· 25 25 26 26 spi-cpol: true 27 27 28 + spi-max-frequency: true 29 + 28 30 interrupts: 29 31 maxItems: 1 30 32 ··· 34 32 - compatible 35 33 - reg 36 34 - interrupts 35 + 36 + additionalProperties: false 37 37 38 38 examples: 39 39 - |
+2
Documentation/devicetree/bindings/iio/imu/adi,adis16475.yaml
··· 116 116 dependencies: 117 117 adi,sync-mode: [ clocks ] 118 118 119 + additionalProperties: false 120 + 119 121 examples: 120 122 - | 121 123 #include <dt-bindings/interrupt-controller/irq.h>
+4
Documentation/devicetree/bindings/iio/imu/bosch,bmi160.yaml
··· 46 46 mount-matrix: 47 47 description: an optional 3x3 mounting rotation matrix 48 48 49 + spi-max-frequency: true 50 + 49 51 required: 50 52 - compatible 51 53 - reg 54 + 55 + additionalProperties: false 52 56 53 57 examples: 54 58 - |
+6
Documentation/devicetree/bindings/iio/imu/invensense,icm42600.yaml
··· 47 47 vddio-supply: 48 48 description: Regulator that provides power to the bus 49 49 50 + spi-max-frequency: true 51 + spi-cpha: true 52 + spi-cpol: true 53 + 50 54 required: 51 55 - compatible 52 56 - reg 53 57 - interrupts 58 + 59 + additionalProperties: false 54 60 55 61 examples: 56 62 - |
+4
Documentation/devicetree/bindings/iio/imu/nxp,fxos8700.yaml
··· 36 36 drive-open-drain: 37 37 type: boolean 38 38 39 + spi-max-frequency: true 40 + 39 41 required: 40 42 - compatible 41 43 - reg 44 + 45 + additionalProperties: false 42 46 43 47 examples: 44 48 - |
+2
Documentation/devicetree/bindings/iio/light/amstaos,tsl2563.yaml
··· 32 32 - compatible 33 33 - reg 34 34 35 + additionalProperties: false 36 + 35 37 examples: 36 38 - | 37 39 i2c {
+2
Documentation/devicetree/bindings/iio/light/dynaimage,al3010.yaml
··· 26 26 - compatible 27 27 - reg 28 28 29 + additionalProperties: false 30 + 29 31 examples: 30 32 - | 31 33 #include <dt-bindings/interrupt-controller/irq.h>
+2
Documentation/devicetree/bindings/iio/light/dynaimage,al3320a.yaml
··· 26 26 - compatible 27 27 - reg 28 28 29 + additionalProperties: false 30 + 29 31 examples: 30 32 - | 31 33 #include <dt-bindings/interrupt-controller/irq.h>
+2
Documentation/devicetree/bindings/iio/light/sharp,gp2ap002.yaml
··· 61 61 - sharp,proximity-far-hysteresis 62 62 - sharp,proximity-close-hysteresis 63 63 64 + additionalProperties: false 65 + 64 66 examples: 65 67 - | 66 68 #include <dt-bindings/interrupt-controller/irq.h>
+2
Documentation/devicetree/bindings/iio/magnetometer/asahi-kasei,ak8975.yaml
··· 55 55 - compatible 56 56 - reg 57 57 58 + additionalProperties: false 59 + 58 60 examples: 59 61 - | 60 62 #include <dt-bindings/interrupt-controller/irq.h>
+2
Documentation/devicetree/bindings/iio/proximity/vishay,vcnl3020.yaml
··· 47 47 - compatible 48 48 - reg 49 49 50 + additionalProperties: false 51 + 50 52 examples: 51 53 - | 52 54 i2c {
+2
Documentation/devicetree/bindings/input/fsl,mpr121-touchkey.yaml
··· 48 48 - vdd-supply 49 49 - linux,keycodes 50 50 51 + unevaluatedProperties: false 52 + 51 53 examples: 52 54 - | 53 55 // Example with interrupts
+2
Documentation/devicetree/bindings/input/input.yaml
··· 33 33 power off automatically. Device with key pressed shutdown feature can 34 34 specify this property. 35 35 $ref: /schemas/types.yaml#/definitions/uint32 36 + 37 + additionalProperties: true
+2
Documentation/devicetree/bindings/input/matrix-keymap.yaml
··· 35 35 $ref: /schemas/types.yaml#/definitions/uint32 36 36 description: Number of column lines connected to the keypad controller. 37 37 38 + additionalProperties: true 39 + 38 40 examples: 39 41 - | 40 42 keypad {
+2
Documentation/devicetree/bindings/input/touchscreen/touchscreen.yaml
··· 81 81 touchscreen-size-y: [ touchscreen-size-x ] 82 82 touchscreen-x-mm: [ touchscreen-y-mm ] 83 83 touchscreen-y-mm: [ touchscreen-x-mm ] 84 + 85 + additionalProperties: true
+5 -3
Documentation/devicetree/bindings/interrupt-controller/fsl,irqsteer.yaml
··· 11 11 12 12 properties: 13 13 compatible: 14 - enum: 15 - - fsl,imx8m-irqsteer 16 - - fsl,imx-irqsteer 14 + oneOf: 15 + - const: fsl,imx-irqsteer 16 + - items: 17 + - const: fsl,imx8m-irqsteer 18 + - const: fsl,imx-irqsteer 17 19 18 20 reg: 19 21 maxItems: 1
-82
Documentation/devicetree/bindings/interrupt-controller/img,meta-intc.txt
··· 1 - * Meta External Trigger Controller Binding 2 - 3 - This binding specifies what properties must be available in the device tree 4 - representation of a Meta external trigger controller. 5 - 6 - Required properties: 7 - 8 - - compatible: Specifies the compatibility list for the interrupt controller. 9 - The type shall be <string> and the value shall include "img,meta-intc". 10 - 11 - - num-banks: Specifies the number of interrupt banks (each of which can 12 - handle 32 interrupt sources). 13 - 14 - - interrupt-controller: The presence of this property identifies the node 15 - as an interrupt controller. No property value shall be defined. 16 - 17 - - #interrupt-cells: Specifies the number of cells needed to encode an 18 - interrupt source. The type shall be a <u32> and the value shall be 2. 19 - 20 - - #address-cells: Specifies the number of cells needed to encode an 21 - address. The type shall be <u32> and the value shall be 0. As such, 22 - 'interrupt-map' nodes do not have to specify a parent unit address. 23 - 24 - Optional properties: 25 - 26 - - no-mask: The controller doesn't have any mask registers. 27 - 28 - * Interrupt Specifier Definition 29 - 30 - Interrupt specifiers consists of 2 cells encoded as follows: 31 - 32 - - <1st-cell>: The interrupt-number that identifies the interrupt source. 33 - 34 - - <2nd-cell>: The Linux interrupt flags containing level-sense information, 35 - encoded as follows: 36 - 1 = edge triggered 37 - 4 = level-sensitive 38 - 39 - * Examples 40 - 41 - Example 1: 42 - 43 - /* 44 - * Meta external trigger block 45 - */ 46 - intc: intc { 47 - // This is an interrupt controller node. 48 - interrupt-controller; 49 - 50 - // No address cells so that 'interrupt-map' nodes which 51 - // reference this interrupt controller node do not need a parent 52 - // address specifier. 53 - #address-cells = <0>; 54 - 55 - // Two cells to encode interrupt sources. 56 - #interrupt-cells = <2>; 57 - 58 - // Number of interrupt banks 59 - num-banks = <2>; 60 - 61 - // No HWMASKEXT is available (specify on Chorus2 and Comet ES1) 62 - no-mask; 63 - 64 - // Compatible with Meta hardware trigger block. 65 - compatible = "img,meta-intc"; 66 - }; 67 - 68 - Example 2: 69 - 70 - /* 71 - * An interrupt generating device that is wired to a Meta external 72 - * trigger block. 73 - */ 74 - uart1: uart@02004c00 { 75 - // Interrupt source '5' that is level-sensitive. 76 - // Note that there are only two cells as specified in the 77 - // interrupt parent's '#interrupt-cells' property. 78 - interrupts = <5 4 /* level */>; 79 - 80 - // The interrupt controller that this device is wired to. 81 - interrupt-parent = <&intc>; 82 - };
+2
Documentation/devicetree/bindings/interrupt-controller/ingenic,intc.yaml
··· 49 49 - "#interrupt-cells" 50 50 - interrupt-controller 51 51 52 + additionalProperties: false 53 + 52 54 examples: 53 55 - | 54 56 intc: interrupt-controller@10001000 {
+2
Documentation/devicetree/bindings/interrupt-controller/loongson,htpic.yaml
··· 41 41 - interrupt-controller 42 42 - '#interrupt-cells' 43 43 44 + unevaluatedProperties: false 45 + 44 46 examples: 45 47 - | 46 48 #include <dt-bindings/interrupt-controller/irq.h>
+2
Documentation/devicetree/bindings/interrupt-controller/loongson,liointc.yaml
··· 67 67 - 'loongson,parent_int_map' 68 68 69 69 70 + unevaluatedProperties: false 71 + 70 72 examples: 71 73 - | 72 74 iointc: interrupt-controller@3ff01400 {
+2
Documentation/devicetree/bindings/interrupt-controller/loongson,pch-msi.yaml
··· 46 46 - loongson,msi-base-vec 47 47 - loongson,msi-num-vecs 48 48 49 + additionalProperties: true #fixme 50 + 49 51 examples: 50 52 - | 51 53 #include <dt-bindings/interrupt-controller/irq.h>
+2
Documentation/devicetree/bindings/interrupt-controller/loongson,pch-pic.yaml
··· 41 41 - interrupt-controller 42 42 - '#interrupt-cells' 43 43 44 + additionalProperties: false 45 + 44 46 examples: 45 47 - | 46 48 #include <dt-bindings/interrupt-controller/irq.h>
+1 -1
Documentation/devicetree/bindings/interrupt-controller/mti,gic.yaml
··· 95 95 96 96 additionalProperties: false 97 97 98 - unevaluatedProperties: false 98 + additionalProperties: false 99 99 100 100 required: 101 101 - compatible
-58
Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.txt
··· 1 - SiFive Platform-Level Interrupt Controller (PLIC) 2 - ------------------------------------------------- 3 - 4 - SiFive SOCs include an implementation of the Platform-Level Interrupt Controller 5 - (PLIC) high-level specification in the RISC-V Privileged Architecture 6 - specification. The PLIC connects all external interrupts in the system to all 7 - hart contexts in the system, via the external interrupt source in each hart. 8 - 9 - A hart context is a privilege mode in a hardware execution thread. For example, 10 - in an 4 core system with 2-way SMT, you have 8 harts and probably at least two 11 - privilege modes per hart; machine mode and supervisor mode. 12 - 13 - Each interrupt can be enabled on per-context basis. Any context can claim 14 - a pending enabled interrupt and then release it once it has been handled. 15 - 16 - Each interrupt has a configurable priority. Higher priority interrupts are 17 - serviced first. Each context can specify a priority threshold. Interrupts 18 - with priority below this threshold will not cause the PLIC to raise its 19 - interrupt line leading to the context. 20 - 21 - While the PLIC supports both edge-triggered and level-triggered interrupts, 22 - interrupt handlers are oblivious to this distinction and therefore it is not 23 - specified in the PLIC device-tree binding. 24 - 25 - While the RISC-V ISA doesn't specify a memory layout for the PLIC, the 26 - "sifive,plic-1.0.0" device is a concrete implementation of the PLIC that 27 - contains a specific memory layout, which is documented in chapter 8 of the 28 - SiFive U5 Coreplex Series Manual <https://static.dev.sifive.com/U54-MC-RVCoreIP.pdf>. 29 - 30 - Required properties: 31 - - compatible : "sifive,plic-1.0.0" and a string identifying the actual 32 - detailed implementation in case that specific bugs need to be worked around. 33 - - #address-cells : should be <0> or more. 34 - - #interrupt-cells : should be <1> or more. 35 - - interrupt-controller : Identifies the node as an interrupt controller. 36 - - reg : Should contain 1 register range (address and length). 37 - - interrupts-extended : Specifies which contexts are connected to the PLIC, 38 - with "-1" specifying that a context is not present. Each node pointed 39 - to should be a riscv,cpu-intc node, which has a riscv node as parent. 40 - - riscv,ndev: Specifies how many external interrupts are supported by 41 - this controller. 42 - 43 - Example: 44 - 45 - plic: interrupt-controller@c000000 { 46 - #address-cells = <0>; 47 - #interrupt-cells = <1>; 48 - compatible = "sifive,plic-1.0.0", "sifive,fu540-c000-plic"; 49 - interrupt-controller; 50 - interrupts-extended = < 51 - &cpu0-intc 11 52 - &cpu1-intc 11 &cpu1-intc 9 53 - &cpu2-intc 11 &cpu2-intc 9 54 - &cpu3-intc 11 &cpu3-intc 9 55 - &cpu4-intc 11 &cpu4-intc 9>; 56 - reg = <0xc000000 0x4000000>; 57 - riscv,ndev = <10>; 58 - };
+97
Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + # Copyright (C) 2020 SiFive, Inc. 3 + %YAML 1.2 4 + --- 5 + $id: http://devicetree.org/schemas/interrupt-controller/sifive,plic-1.0.0.yaml# 6 + $schema: http://devicetree.org/meta-schemas/core.yaml# 7 + 8 + title: SiFive Platform-Level Interrupt Controller (PLIC) 9 + 10 + description: 11 + SiFive SOCs include an implementation of the Platform-Level Interrupt Controller 12 + (PLIC) high-level specification in the RISC-V Privileged Architecture 13 + specification. The PLIC connects all external interrupts in the system to all 14 + hart contexts in the system, via the external interrupt source in each hart. 15 + 16 + A hart context is a privilege mode in a hardware execution thread. For example, 17 + in an 4 core system with 2-way SMT, you have 8 harts and probably at least two 18 + privilege modes per hart; machine mode and supervisor mode. 19 + 20 + Each interrupt can be enabled on per-context basis. Any context can claim 21 + a pending enabled interrupt and then release it once it has been handled. 22 + 23 + Each interrupt has a configurable priority. Higher priority interrupts are 24 + serviced first. Each context can specify a priority threshold. Interrupts 25 + with priority below this threshold will not cause the PLIC to raise its 26 + interrupt line leading to the context. 27 + 28 + While the PLIC supports both edge-triggered and level-triggered interrupts, 29 + interrupt handlers are oblivious to this distinction and therefore it is not 30 + specified in the PLIC device-tree binding. 31 + 32 + While the RISC-V ISA doesn't specify a memory layout for the PLIC, the 33 + "sifive,plic-1.0.0" device is a concrete implementation of the PLIC that 34 + contains a specific memory layout, which is documented in chapter 8 of the 35 + SiFive U5 Coreplex Series Manual <https://static.dev.sifive.com/U54-MC-RVCoreIP.pdf>. 36 + 37 + maintainers: 38 + - Sagar Kadam <sagar.kadam@sifive.com> 39 + - Paul Walmsley <paul.walmsley@sifive.com> 40 + - Palmer Dabbelt <palmer@dabbelt.com> 41 + 42 + properties: 43 + compatible: 44 + items: 45 + - const: sifive,fu540-c000-plic 46 + - const: sifive,plic-1.0.0 47 + 48 + reg: 49 + maxItems: 1 50 + 51 + '#address-cells': 52 + const: 0 53 + 54 + '#interrupt-cells': 55 + const: 1 56 + 57 + interrupt-controller: true 58 + 59 + interrupts-extended: 60 + minItems: 1 61 + description: 62 + Specifies which contexts are connected to the PLIC, with "-1" specifying 63 + that a context is not present. Each node pointed to should be a 64 + riscv,cpu-intc node, which has a riscv node as parent. 65 + 66 + riscv,ndev: 67 + $ref: "/schemas/types.yaml#/definitions/uint32" 68 + description: 69 + Specifies how many external interrupts are supported by this controller. 70 + 71 + required: 72 + - compatible 73 + - '#address-cells' 74 + - '#interrupt-cells' 75 + - interrupt-controller 76 + - reg 77 + - interrupts-extended 78 + - riscv,ndev 79 + 80 + additionalProperties: false 81 + 82 + examples: 83 + - | 84 + plic: interrupt-controller@c000000 { 85 + #address-cells = <0>; 86 + #interrupt-cells = <1>; 87 + compatible = "sifive,fu540-c000-plic", "sifive,plic-1.0.0"; 88 + interrupt-controller; 89 + interrupts-extended = < 90 + &cpu0_intc 11 91 + &cpu1_intc 11 &cpu1_intc 9 92 + &cpu2_intc 11 &cpu2_intc 9 93 + &cpu3_intc 11 &cpu3_intc 9 94 + &cpu4_intc 11 &cpu4_intc 9>; 95 + reg = <0xc000000 0x4000000>; 96 + riscv,ndev = <10>; 97 + };
+2
Documentation/devicetree/bindings/ipmi/ipmi-smic.yaml
··· 49 49 - compatible 50 50 - reg 51 51 52 + additionalProperties: false 53 + 52 54 examples: 53 55 - | 54 56 smic@fff3a000 {
+2
Documentation/devicetree/bindings/leds/common.yaml
··· 156 156 Maximum timeout in microseconds after which the flash LED is turned off. 157 157 Required for flash LED nodes with configurable timeout. 158 158 159 + additionalProperties: true 160 + 159 161 examples: 160 162 - | 161 163 #include <dt-bindings/gpio/gpio.h>
+3
Documentation/devicetree/bindings/leds/leds-class-multicolor.yaml
··· 34 34 35 35 required: 36 36 - color 37 + 38 + additionalProperties: true 39 + 37 40 ...
+8
Documentation/devicetree/bindings/leds/leds-lp55xx.yaml
··· 58 58 - 2 # D1~6 with VOUT, D7~9 with VDD 59 59 - 3 # D1~9 are connected to VOUT 60 60 61 + '#address-cells': 62 + const: 1 63 + 64 + '#size-cells': 65 + const: 0 66 + 61 67 patternProperties: 62 68 "(^led@[0-9a-f]$|led)": 63 69 type: object ··· 103 97 required: 104 98 - compatible 105 99 - reg 100 + 101 + additionalProperties: false 106 102 107 103 examples: 108 104 - |
+2
Documentation/devicetree/bindings/leds/trigger-source.yaml
··· 21 21 trigger sources (e.g. a specific USB port). 22 22 enum: [ 0, 1 ] 23 23 24 + additionalProperties: true 25 + 24 26 ...
+5 -1
Documentation/devicetree/bindings/mailbox/fsl,mu.yaml
··· 38 38 - const: fsl,imx6sx-mu 39 39 - description: To communicate with i.MX8 SCU with fast IPC 40 40 items: 41 - - const: fsl,imx8qxp-mu 42 41 - const: fsl,imx8-mu-scu 42 + - const: fsl,imx8qxp-mu 43 + - const: fsl,imx6sx-mu 43 44 44 45 reg: 45 46 maxItems: 1 ··· 71 70 fsl,mu-side-b: 72 71 description: boolean, if present, means it is for side B MU. 73 72 type: boolean 73 + 74 + power-domains: 75 + maxItems: 1 74 76 75 77 required: 76 78 - compatible
+2
Documentation/devicetree/bindings/media/i2c/chrontel,ch7322.yaml
··· 49 49 - reg 50 50 - interrupts 51 51 52 + additionalProperties: false 53 + 52 54 examples: 53 55 - | 54 56 #include <dt-bindings/gpio/gpio.h>
+2
Documentation/devicetree/bindings/media/i2c/imi,rdacm2x-gmsl.yaml
··· 119 119 - reg 120 120 - port 121 121 122 + additionalProperties: false 123 + 122 124 examples: 123 125 - | 124 126 i2c@e66d8000 {
+2
Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml
··· 55 55 - clocks 56 56 - clock-names 57 57 58 + additionalProperties: false 59 + 58 60 examples: 59 61 - | 60 62 #include <dt-bindings/clock/imx8mq-clock.h>
+2
Documentation/devicetree/bindings/media/qcom,msm8916-venus.yaml
··· 92 92 - video-decoder 93 93 - video-encoder 94 94 95 + additionalProperties: false 96 + 95 97 examples: 96 98 - | 97 99 #include <dt-bindings/interrupt-controller/arm-gic.h>
+2
Documentation/devicetree/bindings/media/qcom,msm8996-venus.yaml
··· 119 119 - video-decoder 120 120 - video-encoder 121 121 122 + additionalProperties: false 123 + 122 124 examples: 123 125 - | 124 126 #include <dt-bindings/interrupt-controller/arm-gic.h>
+2
Documentation/devicetree/bindings/media/qcom,sc7180-venus.yaml
··· 112 112 - video-decoder 113 113 - video-encoder 114 114 115 + additionalProperties: false 116 + 115 117 examples: 116 118 - | 117 119 #include <dt-bindings/interrupt-controller/arm-gic.h>
+2
Documentation/devicetree/bindings/media/qcom,sdm845-venus-v2.yaml
··· 107 107 - video-core0 108 108 - video-core1 109 109 110 + additionalProperties: false 111 + 110 112 examples: 111 113 - | 112 114 #include <dt-bindings/interrupt-controller/arm-gic.h>
+2
Documentation/devicetree/bindings/media/qcom,sdm845-venus.yaml
··· 120 120 - video-core0 121 121 - video-core1 122 122 123 + additionalProperties: false 124 + 123 125 examples: 124 126 - | 125 127 #include <dt-bindings/interrupt-controller/arm-gic.h>
+2
Documentation/devicetree/bindings/media/rc.yaml
··· 150 150 - rc-x96max 151 151 - rc-xbox-dvd 152 152 - rc-zx-irdec 153 + 154 + additionalProperties: true
+2
Documentation/devicetree/bindings/memory-controllers/fsl/mmdc.yaml
··· 33 33 - compatible 34 34 - reg 35 35 36 + additionalProperties: false 37 + 36 38 examples: 37 39 - | 38 40 #include <dt-bindings/clock/imx6qdl-clock.h>
+2
Documentation/devicetree/bindings/memory-controllers/renesas,rpc-if.yaml
··· 61 61 - cfi-flash 62 62 - jedec,spi-nor 63 63 64 + unevaluatedProperties: false 65 + 64 66 examples: 65 67 - | 66 68 #include <dt-bindings/clock/renesas-cpg-mssr.h>
+2
Documentation/devicetree/bindings/memory-controllers/st,stm32-fmc2-ebi.yaml
··· 194 194 - clocks 195 195 - ranges 196 196 197 + additionalProperties: false 198 + 197 199 examples: 198 200 - | 199 201 #include <dt-bindings/interrupt-controller/arm-gic.h>
+9 -1
Documentation/devicetree/bindings/mfd/cirrus,lochnagar.yaml
··· 130 130 type: object 131 131 $ref: /schemas/pinctrl/cirrus,lochnagar.yaml# 132 132 133 + lochnagar-hwmon: 134 + type: object 135 + $ref: /schemas/hwmon/cirrus,lochnagar.yaml# 136 + 137 + lochnagar-sc: 138 + type: object 139 + $ref: /schemas/sound/cirrus,lochnagar.yaml# 140 + 133 141 VDDCORE: 134 142 description: 135 143 Initialisation data for the VDDCORE regulator, which supplies the ··· 257 249 - lochnagar-clk 258 250 - lochnagar-pinctrl 259 251 260 - unevaluatedProperties: false 252 + additionalProperties: false 261 253 262 254 examples: 263 255 - |
+2
Documentation/devicetree/bindings/mfd/gateworks-gsc.yaml
··· 144 144 - "#address-cells" 145 145 - "#size-cells" 146 146 147 + additionalProperties: false 148 + 147 149 examples: 148 150 - | 149 151 #include <dt-bindings/gpio/gpio.h>
+8
Documentation/devicetree/bindings/mfd/google,cros-ec.yaml
··· 30 30 For implementations of the EC is connected through RPMSG. 31 31 const: google,cros-ec-rpmsg 32 32 33 + controller-data: 34 + description: 35 + SPI controller data, see bindings/spi/spi-samsung.txt 36 + type: object 37 + 33 38 google,cros-ec-spi-pre-delay: 34 39 description: 35 40 This property specifies the delay in usecs between the ··· 67 62 68 63 interrupts: 69 64 maxItems: 1 65 + 66 + wakeup-source: 67 + description: Button can wake-up the system. 70 68 71 69 required: 72 70 - compatible
+1 -1
Documentation/devicetree/bindings/mfd/qcom,spmi-pmic.txt
··· 37 37 or generalized "qcom,spmi-pmic". 38 38 - reg: Specifies the SPMI USID slave address for this device. 39 39 For more information see: 40 - Documentation/devicetree/bindings/spmi/spmi.txt 40 + Documentation/devicetree/bindings/spmi/spmi.yaml 41 41 42 42 Required properties for peripheral child nodes: 43 43 - compatible: Should contain "qcom,xxx", where "xxx" is a peripheral name.
+7 -2
Documentation/devicetree/bindings/mfd/rohm,bd71847-pmic.yaml
··· 38 38 "#clock-cells": 39 39 const: 0 40 40 41 + clock-output-names: 42 + maxItems: 1 43 + 41 44 # The BD71847 abd BD71850 support two different HW states as reset target 42 45 # states. States are called as SNVS and READY. At READY state all the PMIC 43 46 # power outputs go down and OTP is reload. At the SNVS state all other logic ··· 119 116 - compatible 120 117 - reg 121 118 - interrupts 122 - - clocks 123 - - "#clock-cells" 124 119 - regulators 125 120 126 121 additionalProperties: false 122 + 123 + dependencies: 124 + '#clock-cells': [clocks] 125 + clocks: ['#clock-cells'] 127 126 128 127 examples: 129 128 - |
+5 -1
Documentation/devicetree/bindings/mfd/syscon.yaml
··· 38 38 - allwinner,sun8i-h3-system-controller 39 39 - allwinner,sun8i-v3s-system-controller 40 40 - allwinner,sun50i-a64-system-controller 41 + - hisilicon,dsa-subctrl 42 + - hisilicon,hi6220-sramctrl 43 + - hisilicon,pcie-sas-subctrl 44 + - hisilicon,peri-subctrl 41 45 - microchip,sparx5-cpu-syscon 42 46 - mstar,msc313-pmsleep 43 47 ··· 71 67 - compatible 72 68 - reg 73 69 74 - unevaluatedProperties: false 70 + additionalProperties: true 75 71 76 72 examples: 77 73 - |
+6 -3
Documentation/devicetree/bindings/mfd/ti,j721e-system-controller.yaml
··· 30 30 - const: syscon 31 31 - const: simple-mfd 32 32 33 + reg: 34 + maxItems: 1 35 + 33 36 "#address-cells": 34 37 const: 1 35 38 ··· 41 38 42 39 ranges: true 43 40 44 - # Optional children 45 - 41 + patternProperties: 42 + # Optional children 46 43 "^serdes-ln-ctrl@[0-9a-f]+$": 47 44 type: object 48 45 description: | ··· 57 54 - "#size-cells" 58 55 - ranges 59 56 60 - unevaluatedProperties: false 57 + additionalProperties: false 61 58 62 59 examples: 63 60 - |
+12 -2
Documentation/devicetree/bindings/mfd/xylon,logicvc.yaml
··· 26 26 reg: 27 27 maxItems: 1 28 28 29 + '#address-cells': 30 + const: 1 31 + 32 + '#size-cells': 33 + const: 1 34 + 29 35 select: 30 36 properties: 31 37 compatible: ··· 42 36 required: 43 37 - compatible 44 38 39 + patternProperties: 40 + "^gpio@[0-9a-f]+$": 41 + $ref: /schemas/gpio/xylon,logicvc-gpio.yaml# 42 + 45 43 required: 46 44 - compatible 47 45 - reg 46 + 47 + additionalProperties: false 48 48 49 49 examples: 50 50 - | 51 51 logicvc: logicvc@43c00000 { 52 52 compatible = "xylon,logicvc-3.02.a", "syscon", "simple-mfd"; 53 53 reg = <0x43c00000 0x6000>; 54 - #address-cells = <1>; 55 - #size-cells = <1>; 56 54 };
+4 -2
Documentation/devicetree/bindings/mips/ingenic/ingenic,cpu.yaml
··· 32 32 clocks: 33 33 maxItems: 1 34 34 35 + device_type: true 36 + 35 37 required: 36 38 - device_type 37 39 - compatible 38 40 - reg 39 41 - clocks 42 + 43 + additionalProperties: false 40 44 41 45 examples: 42 46 - | ··· 56 52 reg = <0>; 57 53 58 54 clocks = <&cgu JZ4780_CLK_CPU>; 59 - clock-names = "cpu"; 60 55 }; 61 56 62 57 cpu1: cpu@1 { ··· 64 61 reg = <1>; 65 62 66 63 clocks = <&cgu JZ4780_CLK_CORE1>; 67 - clock-names = "cpu"; 68 64 }; 69 65 }; 70 66 ...
+2
Documentation/devicetree/bindings/mips/loongson/rs780e-acpi.yaml
··· 23 23 - compatible 24 24 - reg 25 25 26 + additionalProperties: false 27 + 26 28 examples: 27 29 - | 28 30 isa@0 {
+5 -1
Documentation/devicetree/bindings/misc/olpc,xo1.75-ec.yaml
··· 28 28 description: GPIO uspecifier of the CMD pin 29 29 maxItems: 1 30 30 31 + spi-cpha: true 32 + 31 33 required: 32 34 - compatible 33 35 - cmd-gpios 34 36 35 - unevaluatedProperties: false 37 + additionalProperties: false 36 38 37 39 examples: 38 40 - | ··· 42 40 43 41 spi { 44 42 spi-slave; 43 + #address-cells = <0>; 44 + #size-cells = <0>; 45 45 ready-gpios = <&gpio 125 GPIO_ACTIVE_HIGH>; 46 46 47 47 slave {
+2
Documentation/devicetree/bindings/mmc/amlogic,meson-mx-sdhc.yaml
··· 50 50 - clocks 51 51 - clock-names 52 52 53 + unevaluatedProperties: false 54 + 53 55 examples: 54 56 - | 55 57 #include <dt-bindings/interrupt-controller/irq.h>
+2
Documentation/devicetree/bindings/mmc/cdns,sdhci.yaml
··· 117 117 - interrupts 118 118 - clocks 119 119 120 + unevaluatedProperties: false 121 + 120 122 examples: 121 123 - | 122 124 emmc: mmc@5a000000 {
+2
Documentation/devicetree/bindings/mmc/ingenic,mmc.yaml
··· 56 56 - dmas 57 57 - dma-names 58 58 59 + unevaluatedProperties: false 60 + 59 61 examples: 60 62 - | 61 63 #include <dt-bindings/clock/jz4780-cgu.h>
+2
Documentation/devicetree/bindings/mmc/mmc-controller.yaml
··· 353 353 cd-debounce-delay-ms: [ cd-gpios ] 354 354 fixed-emmc-driver-type: [ non-removable ] 355 355 356 + additionalProperties: true 357 + 356 358 examples: 357 359 - | 358 360 mmc@ab000000 {
+2
Documentation/devicetree/bindings/mmc/mmc-pwrseq-emmc.yaml
··· 36 36 - compatible 37 37 - reset-gpios 38 38 39 + additionalProperties: false 40 + 39 41 examples: 40 42 - | 41 43 #include <dt-bindings/gpio/gpio.h>
+2
Documentation/devicetree/bindings/mmc/mmc-pwrseq-sd8787.yaml
··· 28 28 - powerdown-gpios 29 29 - reset-gpios 30 30 31 + additionalProperties: false 32 + 31 33 examples: 32 34 - | 33 35 #include <dt-bindings/gpio/gpio.h>
+2
Documentation/devicetree/bindings/mmc/mmc-pwrseq-simple.yaml
··· 52 52 required: 53 53 - compatible 54 54 55 + additionalProperties: false 56 + 55 57 examples: 56 58 - | 57 59 #include <dt-bindings/gpio/gpio.h>
+2
Documentation/devicetree/bindings/mmc/owl-mmc.yaml
··· 47 47 - dmas 48 48 - dma-names 49 49 50 + unevaluatedProperties: false 51 + 50 52 examples: 51 53 - | 52 54 mmc0: mmc@e0330000 {
+2
Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.yaml
··· 102 102 - clocks 103 103 - clock-names 104 104 105 + unevaluatedProperties: false 106 + 105 107 examples: 106 108 - | 107 109 #include <dt-bindings/clock/rk3288-cru.h>
+2
Documentation/devicetree/bindings/mmc/sdhci-pxa.yaml
··· 73 73 - clocks 74 74 - clock-names 75 75 76 + unevaluatedProperties: false 77 + 76 78 examples: 77 79 - | 78 80 #include <dt-bindings/clock/berlin2.h>
+2
Documentation/devicetree/bindings/mmc/socionext,uniphier-sd.yaml
··· 77 77 - reset-names 78 78 - resets 79 79 80 + unevaluatedProperties: false 81 + 80 82 examples: 81 83 - | 82 84 sd: mmc@5a400000 {
+2
Documentation/devicetree/bindings/mmc/synopsys-dw-mshc-common.yaml
··· 62 62 63 63 dma-names: 64 64 const: rx-tx 65 + 66 + additionalProperties: true
+2
Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.yaml
··· 42 42 - clocks 43 43 - clock-names 44 44 45 + unevaluatedProperties: false 46 + 45 47 examples: 46 48 - | 47 49 mmc@12200000 {
+2
Documentation/devicetree/bindings/mtd/denali,nand.yaml
··· 128 128 - clock-names 129 129 - clocks 130 130 131 + unevaluatedProperties: false 132 + 131 133 examples: 132 134 - | 133 135 nand-controller@ff900000 {
+12 -6
Documentation/devicetree/bindings/mtd/gpmi-nand.yaml
··· 20 20 21 21 properties: 22 22 compatible: 23 - enum: 24 - - fsl,imx23-gpmi-nand 25 - - fsl,imx28-gpmi-nand 26 - - fsl,imx6q-gpmi-nand 27 - - fsl,imx6sx-gpmi-nand 28 - - fsl,imx7d-gpmi-nand 23 + oneOf: 24 + - enum: 25 + - fsl,imx23-gpmi-nand 26 + - fsl,imx28-gpmi-nand 27 + - fsl,imx6q-gpmi-nand 28 + - fsl,imx6sx-gpmi-nand 29 + - fsl,imx7d-gpmi-nand 30 + - items: 31 + - enum: 32 + - fsl,imx8mm-gpmi-nand 33 + - fsl,imx8mn-gpmi-nand 34 + - const: fsl,imx7d-gpmi-nand 29 35 30 36 reg: 31 37 items:
+2
Documentation/devicetree/bindings/mtd/ingenic,nand.yaml
··· 51 51 - compatible 52 52 - reg 53 53 54 + unevaluatedProperties: false 55 + 54 56 examples: 55 57 - | 56 58 #include <dt-bindings/clock/jz4780-cgu.h>
+2
Documentation/devicetree/bindings/mtd/nand-controller.yaml
··· 128 128 - "#address-cells" 129 129 - "#size-cells" 130 130 131 + additionalProperties: true 132 + 131 133 examples: 132 134 - | 133 135 nand-controller {
+2
Documentation/devicetree/bindings/mtd/st,stm32-fmc2-nand.yaml
··· 94 94 - reg 95 95 - interrupts 96 96 97 + unevaluatedProperties: false 98 + 97 99 examples: 98 100 - | 99 101 #include <dt-bindings/interrupt-controller/arm-gic.h>
+2
Documentation/devicetree/bindings/net/adi,adin.yaml
··· 36 36 enum: [ 4, 8, 12, 16, 20, 24 ] 37 37 default: 8 38 38 39 + unevaluatedProperties: false 40 + 39 41 examples: 40 42 - | 41 43 ethernet {
+2
Documentation/devicetree/bindings/net/amlogic,meson-dwmac.yaml
··· 120 120 - clock-names 121 121 - phy-mode 122 122 123 + unevaluatedProperties: false 124 + 123 125 examples: 124 126 - | 125 127 ethmac: ethernet@c9410000 {
+2
Documentation/devicetree/bindings/net/aspeed,ast2600-mdio.yaml
··· 30 30 - "#address-cells" 31 31 - "#size-cells" 32 32 33 + unevaluatedProperties: false 34 + 33 35 examples: 34 36 - | 35 37 mdio0: mdio@1e650000 {
+2
Documentation/devicetree/bindings/net/can/can-transceiver.yaml
··· 16 16 $ref: /schemas/types.yaml#/definitions/uint32 17 17 description: a positive non 0 value that determines the max speed that CAN/CAN-FD can run. 18 18 minimum: 1 19 + 20 + additionalProperties: true
+2
Documentation/devicetree/bindings/net/dsa/dsa.yaml
··· 89 89 - required: 90 90 - ethernet-ports 91 91 92 + additionalProperties: true 93 + 92 94 ...
+2
Documentation/devicetree/bindings/net/ethernet-controller.yaml
··· 205 205 required: 206 206 - speed 207 207 208 + additionalProperties: true 209 + 208 210 ...
+2
Documentation/devicetree/bindings/net/ethernet-phy.yaml
··· 177 177 required: 178 178 - reg 179 179 180 + additionalProperties: true 181 + 180 182 examples: 181 183 - | 182 184 ethernet {
+2
Documentation/devicetree/bindings/net/marvell,mvusb.yaml
··· 35 35 - "#address-cells" 36 36 - "#size-cells" 37 37 38 + unevaluatedProperties: false 39 + 38 40 examples: 39 41 - | 40 42 /* USB host controller */
+2
Documentation/devicetree/bindings/net/mdio.yaml
··· 100 100 required: 101 101 - reg 102 102 103 + additionalProperties: true 104 + 103 105 examples: 104 106 - | 105 107 davinci_mdio: mdio@5c030000 {
+2
Documentation/devicetree/bindings/net/mediatek,star-emac.yaml
··· 61 61 - mediatek,pericfg 62 62 - phy-handle 63 63 64 + unevaluatedProperties: false 65 + 64 66 examples: 65 67 - | 66 68 #include <dt-bindings/interrupt-controller/arm-gic.h>
+2
Documentation/devicetree/bindings/net/nxp,tja11xx.yaml
··· 34 34 required: 35 35 - reg 36 36 37 + unevaluatedProperties: false 38 + 37 39 examples: 38 40 - | 39 41 mdio {
+2
Documentation/devicetree/bindings/net/qca,ar71xx.yaml
··· 72 72 - resets 73 73 - reset-names 74 74 75 + unevaluatedProperties: false 76 + 75 77 examples: 76 78 # Lager board 77 79 - |
+2
Documentation/devicetree/bindings/net/qca,ar803x.yaml
··· 59 59 regulator to VDDIO. 60 60 $ref: /schemas/regulator/regulator.yaml 61 61 62 + unevaluatedProperties: false 63 + 62 64 examples: 63 65 - | 64 66 #include <dt-bindings/net/qca-ar803x.h>
+2
Documentation/devicetree/bindings/net/qcom,ipa.yaml
··· 144 144 - required: 145 145 - memory-region 146 146 147 + additionalProperties: false 148 + 147 149 examples: 148 150 - | 149 151 #include <dt-bindings/interrupt-controller/irq.h>
+2
Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
··· 31 31 - "#address-cells" 32 32 - "#size-cells" 33 33 34 + unevaluatedProperties: false 35 + 34 36 examples: 35 37 - | 36 38 mdio@90000 {
+2
Documentation/devicetree/bindings/net/qcom,ipq8064-mdio.yaml
··· 33 33 - "#address-cells" 34 34 - "#size-cells" 35 35 36 + unevaluatedProperties: false 37 + 36 38 examples: 37 39 - | 38 40 #include <dt-bindings/clock/qcom,gcc-ipq806x.h>
+3 -1
Documentation/devicetree/bindings/net/realtek-bluetooth.yaml
··· 37 37 required: 38 38 - compatible 39 39 40 + additionalProperties: false 41 + 40 42 examples: 41 43 - | 42 44 #include <dt-bindings/gpio/gpio.h> ··· 51 49 bluetooth { 52 50 compatible = "realtek,rtl8723bs-bt"; 53 51 device-wake-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* PL5 */ 54 - host-wakeup-gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */ 52 + host-wake-gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; /* PL6 */ 55 53 }; 56 54 };
+2
Documentation/devicetree/bindings/net/snps,dwmac.yaml
··· 356 356 Enables the TSO feature otherwise it will be managed by 357 357 MAC HW capability register. 358 358 359 + additionalProperties: true 360 + 359 361 examples: 360 362 - | 361 363 stmmac_axi_setup: stmmac-axi-config {
+2
Documentation/devicetree/bindings/net/stm32-dwmac.yaml
··· 88 88 - clock-names 89 89 - st,syscon 90 90 91 + unevaluatedProperties: false 92 + 91 93 examples: 92 94 - | 93 95 #include <dt-bindings/interrupt-controller/arm-gic.h>
+2
Documentation/devicetree/bindings/net/ti,davinci-mdio.yaml
··· 58 58 - "#address-cells" 59 59 - "#size-cells" 60 60 61 + unevaluatedProperties: false 62 + 61 63 examples: 62 64 - | 63 65 davinci_mdio: mdio@4a101000 {
+2
Documentation/devicetree/bindings/net/ti,dp83867.yaml
··· 109 109 required: 110 110 - reg 111 111 112 + unevaluatedProperties: false 113 + 112 114 examples: 113 115 - | 114 116 #include <dt-bindings/net/ti-dp83867.h>
+2
Documentation/devicetree/bindings/net/ti,dp83869.yaml
··· 79 79 required: 80 80 - reg 81 81 82 + unevaluatedProperties: false 83 + 82 84 examples: 83 85 - | 84 86 #include <dt-bindings/net/ti-dp83869.h>
+4
Documentation/devicetree/bindings/net/wireless/microchip,wilc1000.yaml
··· 18 18 compatible: 19 19 const: microchip,wilc1000 20 20 21 + reg: true 22 + 21 23 spi-max-frequency: true 22 24 23 25 interrupts: ··· 35 33 required: 36 34 - compatible 37 35 - interrupts 36 + 37 + additionalProperties: false 38 38 39 39 examples: 40 40 - |
+25 -15
Documentation/devicetree/bindings/nvmem/imx-ocotp.yaml
··· 19 19 20 20 properties: 21 21 compatible: 22 - items: 23 - - enum: 24 - - fsl,imx6q-ocotp 25 - - fsl,imx6sl-ocotp 26 - - fsl,imx6sx-ocotp 27 - - fsl,imx6ul-ocotp 28 - - fsl,imx6ull-ocotp 29 - - fsl,imx7d-ocotp 30 - - fsl,imx6sll-ocotp 31 - - fsl,imx7ulp-ocotp 32 - - fsl,imx8mq-ocotp 33 - - fsl,imx8mm-ocotp 34 - - fsl,imx8mn-ocotp 35 - - fsl,imx8mp-ocotp 36 - - const: syscon 22 + oneOf: 23 + - items: 24 + - enum: 25 + - fsl,imx6q-ocotp 26 + - fsl,imx6sl-ocotp 27 + - fsl,imx6sx-ocotp 28 + - fsl,imx6ul-ocotp 29 + - fsl,imx6ull-ocotp 30 + - fsl,imx7d-ocotp 31 + - fsl,imx6sll-ocotp 32 + - fsl,imx7ulp-ocotp 33 + - fsl,imx8mq-ocotp 34 + - fsl,imx8mm-ocotp 35 + - const: syscon 36 + - items: 37 + - enum: 38 + - fsl,imx8mn-ocotp 39 + # i.MX8MP not really compatible with fsl,imx8mm-ocotp, however 40 + # the code for getting SoC revision depends on fsl,imx8mm-ocotp 41 + # compatible. 42 + - fsl,imx8mp-ocotp 43 + - const: fsl,imx8mm-ocotp 44 + - const: syscon 37 45 38 46 reg: 39 47 maxItems: 1 ··· 75 67 - reg 76 68 77 69 additionalProperties: false 70 + 71 + unevaluatedProperties: false 78 72 79 73 examples: 80 74 - |
+2
Documentation/devicetree/bindings/nvmem/nvmem-consumer.yaml
··· 36 36 nvmem-names: [ nvmem ] 37 37 nvmem-cell-names: [ nvmem-cells ] 38 38 39 + additionalProperties: true 40 + 39 41 examples: 40 42 - | 41 43 tsens {
+2
Documentation/devicetree/bindings/nvmem/nvmem.yaml
··· 67 67 required: 68 68 - reg 69 69 70 + additionalProperties: true 71 + 70 72 examples: 71 73 - | 72 74 #include <dt-bindings/gpio/gpio.h>
+2
Documentation/devicetree/bindings/nvmem/qcom,qfprom.yaml
··· 49 49 - compatible 50 50 - reg 51 51 52 + unevaluatedProperties: false 53 + 52 54 examples: 53 55 - | 54 56 #include <dt-bindings/clock/qcom,gcc-sc7180.h>
+2
Documentation/devicetree/bindings/nvmem/qcom,spmi-sdam.yaml
··· 66 66 67 67 additionalProperties: false 68 68 69 + unevaluatedProperties: false 70 + 69 71 examples: 70 72 - | 71 73 sdam_1: nvram@b000 {
+2
Documentation/devicetree/bindings/nvmem/rockchip-efuse.yaml
··· 51 51 - clocks 52 52 - clock-names 53 53 54 + unevaluatedProperties: false 55 + 54 56 examples: 55 57 - | 56 58 #include <dt-bindings/clock/rk3288-cru.h>
-21
Documentation/devicetree/bindings/nvmem/snvs-lpgpr.txt
··· 1 - Device tree bindings for Low Power General Purpose Register found in i.MX6Q/D 2 - and i.MX7 Secure Non-Volatile Storage. 3 - 4 - This DT node should be represented as a sub-node of a "syscon", 5 - "simple-mfd" node. 6 - 7 - Required properties: 8 - - compatible: should be one of the fallowing variants: 9 - "fsl,imx6q-snvs-lpgpr" for Freescale i.MX6Q/D/DL/S 10 - "fsl,imx6ul-snvs-lpgpr" for Freescale i.MX6UL 11 - "fsl,imx7d-snvs-lpgpr" for Freescale i.MX7D/S 12 - 13 - Example: 14 - snvs: snvs@020cc000 { 15 - compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd"; 16 - reg = <0x020cc000 0x4000>; 17 - 18 - snvs_lpgpr: snvs-lpgpr { 19 - compatible = "fsl,imx6q-snvs-lpgpr"; 20 - }; 21 - };
+33
Documentation/devicetree/bindings/nvmem/snvs-lpgpr.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/nvmem/snvs-lpgpr.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Low Power General Purpose Register found in i.MX Secure Non-Volatile Storage 8 + 9 + maintainers: 10 + - Oleksij Rempel <o.rempel@pengutronix.de> 11 + 12 + properties: 13 + compatible: 14 + enum: 15 + - fsl,imx6q-snvs-lpgpr 16 + - fsl,imx6ul-snvs-lpgpr 17 + - fsl,imx7d-snvs-lpgpr 18 + 19 + required: 20 + - compatible 21 + 22 + additionalProperties: false 23 + 24 + examples: 25 + - | 26 + snvs@20cc000 { 27 + compatible = "fsl,sec-v4.0-mon", "syscon", "simple-mfd"; 28 + reg = <0x20cc000 0x4000>; 29 + 30 + snvs_lpgpr: snvs-lpgpr { 31 + compatible = "fsl,imx6q-snvs-lpgpr"; 32 + }; 33 + };
+2
Documentation/devicetree/bindings/nvmem/st,stm32-romem.yaml
··· 42 42 - compatible 43 43 - reg 44 44 45 + unevaluatedProperties: false 46 + 45 47 examples: 46 48 - | 47 49 efuse@1fff7800 {
+3 -1
Documentation/devicetree/bindings/opp/allwinner,sun50i-h6-operating-points.yaml
··· 31 31 Documentation/devicetree/bindings/nvmem/nvmem.txt and also 32 32 examples below. 33 33 34 + opp-shared: true 35 + 34 36 required: 35 37 - compatible 36 38 - nvmem-cells ··· 55 53 56 54 unevaluatedProperties: false 57 55 58 - unevaluatedProperties: false 56 + additionalProperties: false 59 57 60 58 examples: 61 59 - |
+2
Documentation/devicetree/bindings/pci/cdns,cdns-pcie-ep.yaml
··· 29 29 - reg 30 30 - reg-names 31 31 32 + unevaluatedProperties: false 33 + 32 34 examples: 33 35 - | 34 36 bus {
+2
Documentation/devicetree/bindings/pci/cdns,cdns-pcie-host.yaml
··· 31 31 - reg 32 32 - reg-names 33 33 34 + unevaluatedProperties: false 35 + 34 36 examples: 35 37 - | 36 38 bus {
+2
Documentation/devicetree/bindings/pci/cdns-pcie-ep.yaml
··· 22 22 23 23 required: 24 24 - cdns,max-outbound-regions 25 + 26 + additionalProperties: true
+2
Documentation/devicetree/bindings/pci/cdns-pcie-host.yaml
··· 33 33 deprecated: true 34 34 35 35 msi-parent: true 36 + 37 + additionalProperties: true
+2
Documentation/devicetree/bindings/pci/cdns-pcie.yaml
··· 21 21 items: 22 22 - const: pcie-phy 23 23 # FIXME: names when more than 1 24 + 25 + additionalProperties: true
+2
Documentation/devicetree/bindings/pci/host-generic-pci.yaml
··· 137 137 reg: 138 138 maxItems: 1 139 139 140 + unevaluatedProperties: false 141 + 140 142 examples: 141 143 - | 142 144
+2
Documentation/devicetree/bindings/pci/loongson.yaml
··· 39 39 - reg 40 40 - ranges 41 41 42 + unevaluatedProperties: false 43 + 42 44 examples: 43 45 - | 44 46
+2
Documentation/devicetree/bindings/pci/pci-ep.yaml
··· 36 36 37 37 required: 38 38 - compatible 39 + 40 + additionalProperties: true
+2
Documentation/devicetree/bindings/pci/rcar-pci-ep.yaml
··· 55 55 - clock-names 56 56 - max-functions 57 57 58 + additionalProperties: false 59 + 58 60 examples: 59 61 - | 60 62 #include <dt-bindings/clock/r8a774c0-cpg-mssr.h>
+2
Documentation/devicetree/bindings/pci/ti,j721e-pci-ep.yaml
··· 63 63 - phys 64 64 - phy-names 65 65 66 + unevaluatedProperties: false 67 + 66 68 examples: 67 69 - | 68 70 #include <dt-bindings/soc/ti,sci_pm_domain.h>
+2
Documentation/devicetree/bindings/pci/ti,j721e-pci-host.yaml
··· 72 72 - phys 73 73 - phy-names 74 74 75 + unevaluatedProperties: false 76 + 75 77 examples: 76 78 - | 77 79 #include <dt-bindings/soc/ti,sci_pm_domain.h>
+2
Documentation/devicetree/bindings/pci/versatile.yaml
··· 48 48 - interrupt-map 49 49 - interrupt-map-mask 50 50 51 + unevaluatedProperties: false 52 + 51 53 examples: 52 54 - | 53 55 pci@10001000 {
-22
Documentation/devicetree/bindings/perf/fsl-imx-ddr.txt
··· 1 - * Freescale(NXP) IMX8 DDR performance monitor 2 - 3 - Required properties: 4 - 5 - - compatible: should be one of: 6 - "fsl,imx8-ddr-pmu" 7 - "fsl,imx8m-ddr-pmu" 8 - "fsl,imx8mp-ddr-pmu" 9 - 10 - - reg: physical address and size 11 - 12 - - interrupts: single interrupt 13 - generated by the control block 14 - 15 - Example: 16 - 17 - ddr-pmu@5c020000 { 18 - compatible = "fsl,imx8-ddr-pmu"; 19 - reg = <0x5c020000 0x10000>; 20 - interrupt-parent = <&gic>; 21 - interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>; 22 - };
+49
Documentation/devicetree/bindings/perf/fsl-imx-ddr.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/perf/fsl-imx-ddr.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Freescale(NXP) IMX8 DDR performance monitor 8 + 9 + maintainers: 10 + - Frank Li <frank.li@nxp.com> 11 + 12 + properties: 13 + compatible: 14 + oneOf: 15 + - enum: 16 + - fsl,imx8-ddr-pmu 17 + - fsl,imx8m-ddr-pmu 18 + - fsl,imx8mp-ddr-pmu 19 + - items: 20 + - enum: 21 + - fsl,imx8mm-ddr-pmu 22 + - fsl,imx8mn-ddr-pmu 23 + - fsl,imx8mq-ddr-pmu 24 + - fsl,imx8mp-ddr-pmu 25 + - const: fsl,imx8m-ddr-pmu 26 + 27 + reg: 28 + maxItems: 1 29 + 30 + interrupts: 31 + maxItems: 1 32 + 33 + required: 34 + - compatible 35 + - reg 36 + - interrupts 37 + 38 + additionalProperties: false 39 + 40 + examples: 41 + - | 42 + #include <dt-bindings/interrupt-controller/arm-gic.h> 43 + 44 + ddr-pmu@5c020000 { 45 + compatible = "fsl,imx8-ddr-pmu"; 46 + reg = <0x5c020000 0x10000>; 47 + interrupt-parent = <&gic>; 48 + interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>; 49 + };
+2
Documentation/devicetree/bindings/phy/amlogic,meson-g12a-usb2-phy.yaml
··· 63 63 required: 64 64 - power-domains 65 65 66 + additionalProperties: false 67 + 66 68 examples: 67 69 - | 68 70 phy@36000 {
+60
Documentation/devicetree/bindings/phy/hisilicon,hi3660-usb3.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/phy/hisilicon,hi3660-usb3.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Hisilicon Kirin 960 USB PHY 8 + 9 + maintainers: 10 + - Mauro Carvalho Chehab <mchehab+huawei@kernel.org> 11 + description: |+ 12 + Bindings for USB3 PHY on HiSilicon Kirin 960. 13 + 14 + properties: 15 + compatible: 16 + const: hisilicon,hi3660-usb-phy 17 + 18 + "#phy-cells": 19 + const: 0 20 + 21 + hisilicon,pericrg-syscon: 22 + $ref: '/schemas/types.yaml#/definitions/phandle' 23 + description: phandle of syscon used to control iso refclk. 24 + 25 + hisilicon,pctrl-syscon: 26 + $ref: '/schemas/types.yaml#/definitions/phandle' 27 + description: phandle of syscon used to control usb tcxo. 28 + 29 + hisilicon,eye-diagram-param: 30 + $ref: /schemas/types.yaml#/definitions/uint32 31 + description: Eye diagram for phy. 32 + 33 + required: 34 + - compatible 35 + - hisilicon,pericrg-syscon 36 + - hisilicon,pctrl-syscon 37 + - hisilicon,eye-diagram-param 38 + - "#phy-cells" 39 + 40 + additionalProperties: false 41 + 42 + examples: 43 + - | 44 + bus { 45 + #address-cells = <2>; 46 + #size-cells = <2>; 47 + 48 + usb3_otg_bc: usb3_otg_bc@ff200000 { 49 + compatible = "syscon", "simple-mfd"; 50 + reg = <0x0 0xff200000 0x0 0x1000>; 51 + 52 + usb-phy { 53 + compatible = "hisilicon,hi3660-usb-phy"; 54 + #phy-cells = <0>; 55 + hisilicon,pericrg-syscon = <&crg_ctrl>; 56 + hisilicon,pctrl-syscon = <&pctrl>; 57 + hisilicon,eye-diagram-param = <0x22466e4>; 58 + }; 59 + }; 60 + };
-26
Documentation/devicetree/bindings/phy/phy-hi3660-usb3.txt
··· 1 - Hisilicon hi3660 USB PHY 2 - ----------------------- 3 - 4 - Required properties: 5 - - compatible: should be "hisilicon,hi3660-usb-phy" 6 - - #phy-cells: must be 0 7 - - hisilicon,pericrg-syscon: phandle of syscon used to control phy. 8 - - hisilicon,pctrl-syscon: phandle of syscon used to control phy. 9 - - hisilicon,eye-diagram-param: parameter set for phy 10 - Refer to phy/phy-bindings.txt for the generic PHY binding properties 11 - 12 - This is a subnode of usb3_otg_bc register node. 13 - 14 - Example: 15 - usb3_otg_bc: usb3_otg_bc@ff200000 { 16 - compatible = "syscon", "simple-mfd"; 17 - reg = <0x0 0xff200000 0x0 0x1000>; 18 - 19 - usb-phy { 20 - compatible = "hisilicon,hi3660-usb-phy"; 21 - #phy-cells = <0>; 22 - hisilicon,pericrg-syscon = <&crg_ctrl>; 23 - hisilicon,pctrl-syscon = <&pctrl>; 24 - hisilicon,eye-diagram-param = <0x22466e4>; 25 - }; 26 - };
-24
Documentation/devicetree/bindings/phy/phy-stih41x-usb.txt
··· 1 - STMicroelectronics STiH41x USB PHY binding 2 - ------------------------------------------ 3 - 4 - This file contains documentation for the usb phy found in STiH415/6 SoCs from 5 - STMicroelectronics. 6 - 7 - Required properties: 8 - - compatible : should be "st,stih416-usb-phy" or "st,stih415-usb-phy" 9 - - st,syscfg : should be a phandle of the syscfg node 10 - - clock-names : must contain "osc_phy" 11 - - clocks : must contain an entry for each name in clock-names. 12 - See: Documentation/devicetree/bindings/clock/clock-bindings.txt 13 - - #phy-cells : must be 0 for this phy 14 - See: Documentation/devicetree/bindings/phy/phy-bindings.txt 15 - 16 - Example: 17 - 18 - usb2_phy: usb2phy@0 { 19 - compatible = "st,stih416-usb-phy"; 20 - #phy-cells = <0>; 21 - st,syscfg = <&syscfg_rear>; 22 - clocks = <&clk_sysin>; 23 - clock-names = "osc_phy"; 24 - };
+2
Documentation/devicetree/bindings/phy/qcom,ipq806x-usb-phy-hs.yaml
··· 42 42 - clocks 43 43 - clock-names 44 44 45 + additionalProperties: false 46 + 45 47 examples: 46 48 - | 47 49 #include <dt-bindings/clock/qcom,gcc-ipq806x.h>
+2
Documentation/devicetree/bindings/phy/qcom,ipq806x-usb-phy-ss.yaml
··· 60 60 - clocks 61 61 - clock-names 62 62 63 + additionalProperties: false 64 + 63 65 examples: 64 66 - | 65 67 #include <dt-bindings/clock/qcom,gcc-ipq806x.h>
+1
Documentation/devicetree/bindings/phy/qcom,qusb2-phy.yaml
··· 158 158 - vdda-phy-dpdm-supply 159 159 - resets 160 160 161 + additionalProperties: false 161 162 162 163 examples: 163 164 - |
+2
Documentation/devicetree/bindings/phy/qcom-usb-ipq4019-phy.yaml
··· 36 36 - reset-names 37 37 - "#phy-cells" 38 38 39 + additionalProperties: false 40 + 39 41 examples: 40 42 - | 41 43 #include <dt-bindings/clock/qcom,gcc-ipq4019.h>
+2
Documentation/devicetree/bindings/pinctrl/cirrus,lochnagar.yaml
··· 188 188 - gpio-ranges 189 189 - pinctrl-0 190 190 - pinctrl-names 191 + 192 + additionalProperties: false
+2
Documentation/devicetree/bindings/pinctrl/cirrus,madera.yaml
··· 120 120 required: 121 121 - pinctrl-0 122 122 - pinctrl-names 123 + 124 + additionalProperties: true
+2
Documentation/devicetree/bindings/pinctrl/pincfg-node.yaml
··· 138 138 and the delay before latching a value to an output 139 139 pin. Typically indicates how many double-inverters are 140 140 used to delay the signal. 141 + 142 + additionalProperties: true
+1 -1
Documentation/devicetree/bindings/pinctrl/pinctrl-atlas7.txt
··· 60 60 Please refer to pinctrl-bindings.txt in this directory for details of the common 61 61 pinctrl bindings used by client devices. 62 62 63 - SiRFatlas7's pinmux nodes act as a container for an abitrary number of subnodes. 63 + SiRFatlas7's pinmux nodes act as a container for an arbitrary number of subnodes. 64 64 Each of these subnodes represents some desired configuration for a group of pins. 65 65 66 66 Required subnode-properties:
+2
Documentation/devicetree/bindings/pinctrl/pinmux-node.yaml
··· 129 129 130 130 pinctrl-pin-array: 131 131 $ref: /schemas/types.yaml#/definitions/uint32-array 132 + 133 + additionalProperties: true
+1 -1
Documentation/devicetree/bindings/pinctrl/qcom,ipq4019-pinctrl.txt
··· 26 26 common pinctrl bindings used by client devices, including the meaning of the 27 27 phrase "pin configuration node". 28 28 29 - The pin configuration nodes act as a container for an abitrary number of 29 + The pin configuration nodes act as a container for an arbitrary number of 30 30 subnodes. Each of these subnodes represents some desired configuration for a 31 31 pin, a group, or a list of pins or groups. This configuration can include the 32 32 mux function to select on those pin(s)/group(s), and various pin configuration
+3 -3
Documentation/devicetree/bindings/pinctrl/samsung-pinctrl.txt
··· 65 65 66 66 - Pin mux/config groups as child nodes: The pin mux (selecting pin function 67 67 mode) and pin config (pull up/down, driver strength) settings are represented 68 - as child nodes of the pin-controller node. There should be atleast one 68 + as child nodes of the pin-controller node. There should be at least one 69 69 child node and there is no limit on the count of these child nodes. It is 70 70 also possible for a child node to consist of several further child nodes 71 71 to allow grouping multiple pinctrl groups into one. The format of second ··· 75 75 The child node should contain a list of pin(s) on which a particular pin 76 76 function selection or pin configuration (or both) have to applied. This 77 77 list of pins is specified using the property name "samsung,pins". There 78 - should be atleast one pin specfied for this property and there is no upper 78 + should be at least one pin specified for this property and there is no upper 79 79 limit on the count of pins that can be specified. The pins are specified 80 80 using pin names which are derived from the hardware manual of the SoC. As 81 81 an example, the pins in GPA0 bank of the pin controller can be represented ··· 107 107 hardware manual and these values are programmed as-is into the pin 108 108 pull up/down and driver strength register of the pin-controller. 109 109 110 - Note: A child should include atleast a pin function selection property or 110 + Note: A child should include at least a pin function selection property or 111 111 pin configuration property (one or more) or both. 112 112 113 113 The client nodes that require a particular pin function selection and/or
+2
Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.yaml
··· 28 28 required: 29 29 - compatible 30 30 31 + additionalProperties: false 32 + 31 33 examples: 32 34 - | 33 35 // The UniPhier pinctrl should be a subnode of a "syscon" compatible node.
+2
Documentation/devicetree/bindings/power/amlogic,meson-sec-pwrc.yaml
··· 27 27 - compatible 28 28 - "#power-domain-cells" 29 29 30 + additionalProperties: false 31 + 30 32 examples: 31 33 - | 32 34 secure-monitor {
+2
Documentation/devicetree/bindings/power/domain-idle-state.yaml
··· 50 50 - exit-latency-us 51 51 - min-residency-us 52 52 53 + additionalProperties: false 54 + 53 55 examples: 54 56 - | 55 57
+4
Documentation/devicetree/bindings/power/fsl,imx-gpcv2.yaml
··· 33 33 interrupts: 34 34 maxItems: 1 35 35 36 + interrupt-controller: true 37 + '#interrupt-cells': 38 + const: 3 39 + 36 40 pgc: 37 41 type: object 38 42 description: list of power domains provided by this controller.
+2
Documentation/devicetree/bindings/power/mti,mips-cpc.yaml
··· 26 26 - compatible 27 27 - reg 28 28 29 + additionalProperties: false 30 + 29 31 examples: 30 32 - | 31 33 cpc@1bde0000 {
+2
Documentation/devicetree/bindings/power/pd-samsung.yaml
··· 49 49 - "#power-domain-cells" 50 50 - reg 51 51 52 + unevaluatedProperties: false 53 + 52 54 examples: 53 55 - | 54 56 lcd0_pd: power-domain@10023c80 {
+2
Documentation/devicetree/bindings/power/power-domain.yaml
··· 69 69 required: 70 70 - "#power-domain-cells" 71 71 72 + additionalProperties: true 73 + 72 74 examples: 73 75 - | 74 76 power: power-controller@12340000 {
+1 -1
Documentation/devicetree/bindings/power/supply/act8945a-charger.txt
··· 33 33 pinctrl-names = "default"; 34 34 pinctrl-0 = <&pinctrl_charger_chglev &pinctrl_charger_lbo &pinctrl_charger_irq>; 35 35 interrupt-parent = <&pioA>; 36 - interrupts = <45 GPIO_ACTIVE_LOW>; 36 + interrupts = <45 IRQ_TYPE_LEVEL_LOW>; 37 37 38 38 active-semi,chglev-gpios = <&pioA 12 GPIO_ACTIVE_HIGH>; 39 39 active-semi,lbo-gpios = <&pioA 72 GPIO_ACTIVE_LOW>;
+2
Documentation/devicetree/bindings/power/supply/cw2015_battery.yaml
··· 52 52 - compatible 53 53 - reg 54 54 55 + additionalProperties: false 56 + 55 57 examples: 56 58 - | 57 59 i2c {
+2
Documentation/devicetree/bindings/power/supply/power-supply.yaml
··· 16 16 This property is added to a supply in order to list the devices which 17 17 supply it power, referenced by their phandles. 18 18 19 + additionalProperties: true 20 + 19 21 examples: 20 22 - | 21 23 power {
+8
Documentation/devicetree/bindings/power/supply/rohm,bd99954.yaml
··· 112 112 # threshold, and the current is below this setting (7 in above chart) 113 113 # See also Documentation/devicetree/bindings/power/supply/battery.txt 114 114 115 + reg: 116 + maxItems: 1 117 + 118 + interrupts: 119 + maxItems: 1 120 + 115 121 monitored-battery: 116 122 description: 117 123 phandle of battery characteristics devicetree node ··· 142 136 143 137 required: 144 138 - compatible 139 + 140 + additionalProperties: false 145 141 146 142 examples: 147 143 - |
+47
Documentation/devicetree/bindings/powerpc/sleep.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/powerpc/sleep.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: PowerPC sleep property 8 + 9 + maintainers: 10 + - Rob Herring <robh@kernel.org> 11 + 12 + description: | 13 + Devices on SOCs often have mechanisms for placing devices into low-power 14 + states that are decoupled from the devices' own register blocks. Sometimes, 15 + this information is more complicated than a cell-index property can 16 + reasonably describe. Thus, each device controlled in such a manner 17 + may contain a "sleep" property which describes these connections. 18 + 19 + The sleep property consists of one or more sleep resources, each of 20 + which consists of a phandle to a sleep controller, followed by a 21 + controller-specific sleep specifier of zero or more cells. 22 + 23 + The semantics of what type of low power modes are possible are defined 24 + by the sleep controller. Some examples of the types of low power modes 25 + that may be supported are: 26 + 27 + - Dynamic: The device may be disabled or enabled at any time. 28 + - System Suspend: The device may request to be disabled or remain 29 + awake during system suspend, but will not be disabled until then. 30 + - Permanent: The device is disabled permanently (until the next hard 31 + reset). 32 + 33 + Some devices may share a clock domain with each other, such that they should 34 + only be suspended when none of the devices are in use. Where reasonable, 35 + such nodes should be placed on a virtual bus, where the bus has the sleep 36 + property. If the clock domain is shared among devices that cannot be 37 + reasonably grouped in this manner, then create a virtual sleep controller 38 + (similar to an interrupt nexus, except that defining a standardized 39 + sleep-map should wait until its necessity is demonstrated). 40 + 41 + select: true 42 + 43 + properties: 44 + sleep: 45 + $ref: /schemas/types.yaml#definitions/phandle-array 46 + 47 + additionalProperties: true
+22 -3
Documentation/devicetree/bindings/pwm/imx-pwm.yaml
··· 19 19 - 3 20 20 21 21 compatible: 22 - enum: 23 - - fsl,imx1-pwm 24 - - fsl,imx27-pwm 22 + oneOf: 23 + - enum: 24 + - fsl,imx1-pwm 25 + - fsl,imx27-pwm 26 + - items: 27 + - enum: 28 + - fsl,imx25-pwm 29 + - fsl,imx31-pwm 30 + - fsl,imx50-pwm 31 + - fsl,imx51-pwm 32 + - fsl,imx53-pwm 33 + - fsl,imx6q-pwm 34 + - fsl,imx6sl-pwm 35 + - fsl,imx6sll-pwm 36 + - fsl,imx6sx-pwm 37 + - fsl,imx6ul-pwm 38 + - fsl,imx7d-pwm 39 + - fsl,imx8mm-pwm 40 + - fsl,imx8mn-pwm 41 + - fsl,imx8mp-pwm 42 + - fsl,imx8mq-pwm 43 + - const: fsl,imx27-pwm 25 44 26 45 reg: 27 46 maxItems: 1
-33
Documentation/devicetree/bindings/pwm/pwm-sifive.txt
··· 1 - SiFive PWM controller 2 - 3 - Unlike most other PWM controllers, the SiFive PWM controller currently only 4 - supports one period for all channels in the PWM. All PWMs need to run at 5 - the same period. The period also has significant restrictions on the values 6 - it can achieve, which the driver rounds to the nearest achievable period. 7 - PWM RTL that corresponds to the IP block version numbers can be found 8 - here: 9 - 10 - https://github.com/sifive/sifive-blocks/tree/master/src/main/scala/devices/pwm 11 - 12 - Required properties: 13 - - compatible: Should be "sifive,<chip>-pwm" and "sifive,pwm<version>". 14 - Supported compatible strings are: "sifive,fu540-c000-pwm" for the SiFive 15 - PWM v0 as integrated onto the SiFive FU540 chip, and "sifive,pwm0" for the 16 - SiFive PWM v0 IP block with no chip integration tweaks. 17 - Please refer to sifive-blocks-ip-versioning.txt for details. 18 - - reg: physical base address and length of the controller's registers 19 - - clocks: Should contain a clock identifier for the PWM's parent clock. 20 - - #pwm-cells: Should be 3. See pwm.yaml in this directory 21 - for a description of the cell format. 22 - - interrupts: one interrupt per PWM channel 23 - 24 - Examples: 25 - 26 - pwm: pwm@10020000 { 27 - compatible = "sifive,fu540-c000-pwm", "sifive,pwm0"; 28 - reg = <0x0 0x10020000 0x0 0x1000>; 29 - clocks = <&tlclk>; 30 - interrupt-parent = <&plic>; 31 - interrupts = <42 43 44 45>; 32 - #pwm-cells = <3>; 33 - };
+69
Documentation/devicetree/bindings/pwm/pwm-sifive.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + # Copyright (C) 2020 SiFive, Inc. 3 + %YAML 1.2 4 + --- 5 + $id: http://devicetree.org/schemas/pwm/pwm-sifive.yaml# 6 + $schema: http://devicetree.org/meta-schemas/core.yaml# 7 + 8 + title: SiFive PWM controller 9 + 10 + maintainers: 11 + - Yash Shah <yash.shah@sifive.com> 12 + - Sagar Kadam <sagar.kadam@sifive.com> 13 + - Paul Walmsley <paul.walmsley@sifive.com> 14 + 15 + description: 16 + Unlike most other PWM controllers, the SiFive PWM controller currently 17 + only supports one period for all channels in the PWM. All PWMs need to 18 + run at the same period. The period also has significant restrictions on 19 + the values it can achieve, which the driver rounds to the nearest 20 + achievable period. PWM RTL that corresponds to the IP block version 21 + numbers can be found here - 22 + 23 + https://github.com/sifive/sifive-blocks/tree/master/src/main/scala/devices/pwm 24 + 25 + properties: 26 + compatible: 27 + items: 28 + - const: sifive,fu540-c000-pwm 29 + - const: sifive,pwm0 30 + description: 31 + Should be "sifive,<chip>-pwm" and "sifive,pwm<version>". Supported 32 + compatible strings are "sifive,fu540-c000-pwm" for the SiFive PWM v0 33 + as integrated onto the SiFive FU540 chip, and "sifive,pwm0" for the 34 + SiFive PWM v0 IP block with no chip integration tweaks. 35 + Please refer to sifive-blocks-ip-versioning.txt for details. 36 + 37 + reg: 38 + maxItems: 1 39 + 40 + clocks: 41 + maxItems: 1 42 + 43 + "#pwm-cells": 44 + const: 3 45 + 46 + interrupts: 47 + maxItems: 4 48 + description: 49 + Each PWM instance in FU540-C000 has 4 comparators. One interrupt per comparator. 50 + 51 + required: 52 + - compatible 53 + - reg 54 + - clocks 55 + - "#pwm-cells" 56 + - interrupts 57 + 58 + additionalProperties: false 59 + 60 + examples: 61 + - | 62 + pwm: pwm@10020000 { 63 + compatible = "sifive,fu540-c000-pwm", "sifive,pwm0"; 64 + reg = <0x10020000 0x1000>; 65 + clocks = <&tlclk>; 66 + interrupt-parent = <&plic>; 67 + interrupts = <42>, <43>, <44>, <45>; 68 + #pwm-cells = <3>; 69 + };
+2
Documentation/devicetree/bindings/pwm/pwm.yaml
··· 20 20 required: 21 21 - "#pwm-cells" 22 22 23 + additionalProperties: true 24 + 23 25 examples: 24 26 - | 25 27 pwm: pwm@7000a000 {
+2
Documentation/devicetree/bindings/regulator/fixed-regulator.yaml
··· 73 73 - compatible 74 74 - regulator-name 75 75 76 + unevaluatedProperties: false 77 + 76 78 examples: 77 79 - | 78 80 reg_1v8: regulator-1v8 {
+2
Documentation/devicetree/bindings/regulator/google,cros-ec-regulator.yaml
··· 28 28 - compatible 29 29 - reg 30 30 31 + unevaluatedProperties: false 32 + 31 33 examples: 32 34 - | 33 35 spi0 {
+2
Documentation/devicetree/bindings/regulator/gpio-regulator.yaml
··· 91 91 - gpios 92 92 - states 93 93 94 + unevaluatedProperties: false 95 + 94 96 examples: 95 97 - | 96 98 gpio-regulator {
+1 -1
Documentation/devicetree/bindings/regulator/qcom-labibb-regulator.yaml
··· 47 47 required: 48 48 - compatible 49 49 50 - unevaluatedProperties: false 50 + additionalProperties: false 51 51 52 52 examples: 53 53 - |
+2
Documentation/devicetree/bindings/regulator/regulator.yaml
··· 188 188 189 189 additionalProperties: false 190 190 191 + additionalProperties: true 192 + 191 193 examples: 192 194 - | 193 195 xyzreg: regulator {
+2
Documentation/devicetree/bindings/regulator/silergy,sy8827n.yaml
··· 31 31 - compatible 32 32 - reg 33 33 34 + additionalProperties: false 35 + 34 36 examples: 35 37 - | 36 38 i2c {
+2
Documentation/devicetree/bindings/regulator/st,stm32-booster.yaml
··· 34 34 - st,syscfg 35 35 - vdda-supply 36 36 37 + unevaluatedProperties: false 38 + 37 39 examples: 38 40 - | 39 41 regulator-booster {
+2
Documentation/devicetree/bindings/regulator/st,stm32-vrefbuf.yaml
··· 36 36 - clocks 37 37 - vdda-supply 38 38 39 + unevaluatedProperties: false 40 + 39 41 examples: 40 42 - | 41 43 #include <dt-bindings/clock/stm32mp1-clks.h>
+2
Documentation/devicetree/bindings/regulator/vqmmc-ipq4019-regulator.yaml
··· 28 28 - compatible 29 29 - reg 30 30 31 + unevaluatedProperties: false 32 + 31 33 examples: 32 34 - | 33 35 regulator@1948000 {
+2
Documentation/devicetree/bindings/regulator/wlf,arizona.yaml
··· 35 35 Initial data for the MICVDD regulator. 36 36 $ref: "regulator.yaml#" 37 37 type: object 38 + 39 + additionalProperties: true
+2
Documentation/devicetree/bindings/remoteproc/qcom,pil-info.yaml
··· 25 25 - compatible 26 26 - reg 27 27 28 + additionalProperties: false 29 + 28 30 examples: 29 31 - | 30 32 imem@146bf000 {
+3
Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt
··· 64 64 system can use that region to store volatile or cached data that 65 65 can be otherwise regenerated or migrated elsewhere. 66 66 67 + A node must not carry both the no-map and the reusable property as these are 68 + logically contradictory. 69 + 67 70 Linux implementation note: 68 71 - If a "linux,cma-default" property is present, then Linux will use the 69 72 region for the default pool of the contiguous memory allocator.
+13 -6
Documentation/devicetree/bindings/reset/fsl,imx7-src.yaml
··· 22 22 23 23 properties: 24 24 compatible: 25 - items: 26 - - enum: 27 - - fsl,imx7d-src 28 - - fsl,imx8mq-src 29 - - fsl,imx8mp-src 30 - - const: syscon 25 + oneOf: 26 + - items: 27 + - enum: 28 + - fsl,imx7d-src 29 + - fsl,imx8mq-src 30 + - fsl,imx8mp-src 31 + - const: syscon 32 + - items: 33 + - enum: 34 + - fsl,imx8mm-src 35 + - fsl,imx8mn-src 36 + - const: fsl,imx8mq-src 37 + - const: syscon 31 38 32 39 reg: 33 40 maxItems: 1
+1 -1
Documentation/devicetree/bindings/reset/nuvoton,npcm-reset.txt
··· 9 9 - nuvoton,sw-reset-number - Contains the software reset number to restart the SoC. 10 10 NPCM7xx contain four software reset that represent numbers 1 to 4. 11 11 12 - If 'nuvoton,sw-reset-number' is not specfied software reset is disabled. 12 + If 'nuvoton,sw-reset-number' is not specified software reset is disabled. 13 13 14 14 Example: 15 15 rstc: rstc@f0801000 {
+2
Documentation/devicetree/bindings/riscv/cpus.yaml
··· 91 91 - riscv,isa 92 92 - interrupt-controller 93 93 94 + additionalProperties: true 95 + 94 96 examples: 95 97 - | 96 98 // Example 1: SiFive Freedom U540G Development Kit
-51
Documentation/devicetree/bindings/riscv/sifive-l2-cache.txt
··· 1 - SiFive L2 Cache Controller 2 - -------------------------- 3 - The SiFive Level 2 Cache Controller is used to provide access to fast copies 4 - of memory for masters in a Core Complex. The Level 2 Cache Controller also 5 - acts as directory-based coherency manager. 6 - All the properties in ePAPR/DeviceTree specification applies for this platform 7 - 8 - Required Properties: 9 - -------------------- 10 - - compatible: Should be "sifive,fu540-c000-ccache" and "cache" 11 - 12 - - cache-block-size: Specifies the block size in bytes of the cache. 13 - Should be 64 14 - 15 - - cache-level: Should be set to 2 for a level 2 cache 16 - 17 - - cache-sets: Specifies the number of associativity sets of the cache. 18 - Should be 1024 19 - 20 - - cache-size: Specifies the size in bytes of the cache. Should be 2097152 21 - 22 - - cache-unified: Specifies the cache is a unified cache 23 - 24 - - interrupts: Must contain 3 entries (DirError, DataError and DataFail signals) 25 - 26 - - reg: Physical base address and size of L2 cache controller registers map 27 - 28 - Optional Properties: 29 - -------------------- 30 - - next-level-cache: phandle to the next level cache if present. 31 - 32 - - memory-region: reference to the reserved-memory for the L2 Loosely Integrated 33 - Memory region. The reserved memory node should be defined as per the bindings 34 - in reserved-memory.txt 35 - 36 - 37 - Example: 38 - 39 - cache-controller@2010000 { 40 - compatible = "sifive,fu540-c000-ccache", "cache"; 41 - cache-block-size = <64>; 42 - cache-level = <2>; 43 - cache-sets = <1024>; 44 - cache-size = <2097152>; 45 - cache-unified; 46 - interrupt-parent = <&plic0>; 47 - interrupts = <1 2 3>; 48 - reg = <0x0 0x2010000 0x0 0x1000>; 49 - next-level-cache = <&L25 &L40 &L36>; 50 - memory-region = <&l2_lim>; 51 - };
+98
Documentation/devicetree/bindings/riscv/sifive-l2-cache.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2 + # Copyright (C) 2020 SiFive, Inc. 3 + %YAML 1.2 4 + --- 5 + $id: http://devicetree.org/schemas/riscv/sifive-l2-cache.yaml# 6 + $schema: http://devicetree.org/meta-schemas/core.yaml# 7 + 8 + title: SiFive L2 Cache Controller 9 + 10 + maintainers: 11 + - Sagar Kadam <sagar.kadam@sifive.com> 12 + - Yash Shah <yash.shah@sifive.com> 13 + - Paul Walmsley <paul.walmsley@sifive.com> 14 + 15 + description: 16 + The SiFive Level 2 Cache Controller is used to provide access to fast copies 17 + of memory for masters in a Core Complex. The Level 2 Cache Controller also 18 + acts as directory-based coherency manager. 19 + All the properties in ePAPR/DeviceTree specification applies for this platform. 20 + 21 + allOf: 22 + - $ref: /schemas/cache-controller.yaml# 23 + 24 + select: 25 + properties: 26 + compatible: 27 + items: 28 + - enum: 29 + - sifive,fu540-c000-ccache 30 + 31 + required: 32 + - compatible 33 + 34 + properties: 35 + compatible: 36 + items: 37 + - const: sifive,fu540-c000-ccache 38 + - const: cache 39 + 40 + cache-block-size: 41 + const: 64 42 + 43 + cache-level: 44 + const: 2 45 + 46 + cache-sets: 47 + const: 1024 48 + 49 + cache-size: 50 + const: 2097152 51 + 52 + cache-unified: true 53 + 54 + interrupts: 55 + description: | 56 + Must contain entries for DirError, DataError and DataFail signals. 57 + minItems: 3 58 + maxItems: 3 59 + 60 + reg: 61 + maxItems: 1 62 + 63 + next-level-cache: true 64 + 65 + memory-region: 66 + description: | 67 + The reference to the reserved-memory for the L2 Loosely Integrated Memory region. 68 + The reserved memory node should be defined as per the bindings in reserved-memory.txt. 69 + 70 + additionalProperties: false 71 + 72 + required: 73 + - compatible 74 + - cache-block-size 75 + - cache-level 76 + - cache-sets 77 + - cache-size 78 + - cache-unified 79 + - interrupts 80 + - reg 81 + 82 + examples: 83 + - | 84 + cache-controller@2010000 { 85 + compatible = "sifive,fu540-c000-ccache", "cache"; 86 + cache-block-size = <64>; 87 + cache-level = <2>; 88 + cache-sets = <1024>; 89 + cache-size = <2097152>; 90 + cache-unified; 91 + reg = <0x2010000 0x1000>; 92 + interrupt-parent = <&plic0>; 93 + interrupts = <1>, 94 + <2>, 95 + <3>; 96 + next-level-cache = <&L25>; 97 + memory-region = <&l2_lim>; 98 + };
-23
Documentation/devicetree/bindings/rng/imx-rng.txt
··· 1 - Freescale RNGA/RNGB/RNGC (Random Number Generator Versions A, B and C) 2 - 3 - Required properties: 4 - - compatible : should be one of 5 - "fsl,imx21-rnga" 6 - "fsl,imx31-rnga" (backward compatible with "fsl,imx21-rnga") 7 - "fsl,imx25-rngb" 8 - "fsl,imx6sl-rngb" (backward compatible with "fsl,imx25-rngb") 9 - "fsl,imx6sll-rngb" (backward compatible with "fsl,imx25-rngb") 10 - "fsl,imx6ull-rngb" (backward compatible with "fsl,imx25-rngb") 11 - "fsl,imx35-rngc" 12 - - reg : offset and length of the register set of this block 13 - - interrupts : the interrupt number for the RNG block 14 - - clocks : the RNG clk source 15 - 16 - Example: 17 - 18 - rng@53fb0000 { 19 - compatible = "fsl,imx25-rngb"; 20 - reg = <0x53fb0000 0x4000>; 21 - interrupts = <22>; 22 - clocks = <&trng_clk>; 23 - };
+52
Documentation/devicetree/bindings/rng/imx-rng.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/rng/imx-rng.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Freescale RNGA/RNGB/RNGC (Random Number Generator Versions A, B and C) 8 + 9 + maintainers: 10 + - Vladimir Zapolskiy <vz@mleia.com> 11 + 12 + properties: 13 + compatible: 14 + oneOf: 15 + - const: fsl,imx21-rnga 16 + - const: fsl,imx25-rngb 17 + - items: 18 + - const: fsl,imx31-rnga 19 + - const: fsl,imx21-rnga 20 + - items: 21 + - enum: 22 + - fsl,imx6sl-rngb 23 + - fsl,imx6sll-rngb 24 + - fsl,imx6ull-rngb 25 + - const: fsl,imx25-rngb 26 + - const: fsl,imx35-rngc 27 + 28 + reg: 29 + maxItems: 1 30 + 31 + interrupts: 32 + maxItems: 1 33 + 34 + clocks: 35 + maxItems: 1 36 + 37 + required: 38 + - compatible 39 + - reg 40 + - interrupts 41 + - clocks 42 + 43 + additionalProperties: false 44 + 45 + examples: 46 + - | 47 + rngb@53fb0000 { 48 + compatible = "fsl,imx25-rngb"; 49 + reg = <0x53fb0000 0x4000>; 50 + clocks = <&clks 109>; 51 + interrupts = <22>; 52 + };
+2
Documentation/devicetree/bindings/rtc/ingenic,rtc.yaml
··· 68 68 - clocks 69 69 - clock-names 70 70 71 + unevaluatedProperties: false 72 + 71 73 examples: 72 74 - | 73 75 #include <dt-bindings/clock/jz4740-cgu.h>
+2
Documentation/devicetree/bindings/rtc/rtc.yaml
··· 47 47 description: 48 48 Enables wake up of host system on alarm. 49 49 50 + additionalProperties: true 51 + 50 52 ...
+2
Documentation/devicetree/bindings/rtc/s3c-rtc.yaml
··· 74 74 items: 75 75 - const: rtc 76 76 77 + unevaluatedProperties: false 78 + 77 79 examples: 78 80 - | 79 81 #include <dt-bindings/clock/exynos5420.h>
-40
Documentation/devicetree/bindings/serial/fsl-imx-uart.txt
··· 1 - * Freescale i.MX Universal Asynchronous Receiver/Transmitter (UART) 2 - 3 - Required properties: 4 - - compatible : Should be "fsl,<soc>-uart" 5 - - reg : Address and length of the register set for the device 6 - - interrupts : Should contain uart interrupt 7 - 8 - Optional properties: 9 - - fsl,dte-mode : Indicate the uart works in DTE mode. The uart works 10 - in DCE mode by default. 11 - - fsl,inverted-tx , fsl,inverted-rx : Indicate that the hardware attached 12 - to the peripheral inverts the signal transmitted or received, 13 - respectively, and that the peripheral should invert its output/input 14 - using the INVT/INVR registers. 15 - - rs485-rts-delay, rs485-rts-active-low, rs485-rx-during-tx, 16 - linux,rs485-enabled-at-boot-time: see rs485.txt. Note that for RS485 17 - you must enable either the "uart-has-rtscts" or the "rts-gpios" 18 - properties. In case you use "uart-has-rtscts" the signal that controls 19 - the transceiver is actually CTS_B, not RTS_B. CTS_B is always output, 20 - and RTS_B is input, regardless of dte-mode. 21 - 22 - Please check Documentation/devicetree/bindings/serial/serial.yaml 23 - for the complete list of generic properties. 24 - 25 - Note: Each uart controller should have an alias correctly numbered 26 - in "aliases" node. 27 - 28 - Example: 29 - 30 - aliases { 31 - serial0 = &uart1; 32 - }; 33 - 34 - uart1: serial@73fbc000 { 35 - compatible = "fsl,imx51-uart", "fsl,imx21-uart"; 36 - reg = <0x73fbc000 0x4000>; 37 - interrupts = <31>; 38 - uart-has-rtscts; 39 - fsl,dte-mode; 40 - };
+100
Documentation/devicetree/bindings/serial/fsl-imx-uart.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/serial/fsl-imx-uart.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Freescale i.MX Universal Asynchronous Receiver/Transmitter (UART) 8 + 9 + maintainers: 10 + - Fabio Estevam <fabio.estevam@nxp.com> 11 + 12 + allOf: 13 + - $ref: "serial.yaml" 14 + - $ref: "rs485.yaml" 15 + 16 + properties: 17 + compatible: 18 + oneOf: 19 + - const: fsl,imx1-uart 20 + - const: fsl,imx21-uart 21 + - items: 22 + - enum: 23 + - fsl,imx25-uart 24 + - fsl,imx27-uart 25 + - fsl,imx31-uart 26 + - fsl,imx35-uart 27 + - fsl,imx50-uart 28 + - fsl,imx51-uart 29 + - fsl,imx53-uart 30 + - fsl,imx6q-uart 31 + - const: fsl,imx21-uart 32 + - items: 33 + - enum: 34 + - fsl,imx6sl-uart 35 + - fsl,imx6sll-uart 36 + - fsl,imx6sx-uart 37 + - const: fsl,imx6q-uart 38 + - const: fsl,imx21-uart 39 + - items: 40 + - enum: 41 + - fsl,imx6ul-uart 42 + - fsl,imx7d-uart 43 + - fsl,imx8mm-uart 44 + - fsl,imx8mn-uart 45 + - fsl,imx8mp-uart 46 + - fsl,imx8mq-uart 47 + - const: fsl,imx6q-uart 48 + 49 + reg: 50 + maxItems: 1 51 + 52 + interrupts: 53 + maxItems: 1 54 + 55 + fsl,dte-mode: 56 + $ref: /schemas/types.yaml#/definitions/flag 57 + description: | 58 + Indicate the uart works in DTE mode. The uart works in DCE mode by default. 59 + 60 + fsl,inverted-tx: 61 + $ref: /schemas/types.yaml#/definitions/flag 62 + description: | 63 + Indicate that the hardware attached to the peripheral inverts the signal 64 + transmitted, and that the peripheral should invert its output using the 65 + INVT registers. 66 + 67 + fsl,inverted-rx: 68 + $ref: /schemas/types.yaml#/definitions/flag 69 + description: | 70 + Indicate that the hardware attached to the peripheral inverts the signal 71 + received, and that the peripheral should invert its input using the 72 + INVR registers. 73 + 74 + uart-has-rtscts: true 75 + 76 + rs485-rts-delay: true 77 + rs485-rts-active-low: true 78 + rs485-rx-during-tx: true 79 + linux,rs485-enabled-at-boot-time: true 80 + 81 + required: 82 + - compatible 83 + - reg 84 + - interrupts 85 + 86 + unevaluatedProperties: false 87 + 88 + examples: 89 + - | 90 + aliases { 91 + serial0 = &uart1; 92 + }; 93 + 94 + uart1: serial@73fbc000 { 95 + compatible = "fsl,imx51-uart", "fsl,imx21-uart"; 96 + reg = <0x73fbc000 0x4000>; 97 + interrupts = <31>; 98 + uart-has-rtscts; 99 + fsl,dte-mode; 100 + };
-43
Documentation/devicetree/bindings/serial/fsl-lpuart.txt
··· 1 - * Freescale low power universal asynchronous receiver/transmitter (lpuart) 2 - 3 - Required properties: 4 - - compatible : 5 - - "fsl,vf610-lpuart" for lpuart compatible with the one integrated 6 - on Vybrid vf610 SoC with 8-bit register organization 7 - - "fsl,ls1021a-lpuart" for lpuart compatible with the one integrated 8 - on LS1021A SoC with 32-bit big-endian register organization 9 - - "fsl,ls1028a-lpuart" for lpuart compatible with the one integrated 10 - on LS1028A SoC with 32-bit little-endian register organization 11 - - "fsl,imx7ulp-lpuart" for lpuart compatible with the one integrated 12 - on i.MX7ULP SoC with 32-bit little-endian register organization 13 - - "fsl,imx8qxp-lpuart" for lpuart compatible with the one integrated 14 - on i.MX8QXP SoC with 32-bit little-endian register organization 15 - - "fsl,imx8qm-lpuart" for lpuart compatible with the one integrated 16 - on i.MX8QM SoC with 32-bit little-endian register organization 17 - - reg : Address and length of the register set for the device 18 - - interrupts : Should contain uart interrupt 19 - - clocks : phandle + clock specifier pairs, one for each entry in clock-names 20 - - clock-names : For vf610/ls1021a/ls1028a/imx7ulp, "ipg" clock is for uart 21 - bus/baud clock. For imx8qxp lpuart, "ipg" clock is bus clock that is used 22 - to access lpuart controller registers, it also requires "baud" clock for 23 - module to receive/transmit data. 24 - 25 - Optional properties: 26 - - dmas: A list of two dma specifiers, one for each entry in dma-names. 27 - - dma-names: should contain "tx" and "rx". 28 - - rs485-rts-active-low, linux,rs485-enabled-at-boot-time: see rs485.txt 29 - 30 - Note: Optional properties for DMA support. Write them both or both not. 31 - 32 - Example: 33 - 34 - uart0: serial@40027000 { 35 - compatible = "fsl,vf610-lpuart"; 36 - reg = <0x40027000 0x1000>; 37 - interrupts = <0 61 0x00>; 38 - clocks = <&clks VF610_CLK_UART0>; 39 - clock-names = "ipg"; 40 - dmas = <&edma0 0 2>, 41 - <&edma0 0 3>; 42 - dma-names = "rx","tx"; 43 - };
+82
Documentation/devicetree/bindings/serial/fsl-lpuart.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/serial/fsl-lpuart.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Freescale low power universal asynchronous receiver/transmitter (lpuart) 8 + 9 + maintainers: 10 + - Fugang Duan <fugang.duan@nxp.com> 11 + 12 + allOf: 13 + - $ref: "rs485.yaml" 14 + 15 + properties: 16 + compatible: 17 + oneOf: 18 + - enum: 19 + - fsl,vf610-lpuart 20 + - fsl,ls1021a-lpuart 21 + - fsl,ls1028a-lpuart 22 + - fsl,imx7ulp-lpuart 23 + - fsl,imx8qm-lpuart 24 + - items: 25 + - const: fsl,imx8qxp-lpuart 26 + - const: fsl,imx7ulp-lpuart 27 + 28 + reg: 29 + maxItems: 1 30 + 31 + interrupts: 32 + maxItems: 1 33 + 34 + clocks: 35 + items: 36 + - description: ipg clock 37 + - description: baud clock 38 + minItems: 1 39 + maxItems: 2 40 + 41 + clock-names: 42 + items: 43 + - const: ipg 44 + - const: baud 45 + minItems: 1 46 + maxItems: 2 47 + 48 + dmas: 49 + items: 50 + - description: DMA controller phandle and request line for RX 51 + - description: DMA controller phandle and request line for TX 52 + 53 + dma-names: 54 + items: 55 + - const: rx 56 + - const: tx 57 + 58 + rs485-rts-active-low: true 59 + linux,rs485-enabled-at-boot-time: true 60 + 61 + required: 62 + - compatible 63 + - reg 64 + - interrupts 65 + - clocks 66 + - clock-names 67 + 68 + unevaluatedProperties: false 69 + 70 + examples: 71 + - | 72 + #include <dt-bindings/clock/vf610-clock.h> 73 + 74 + serial@40027000 { 75 + compatible = "fsl,vf610-lpuart"; 76 + reg = <0x40027000 0x1000>; 77 + interrupts = <0 61 0x00>; 78 + clocks = <&clks VF610_CLK_UART0>; 79 + clock-names = "ipg"; 80 + dmas = <&edma0 0 2>, <&edma0 0 3>; 81 + dma-names = "rx","tx"; 82 + };
-53
Documentation/devicetree/bindings/serial/fsl-mxs-auart.txt
··· 1 - * Freescale MXS Application UART (AUART) 2 - 3 - Required properties for all SoCs: 4 - - compatible : Should be one of fallowing variants: 5 - "fsl,imx23-auart" - Freescale i.MX23 6 - "fsl,imx28-auart" - Freescale i.MX28 7 - "alphascale,asm9260-auart" - Alphascale ASM9260 8 - - reg : Address and length of the register set for the device 9 - - interrupts : Should contain the auart interrupt numbers 10 - - dmas: DMA specifier, consisting of a phandle to DMA controller node 11 - and AUART DMA channel ID. 12 - Refer to dma.txt and fsl-mxs-dma.txt for details. 13 - - dma-names: "rx" for RX channel, "tx" for TX channel. 14 - 15 - Required properties for "alphascale,asm9260-auart": 16 - - clocks : the clocks feeding the watchdog timer. See clock-bindings.txt 17 - - clock-names : should be set to 18 - "mod" - source for tick counter. 19 - "ahb" - ahb gate. 20 - 21 - Optional properties: 22 - - uart-has-rtscts : Indicate the UART has RTS and CTS lines 23 - for hardware flow control, 24 - it also means you enable the DMA support for this UART. 25 - - {rts,cts,dtr,dsr,rng,dcd}-gpios: specify a GPIO for RTS/CTS/DTR/DSR/RI/DCD 26 - line respectively. It will use specified PIO instead of the peripheral 27 - function pin for the USART feature. 28 - If unsure, don't specify this property. 29 - 30 - Example: 31 - auart0: serial@8006a000 { 32 - compatible = "fsl,imx28-auart", "fsl,imx23-auart"; 33 - reg = <0x8006a000 0x2000>; 34 - interrupts = <112>; 35 - dmas = <&dma_apbx 8>, <&dma_apbx 9>; 36 - dma-names = "rx", "tx"; 37 - cts-gpios = <&gpio1 15 GPIO_ACTIVE_LOW>; 38 - dsr-gpios = <&gpio1 16 GPIO_ACTIVE_LOW>; 39 - dcd-gpios = <&gpio1 17 GPIO_ACTIVE_LOW>; 40 - }; 41 - 42 - Note: Each auart port should have an alias correctly numbered in "aliases" 43 - node. 44 - 45 - Example: 46 - 47 - aliases { 48 - serial0 = &auart0; 49 - serial1 = &auart1; 50 - serial2 = &auart2; 51 - serial3 = &auart3; 52 - serial4 = &auart4; 53 - };
+91
Documentation/devicetree/bindings/serial/fsl-mxs-auart.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/serial/fsl-mxs-auart.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Freescale MXS Application UART (AUART) 8 + 9 + maintainers: 10 + - Fabio Estevam <fabio.estevam@nxp.com> 11 + 12 + allOf: 13 + - $ref: "serial.yaml" 14 + 15 + properties: 16 + compatible: 17 + enum: 18 + - fsl,imx23-auart 19 + - fsl,imx28-auart 20 + - alphascale,asm9260-auart 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + interrupts: 26 + maxItems: 1 27 + 28 + dmas: 29 + items: 30 + - description: DMA controller phandle and request line for RX 31 + - description: DMA controller phandle and request line for TX 32 + 33 + dma-names: 34 + items: 35 + - const: rx 36 + - const: tx 37 + 38 + clocks: 39 + items: 40 + - description: mod clock 41 + - description: ahb clock 42 + minItems: 1 43 + 44 + clock-names: 45 + items: 46 + - const: mod 47 + - const: ahb 48 + minItems: 1 49 + 50 + uart-has-rtscts: true 51 + rts-gpios: true 52 + cts-gpios: true 53 + dtr-gpios: true 54 + dsr-gpios: true 55 + rng-gpios: true 56 + dcd-gpios: true 57 + 58 + if: 59 + properties: 60 + compatible: 61 + contains: 62 + enum: 63 + - alphascale,asm9260-auart 64 + then: 65 + required: 66 + - clocks 67 + - clock-names 68 + 69 + required: 70 + - compatible 71 + - reg 72 + - interrupts 73 + - dmas 74 + - dma-names 75 + 76 + unevaluatedProperties: false 77 + 78 + examples: 79 + - | 80 + aliases { 81 + serial0 = &auart0; 82 + }; 83 + 84 + auart0: serial@8006a000 { 85 + compatible = "fsl,imx28-auart"; 86 + reg = <0x8006a000 0x2000>; 87 + interrupts = <112>; 88 + dmas = <&dma_apbx 8>, <&dma_apbx 9>; 89 + dma-names = "rx", "tx"; 90 + clocks = <&clks 45>; 91 + };
+5
Documentation/devicetree/bindings/serial/ingenic,uart.yaml
··· 9 9 maintainers: 10 10 - Paul Cercueil <paul@crapouillou.net> 11 11 12 + allOf: 13 + - $ref: /schemas/serial.yaml# 14 + 12 15 properties: 13 16 $nodename: 14 17 pattern: "^serial@[0-9a-f]+$" ··· 66 63 - clock-names 67 64 - dmas 68 65 - dma-names 66 + 67 + unevaluatedProperties: false 69 68 70 69 examples: 71 70 - |
+2
Documentation/devicetree/bindings/serial/renesas,hscif.yaml
··· 100 100 - clock-names 101 101 - power-domains 102 102 103 + unevaluatedProperties: false 104 + 103 105 if: 104 106 properties: 105 107 compatible:
+2
Documentation/devicetree/bindings/serial/renesas,sci.yaml
··· 54 54 - clocks 55 55 - clock-names 56 56 57 + unevaluatedProperties: false 58 + 57 59 examples: 58 60 - | 59 61 aliases {
+2
Documentation/devicetree/bindings/serial/renesas,scif.yaml
··· 149 149 required: 150 150 - resets 151 151 152 + unevaluatedProperties: false 153 + 152 154 examples: 153 155 - | 154 156 #include <dt-bindings/clock/r8a7791-cpg-mssr.h>
+2
Documentation/devicetree/bindings/serial/renesas,scifa.yaml
··· 75 75 - clock-names 76 76 - power-domains 77 77 78 + unevaluatedProperties: false 79 + 78 80 if: 79 81 properties: 80 82 compatible:
+2
Documentation/devicetree/bindings/serial/renesas,scifb.yaml
··· 75 75 - clock-names 76 76 - power-domains 77 77 78 + unevaluatedProperties: false 79 + 78 80 if: 79 81 properties: 80 82 compatible:
+3
Documentation/devicetree/bindings/serial/rs485.yaml
··· 45 45 rs485-term-gpios: 46 46 description: GPIO pin to enable RS485 bus termination. 47 47 maxItems: 1 48 + 49 + additionalProperties: true 50 + 48 51 ...
+2
Documentation/devicetree/bindings/serial/samsung_uart.yaml
··· 68 68 - interrupts 69 69 - reg 70 70 71 + additionalProperties: false 72 + 71 73 allOf: 72 74 - if: 73 75 properties:
+2
Documentation/devicetree/bindings/serial/serial.yaml
··· 124 124 required: 125 125 - compatible 126 126 127 + additionalProperties: true 128 + 127 129 examples: 128 130 - | 129 131 serial@1234 {
+2
Documentation/devicetree/bindings/serial/snps-dw-apb-uart.yaml
··· 101 101 - reg 102 102 - interrupts 103 103 104 + unevaluatedProperties: false 105 + 104 106 examples: 105 107 - | 106 108 serial@80230000 {
+2
Documentation/devicetree/bindings/serial/socionext,uniphier-uart.yaml
··· 32 32 - interrupts 33 33 - clocks 34 34 35 + additionalProperties: false 36 + 35 37 examples: 36 38 - | 37 39 aliases {
+2
Documentation/devicetree/bindings/serial/sprd-uart.yaml
··· 56 56 - reg 57 57 - interrupts 58 58 59 + additionalProperties: false 60 + 59 61 examples: 60 62 - | 61 63 #include <dt-bindings/interrupt-controller/arm-gic.h>
+2
Documentation/devicetree/bindings/soc/imx/fsl,aips-bus.yaml
··· 35 35 - compatible 36 36 - reg 37 37 38 + additionalProperties: true 39 + 38 40 examples: 39 41 - | 40 42 bus@30000000 {
+1
Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml
··· 173 173 - compatible 174 174 - interrupts 175 175 176 + additionalProperties: false 176 177 177 178 examples: 178 179 - |
+2
Documentation/devicetree/bindings/sound/amlogic,aiu.yaml
··· 75 75 - reg 76 76 - resets 77 77 78 + additionalProperties: false 79 + 78 80 examples: 79 81 - | 80 82 #include <dt-bindings/clock/gxbb-clkc.h>
+2
Documentation/devicetree/bindings/sound/amlogic,g12a-toacodec.yaml
··· 37 37 - reg 38 38 - resets 39 39 40 + additionalProperties: false 41 + 40 42 examples: 41 43 - | 42 44 #include <dt-bindings/reset/amlogic,meson-g12a-audio-reset.h>
+2
Documentation/devicetree/bindings/sound/amlogic,gx-sound-card.yaml
··· 84 84 - model 85 85 - dai-link-0 86 86 87 + additionalProperties: false 88 + 87 89 examples: 88 90 - | 89 91 sound {
+2
Documentation/devicetree/bindings/sound/amlogic,t9015.yaml
··· 42 42 - clock-names 43 43 - resets 44 44 45 + additionalProperties: false 46 + 45 47 examples: 46 48 - | 47 49 #include <dt-bindings/clock/g12a-clkc.h>
+2
Documentation/devicetree/bindings/sound/cirrus,cs42l51.yaml
··· 46 46 - reg 47 47 - "#sound-dai-cells" 48 48 49 + additionalProperties: false 50 + 49 51 examples: 50 52 - | 51 53 #include <dt-bindings/gpio/gpio.h>
+2
Documentation/devicetree/bindings/sound/cirrus,madera.yaml
··· 111 111 $ref: /schemas/types.yaml#/definitions/uint32-array 112 112 minItems: 2 113 113 maxItems: 2 114 + 115 + additionalProperties: true
+2
Documentation/devicetree/bindings/sound/fsl,easrc.yaml
··· 74 74 - fsl,asrc-rate 75 75 - fsl,asrc-format 76 76 77 + additionalProperties: false 78 + 77 79 examples: 78 80 - | 79 81 #include <dt-bindings/clock/imx8mn-clock.h>
-16
Documentation/devicetree/bindings/sound/hdmi.txt
··· 1 - Device-Tree bindings for dummy HDMI codec 2 - 3 - Required properties: 4 - - compatible: should be "linux,hdmi-audio". 5 - 6 - CODEC output pins: 7 - * TX 8 - 9 - CODEC input pins: 10 - * RX 11 - 12 - Example node: 13 - 14 - hdmi_audio: hdmi_audio@0 { 15 - compatible = "linux,hdmi-audio"; 16 - };
+2
Documentation/devicetree/bindings/sound/intel,keembay-i2s.yaml
··· 52 52 - clock-names 53 53 - interrupts 54 54 55 + additionalProperties: false 56 + 55 57 examples: 56 58 - | 57 59 #include <dt-bindings/interrupt-controller/arm-gic.h>
+2
Documentation/devicetree/bindings/sound/nvidia,tegra186-dspk.yaml
··· 64 64 - assigned-clock-parents 65 65 - sound-name-prefix 66 66 67 + additionalProperties: false 68 + 67 69 examples: 68 70 - | 69 71 #include<dt-bindings/clock/tegra186-clock.h>
+2
Documentation/devicetree/bindings/sound/nvidia,tegra210-admaif.yaml
··· 81 81 - dmas 82 82 - dma-names 83 83 84 + additionalProperties: false 85 + 84 86 examples: 85 87 - | 86 88 admaif@702d0000 {
+3
Documentation/devicetree/bindings/sound/nvidia,tegra210-ahub.yaml
··· 67 67 - "#size-cells" 68 68 - ranges 69 69 70 + additionalProperties: 71 + type: object 72 + 70 73 examples: 71 74 - | 72 75 #include<dt-bindings/clock/tegra210-car.h>
+2
Documentation/devicetree/bindings/sound/nvidia,tegra210-dmic.yaml
··· 64 64 - assigned-clocks 65 65 - assigned-clock-parents 66 66 67 + additionalProperties: false 68 + 67 69 examples: 68 70 - | 69 71 #include<dt-bindings/clock/tegra210-car.h>
+2
Documentation/devicetree/bindings/sound/nvidia,tegra210-i2s.yaml
··· 82 82 - assigned-clocks 83 83 - assigned-clock-parents 84 84 85 + additionalProperties: false 86 + 85 87 examples: 86 88 - | 87 89 #include<dt-bindings/clock/tegra210-car.h>
+2
Documentation/devicetree/bindings/sound/rockchip,rk3328-codec.yaml
··· 53 53 - rockchip,grf 54 54 - "#sound-dai-cells" 55 55 56 + additionalProperties: false 57 + 56 58 examples: 57 59 - | 58 60 #include <dt-bindings/gpio/gpio.h>
+2
Documentation/devicetree/bindings/sound/tlv320adcx140.yaml
··· 138 138 - compatible 139 139 - reg 140 140 141 + additionalProperties: false 142 + 141 143 examples: 142 144 - | 143 145 #include <dt-bindings/gpio/gpio.h>
+2
Documentation/devicetree/bindings/sound/wlf,arizona.yaml
··· 112 112 $ref: /schemas/types.yaml#/definitions/uint32-array 113 113 minItems: 1 114 114 maxItems: 12 115 + 116 + additionalProperties: true
+2
Documentation/devicetree/bindings/soundwire/soundwire-controller.yaml
··· 57 57 - "#address-cells" 58 58 - "#size-cells" 59 59 60 + additionalProperties: true 61 + 60 62 examples: 61 63 - | 62 64 soundwire@c2d0000 {
+2
Documentation/devicetree/bindings/spi/amlogic,meson-gx-spicc.yaml
··· 77 77 - clocks 78 78 - clock-names 79 79 80 + unevaluatedProperties: false 81 + 80 82 examples: 81 83 - | 82 84 spi@c1108d80 {
+2
Documentation/devicetree/bindings/spi/amlogic,meson6-spifc.yaml
··· 35 35 - reg 36 36 - clocks 37 37 38 + unevaluatedProperties: false 39 + 38 40 examples: 39 41 - | 40 42 spi@c1108c80 {
+2
Documentation/devicetree/bindings/spi/mikrotik,rb4xx-spi.yaml
··· 24 24 - compatible 25 25 - reg 26 26 27 + unevaluatedProperties: false 28 + 27 29 examples: 28 30 - | 29 31 spi: spi@1f000000 {
+2
Documentation/devicetree/bindings/spi/qca,ar934x-spi.yaml
··· 29 29 - '#address-cells' 30 30 - '#size-cells' 31 31 32 + unevaluatedProperties: false 33 + 32 34 examples: 33 35 - | 34 36 #include <dt-bindings/clock/ath79-clk.h>
+2
Documentation/devicetree/bindings/spi/qcom,spi-qcom-qspi.yaml
··· 56 56 - clock-names 57 57 - clocks 58 58 59 + unevaluatedProperties: false 60 + 59 61 examples: 60 62 - | 61 63 #include <dt-bindings/clock/qcom,gcc-sdm845.h>
+2
Documentation/devicetree/bindings/spi/renesas,hspi.yaml
··· 40 40 - '#address-cells' 41 41 - '#size-cells' 42 42 43 + unevaluatedProperties: false 44 + 43 45 examples: 44 46 - | 45 47 #include <dt-bindings/clock/r8a7778-clock.h>
+2
Documentation/devicetree/bindings/spi/renesas,rspi.yaml
··· 124 124 required: 125 125 - resets 126 126 127 + unevaluatedProperties: false 128 + 127 129 examples: 128 130 - | 129 131 #include <dt-bindings/clock/r8a7791-cpg-mssr.h>
+2
Documentation/devicetree/bindings/spi/renesas,sh-msiof.yaml
··· 141 141 - '#address-cells' 142 142 - '#size-cells' 143 143 144 + unevaluatedProperties: false 145 + 144 146 examples: 145 147 - | 146 148 #include <dt-bindings/clock/r8a7791-clock.h>
+2
Documentation/devicetree/bindings/spi/socionext,uniphier-spi.yaml
··· 44 44 - "#address-cells" 45 45 - "#size-cells" 46 46 47 + unevaluatedProperties: false 48 + 47 49 examples: 48 50 - | 49 51 spi0: spi@54006000 {
+16 -6
Documentation/devicetree/bindings/spi/spi-controller.yaml
··· 20 20 pattern: "^spi(@.*|-[0-9a-f])*$" 21 21 22 22 "#address-cells": 23 - const: 1 23 + enum: [0, 1] 24 24 25 25 "#size-cells": 26 26 const: 0 ··· 52 52 description: 53 53 The SPI controller acts as a slave, instead of a master. 54 54 55 - oneOf: 56 - - required: 57 - - "#address-cells" 58 - - required: 59 - - spi-slave 55 + allOf: 56 + - if: 57 + not: 58 + required: 59 + - spi-slave 60 + then: 61 + properties: 62 + "#address-cells": 63 + const: 1 64 + else: 65 + properties: 66 + "#address-cells": 67 + const: 0 60 68 61 69 patternProperties: 62 70 "^slave$": ··· 147 139 required: 148 140 - compatible 149 141 - reg 142 + 143 + additionalProperties: true 150 144 151 145 examples: 152 146 - |
+2
Documentation/devicetree/bindings/spi/spi-gpio.yaml
··· 53 53 - num-chipselects 54 54 - sck-gpios 55 55 56 + unevaluatedProperties: false 57 + 56 58 examples: 57 59 - | 58 60 spi {
+2
Documentation/devicetree/bindings/spi/spi-mux.yaml
··· 48 48 - spi-max-frequency 49 49 - mux-controls 50 50 51 + unevaluatedProperties: false 52 + 51 53 examples: 52 54 - | 53 55 #include <dt-bindings/gpio/gpio.h>
+2
Documentation/devicetree/bindings/spi/spi-pl022.yaml
··· 128 128 - reg 129 129 - interrupts 130 130 131 + unevaluatedProperties: false 132 + 131 133 examples: 132 134 - | 133 135 spi@e0100000 {
+2
Documentation/devicetree/bindings/spi/spi-rockchip.yaml
··· 85 85 - clocks 86 86 - clock-names 87 87 88 + unevaluatedProperties: false 89 + 88 90 examples: 89 91 - | 90 92 #include <dt-bindings/clock/rk3188-cru-common.h>
+2
Documentation/devicetree/bindings/spi/spi-sifive.yaml
··· 66 66 - interrupts 67 67 - clocks 68 68 69 + unevaluatedProperties: false 70 + 69 71 examples: 70 72 - | 71 73 spi: spi@10040000 {
+2
Documentation/devicetree/bindings/spi/st,stm32-qspi.yaml
··· 53 53 - clocks 54 54 - interrupts 55 55 56 + unevaluatedProperties: false 57 + 56 58 examples: 57 59 - | 58 60 #include <dt-bindings/interrupt-controller/arm-gic.h>
+2
Documentation/devicetree/bindings/spi/st,stm32-spi.yaml
··· 76 76 - clocks 77 77 - interrupts 78 78 79 + unevaluatedProperties: false 80 + 79 81 examples: 80 82 - | 81 83 #include <dt-bindings/interrupt-controller/arm-gic.h>
+2 -2
Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.txt
··· 7 7 The PMIC Arbiter can also act as an interrupt controller, providing interrupts 8 8 to slave devices. 9 9 10 - See spmi.txt for the generic SPMI controller binding requirements for child 11 - nodes. 10 + See Documentation/devicetree/bindings/spmi/spmi.yaml for the generic SPMI 11 + controller binding requirements for child nodes. 12 12 13 13 See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt for 14 14 generic interrupt controller binding documentation.
-41
Documentation/devicetree/bindings/spmi/spmi.txt
··· 1 - System Power Management Interface (SPMI) Controller 2 - 3 - This document defines a generic set of bindings for use by SPMI controllers. A 4 - controller is modelled in device tree as a node with zero or more child nodes, 5 - each representing a unique slave on the bus. 6 - 7 - Required properties: 8 - - #address-cells : must be set to 2 9 - - #size-cells : must be set to 0 10 - 11 - Child nodes: 12 - 13 - An SPMI controller node can contain zero or more child nodes representing slave 14 - devices on the bus. Child 'reg' properties are specified as an address, type 15 - pair. The address must be in the range 0-15 (4 bits). The type must be one of 16 - SPMI_USID (0) or SPMI_GSID (1) for Unique Slave ID or Group Slave ID respectively. 17 - These are the identifiers "statically assigned by the system integrator", as 18 - per the SPMI spec. 19 - 20 - Each child node must have one and only one 'reg' entry of type SPMI_USID. 21 - 22 - #include <dt-bindings/spmi/spmi.h> 23 - 24 - spmi@.. { 25 - compatible = "..."; 26 - reg = <...>; 27 - 28 - #address-cells = <2>; 29 - #size-cells = <0>; 30 - 31 - child@0 { 32 - compatible = "..."; 33 - reg = <0 SPMI_USID>; 34 - }; 35 - 36 - child@7 { 37 - compatible = "..."; 38 - reg = <7 SPMI_USID 39 - 3 SPMI_GSID>; 40 - }; 41 - };
+77
Documentation/devicetree/bindings/spmi/spmi.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/spmi/spmi.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: System Power Management Interface (SPMI) Controller 8 + 9 + maintainers: 10 + - Stephen Boyd <sboyd@kernel.org> 11 + 12 + description: | 13 + The System Power Management (SPMI) controller is a 2-wire bus defined 14 + by the MIPI Alliance for power management control to be used on SoC designs. 15 + 16 + SPMI controllers are modelled in device tree using a generic set of 17 + bindings defined here, plus any bus controller specific properties, if 18 + needed. 19 + 20 + Each SPMI controller has zero or more child nodes (up to 16 ones), each 21 + one representing an unique slave at the bus. 22 + 23 + properties: 24 + $nodename: 25 + pattern: "^spmi@.*" 26 + 27 + reg: 28 + maxItems: 1 29 + 30 + "#address-cells": 31 + const: 2 32 + 33 + "#size-cells": 34 + const: 0 35 + 36 + patternProperties: 37 + "@[0-9a-f]$": 38 + description: up to 16 child PMIC nodes 39 + type: object 40 + 41 + properties: 42 + reg: 43 + minItems: 1 44 + maxItems: 2 45 + items: 46 + - minimum: 0 47 + maximum: 0xf 48 + - enum: [ 0 ] 49 + description: | 50 + 0 means user ID address. 1 is reserved for group ID address. 51 + 52 + required: 53 + - reg 54 + 55 + required: 56 + - reg 57 + 58 + additionalProperties: true 59 + 60 + examples: 61 + - | 62 + #include <dt-bindings/spmi/spmi.h> 63 + 64 + spmi@0 { 65 + reg = <0 0>; 66 + 67 + #address-cells = <2>; 68 + #size-cells = <0>; 69 + 70 + child@0 { 71 + reg = <0 SPMI_USID>; 72 + }; 73 + 74 + child@7 { 75 + reg = <7 SPMI_USID>; 76 + }; 77 + };
+7 -3
Documentation/devicetree/bindings/thermal/imx8mm-thermal.yaml
··· 18 18 19 19 properties: 20 20 compatible: 21 - enum: 22 - - fsl,imx8mm-tmu 23 - - fsl,imx8mp-tmu 21 + oneOf: 22 + - enum: 23 + - fsl,imx8mm-tmu 24 + - fsl,imx8mp-tmu 25 + - items: 26 + - const: fsl,imx8mn-tmu 27 + - const: fsl,imx8mm-tmu 24 28 25 29 reg: 26 30 maxItems: 1
+5
Documentation/devicetree/bindings/thermal/rcar-thermal.yaml
··· 59 59 resets: 60 60 maxItems: 1 61 61 62 + "#thermal-sensor-cells": 63 + const: 0 64 + 62 65 if: 63 66 properties: 64 67 compatible: ··· 81 78 - clocks 82 79 - power-domains 83 80 - resets 81 + 82 + additionalProperties: false 84 83 85 84 examples: 86 85 # Example (non interrupt support)
+4
Documentation/devicetree/bindings/thermal/sprd-thermal.yaml
··· 68 68 - nvmem-cells 69 69 - nvmem-cell-names 70 70 71 + additionalProperties: false 72 + 71 73 required: 72 74 - compatible 73 75 - reg ··· 80 78 - "#thermal-sensor-cells" 81 79 - "#address-cells" 82 80 - "#size-cells" 81 + 82 + additionalProperties: false 83 83 84 84 examples: 85 85 - |
+2
Documentation/devicetree/bindings/thermal/thermal-cooling-devices.yaml
··· 49 49 and the second cell is the maximum cooling state requested. 50 50 const: 2 51 51 52 + additionalProperties: true 53 + 52 54 examples: 53 55 - | 54 56 #include <dt-bindings/interrupt-controller/arm-gic.h>
+2
Documentation/devicetree/bindings/thermal/thermal-idle.yaml
··· 44 44 required: 45 45 - '#cooling-cells' 46 46 47 + additionalProperties: false 48 + 47 49 examples: 48 50 - | 49 51 #include <dt-bindings/thermal/thermal.h>
+2
Documentation/devicetree/bindings/thermal/thermal-sensor.yaml
··· 36 36 containing several internal sensors. 37 37 enum: [0, 1] 38 38 39 + additionalProperties: true 40 + 39 41 examples: 40 42 - | 41 43 #include <dt-bindings/interrupt-controller/arm-gic.h>
+2
Documentation/devicetree/bindings/thermal/thermal-zones.yaml
··· 218 218 - trips 219 219 additionalProperties: false 220 220 221 + additionalProperties: false 222 + 221 223 examples: 222 224 - | 223 225 #include <dt-bindings/interrupt-controller/arm-gic.h>
-29
Documentation/devicetree/bindings/timer/arm,sp804.txt
··· 1 - ARM sp804 Dual Timers 2 - --------------------------------------- 3 - 4 - Required properties: 5 - - compatible: Should be "arm,sp804" & "arm,primecell" 6 - - interrupts: Should contain the list of Dual Timer interrupts. This is the 7 - interrupt for timer 1 and timer 2. In the case of a single entry, it is 8 - the combined interrupt or if "arm,sp804-has-irq" is present that 9 - specifies which timer interrupt is connected. 10 - - reg: Should contain location and length for dual timer register. 11 - - clocks: clocks driving the dual timer hardware. This list should be 1 or 3 12 - clocks. With 3 clocks, the order is timer0 clock, timer1 clock, 13 - apb_pclk. A single clock can also be specified if the same clock is 14 - used for all clock inputs. 15 - 16 - Optional properties: 17 - - arm,sp804-has-irq = <#>: In the case of only 1 timer irq line connected, this 18 - specifies if the irq connection is for timer 1 or timer 2. A value of 1 19 - or 2 should be used. 20 - 21 - Example: 22 - 23 - timer0: timer@fc800000 { 24 - compatible = "arm,sp804", "arm,primecell"; 25 - reg = <0xfc800000 0x1000>; 26 - interrupts = <0 0 4>, <0 1 4>; 27 - clocks = <&timclk1 &timclk2 &pclk>; 28 - clock-names = "timer1", "timer2", "apb_pclk"; 29 - };
+97
Documentation/devicetree/bindings/timer/arm,sp804.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/timer/arm,sp804.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: ARM sp804 Dual Timers 8 + 9 + maintainers: 10 + - Haojian Zhuang <haojian.zhuang@linaro.org> 11 + 12 + description: |+ 13 + The Arm SP804 IP implements two independent timers, configurable for 14 + 16 or 32 bit operation and capable of running in one-shot, periodic, or 15 + free-running mode. The input clock is shared, but can be gated and prescaled 16 + independently for each timer. 17 + 18 + There is a viriant of Arm SP804: Hisilicon 64-bit SP804 timer. Some Hisilicon 19 + SoCs, such as Hi1212, should use the dedicated compatible: "hisilicon,sp804". 20 + 21 + # Need a custom select here or 'arm,primecell' will match on lots of nodes 22 + select: 23 + properties: 24 + compatible: 25 + contains: 26 + oneOf: 27 + - const: arm,sp804 28 + - const: hisilicon,sp804 29 + required: 30 + - compatible 31 + 32 + properties: 33 + compatible: 34 + items: 35 + - enum: 36 + - arm,sp804 37 + - hisilicon,sp804 38 + - const: arm,primecell 39 + 40 + interrupts: 41 + description: | 42 + If two interrupts are listed, those are the interrupts for timer 43 + 1 and 2, respectively. If there is only a single interrupt, it is 44 + either a combined interrupt or the sole interrupt of one timer, as 45 + specified by the "arm,sp804-has-irq" property. 46 + minItems: 1 47 + maxItems: 2 48 + 49 + reg: 50 + description: The physical base address of the SP804 IP. 51 + maxItems: 1 52 + 53 + clocks: 54 + description: | 55 + Clocks driving the dual timer hardware. This list should 56 + be 1 or 3 clocks. With 3 clocks, the order is timer0 clock, timer1 57 + clock, apb_pclk. A single clock can also be specified if the same 58 + clock is used for all clock inputs. 59 + oneOf: 60 + - items: 61 + - description: clock for timer 1 62 + - description: clock for timer 2 63 + - description: bus clock 64 + - items: 65 + - description: unified clock for both timers and the bus 66 + 67 + clock-names: true 68 + # The original binding did not specify any clock names, and there is no 69 + # consistent naming used in the existing DTs. The primecell binding 70 + # requires the "apb_pclk" name, so we need this property. 71 + # Use "timer0clk", "timer1clk", "apb_pclk" for new DTs. 72 + 73 + arm,sp804-has-irq: 74 + description: If only one interrupt line is connected to the interrupt 75 + controller, this property specifies which timer is connected to this 76 + line. 77 + $ref: /schemas/types.yaml#/definitions/uint32 78 + minimum: 1 79 + maximum: 2 80 + 81 + required: 82 + - compatible 83 + - interrupts 84 + - reg 85 + - clocks 86 + 87 + additionalProperties: false 88 + 89 + examples: 90 + - | 91 + timer0: timer@fc800000 { 92 + compatible = "arm,sp804", "arm,primecell"; 93 + reg = <0xfc800000 0x1000>; 94 + interrupts = <0 0 4>, <0 1 4>; 95 + clocks = <&timclk1>, <&timclk2>, <&pclk>; 96 + clock-names = "timer1", "timer2", "apb_pclk"; 97 + };
+2
Documentation/devicetree/bindings/timer/cdns,ttc.yaml
··· 36 36 - interrupts 37 37 - clocks 38 38 39 + additionalProperties: false 40 + 39 41 examples: 40 42 - | 41 43 ttc0: ttc0@f8001000 {
+25
Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.yaml
··· 23 23 - samsung,exynos4210-mct 24 24 - samsung,exynos4412-mct 25 25 26 + clocks: 27 + minItems: 2 28 + maxItems: 2 29 + 30 + clock-names: 31 + items: 32 + - pattern: "^(fin_pll|mct)$" 33 + - pattern: "^(fin_pll|mct)$" 34 + 26 35 reg: 27 36 maxItems: 1 28 37 ··· 58 49 59 50 required: 60 51 - compatible 52 + - clock-names 53 + - clocks 61 54 - interrupts 62 55 - reg 63 56 ··· 70 59 // In this example, the IP contains two local timers, using separate 71 60 // interrupts, so two local timer interrupts have been specified, 72 61 // in addition to four global timer interrupts. 62 + #include <dt-bindings/clock/exynos4.h> 73 63 #include <dt-bindings/interrupt-controller/arm-gic.h> 74 64 75 65 timer@10050000 { 76 66 compatible = "samsung,exynos4210-mct"; 77 67 reg = <0x10050000 0x800>; 68 + clocks = <&clock CLK_FIN_PLL>, <&clock CLK_MCT>; 69 + clock-names = "fin_pll", "mct"; 70 + 78 71 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>, 79 72 <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>, 80 73 <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>, ··· 90 75 - | 91 76 // In this example, the timer interrupts are connected to two separate 92 77 // interrupt controllers. Hence, an interrupts-extended is needed. 78 + #include <dt-bindings/clock/exynos4.h> 93 79 #include <dt-bindings/interrupt-controller/arm-gic.h> 94 80 95 81 timer@101c0000 { 96 82 compatible = "samsung,exynos4210-mct"; 97 83 reg = <0x101C0000 0x800>; 84 + clocks = <&clock CLK_FIN_PLL>, <&clock CLK_MCT>; 85 + clock-names = "fin_pll", "mct"; 86 + 98 87 interrupts-extended = <&gic GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>, 99 88 <&gic GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>, 100 89 <&combiner 12 6>, ··· 111 92 // In this example, the IP contains four local timers, but using 112 93 // a per-processor interrupt to handle them. Only one first local 113 94 // interrupt is specified. 95 + #include <dt-bindings/clock/exynos4.h> 114 96 #include <dt-bindings/interrupt-controller/arm-gic.h> 115 97 116 98 timer@10050000 { 117 99 compatible = "samsung,exynos4412-mct"; 118 100 reg = <0x10050000 0x800>; 101 + clocks = <&clock CLK_FIN_PLL>, <&clock CLK_MCT>; 102 + clock-names = "fin_pll", "mct"; 119 103 120 104 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>, 121 105 <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>, ··· 131 109 // In this example, the IP contains four local timers, but using 132 110 // a per-processor interrupt to handle them. All the local timer 133 111 // interrupts are specified. 112 + #include <dt-bindings/clock/exynos4.h> 134 113 #include <dt-bindings/interrupt-controller/arm-gic.h> 135 114 136 115 timer@10050000 { 137 116 compatible = "samsung,exynos4412-mct"; 138 117 reg = <0x10050000 0x800>; 118 + clocks = <&clock CLK_FIN_PLL>, <&clock CLK_MCT>; 119 + clock-names = "fin_pll", "mct"; 139 120 140 121 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>, 141 122 <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>,
+1 -1
Documentation/devicetree/bindings/timer/snps,dw-apb-timer.yaml
··· 45 45 frequency in HZ, but is defined only for the backwards compatibility 46 46 with the picoxcell platform. 47 47 48 - unevaluatedProperties: false 48 + additionalProperties: false 49 49 50 50 required: 51 51 - compatible
+4
Documentation/devicetree/bindings/trivial-devices.yaml
··· 54 54 - dallas,ds1682 55 55 # Tiny Digital Thermometer and Thermostat 56 56 - dallas,ds1775 57 + # CPU Peripheral Monitor 58 + - dallas,ds1780 57 59 # CPU Supervisor with Nonvolatile Memory and Programmable I/O 58 60 - dallas,ds4510 59 61 # Digital Thermometer and Thermostat ··· 300 298 - national,lm75 301 299 # Serial Interface ACPI-Compatible Microprocessor System Hardware Monitor 302 300 - national,lm80 301 + # Serial Interface ACPI-Compatible Microprocessor System Hardware Monitor 302 + - national,lm81 303 303 # Temperature sensor with integrated fan control 304 304 - national,lm85 305 305 # I2C ±0.33°C Accurate, 12-Bit + Sign Temperature Sensor and Thermal Window Comparator
+2
Documentation/devicetree/bindings/usb/nvidia,tegra-xudc.yaml
··· 155 155 clock-names: 156 156 maxItems: 4 157 157 158 + additionalProperties: false 159 + 158 160 examples: 159 161 - | 160 162 #include <dt-bindings/clock/tegra210-car.h>
+2
Documentation/devicetree/bindings/usb/qcom,dwc3.yaml
··· 121 121 - interrupts 122 122 - interrupt-names 123 123 124 + additionalProperties: false 125 + 124 126 examples: 125 127 - | 126 128 #include <dt-bindings/clock/qcom,gcc-sdm845.h>
+18
Documentation/devicetree/bindings/usb/ti,j721e-usb.yaml
··· 46 46 VBUS pin of the SoC via a 1/3 voltage divider. 47 47 type: boolean 48 48 49 + assigned-clocks: 50 + maxItems: 1 51 + 52 + assigned-clock-parents: 53 + maxItems: 1 54 + 55 + '#address-cells': 56 + const: 2 57 + 58 + '#size-cells': 59 + const: 2 60 + 61 + patternProperties: 62 + "^usb@": 63 + type: object 64 + 49 65 required: 50 66 - compatible 51 67 - reg 52 68 - power-domains 53 69 - clocks 54 70 - clock-names 71 + 72 + additionalProperties: false 55 73 56 74 examples: 57 75 - |
+2
Documentation/devicetree/bindings/usb/ti,tps6598x.yaml
··· 32 32 - interrupts 33 33 - interrupt-names 34 34 35 + additionalProperties: true 36 + 35 37 examples: 36 38 - | 37 39 #include <dt-bindings/interrupt-controller/irq.h>
+2
Documentation/devicetree/bindings/usb/usb-hcd.yaml
··· 22 22 description: 23 23 Name specifier for the USB PHY 24 24 25 + additionalProperties: true 26 + 25 27 examples: 26 28 - | 27 29 usb {
+14
Documentation/devicetree/bindings/vendor-prefixes.yaml
··· 263 263 description: Denx Software Engineering 264 264 "^devantech,.*": 265 265 description: Devantech, Ltd. 266 + "^dfi,.*": 267 + description: DFI Inc. 266 268 "^dh,.*": 267 269 description: DH electronics GmbH 268 270 "^difrnce,.*": ··· 425 423 description: Gumstix, Inc. 426 424 "^gw,.*": 427 425 description: Gateworks Corporation 426 + use "gateworks" vendor prefix 427 + deprecated: true 428 428 "^hannstar,.*": 429 429 description: HannStar Display Corporation 430 430 "^haoyu,.*": ··· 647 643 description: MEMSIC Inc. 648 644 "^menlo,.*": 649 645 description: Menlo Systems GmbH 646 + "^meraki,.*": 647 + description: Cisco Meraki, LLC 650 648 "^merrii,.*": 651 649 description: Merrii Technology Co., Ltd. 652 650 "^micrel,.*": ··· 880 874 description: Realtek Semiconductor Corp. 881 875 "^renesas,.*": 882 876 description: Renesas Electronics Corporation 877 + "^rex,.*": 878 + description: iMX6 Rex Project 883 879 "^rervision,.*": 884 880 description: Shenzhen Rervision Technology Co., Ltd. 885 881 "^richtek,.*": ··· 892 884 description: Rikomagic Tech Corp. Ltd 893 885 "^riscv,.*": 894 886 description: RISC-V Foundation 887 + "^riot,.*": 888 + description: Embest RIoT 895 889 "^rockchip,.*": 896 890 description: Fuzhou Rockchip Electronics Co., Ltd 897 891 "^rocktech,.*": ··· 1146 1136 description: Vision Optical Technology Co., Ltd. 1147 1137 "^vxt,.*": 1148 1138 description: VXT Ltd 1139 + "^wand,.*": 1140 + description: Wandbord (Technexion) 1149 1141 "^waveshare,.*": 1150 1142 description: Waveshare Electronics 1151 1143 "^wd,.*": ··· 1204 1192 description: Yones Toptech Co., Ltd. 1205 1193 "^ysoft,.*": 1206 1194 description: Y Soft Corporation a.s. 1195 + "^zealz,.*": 1196 + description: Zealz 1207 1197 "^zarlink,.*": 1208 1198 description: Zarlink Semiconductor 1209 1199 "^zeitec,.*":
-18
Documentation/devicetree/bindings/w1/fsl-imx-owire.txt
··· 1 - * Freescale i.MX One wire bus master controller 2 - 3 - Required properties: 4 - - compatible : should be "fsl,imx21-owire" 5 - - reg : Address and length of the register set for the device 6 - 7 - Optional properties: 8 - - clocks : phandle of clock that supplies the module (required if platform 9 - clock bindings use device tree) 10 - 11 - Example: 12 - 13 - - From imx53.dtsi: 14 - owire: owire@63fa4000 { 15 - compatible = "fsl,imx53-owire", "fsl,imx21-owire"; 16 - reg = <0x63fa4000 0x4000>; 17 - clocks = <&clks 159>; 18 - };
+44
Documentation/devicetree/bindings/w1/fsl-imx-owire.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/w1/fsl-imx-owire.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Freescale i.MX One wire bus master controller 8 + 9 + maintainers: 10 + - Martin Fuzzey <mfuzzey@parkeon.com> 11 + 12 + properties: 13 + compatible: 14 + oneOf: 15 + - const: fsl,imx21-owire 16 + - items: 17 + - enum: 18 + - fsl,imx27-owire 19 + - fsl,imx50-owire 20 + - fsl,imx51-owire 21 + - fsl,imx53-owire 22 + - const: fsl,imx21-owire 23 + 24 + reg: 25 + maxItems: 1 26 + 27 + clocks: 28 + maxItems: 1 29 + 30 + required: 31 + - compatible 32 + - reg 33 + 34 + additionalProperties: false 35 + 36 + examples: 37 + - | 38 + #include <dt-bindings/clock/imx5-clock.h> 39 + 40 + owire@63fa4000 { 41 + compatible = "fsl,imx53-owire", "fsl,imx21-owire"; 42 + reg = <0x63fa4000 0x4000>; 43 + clocks = <&clks IMX5_CLK_OWIRE_GATE>; 44 + };
+2
Documentation/devicetree/bindings/watchdog/amlogic,meson-gxbb-wdt.yaml
··· 31 31 - reg 32 32 - clocks 33 33 34 + unevaluatedProperties: false 35 + 34 36 examples: 35 37 - | 36 38 watchdog@98d0 {
-32
Documentation/devicetree/bindings/watchdog/arm,sp805.txt
··· 1 - ARM AMBA Primecell SP805 Watchdog 2 - 3 - SP805 WDT is a ARM Primecell Peripheral and has a standard-id register that 4 - can be used to identify the peripheral type, vendor, and revision. 5 - This value can be used for driver matching. 6 - 7 - As SP805 WDT is a primecell IP, it follows the base bindings specified in 8 - 'arm/primecell.txt' 9 - 10 - Required properties: 11 - - compatible: Should be "arm,sp805" & "arm,primecell" 12 - - reg: Should contain location and length for watchdog timer register 13 - - clocks: Clocks driving the watchdog timer hardware. This list should be 14 - 2 clocks. With 2 clocks, the order is wdog_clk, apb_pclk 15 - wdog_clk can be equal to or be a sub-multiple of the apb_pclk 16 - frequency 17 - - clock-names: Shall be "wdog_clk" for first clock and "apb_pclk" for the 18 - second one 19 - 20 - Optional properties: 21 - - interrupts: Should specify WDT interrupt number 22 - - timeout-sec: Should specify default WDT timeout in seconds. If unset, the 23 - default timeout is determined by the driver 24 - 25 - Example: 26 - watchdog@66090000 { 27 - compatible = "arm,sp805", "arm,primecell"; 28 - reg = <0x66090000 0x1000>; 29 - interrupts = <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>; 30 - clocks = <&wdt_clk>, <&apb_pclk>; 31 - clock-names = "wdog_clk", "apb_pclk"; 32 - };
+71
Documentation/devicetree/bindings/watchdog/arm,sp805.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/watchdog/arm,sp805.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: ARM AMBA Primecell SP805 Watchdog 8 + 9 + maintainers: 10 + - Viresh Kumar <vireshk@kernel.org> 11 + 12 + description: |+ 13 + The Arm SP805 IP implements a watchdog device, which triggers an interrupt 14 + after a configurable time period. If that interrupt has not been serviced 15 + when the next interrupt would be triggered, the reset signal is asserted. 16 + 17 + allOf: 18 + - $ref: /schemas/watchdog/watchdog.yaml# 19 + 20 + # Need a custom select here or 'arm,primecell' will match on lots of nodes 21 + select: 22 + properties: 23 + compatible: 24 + contains: 25 + const: arm,sp805 26 + required: 27 + - compatible 28 + 29 + properties: 30 + compatible: 31 + items: 32 + - const: arm,sp805 33 + - const: arm,primecell 34 + 35 + interrupts: 36 + maxItems: 1 37 + 38 + reg: 39 + maxItems: 1 40 + 41 + clocks: 42 + description: | 43 + Clocks driving the watchdog timer hardware. The first clock is used 44 + for the actual watchdog counter. The second clock drives the register 45 + interface. 46 + minItems: 2 47 + maxItems: 2 48 + 49 + clock-names: 50 + items: 51 + - const: wdog_clk 52 + - const: apb_pclk 53 + 54 + required: 55 + - compatible 56 + - reg 57 + - clocks 58 + - clock-names 59 + 60 + unevaluatedProperties: false 61 + 62 + examples: 63 + - | 64 + #include <dt-bindings/interrupt-controller/arm-gic.h> 65 + watchdog@66090000 { 66 + compatible = "arm,sp805", "arm,primecell"; 67 + reg = <0x66090000 0x1000>; 68 + interrupts = <GIC_SPI 406 IRQ_TYPE_LEVEL_HIGH>; 69 + clocks = <&wdt_clk>, <&apb_pclk>; 70 + clock-names = "wdog_clk", "apb_pclk"; 71 + };
+2
Documentation/devicetree/bindings/watchdog/arm-smc-wdt.yaml
··· 25 25 required: 26 26 - compatible 27 27 28 + unevaluatedProperties: false 29 + 28 30 examples: 29 31 - | 30 32 watchdog {
+1 -1
Documentation/devicetree/bindings/watchdog/aspeed-wdt.txt
··· 20 20 This is useful in situations where another watchdog engine on chip is 21 21 to perform the reset. 22 22 23 - If 'aspeed,reset-type=' is not specfied the default is to enable system 23 + If 'aspeed,reset-type=' is not specified the default is to enable system 24 24 reset. 25 25 26 26 Reset types:
+9 -2
Documentation/devicetree/bindings/watchdog/fsl-imx-wdt.yaml
··· 14 14 15 15 properties: 16 16 compatible: 17 - enum: 18 - - fsl,imx21-wdt 17 + oneOf: 18 + - const: fsl,imx21-wdt 19 + - items: 20 + - enum: 21 + - fsl,imx8mm-wdt 22 + - fsl,imx8mn-wdt 23 + - fsl,imx8mp-wdt 24 + - fsl,imx8mq-wdt 25 + - const: fsl,imx21-wdt 19 26 20 27 reg: 21 28 maxItems: 1
+2
Documentation/devicetree/bindings/watchdog/qcom-wdt.yaml
··· 38 38 - reg 39 39 - clocks 40 40 41 + unevaluatedProperties: false 42 + 41 43 examples: 42 44 - | 43 45 watchdog@208a038 {
+2
Documentation/devicetree/bindings/watchdog/samsung-wdt.yaml
··· 62 62 required: 63 63 - samsung,syscon-phandle 64 64 65 + unevaluatedProperties: false 66 + 65 67 examples: 66 68 - | 67 69 watchdog@101d0000 {
+2
Documentation/devicetree/bindings/watchdog/st,stm32-iwdg.yaml
··· 43 43 - clocks 44 44 - clock-names 45 45 46 + unevaluatedProperties: false 47 + 46 48 examples: 47 49 - | 48 50 #include <dt-bindings/clock/stm32mp1-clks.h>
+2
Documentation/devicetree/bindings/watchdog/ti,rti-wdt.yaml
··· 46 46 - clocks 47 47 - power-domains 48 48 49 + unevaluatedProperties: false 50 + 49 51 examples: 50 52 - | 51 53 /*
+2
Documentation/devicetree/bindings/watchdog/watchdog.yaml
··· 23 23 description: 24 24 Contains the watchdog timeout in seconds. 25 25 26 + additionalProperties: true 27 + 26 28 ...
-1585
Documentation/devicetree/booting-without-of.rst
··· 1 - .. SPDX-License-Identifier: GPL-2.0 2 - 3 - ================================================== 4 - Booting the Linux/ppc kernel without Open Firmware 5 - ================================================== 6 - 7 - Copyright (c) 2005 Benjamin Herrenschmidt <benh at kernel.crashing.org>, 8 - IBM Corp. 9 - 10 - Copyright (c) 2005 Becky Bruce <becky.bruce at freescale.com>, 11 - Freescale Semiconductor, FSL SOC and 32-bit additions 12 - 13 - Copyright (c) 2006 MontaVista Software, Inc. 14 - Flash chip node definition 15 - 16 - .. Table of Contents 17 - 18 - I - Introduction 19 - 1) Entry point for arch/arm 20 - 2) Entry point for arch/powerpc 21 - 3) Entry point for arch/x86 22 - 4) Entry point for arch/mips/bmips 23 - 5) Entry point for arch/sh 24 - 25 - II - The DT block format 26 - 1) Header 27 - 2) Device tree generalities 28 - 3) Device tree "structure" block 29 - 4) Device tree "strings" block 30 - 31 - III - Required content of the device tree 32 - 1) Note about cells and address representation 33 - 2) Note about "compatible" properties 34 - 3) Note about "name" properties 35 - 4) Note about node and property names and character set 36 - 5) Required nodes and properties 37 - a) The root node 38 - b) The /cpus node 39 - c) The /cpus/* nodes 40 - d) the /memory node(s) 41 - e) The /chosen node 42 - f) the /soc<SOCname> node 43 - 44 - IV - "dtc", the device tree compiler 45 - 46 - V - Recommendations for a bootloader 47 - 48 - VI - System-on-a-chip devices and nodes 49 - 1) Defining child nodes of an SOC 50 - 2) Representing devices without a current OF specification 51 - 52 - VII - Specifying interrupt information for devices 53 - 1) interrupts property 54 - 2) interrupt-parent property 55 - 3) OpenPIC Interrupt Controllers 56 - 4) ISA Interrupt Controllers 57 - 58 - VIII - Specifying device power management information (sleep property) 59 - 60 - IX - Specifying dma bus information 61 - 62 - Appendix A - Sample SOC node for MPC8540 63 - 64 - 65 - Revision Information 66 - ==================== 67 - 68 - May 18, 2005: Rev 0.1 69 - - Initial draft, no chapter III yet. 70 - 71 - May 19, 2005: Rev 0.2 72 - - Add chapter III and bits & pieces here or 73 - clarifies the fact that a lot of things are 74 - optional, the kernel only requires a very 75 - small device tree, though it is encouraged 76 - to provide an as complete one as possible. 77 - 78 - May 24, 2005: Rev 0.3 79 - - Precise that DT block has to be in RAM 80 - - Misc fixes 81 - - Define version 3 and new format version 16 82 - for the DT block (version 16 needs kernel 83 - patches, will be fwd separately). 84 - String block now has a size, and full path 85 - is replaced by unit name for more 86 - compactness. 87 - linux,phandle is made optional, only nodes 88 - that are referenced by other nodes need it. 89 - "name" property is now automatically 90 - deduced from the unit name 91 - 92 - June 1, 2005: Rev 0.4 93 - - Correct confusion between OF_DT_END and 94 - OF_DT_END_NODE in structure definition. 95 - - Change version 16 format to always align 96 - property data to 4 bytes. Since tokens are 97 - already aligned, that means no specific 98 - required alignment between property size 99 - and property data. The old style variable 100 - alignment would make it impossible to do 101 - "simple" insertion of properties using 102 - memmove (thanks Milton for 103 - noticing). Updated kernel patch as well 104 - - Correct a few more alignment constraints 105 - - Add a chapter about the device-tree 106 - compiler and the textural representation of 107 - the tree that can be "compiled" by dtc. 108 - 109 - November 21, 2005: Rev 0.5 110 - - Additions/generalizations for 32-bit 111 - - Changed to reflect the new arch/powerpc 112 - structure 113 - - Added chapter VI 114 - 115 - 116 - ToDo: 117 - - Add some definitions of interrupt tree (simple/complex) 118 - - Add some definitions for PCI host bridges 119 - - Add some common address format examples 120 - - Add definitions for standard properties and "compatible" 121 - names for cells that are not already defined by the existing 122 - OF spec. 123 - - Compare FSL SOC use of PCI to standard and make sure no new 124 - node definition required. 125 - - Add more information about node definitions for SOC devices 126 - that currently have no standard, like the FSL CPM. 127 - 128 - 129 - I - Introduction 130 - ================ 131 - 132 - During the development of the Linux/ppc64 kernel, and more 133 - specifically, the addition of new platform types outside of the old 134 - IBM pSeries/iSeries pair, it was decided to enforce some strict rules 135 - regarding the kernel entry and bootloader <-> kernel interfaces, in 136 - order to avoid the degeneration that had become the ppc32 kernel entry 137 - point and the way a new platform should be added to the kernel. The 138 - legacy iSeries platform breaks those rules as it predates this scheme, 139 - but no new board support will be accepted in the main tree that 140 - doesn't follow them properly. In addition, since the advent of the 141 - arch/powerpc merged architecture for ppc32 and ppc64, new 32-bit 142 - platforms and 32-bit platforms which move into arch/powerpc will be 143 - required to use these rules as well. 144 - 145 - The main requirement that will be defined in more detail below is 146 - the presence of a device-tree whose format is defined after Open 147 - Firmware specification. However, in order to make life easier 148 - to embedded board vendors, the kernel doesn't require the device-tree 149 - to represent every device in the system and only requires some nodes 150 - and properties to be present. This will be described in detail in 151 - section III, but, for example, the kernel does not require you to 152 - create a node for every PCI device in the system. It is a requirement 153 - to have a node for PCI host bridges in order to provide interrupt 154 - routing information and memory/IO ranges, among others. It is also 155 - recommended to define nodes for on chip devices and other buses that 156 - don't specifically fit in an existing OF specification. This creates a 157 - great flexibility in the way the kernel can then probe those and match 158 - drivers to device, without having to hard code all sorts of tables. It 159 - also makes it more flexible for board vendors to do minor hardware 160 - upgrades without significantly impacting the kernel code or cluttering 161 - it with special cases. 162 - 163 - 164 - 1) Entry point for arch/arm 165 - --------------------------- 166 - 167 - There is one single entry point to the kernel, at the start 168 - of the kernel image. That entry point supports two calling 169 - conventions. A summary of the interface is described here. A full 170 - description of the boot requirements is documented in 171 - Documentation/arm/booting.rst 172 - 173 - a) ATAGS interface. Minimal information is passed from firmware 174 - to the kernel with a tagged list of predefined parameters. 175 - 176 - r0 : 0 177 - 178 - r1 : Machine type number 179 - 180 - r2 : Physical address of tagged list in system RAM 181 - 182 - b) Entry with a flattened device-tree block. Firmware loads the 183 - physical address of the flattened device tree block (dtb) into r2, 184 - r1 is not used, but it is considered good practice to use a valid 185 - machine number as described in Documentation/arm/booting.rst. 186 - 187 - r0 : 0 188 - 189 - r1 : Valid machine type number. When using a device tree, 190 - a single machine type number will often be assigned to 191 - represent a class or family of SoCs. 192 - 193 - r2 : physical pointer to the device-tree block 194 - (defined in chapter II) in RAM. Device tree can be located 195 - anywhere in system RAM, but it should be aligned on a 64 bit 196 - boundary. 197 - 198 - The kernel will differentiate between ATAGS and device tree booting by 199 - reading the memory pointed to by r2 and looking for either the flattened 200 - device tree block magic value (0xd00dfeed) or the ATAG_CORE value at 201 - offset 0x4 from r2 (0x54410001). 202 - 203 - 2) Entry point for arch/powerpc 204 - ------------------------------- 205 - 206 - There is one single entry point to the kernel, at the start 207 - of the kernel image. That entry point supports two calling 208 - conventions: 209 - 210 - a) Boot from Open Firmware. If your firmware is compatible 211 - with Open Firmware (IEEE 1275) or provides an OF compatible 212 - client interface API (support for "interpret" callback of 213 - forth words isn't required), you can enter the kernel with: 214 - 215 - r5 : OF callback pointer as defined by IEEE 1275 216 - bindings to powerpc. Only the 32-bit client interface 217 - is currently supported 218 - 219 - r3, r4 : address & length of an initrd if any or 0 220 - 221 - The MMU is either on or off; the kernel will run the 222 - trampoline located in arch/powerpc/kernel/prom_init.c to 223 - extract the device-tree and other information from open 224 - firmware and build a flattened device-tree as described 225 - in b). prom_init() will then re-enter the kernel using 226 - the second method. This trampoline code runs in the 227 - context of the firmware, which is supposed to handle all 228 - exceptions during that time. 229 - 230 - b) Direct entry with a flattened device-tree block. This entry 231 - point is called by a) after the OF trampoline and can also be 232 - called directly by a bootloader that does not support the Open 233 - Firmware client interface. It is also used by "kexec" to 234 - implement "hot" booting of a new kernel from a previous 235 - running one. This method is what I will describe in more 236 - details in this document, as method a) is simply standard Open 237 - Firmware, and thus should be implemented according to the 238 - various standard documents defining it and its binding to the 239 - PowerPC platform. The entry point definition then becomes: 240 - 241 - r3 : physical pointer to the device-tree block 242 - (defined in chapter II) in RAM 243 - 244 - r4 : physical pointer to the kernel itself. This is 245 - used by the assembly code to properly disable the MMU 246 - in case you are entering the kernel with MMU enabled 247 - and a non-1:1 mapping. 248 - 249 - r5 : NULL (as to differentiate with method a) 250 - 251 - Note about SMP entry: Either your firmware puts your other 252 - CPUs in some sleep loop or spin loop in ROM where you can get 253 - them out via a soft reset or some other means, in which case 254 - you don't need to care, or you'll have to enter the kernel 255 - with all CPUs. The way to do that with method b) will be 256 - described in a later revision of this document. 257 - 258 - Board supports (platforms) are not exclusive config options. An 259 - arbitrary set of board supports can be built in a single kernel 260 - image. The kernel will "know" what set of functions to use for a 261 - given platform based on the content of the device-tree. Thus, you 262 - should: 263 - 264 - a) add your platform support as a _boolean_ option in 265 - arch/powerpc/Kconfig, following the example of PPC_PSERIES, 266 - PPC_PMAC and PPC_MAPLE. The later is probably a good 267 - example of a board support to start from. 268 - 269 - b) create your main platform file as 270 - "arch/powerpc/platforms/myplatform/myboard_setup.c" and add it 271 - to the Makefile under the condition of your ``CONFIG_`` 272 - option. This file will define a structure of type "ppc_md" 273 - containing the various callbacks that the generic code will 274 - use to get to your platform specific code 275 - 276 - A kernel image may support multiple platforms, but only if the 277 - platforms feature the same core architecture. A single kernel build 278 - cannot support both configurations with Book E and configurations 279 - with classic Powerpc architectures. 280 - 281 - 3) Entry point for arch/x86 282 - --------------------------- 283 - 284 - There is one single 32bit entry point to the kernel at code32_start, 285 - the decompressor (the real mode entry point goes to the same 32bit 286 - entry point once it switched into protected mode). That entry point 287 - supports one calling convention which is documented in 288 - Documentation/x86/boot.rst 289 - The physical pointer to the device-tree block (defined in chapter II) 290 - is passed via setup_data which requires at least boot protocol 2.09. 291 - The type filed is defined as:: 292 - 293 - #define SETUP_DTB 2 294 - 295 - This device-tree is used as an extension to the "boot page". As such it 296 - does not parse / consider data which is already covered by the boot 297 - page. This includes memory size, reserved ranges, command line arguments 298 - or initrd address. It simply holds information which can not be retrieved 299 - otherwise like interrupt routing or a list of devices behind an I2C bus. 300 - 301 - 4) Entry point for arch/mips/bmips 302 - ---------------------------------- 303 - 304 - Some bootloaders only support a single entry point, at the start of the 305 - kernel image. Other bootloaders will jump to the ELF start address. 306 - Both schemes are supported; CONFIG_BOOT_RAW=y and CONFIG_NO_EXCEPT_FILL=y, 307 - so the first instruction immediately jumps to kernel_entry(). 308 - 309 - Similar to the arch/arm case (b), a DT-aware bootloader is expected to 310 - set up the following registers: 311 - 312 - a0 : 0 313 - 314 - a1 : 0xffffffff 315 - 316 - a2 : Physical pointer to the device tree block (defined in chapter 317 - II) in RAM. The device tree can be located anywhere in the first 318 - 512MB of the physical address space (0x00000000 - 0x1fffffff), 319 - aligned on a 64 bit boundary. 320 - 321 - Legacy bootloaders do not use this convention, and they do not pass in a 322 - DT block. In this case, Linux will look for a builtin DTB, selected via 323 - CONFIG_DT_*. 324 - 325 - This convention is defined for 32-bit systems only, as there are not 326 - currently any 64-bit BMIPS implementations. 327 - 328 - 5) Entry point for arch/sh 329 - -------------------------- 330 - 331 - Device-tree-compatible SH bootloaders are expected to provide the physical 332 - address of the device tree blob in r4. Since legacy bootloaders did not 333 - guarantee any particular initial register state, kernels built to 334 - inter-operate with old bootloaders must either use a builtin DTB or 335 - select a legacy board option (something other than CONFIG_SH_DEVICE_TREE) 336 - that does not use device tree. Support for the latter is being phased out 337 - in favor of device tree. 338 - 339 - 340 - II - The DT block format 341 - ======================== 342 - 343 - 344 - This chapter defines the actual format of the flattened device-tree 345 - passed to the kernel. The actual content of it and kernel requirements 346 - are described later. You can find example of code manipulating that 347 - format in various places, including arch/powerpc/kernel/prom_init.c 348 - which will generate a flattened device-tree from the Open Firmware 349 - representation, or the fs2dt utility which is part of the kexec tools 350 - which will generate one from a filesystem representation. It is 351 - expected that a bootloader like uboot provides a bit more support, 352 - that will be discussed later as well. 353 - 354 - Note: The block has to be in main memory. It has to be accessible in 355 - both real mode and virtual mode with no mapping other than main 356 - memory. If you are writing a simple flash bootloader, it should copy 357 - the block to RAM before passing it to the kernel. 358 - 359 - 360 - 1) Header 361 - --------- 362 - 363 - The kernel is passed the physical address pointing to an area of memory 364 - that is roughly described in include/linux/of_fdt.h by the structure 365 - boot_param_header::: 366 - 367 - struct boot_param_header { 368 - u32 magic; /* magic word OF_DT_HEADER */ 369 - u32 totalsize; /* total size of DT block */ 370 - u32 off_dt_struct; /* offset to structure */ 371 - u32 off_dt_strings; /* offset to strings */ 372 - u32 off_mem_rsvmap; /* offset to memory reserve map 373 - */ 374 - u32 version; /* format version */ 375 - u32 last_comp_version; /* last compatible version */ 376 - 377 - /* version 2 fields below */ 378 - u32 boot_cpuid_phys; /* Which physical CPU id we're 379 - booting on */ 380 - /* version 3 fields below */ 381 - u32 size_dt_strings; /* size of the strings block */ 382 - 383 - /* version 17 fields below */ 384 - u32 size_dt_struct; /* size of the DT structure block */ 385 - }; 386 - 387 - Along with the constants:: 388 - 389 - /* Definitions used by the flattened device tree */ 390 - #define OF_DT_HEADER 0xd00dfeed /* 4: version, 391 - 4: total size */ 392 - #define OF_DT_BEGIN_NODE 0x1 /* Start node: full name 393 - */ 394 - #define OF_DT_END_NODE 0x2 /* End node */ 395 - #define OF_DT_PROP 0x3 /* Property: name off, 396 - size, content */ 397 - #define OF_DT_END 0x9 398 - 399 - All values in this header are in big endian format, the various 400 - fields in this header are defined more precisely below. All 401 - "offset" values are in bytes from the start of the header; that is 402 - from the physical base address of the device tree block. 403 - 404 - - magic 405 - 406 - This is a magic value that "marks" the beginning of the 407 - device-tree block header. It contains the value 0xd00dfeed and is 408 - defined by the constant OF_DT_HEADER 409 - 410 - - totalsize 411 - 412 - This is the total size of the DT block including the header. The 413 - "DT" block should enclose all data structures defined in this 414 - chapter (who are pointed to by offsets in this header). That is, 415 - the device-tree structure, strings, and the memory reserve map. 416 - 417 - - off_dt_struct 418 - 419 - This is an offset from the beginning of the header to the start 420 - of the "structure" part the device tree. (see 2) device tree) 421 - 422 - - off_dt_strings 423 - 424 - This is an offset from the beginning of the header to the start 425 - of the "strings" part of the device-tree 426 - 427 - - off_mem_rsvmap 428 - 429 - This is an offset from the beginning of the header to the start 430 - of the reserved memory map. This map is a list of pairs of 64- 431 - bit integers. Each pair is a physical address and a size. The 432 - list is terminated by an entry of size 0. This map provides the 433 - kernel with a list of physical memory areas that are "reserved" 434 - and thus not to be used for memory allocations, especially during 435 - early initialization. The kernel needs to allocate memory during 436 - boot for things like un-flattening the device-tree, allocating an 437 - MMU hash table, etc... Those allocations must be done in such a 438 - way to avoid overriding critical things like, on Open Firmware 439 - capable machines, the RTAS instance, or on some pSeries, the TCE 440 - tables used for the iommu. Typically, the reserve map should 441 - contain **at least** this DT block itself (header,total_size). If 442 - you are passing an initrd to the kernel, you should reserve it as 443 - well. You do not need to reserve the kernel image itself. The map 444 - should be 64-bit aligned. 445 - 446 - - version 447 - 448 - This is the version of this structure. Version 1 stops 449 - here. Version 2 adds an additional field boot_cpuid_phys. 450 - Version 3 adds the size of the strings block, allowing the kernel 451 - to reallocate it easily at boot and free up the unused flattened 452 - structure after expansion. Version 16 introduces a new more 453 - "compact" format for the tree itself that is however not backward 454 - compatible. Version 17 adds an additional field, size_dt_struct, 455 - allowing it to be reallocated or moved more easily (this is 456 - particularly useful for bootloaders which need to make 457 - adjustments to a device tree based on probed information). You 458 - should always generate a structure of the highest version defined 459 - at the time of your implementation. Currently that is version 17, 460 - unless you explicitly aim at being backward compatible. 461 - 462 - - last_comp_version 463 - 464 - Last compatible version. This indicates down to what version of 465 - the DT block you are backward compatible. For example, version 2 466 - is backward compatible with version 1 (that is, a kernel build 467 - for version 1 will be able to boot with a version 2 format). You 468 - should put a 1 in this field if you generate a device tree of 469 - version 1 to 3, or 16 if you generate a tree of version 16 or 17 470 - using the new unit name format. 471 - 472 - - boot_cpuid_phys 473 - 474 - This field only exist on version 2 headers. It indicate which 475 - physical CPU ID is calling the kernel entry point. This is used, 476 - among others, by kexec. If you are on an SMP system, this value 477 - should match the content of the "reg" property of the CPU node in 478 - the device-tree corresponding to the CPU calling the kernel entry 479 - point (see further chapters for more information on the required 480 - device-tree contents) 481 - 482 - - size_dt_strings 483 - 484 - This field only exists on version 3 and later headers. It 485 - gives the size of the "strings" section of the device tree (which 486 - starts at the offset given by off_dt_strings). 487 - 488 - - size_dt_struct 489 - 490 - This field only exists on version 17 and later headers. It gives 491 - the size of the "structure" section of the device tree (which 492 - starts at the offset given by off_dt_struct). 493 - 494 - So the typical layout of a DT block (though the various parts don't 495 - need to be in that order) looks like this (addresses go from top to 496 - bottom):: 497 - 498 - 499 - ------------------------------ 500 - base -> | struct boot_param_header | 501 - ------------------------------ 502 - | (alignment gap) (*) | 503 - ------------------------------ 504 - | memory reserve map | 505 - ------------------------------ 506 - | (alignment gap) | 507 - ------------------------------ 508 - | | 509 - | device-tree structure | 510 - | | 511 - ------------------------------ 512 - | (alignment gap) | 513 - ------------------------------ 514 - | | 515 - | device-tree strings | 516 - | | 517 - -----> ------------------------------ 518 - | 519 - | 520 - --- (base + totalsize) 521 - 522 - (*) The alignment gaps are not necessarily present; their presence 523 - and size are dependent on the various alignment requirements of 524 - the individual data blocks. 525 - 526 - 527 - 2) Device tree generalities 528 - --------------------------- 529 - 530 - This device-tree itself is separated in two different blocks, a 531 - structure block and a strings block. Both need to be aligned to a 4 532 - byte boundary. 533 - 534 - First, let's quickly describe the device-tree concept before detailing 535 - the storage format. This chapter does _not_ describe the detail of the 536 - required types of nodes & properties for the kernel, this is done 537 - later in chapter III. 538 - 539 - The device-tree layout is strongly inherited from the definition of 540 - the Open Firmware IEEE 1275 device-tree. It's basically a tree of 541 - nodes, each node having two or more named properties. A property can 542 - have a value or not. 543 - 544 - It is a tree, so each node has one and only one parent except for the 545 - root node who has no parent. 546 - 547 - A node has 2 names. The actual node name is generally contained in a 548 - property of type "name" in the node property list whose value is a 549 - zero terminated string and is mandatory for version 1 to 3 of the 550 - format definition (as it is in Open Firmware). Version 16 makes it 551 - optional as it can generate it from the unit name defined below. 552 - 553 - There is also a "unit name" that is used to differentiate nodes with 554 - the same name at the same level, it is usually made of the node 555 - names, the "@" sign, and a "unit address", which definition is 556 - specific to the bus type the node sits on. 557 - 558 - The unit name doesn't exist as a property per-se but is included in 559 - the device-tree structure. It is typically used to represent "path" in 560 - the device-tree. More details about the actual format of these will be 561 - below. 562 - 563 - The kernel generic code does not make any formal use of the 564 - unit address (though some board support code may do) so the only real 565 - requirement here for the unit address is to ensure uniqueness of 566 - the node unit name at a given level of the tree. Nodes with no notion 567 - of address and no possible sibling of the same name (like /memory or 568 - /cpus) may omit the unit address in the context of this specification, 569 - or use the "@0" default unit address. The unit name is used to define 570 - a node "full path", which is the concatenation of all parent node 571 - unit names separated with "/". 572 - 573 - The root node doesn't have a defined name, and isn't required to have 574 - a name property either if you are using version 3 or earlier of the 575 - format. It also has no unit address (no @ symbol followed by a unit 576 - address). The root node unit name is thus an empty string. The full 577 - path to the root node is "/". 578 - 579 - Every node which actually represents an actual device (that is, a node 580 - which isn't only a virtual "container" for more nodes, like "/cpus" 581 - is) is also required to have a "compatible" property indicating the 582 - specific hardware and an optional list of devices it is fully 583 - backwards compatible with. 584 - 585 - Finally, every node that can be referenced from a property in another 586 - node is required to have either a "phandle" or a "linux,phandle" 587 - property. Real Open Firmware implementations provide a unique 588 - "phandle" value for every node that the "prom_init()" trampoline code 589 - turns into "linux,phandle" properties. However, this is made optional 590 - if the flattened device tree is used directly. An example of a node 591 - referencing another node via "phandle" is when laying out the 592 - interrupt tree which will be described in a further version of this 593 - document. 594 - 595 - The "phandle" property is a 32-bit value that uniquely 596 - identifies a node. You are free to use whatever values or system of 597 - values, internal pointers, or whatever to generate these, the only 598 - requirement is that every node for which you provide that property has 599 - a unique value for it. 600 - 601 - Here is an example of a simple device-tree. In this example, an "o" 602 - designates a node followed by the node unit name. Properties are 603 - presented with their name followed by their content. "content" 604 - represents an ASCII string (zero terminated) value, while <content> 605 - represents a 32-bit value, specified in decimal or hexadecimal (the 606 - latter prefixed 0x). The various nodes in this example will be 607 - discussed in a later chapter. At this point, it is only meant to give 608 - you a idea of what a device-tree looks like. I have purposefully kept 609 - the "name" and "linux,phandle" properties which aren't necessary in 610 - order to give you a better idea of what the tree looks like in 611 - practice:: 612 - 613 - / o device-tree 614 - |- name = "device-tree" 615 - |- model = "MyBoardName" 616 - |- compatible = "MyBoardFamilyName" 617 - |- #address-cells = <2> 618 - |- #size-cells = <2> 619 - |- linux,phandle = <0> 620 - | 621 - o cpus 622 - | | - name = "cpus" 623 - | | - linux,phandle = <1> 624 - | | - #address-cells = <1> 625 - | | - #size-cells = <0> 626 - | | 627 - | o PowerPC,970@0 628 - | |- name = "PowerPC,970" 629 - | |- device_type = "cpu" 630 - | |- reg = <0> 631 - | |- clock-frequency = <0x5f5e1000> 632 - | |- 64-bit 633 - | |- linux,phandle = <2> 634 - | 635 - o memory@0 636 - | |- name = "memory" 637 - | |- device_type = "memory" 638 - | |- reg = <0x00000000 0x00000000 0x00000000 0x20000000> 639 - | |- linux,phandle = <3> 640 - | 641 - o chosen 642 - |- name = "chosen" 643 - |- bootargs = "root=/dev/sda2" 644 - |- linux,phandle = <4> 645 - 646 - This tree is almost a minimal tree. It pretty much contains the 647 - minimal set of required nodes and properties to boot a linux kernel; 648 - that is, some basic model information at the root, the CPUs, and the 649 - physical memory layout. It also includes misc information passed 650 - through /chosen, like in this example, the platform type (mandatory) 651 - and the kernel command line arguments (optional). 652 - 653 - The /cpus/PowerPC,970@0/64-bit property is an example of a 654 - property without a value. All other properties have a value. The 655 - significance of the #address-cells and #size-cells properties will be 656 - explained in chapter IV which defines precisely the required nodes and 657 - properties and their content. 658 - 659 - 660 - 3) Device tree "structure" block 661 - -------------------------------- 662 - 663 - The structure of the device tree is a linearized tree structure. The 664 - "OF_DT_BEGIN_NODE" token starts a new node, and the "OF_DT_END_NODE" 665 - ends that node definition. Child nodes are simply defined before 666 - "OF_DT_END_NODE" (that is nodes within the node). A 'token' is a 32 667 - bit value. The tree has to be "finished" with a OF_DT_END token 668 - 669 - Here's the basic structure of a single node: 670 - 671 - * token OF_DT_BEGIN_NODE (that is 0x00000001) 672 - * for version 1 to 3, this is the node full path as a zero 673 - terminated string, starting with "/". For version 16 and later, 674 - this is the node unit name only (or an empty string for the 675 - root node) 676 - * [align gap to next 4 bytes boundary] 677 - * for each property: 678 - 679 - * token OF_DT_PROP (that is 0x00000003) 680 - * 32-bit value of property value size in bytes (or 0 if no 681 - value) 682 - * 32-bit value of offset in string block of property name 683 - * property value data if any 684 - * [align gap to next 4 bytes boundary] 685 - 686 - * [child nodes if any] 687 - * token OF_DT_END_NODE (that is 0x00000002) 688 - 689 - So the node content can be summarized as a start token, a full path, 690 - a list of properties, a list of child nodes, and an end token. Every 691 - child node is a full node structure itself as defined above. 692 - 693 - NOTE: The above definition requires that all property definitions for 694 - a particular node MUST precede any subnode definitions for that node. 695 - Although the structure would not be ambiguous if properties and 696 - subnodes were intermingled, the kernel parser requires that the 697 - properties come first (up until at least 2.6.22). Any tools 698 - manipulating a flattened tree must take care to preserve this 699 - constraint. 700 - 701 - 4) Device tree "strings" block 702 - ------------------------------ 703 - 704 - In order to save space, property names, which are generally redundant, 705 - are stored separately in the "strings" block. This block is simply the 706 - whole bunch of zero terminated strings for all property names 707 - concatenated together. The device-tree property definitions in the 708 - structure block will contain offset values from the beginning of the 709 - strings block. 710 - 711 - 712 - III - Required content of the device tree 713 - ========================================= 714 - 715 - .. Warning:: 716 - 717 - All ``linux,*`` properties defined in this document apply only 718 - to a flattened device-tree. If your platform uses a real 719 - implementation of Open Firmware or an implementation compatible with 720 - the Open Firmware client interface, those properties will be created 721 - by the trampoline code in the kernel's prom_init() file. For example, 722 - that's where you'll have to add code to detect your board model and 723 - set the platform number. However, when using the flattened device-tree 724 - entry point, there is no prom_init() pass, and thus you have to 725 - provide those properties yourself. 726 - 727 - 728 - 1) Note about cells and address representation 729 - ---------------------------------------------- 730 - 731 - The general rule is documented in the various Open Firmware 732 - documentations. If you choose to describe a bus with the device-tree 733 - and there exist an OF bus binding, then you should follow the 734 - specification. However, the kernel does not require every single 735 - device or bus to be described by the device tree. 736 - 737 - In general, the format of an address for a device is defined by the 738 - parent bus type, based on the #address-cells and #size-cells 739 - properties. Note that the parent's parent definitions of #address-cells 740 - and #size-cells are not inherited so every node with children must specify 741 - them. The kernel requires the root node to have those properties defining 742 - addresses format for devices directly mapped on the processor bus. 743 - 744 - Those 2 properties define 'cells' for representing an address and a 745 - size. A "cell" is a 32-bit number. For example, if both contain 2 746 - like the example tree given above, then an address and a size are both 747 - composed of 2 cells, and each is a 64-bit number (cells are 748 - concatenated and expected to be in big endian format). Another example 749 - is the way Apple firmware defines them, with 2 cells for an address 750 - and one cell for a size. Most 32-bit implementations should define 751 - #address-cells and #size-cells to 1, which represents a 32-bit value. 752 - Some 32-bit processors allow for physical addresses greater than 32 753 - bits; these processors should define #address-cells as 2. 754 - 755 - "reg" properties are always a tuple of the type "address size" where 756 - the number of cells of address and size is specified by the bus 757 - #address-cells and #size-cells. When a bus supports various address 758 - spaces and other flags relative to a given address allocation (like 759 - prefetchable, etc...) those flags are usually added to the top level 760 - bits of the physical address. For example, a PCI physical address is 761 - made of 3 cells, the bottom two containing the actual address itself 762 - while the top cell contains address space indication, flags, and pci 763 - bus & device numbers. 764 - 765 - For buses that support dynamic allocation, it's the accepted practice 766 - to then not provide the address in "reg" (keep it 0) though while 767 - providing a flag indicating the address is dynamically allocated, and 768 - then, to provide a separate "assigned-addresses" property that 769 - contains the fully allocated addresses. See the PCI OF bindings for 770 - details. 771 - 772 - In general, a simple bus with no address space bits and no dynamic 773 - allocation is preferred if it reflects your hardware, as the existing 774 - kernel address parsing functions will work out of the box. If you 775 - define a bus type with a more complex address format, including things 776 - like address space bits, you'll have to add a bus translator to the 777 - prom_parse.c file of the recent kernels for your bus type. 778 - 779 - The "reg" property only defines addresses and sizes (if #size-cells is 780 - non-0) within a given bus. In order to translate addresses upward 781 - (that is into parent bus addresses, and possibly into CPU physical 782 - addresses), all buses must contain a "ranges" property. If the 783 - "ranges" property is missing at a given level, it's assumed that 784 - translation isn't possible, i.e., the registers are not visible on the 785 - parent bus. The format of the "ranges" property for a bus is a list 786 - of:: 787 - 788 - bus address, parent bus address, size 789 - 790 - "bus address" is in the format of the bus this bus node is defining, 791 - that is, for a PCI bridge, it would be a PCI address. Thus, (bus 792 - address, size) defines a range of addresses for child devices. "parent 793 - bus address" is in the format of the parent bus of this bus. For 794 - example, for a PCI host controller, that would be a CPU address. For a 795 - PCI<->ISA bridge, that would be a PCI address. It defines the base 796 - address in the parent bus where the beginning of that range is mapped. 797 - 798 - For new 64-bit board support, I recommend either the 2/2 format or 799 - Apple's 2/1 format which is slightly more compact since sizes usually 800 - fit in a single 32-bit word. New 32-bit board support should use a 801 - 1/1 format, unless the processor supports physical addresses greater 802 - than 32-bits, in which case a 2/1 format is recommended. 803 - 804 - Alternatively, the "ranges" property may be empty, indicating that the 805 - registers are visible on the parent bus using an identity mapping 806 - translation. In other words, the parent bus address space is the same 807 - as the child bus address space. 808 - 809 - 2) Note about "compatible" properties 810 - ------------------------------------- 811 - 812 - These properties are optional, but recommended in devices and the root 813 - node. The format of a "compatible" property is a list of concatenated 814 - zero terminated strings. They allow a device to express its 815 - compatibility with a family of similar devices, in some cases, 816 - allowing a single driver to match against several devices regardless 817 - of their actual names. 818 - 819 - 3) Note about "name" properties 820 - ------------------------------- 821 - 822 - While earlier users of Open Firmware like OldWorld macintoshes tended 823 - to use the actual device name for the "name" property, it's nowadays 824 - considered a good practice to use a name that is closer to the device 825 - class (often equal to device_type). For example, nowadays, Ethernet 826 - controllers are named "ethernet", an additional "model" property 827 - defining precisely the chip type/model, and "compatible" property 828 - defining the family in case a single driver can driver more than one 829 - of these chips. However, the kernel doesn't generally put any 830 - restriction on the "name" property; it is simply considered good 831 - practice to follow the standard and its evolutions as closely as 832 - possible. 833 - 834 - Note also that the new format version 16 makes the "name" property 835 - optional. If it's absent for a node, then the node's unit name is then 836 - used to reconstruct the name. That is, the part of the unit name 837 - before the "@" sign is used (or the entire unit name if no "@" sign 838 - is present). 839 - 840 - 4) Note about node and property names and character set 841 - ------------------------------------------------------- 842 - 843 - While Open Firmware provides more flexible usage of 8859-1, this 844 - specification enforces more strict rules. Nodes and properties should 845 - be comprised only of ASCII characters 'a' to 'z', '0' to 846 - '9', ',', '.', '_', '+', '#', '?', and '-'. Node names additionally 847 - allow uppercase characters 'A' to 'Z' (property names should be 848 - lowercase. The fact that vendors like Apple don't respect this rule is 849 - irrelevant here). Additionally, node and property names should always 850 - begin with a character in the range 'a' to 'z' (or 'A' to 'Z' for node 851 - names). 852 - 853 - The maximum number of characters for both nodes and property names 854 - is 31. In the case of node names, this is only the leftmost part of 855 - a unit name (the pure "name" property), it doesn't include the unit 856 - address which can extend beyond that limit. 857 - 858 - 859 - 5) Required nodes and properties 860 - -------------------------------- 861 - These are all that are currently required. However, it is strongly 862 - recommended that you expose PCI host bridges as documented in the 863 - PCI binding to Open Firmware, and your interrupt tree as documented 864 - in OF interrupt tree specification. 865 - 866 - a) The root node 867 - 868 - The root node requires some properties to be present: 869 - 870 - - model : this is your board name/model 871 - - #address-cells : address representation for "root" devices 872 - - #size-cells: the size representation for "root" devices 873 - - compatible : the board "family" generally finds its way here, 874 - for example, if you have 2 board models with a similar layout, 875 - that typically get driven by the same platform code in the 876 - kernel, you would specify the exact board model in the 877 - compatible property followed by an entry that represents the SoC 878 - model. 879 - 880 - The root node is also generally where you add additional properties 881 - specific to your board like the serial number if any, that sort of 882 - thing. It is recommended that if you add any "custom" property whose 883 - name may clash with standard defined ones, you prefix them with your 884 - vendor name and a comma. 885 - 886 - Additional properties for the root node: 887 - 888 - - serial-number : a string representing the device's serial number 889 - 890 - b) The /cpus node 891 - 892 - This node is the parent of all individual CPU nodes. It doesn't 893 - have any specific requirements, though it's generally good practice 894 - to have at least:: 895 - 896 - #address-cells = <00000001> 897 - #size-cells = <00000000> 898 - 899 - This defines that the "address" for a CPU is a single cell, and has 900 - no meaningful size. This is not necessary but the kernel will assume 901 - that format when reading the "reg" properties of a CPU node, see 902 - below 903 - 904 - c) The ``/cpus/*`` nodes 905 - 906 - So under /cpus, you are supposed to create a node for every CPU on 907 - the machine. There is no specific restriction on the name of the 908 - CPU, though it's common to call it <architecture>,<core>. For 909 - example, Apple uses PowerPC,G5 while IBM uses PowerPC,970FX. 910 - However, the Generic Names convention suggests that it would be 911 - better to simply use 'cpu' for each cpu node and use the compatible 912 - property to identify the specific cpu core. 913 - 914 - Required properties: 915 - 916 - - device_type : has to be "cpu" 917 - - reg : This is the physical CPU number, it's a single 32-bit cell 918 - and is also used as-is as the unit number for constructing the 919 - unit name in the full path. For example, with 2 CPUs, you would 920 - have the full path:: 921 - 922 - /cpus/PowerPC,970FX@0 923 - /cpus/PowerPC,970FX@1 924 - 925 - (unit addresses do not require leading zeroes) 926 - - d-cache-block-size : one cell, L1 data cache block size in bytes [#]_ 927 - - i-cache-block-size : one cell, L1 instruction cache block size in 928 - bytes 929 - - d-cache-size : one cell, size of L1 data cache in bytes 930 - - i-cache-size : one cell, size of L1 instruction cache in bytes 931 - 932 - .. [#] The cache "block" size is the size on which the cache management 933 - instructions operate. Historically, this document used the cache 934 - "line" size here which is incorrect. The kernel will prefer the cache 935 - block size and will fallback to cache line size for backward 936 - compatibility. 937 - 938 - Recommended properties: 939 - 940 - - timebase-frequency : a cell indicating the frequency of the 941 - timebase in Hz. This is not directly used by the generic code, 942 - but you are welcome to copy/paste the pSeries code for setting 943 - the kernel timebase/decrementer calibration based on this 944 - value. 945 - - clock-frequency : a cell indicating the CPU core clock frequency 946 - in Hz. A new property will be defined for 64-bit values, but if 947 - your frequency is < 4Ghz, one cell is enough. Here as well as 948 - for the above, the common code doesn't use that property, but 949 - you are welcome to re-use the pSeries or Maple one. A future 950 - kernel version might provide a common function for this. 951 - - d-cache-line-size : one cell, L1 data cache line size in bytes 952 - if different from the block size 953 - - i-cache-line-size : one cell, L1 instruction cache line size in 954 - bytes if different from the block size 955 - 956 - You are welcome to add any property you find relevant to your board, 957 - like some information about the mechanism used to soft-reset the 958 - CPUs. For example, Apple puts the GPIO number for CPU soft reset 959 - lines in there as a "soft-reset" property since they start secondary 960 - CPUs by soft-resetting them. 961 - 962 - 963 - d) the /memory node(s) 964 - 965 - To define the physical memory layout of your board, you should 966 - create one or more memory node(s). You can either create a single 967 - node with all memory ranges in its reg property, or you can create 968 - several nodes, as you wish. The unit address (@ part) used for the 969 - full path is the address of the first range of memory defined by a 970 - given node. If you use a single memory node, this will typically be 971 - @0. 972 - 973 - Required properties: 974 - 975 - - device_type : has to be "memory" 976 - - reg : This property contains all the physical memory ranges of 977 - your board. It's a list of addresses/sizes concatenated 978 - together, with the number of cells of each defined by the 979 - #address-cells and #size-cells of the root node. For example, 980 - with both of these properties being 2 like in the example given 981 - earlier, a 970 based machine with 6Gb of RAM could typically 982 - have a "reg" property here that looks like:: 983 - 984 - 00000000 00000000 00000000 80000000 985 - 00000001 00000000 00000001 00000000 986 - 987 - That is a range starting at 0 of 0x80000000 bytes and a range 988 - starting at 0x100000000 and of 0x100000000 bytes. You can see 989 - that there is no memory covering the IO hole between 2Gb and 990 - 4Gb. Some vendors prefer splitting those ranges into smaller 991 - segments, but the kernel doesn't care. 992 - 993 - Additional properties: 994 - 995 - - hotpluggable : The presence of this property provides an explicit 996 - hint to the operating system that this memory may potentially be 997 - removed later. The kernel can take this into consideration when 998 - doing nonmovable allocations and when laying out memory zones. 999 - 1000 - e) The /chosen node 1001 - 1002 - This node is a bit "special". Normally, that's where Open Firmware 1003 - puts some variable environment information, like the arguments, or 1004 - the default input/output devices. 1005 - 1006 - This specification makes a few of these mandatory, but also defines 1007 - some linux-specific properties that would be normally constructed by 1008 - the prom_init() trampoline when booting with an OF client interface, 1009 - but that you have to provide yourself when using the flattened format. 1010 - 1011 - Recommended properties: 1012 - 1013 - - bootargs : This zero-terminated string is passed as the kernel 1014 - command line 1015 - - linux,stdout-path : This is the full path to your standard 1016 - console device if any. Typically, if you have serial devices on 1017 - your board, you may want to put the full path to the one set as 1018 - the default console in the firmware here, for the kernel to pick 1019 - it up as its own default console. 1020 - 1021 - Note that u-boot creates and fills in the chosen node for platforms 1022 - that use it. 1023 - 1024 - (Note: a practice that is now obsolete was to include a property 1025 - under /chosen called interrupt-controller which had a phandle value 1026 - that pointed to the main interrupt controller) 1027 - 1028 - f) the /soc<SOCname> node 1029 - 1030 - This node is used to represent a system-on-a-chip (SoC) and must be 1031 - present if the processor is a SoC. The top-level soc node contains 1032 - information that is global to all devices on the SoC. The node name 1033 - should contain a unit address for the SoC, which is the base address 1034 - of the memory-mapped register set for the SoC. The name of an SoC 1035 - node should start with "soc", and the remainder of the name should 1036 - represent the part number for the soc. For example, the MPC8540's 1037 - soc node would be called "soc8540". 1038 - 1039 - Required properties: 1040 - 1041 - - ranges : Should be defined as specified in 1) to describe the 1042 - translation of SoC addresses for memory mapped SoC registers. 1043 - - bus-frequency: Contains the bus frequency for the SoC node. 1044 - Typically, the value of this field is filled in by the boot 1045 - loader. 1046 - - compatible : Exact model of the SoC 1047 - 1048 - 1049 - Recommended properties: 1050 - 1051 - - reg : This property defines the address and size of the 1052 - memory-mapped registers that are used for the SOC node itself. 1053 - It does not include the child device registers - these will be 1054 - defined inside each child node. The address specified in the 1055 - "reg" property should match the unit address of the SOC node. 1056 - - #address-cells : Address representation for "soc" devices. The 1057 - format of this field may vary depending on whether or not the 1058 - device registers are memory mapped. For memory mapped 1059 - registers, this field represents the number of cells needed to 1060 - represent the address of the registers. For SOCs that do not 1061 - use MMIO, a special address format should be defined that 1062 - contains enough cells to represent the required information. 1063 - See 1) above for more details on defining #address-cells. 1064 - - #size-cells : Size representation for "soc" devices 1065 - - #interrupt-cells : Defines the width of cells used to represent 1066 - interrupts. Typically this value is <2>, which includes a 1067 - 32-bit number that represents the interrupt number, and a 1068 - 32-bit number that represents the interrupt sense and level. 1069 - This field is only needed if the SOC contains an interrupt 1070 - controller. 1071 - 1072 - The SOC node may contain child nodes for each SOC device that the 1073 - platform uses. Nodes should not be created for devices which exist 1074 - on the SOC but are not used by a particular platform. See chapter VI 1075 - for more information on how to specify devices that are part of a SOC. 1076 - 1077 - Example SOC node for the MPC8540:: 1078 - 1079 - soc8540@e0000000 { 1080 - #address-cells = <1>; 1081 - #size-cells = <1>; 1082 - #interrupt-cells = <2>; 1083 - device_type = "soc"; 1084 - ranges = <0x00000000 0xe0000000 0x00100000> 1085 - reg = <0xe0000000 0x00003000>; 1086 - bus-frequency = <0>; 1087 - } 1088 - 1089 - 1090 - 1091 - IV - "dtc", the device tree compiler 1092 - ==================================== 1093 - 1094 - 1095 - dtc source code can be found at 1096 - <http://git.jdl.com/gitweb/?p=dtc.git> 1097 - 1098 - .. Warning:: 1099 - 1100 - This version is still in early development stage; the 1101 - resulting device-tree "blobs" have not yet been validated with the 1102 - kernel. The current generated block lacks a useful reserve map (it will 1103 - be fixed to generate an empty one, it's up to the bootloader to fill 1104 - it up) among others. The error handling needs work, bugs are lurking, 1105 - etc... 1106 - 1107 - dtc basically takes a device-tree in a given format and outputs a 1108 - device-tree in another format. The currently supported formats are: 1109 - 1110 - Input formats 1111 - ------------- 1112 - 1113 - - "dtb": "blob" format, that is a flattened device-tree block 1114 - with 1115 - header all in a binary blob. 1116 - - "dts": "source" format. This is a text file containing a 1117 - "source" for a device-tree. The format is defined later in this 1118 - chapter. 1119 - - "fs" format. This is a representation equivalent to the 1120 - output of /proc/device-tree, that is nodes are directories and 1121 - properties are files 1122 - 1123 - Output formats 1124 - -------------- 1125 - 1126 - - "dtb": "blob" format 1127 - - "dts": "source" format 1128 - - "asm": assembly language file. This is a file that can be 1129 - sourced by gas to generate a device-tree "blob". That file can 1130 - then simply be added to your Makefile. Additionally, the 1131 - assembly file exports some symbols that can be used. 1132 - 1133 - 1134 - The syntax of the dtc tool is:: 1135 - 1136 - dtc [-I <input-format>] [-O <output-format>] 1137 - [-o output-filename] [-V output_version] input_filename 1138 - 1139 - 1140 - The "output_version" defines what version of the "blob" format will be 1141 - generated. Supported versions are 1,2,3 and 16. The default is 1142 - currently version 3 but that may change in the future to version 16. 1143 - 1144 - Additionally, dtc performs various sanity checks on the tree, like the 1145 - uniqueness of linux, phandle properties, validity of strings, etc... 1146 - 1147 - The format of the .dts "source" file is "C" like, supports C and C++ 1148 - style comments:: 1149 - 1150 - / { 1151 - } 1152 - 1153 - The above is the "device-tree" definition. It's the only statement 1154 - supported currently at the toplevel. 1155 - 1156 - :: 1157 - 1158 - / { 1159 - property1 = "string_value"; /* define a property containing a 0 1160 - * terminated string 1161 - */ 1162 - 1163 - property2 = <0x1234abcd>; /* define a property containing a 1164 - * numerical 32-bit value (hexadecimal) 1165 - */ 1166 - 1167 - property3 = <0x12345678 0x12345678 0xdeadbeef>; 1168 - /* define a property containing 3 1169 - * numerical 32-bit values (cells) in 1170 - * hexadecimal 1171 - */ 1172 - property4 = [0x0a 0x0b 0x0c 0x0d 0xde 0xea 0xad 0xbe 0xef]; 1173 - /* define a property whose content is 1174 - * an arbitrary array of bytes 1175 - */ 1176 - 1177 - childnode@address { /* define a child node named "childnode" 1178 - * whose unit name is "childnode at 1179 - * address" 1180 - */ 1181 - 1182 - childprop = "hello\n"; /* define a property "childprop" of 1183 - * childnode (in this case, a string) 1184 - */ 1185 - }; 1186 - }; 1187 - 1188 - Nodes can contain other nodes etc... thus defining the hierarchical 1189 - structure of the tree. 1190 - 1191 - Strings support common escape sequences from C: "\n", "\t", "\r", 1192 - "\(octal value)", "\x(hex value)". 1193 - 1194 - It is also suggested that you pipe your source file through cpp (gcc 1195 - preprocessor) so you can use #include's, #define for constants, etc... 1196 - 1197 - Finally, various options are planned but not yet implemented, like 1198 - automatic generation of phandles, labels (exported to the asm file so 1199 - you can point to a property content and change it easily from whatever 1200 - you link the device-tree with), label or path instead of numeric value 1201 - in some cells to "point" to a node (replaced by a phandle at compile 1202 - time), export of reserve map address to the asm file, ability to 1203 - specify reserve map content at compile time, etc... 1204 - 1205 - We may provide a .h include file with common definitions of that 1206 - proves useful for some properties (like building PCI properties or 1207 - interrupt maps) though it may be better to add a notion of struct 1208 - definitions to the compiler... 1209 - 1210 - 1211 - V - Recommendations for a bootloader 1212 - ==================================== 1213 - 1214 - 1215 - Here are some various ideas/recommendations that have been proposed 1216 - while all this has been defined and implemented. 1217 - 1218 - - The bootloader may want to be able to use the device-tree itself 1219 - and may want to manipulate it (to add/edit some properties, 1220 - like physical memory size or kernel arguments). At this point, 2 1221 - choices can be made. Either the bootloader works directly on the 1222 - flattened format, or the bootloader has its own internal tree 1223 - representation with pointers (similar to the kernel one) and 1224 - re-flattens the tree when booting the kernel. The former is a bit 1225 - more difficult to edit/modify, the later requires probably a bit 1226 - more code to handle the tree structure. Note that the structure 1227 - format has been designed so it's relatively easy to "insert" 1228 - properties or nodes or delete them by just memmoving things 1229 - around. It contains no internal offsets or pointers for this 1230 - purpose. 1231 - 1232 - - An example of code for iterating nodes & retrieving properties 1233 - directly from the flattened tree format can be found in the kernel 1234 - file drivers/of/fdt.c. Look at the of_scan_flat_dt() function, 1235 - its usage in early_init_devtree(), and the corresponding various 1236 - early_init_dt_scan_*() callbacks. That code can be re-used in a 1237 - GPL bootloader, and as the author of that code, I would be happy 1238 - to discuss possible free licensing to any vendor who wishes to 1239 - integrate all or part of this code into a non-GPL bootloader. 1240 - (reference needed; who is 'I' here? ---gcl Jan 31, 2011) 1241 - 1242 - 1243 - 1244 - VI - System-on-a-chip devices and nodes 1245 - ======================================= 1246 - 1247 - Many companies are now starting to develop system-on-a-chip 1248 - processors, where the processor core (CPU) and many peripheral devices 1249 - exist on a single piece of silicon. For these SOCs, an SOC node 1250 - should be used that defines child nodes for the devices that make 1251 - up the SOC. While platforms are not required to use this model in 1252 - order to boot the kernel, it is highly encouraged that all SOC 1253 - implementations define as complete a flat-device-tree as possible to 1254 - describe the devices on the SOC. This will allow for the 1255 - genericization of much of the kernel code. 1256 - 1257 - 1258 - 1) Defining child nodes of an SOC 1259 - --------------------------------- 1260 - 1261 - Each device that is part of an SOC may have its own node entry inside 1262 - the SOC node. For each device that is included in the SOC, the unit 1263 - address property represents the address offset for this device's 1264 - memory-mapped registers in the parent's address space. The parent's 1265 - address space is defined by the "ranges" property in the top-level soc 1266 - node. The "reg" property for each node that exists directly under the 1267 - SOC node should contain the address mapping from the child address space 1268 - to the parent SOC address space and the size of the device's 1269 - memory-mapped register file. 1270 - 1271 - For many devices that may exist inside an SOC, there are predefined 1272 - specifications for the format of the device tree node. All SOC child 1273 - nodes should follow these specifications, except where noted in this 1274 - document. 1275 - 1276 - See appendix A for an example partial SOC node definition for the 1277 - MPC8540. 1278 - 1279 - 1280 - 2) Representing devices without a current OF specification 1281 - ---------------------------------------------------------- 1282 - 1283 - Currently, there are many devices on SoCs that do not have a standard 1284 - representation defined as part of the Open Firmware specifications, 1285 - mainly because the boards that contain these SoCs are not currently 1286 - booted using Open Firmware. Binding documentation for new devices 1287 - should be added to the Documentation/devicetree/bindings directory. 1288 - That directory will expand as device tree support is added to more and 1289 - more SoCs. 1290 - 1291 - 1292 - VII - Specifying interrupt information for devices 1293 - =================================================== 1294 - 1295 - The device tree represents the buses and devices of a hardware 1296 - system in a form similar to the physical bus topology of the 1297 - hardware. 1298 - 1299 - In addition, a logical 'interrupt tree' exists which represents the 1300 - hierarchy and routing of interrupts in the hardware. 1301 - 1302 - The interrupt tree model is fully described in the 1303 - document "Open Firmware Recommended Practice: Interrupt 1304 - Mapping Version 0.9". The document is available at: 1305 - <http://www.devicetree.org/open-firmware/practice/> 1306 - 1307 - 1) interrupts property 1308 - ---------------------- 1309 - 1310 - Devices that generate interrupts to a single interrupt controller 1311 - should use the conventional OF representation described in the 1312 - OF interrupt mapping documentation. 1313 - 1314 - Each device which generates interrupts must have an 'interrupt' 1315 - property. The interrupt property value is an arbitrary number of 1316 - of 'interrupt specifier' values which describe the interrupt or 1317 - interrupts for the device. 1318 - 1319 - The encoding of an interrupt specifier is determined by the 1320 - interrupt domain in which the device is located in the 1321 - interrupt tree. The root of an interrupt domain specifies in 1322 - its #interrupt-cells property the number of 32-bit cells 1323 - required to encode an interrupt specifier. See the OF interrupt 1324 - mapping documentation for a detailed description of domains. 1325 - 1326 - For example, the binding for the OpenPIC interrupt controller 1327 - specifies an #interrupt-cells value of 2 to encode the interrupt 1328 - number and level/sense information. All interrupt children in an 1329 - OpenPIC interrupt domain use 2 cells per interrupt in their interrupts 1330 - property. 1331 - 1332 - The PCI bus binding specifies a #interrupt-cells value of 1 to encode 1333 - which interrupt pin (INTA,INTB,INTC,INTD) is used. 1334 - 1335 - 2) interrupt-parent property 1336 - ---------------------------- 1337 - 1338 - The interrupt-parent property is specified to define an explicit 1339 - link between a device node and its interrupt parent in 1340 - the interrupt tree. The value of interrupt-parent is the 1341 - phandle of the parent node. 1342 - 1343 - If the interrupt-parent property is not defined for a node, its 1344 - interrupt parent is assumed to be an ancestor in the node's 1345 - *device tree* hierarchy. 1346 - 1347 - 3) OpenPIC Interrupt Controllers 1348 - -------------------------------- 1349 - 1350 - OpenPIC interrupt controllers require 2 cells to encode 1351 - interrupt information. The first cell defines the interrupt 1352 - number. The second cell defines the sense and level 1353 - information. 1354 - 1355 - Sense and level information should be encoded as follows: 1356 - 1357 - == ======================================== 1358 - 0 low to high edge sensitive type enabled 1359 - 1 active low level sensitive type enabled 1360 - 2 active high level sensitive type enabled 1361 - 3 high to low edge sensitive type enabled 1362 - == ======================================== 1363 - 1364 - 4) ISA Interrupt Controllers 1365 - ---------------------------- 1366 - 1367 - ISA PIC interrupt controllers require 2 cells to encode 1368 - interrupt information. The first cell defines the interrupt 1369 - number. The second cell defines the sense and level 1370 - information. 1371 - 1372 - ISA PIC interrupt controllers should adhere to the ISA PIC 1373 - encodings listed below: 1374 - 1375 - == ======================================== 1376 - 0 active low level sensitive type enabled 1377 - 1 active high level sensitive type enabled 1378 - 2 high to low edge sensitive type enabled 1379 - 3 low to high edge sensitive type enabled 1380 - == ======================================== 1381 - 1382 - VIII - Specifying Device Power Management Information (sleep property) 1383 - ====================================================================== 1384 - 1385 - Devices on SOCs often have mechanisms for placing devices into low-power 1386 - states that are decoupled from the devices' own register blocks. Sometimes, 1387 - this information is more complicated than a cell-index property can 1388 - reasonably describe. Thus, each device controlled in such a manner 1389 - may contain a "sleep" property which describes these connections. 1390 - 1391 - The sleep property consists of one or more sleep resources, each of 1392 - which consists of a phandle to a sleep controller, followed by a 1393 - controller-specific sleep specifier of zero or more cells. 1394 - 1395 - The semantics of what type of low power modes are possible are defined 1396 - by the sleep controller. Some examples of the types of low power modes 1397 - that may be supported are: 1398 - 1399 - - Dynamic: The device may be disabled or enabled at any time. 1400 - - System Suspend: The device may request to be disabled or remain 1401 - awake during system suspend, but will not be disabled until then. 1402 - - Permanent: The device is disabled permanently (until the next hard 1403 - reset). 1404 - 1405 - Some devices may share a clock domain with each other, such that they should 1406 - only be suspended when none of the devices are in use. Where reasonable, 1407 - such nodes should be placed on a virtual bus, where the bus has the sleep 1408 - property. If the clock domain is shared among devices that cannot be 1409 - reasonably grouped in this manner, then create a virtual sleep controller 1410 - (similar to an interrupt nexus, except that defining a standardized 1411 - sleep-map should wait until its necessity is demonstrated). 1412 - 1413 - IX - Specifying dma bus information 1414 - =================================== 1415 - 1416 - Some devices may have DMA memory range shifted relatively to the beginning of 1417 - RAM, or even placed outside of kernel RAM. For example, the Keystone 2 SoC 1418 - worked in LPAE mode with 4G memory has: 1419 - - RAM range: [0x8 0000 0000, 0x8 FFFF FFFF] 1420 - - DMA range: [ 0x8000 0000, 0xFFFF FFFF] 1421 - and DMA range is aliased into first 2G of RAM in HW. 1422 - 1423 - In such cases, DMA addresses translation should be performed between CPU phys 1424 - and DMA addresses. The "dma-ranges" property is intended to be used 1425 - for describing the configuration of such system in DT. 1426 - 1427 - In addition, each DMA master device on the DMA bus may or may not support 1428 - coherent DMA operations. The "dma-coherent" property is intended to be used 1429 - for identifying devices supported coherent DMA operations in DT. 1430 - 1431 - * DMA Bus master 1432 - 1433 - Optional property: 1434 - 1435 - - dma-ranges: <prop-encoded-array> encoded as arbitrary number of triplets of 1436 - (child-bus-address, parent-bus-address, length). Each triplet specified 1437 - describes a contiguous DMA address range. 1438 - The dma-ranges property is used to describe the direct memory access (DMA) 1439 - structure of a memory-mapped bus whose device tree parent can be accessed 1440 - from DMA operations originating from the bus. It provides a means of 1441 - defining a mapping or translation between the physical address space of 1442 - the bus and the physical address space of the parent of the bus. 1443 - (for more information see the Devicetree Specification) 1444 - 1445 - * DMA Bus child 1446 - 1447 - Optional property: 1448 - 1449 - - dma-ranges: <empty> value. if present - It means that DMA addresses 1450 - translation has to be enabled for this device. 1451 - - dma-coherent: Present if dma operations are coherent 1452 - 1453 - Example:: 1454 - 1455 - soc { 1456 - compatible = "ti,keystone","simple-bus"; 1457 - ranges = <0x0 0x0 0x0 0xc0000000>; 1458 - dma-ranges = <0x80000000 0x8 0x00000000 0x80000000>; 1459 - 1460 - [...] 1461 - 1462 - usb: usb@2680000 { 1463 - compatible = "ti,keystone-dwc3"; 1464 - 1465 - [...] 1466 - dma-coherent; 1467 - }; 1468 - }; 1469 - 1470 - Appendix A - Sample SOC node for MPC8540 1471 - ======================================== 1472 - 1473 - :: 1474 - 1475 - soc@e0000000 { 1476 - #address-cells = <1>; 1477 - #size-cells = <1>; 1478 - compatible = "fsl,mpc8540-ccsr", "simple-bus"; 1479 - device_type = "soc"; 1480 - ranges = <0x00000000 0xe0000000 0x00100000> 1481 - bus-frequency = <0>; 1482 - interrupt-parent = <&pic>; 1483 - 1484 - ethernet@24000 { 1485 - #address-cells = <1>; 1486 - #size-cells = <1>; 1487 - device_type = "network"; 1488 - model = "TSEC"; 1489 - compatible = "gianfar", "simple-bus"; 1490 - reg = <0x24000 0x1000>; 1491 - local-mac-address = [ 0x00 0xE0 0x0C 0x00 0x73 0x00 ]; 1492 - interrupts = <0x29 2 0x30 2 0x34 2>; 1493 - phy-handle = <&phy0>; 1494 - sleep = <&pmc 0x00000080>; 1495 - ranges; 1496 - 1497 - mdio@24520 { 1498 - reg = <0x24520 0x20>; 1499 - compatible = "fsl,gianfar-mdio"; 1500 - 1501 - phy0: ethernet-phy@0 { 1502 - interrupts = <5 1>; 1503 - reg = <0>; 1504 - }; 1505 - 1506 - phy1: ethernet-phy@1 { 1507 - interrupts = <5 1>; 1508 - reg = <1>; 1509 - }; 1510 - 1511 - phy3: ethernet-phy@3 { 1512 - interrupts = <7 1>; 1513 - reg = <3>; 1514 - }; 1515 - }; 1516 - }; 1517 - 1518 - ethernet@25000 { 1519 - device_type = "network"; 1520 - model = "TSEC"; 1521 - compatible = "gianfar"; 1522 - reg = <0x25000 0x1000>; 1523 - local-mac-address = [ 0x00 0xE0 0x0C 0x00 0x73 0x01 ]; 1524 - interrupts = <0x13 2 0x14 2 0x18 2>; 1525 - phy-handle = <&phy1>; 1526 - sleep = <&pmc 0x00000040>; 1527 - }; 1528 - 1529 - ethernet@26000 { 1530 - device_type = "network"; 1531 - model = "FEC"; 1532 - compatible = "gianfar"; 1533 - reg = <0x26000 0x1000>; 1534 - local-mac-address = [ 0x00 0xE0 0x0C 0x00 0x73 0x02 ]; 1535 - interrupts = <0x41 2>; 1536 - phy-handle = <&phy3>; 1537 - sleep = <&pmc 0x00000020>; 1538 - }; 1539 - 1540 - serial@4500 { 1541 - #address-cells = <1>; 1542 - #size-cells = <1>; 1543 - compatible = "fsl,mpc8540-duart", "simple-bus"; 1544 - sleep = <&pmc 0x00000002>; 1545 - ranges; 1546 - 1547 - serial@4500 { 1548 - device_type = "serial"; 1549 - compatible = "ns16550"; 1550 - reg = <0x4500 0x100>; 1551 - clock-frequency = <0>; 1552 - interrupts = <0x42 2>; 1553 - }; 1554 - 1555 - serial@4600 { 1556 - device_type = "serial"; 1557 - compatible = "ns16550"; 1558 - reg = <0x4600 0x100>; 1559 - clock-frequency = <0>; 1560 - interrupts = <0x42 2>; 1561 - }; 1562 - }; 1563 - 1564 - pic: pic@40000 { 1565 - interrupt-controller; 1566 - #address-cells = <0>; 1567 - #interrupt-cells = <2>; 1568 - reg = <0x40000 0x40000>; 1569 - compatible = "chrp,open-pic"; 1570 - device_type = "open-pic"; 1571 - }; 1572 - 1573 - i2c@3000 { 1574 - interrupts = <0x43 2>; 1575 - reg = <0x3000 0x100>; 1576 - compatible = "fsl-i2c"; 1577 - dfsrr; 1578 - sleep = <&pmc 0x00000004>; 1579 - }; 1580 - 1581 - pmc: power@e0070 { 1582 - compatible = "fsl,mpc8540-pmc", "fsl,mpc8548-pmc"; 1583 - reg = <0xe0070 0x20>; 1584 - }; 1585 - };
-1
Documentation/devicetree/index.rst
··· 15 15 overlay-notes 16 16 17 17 bindings/index 18 - booting-without-of
+28
Documentation/mips/booting.rst
··· 1 + .. SPDX-License-Identifier: GPL-2.0 2 + 3 + BMIPS DeviceTree Booting 4 + ------------------------ 5 + 6 + Some bootloaders only support a single entry point, at the start of the 7 + kernel image. Other bootloaders will jump to the ELF start address. 8 + Both schemes are supported; CONFIG_BOOT_RAW=y and CONFIG_NO_EXCEPT_FILL=y, 9 + so the first instruction immediately jumps to kernel_entry(). 10 + 11 + Similar to the arch/arm case (b), a DT-aware bootloader is expected to 12 + set up the following registers: 13 + 14 + a0 : 0 15 + 16 + a1 : 0xffffffff 17 + 18 + a2 : Physical pointer to the device tree block (defined in chapter 19 + II) in RAM. The device tree can be located anywhere in the first 20 + 512MB of the physical address space (0x00000000 - 0x1fffffff), 21 + aligned on a 64 bit boundary. 22 + 23 + Legacy bootloaders do not use this convention, and they do not pass in a 24 + DT block. In this case, Linux will look for a builtin DTB, selected via 25 + CONFIG_DT_*. 26 + 27 + This convention is defined for 32-bit systems only, as there are not 28 + currently any 64-bit BMIPS implementations.
+1
Documentation/mips/index.rst
··· 8 8 :maxdepth: 2 9 9 :numbered: 10 10 11 + booting 11 12 ingenic-tcu 12 13 13 14 .. only:: subproject and html
+110
Documentation/powerpc/booting.rst
··· 1 + .. SPDX-License-Identifier: GPL-2.0 2 + 3 + DeviceTree Booting 4 + ------------------ 5 + 6 + During the development of the Linux/ppc64 kernel, and more specifically, the 7 + addition of new platform types outside of the old IBM pSeries/iSeries pair, it 8 + was decided to enforce some strict rules regarding the kernel entry and 9 + bootloader <-> kernel interfaces, in order to avoid the degeneration that had 10 + become the ppc32 kernel entry point and the way a new platform should be added 11 + to the kernel. The legacy iSeries platform breaks those rules as it predates 12 + this scheme, but no new board support will be accepted in the main tree that 13 + doesn't follow them properly. In addition, since the advent of the arch/powerpc 14 + merged architecture for ppc32 and ppc64, new 32-bit platforms and 32-bit 15 + platforms which move into arch/powerpc will be required to use these rules as 16 + well. 17 + 18 + The main requirement that will be defined in more detail below is the presence 19 + of a device-tree whose format is defined after Open Firmware specification. 20 + However, in order to make life easier to embedded board vendors, the kernel 21 + doesn't require the device-tree to represent every device in the system and only 22 + requires some nodes and properties to be present. For example, the kernel does 23 + not require you to create a node for every PCI device in the system. It is a 24 + requirement to have a node for PCI host bridges in order to provide interrupt 25 + routing information and memory/IO ranges, among others. It is also recommended 26 + to define nodes for on chip devices and other buses that don't specifically fit 27 + in an existing OF specification. This creates a great flexibility in the way the 28 + kernel can then probe those and match drivers to device, without having to hard 29 + code all sorts of tables. It also makes it more flexible for board vendors to do 30 + minor hardware upgrades without significantly impacting the kernel code or 31 + cluttering it with special cases. 32 + 33 + 34 + Entry point 35 + ~~~~~~~~~~~ 36 + 37 + There is one single entry point to the kernel, at the start 38 + of the kernel image. That entry point supports two calling 39 + conventions: 40 + 41 + a) Boot from Open Firmware. If your firmware is compatible 42 + with Open Firmware (IEEE 1275) or provides an OF compatible 43 + client interface API (support for "interpret" callback of 44 + forth words isn't required), you can enter the kernel with: 45 + 46 + r5 : OF callback pointer as defined by IEEE 1275 47 + bindings to powerpc. Only the 32-bit client interface 48 + is currently supported 49 + 50 + r3, r4 : address & length of an initrd if any or 0 51 + 52 + The MMU is either on or off; the kernel will run the 53 + trampoline located in arch/powerpc/kernel/prom_init.c to 54 + extract the device-tree and other information from open 55 + firmware and build a flattened device-tree as described 56 + in b). prom_init() will then re-enter the kernel using 57 + the second method. This trampoline code runs in the 58 + context of the firmware, which is supposed to handle all 59 + exceptions during that time. 60 + 61 + b) Direct entry with a flattened device-tree block. This entry 62 + point is called by a) after the OF trampoline and can also be 63 + called directly by a bootloader that does not support the Open 64 + Firmware client interface. It is also used by "kexec" to 65 + implement "hot" booting of a new kernel from a previous 66 + running one. This method is what I will describe in more 67 + details in this document, as method a) is simply standard Open 68 + Firmware, and thus should be implemented according to the 69 + various standard documents defining it and its binding to the 70 + PowerPC platform. The entry point definition then becomes: 71 + 72 + r3 : physical pointer to the device-tree block 73 + (defined in chapter II) in RAM 74 + 75 + r4 : physical pointer to the kernel itself. This is 76 + used by the assembly code to properly disable the MMU 77 + in case you are entering the kernel with MMU enabled 78 + and a non-1:1 mapping. 79 + 80 + r5 : NULL (as to differentiate with method a) 81 + 82 + Note about SMP entry: Either your firmware puts your other 83 + CPUs in some sleep loop or spin loop in ROM where you can get 84 + them out via a soft reset or some other means, in which case 85 + you don't need to care, or you'll have to enter the kernel 86 + with all CPUs. The way to do that with method b) will be 87 + described in a later revision of this document. 88 + 89 + Board supports (platforms) are not exclusive config options. An 90 + arbitrary set of board supports can be built in a single kernel 91 + image. The kernel will "know" what set of functions to use for a 92 + given platform based on the content of the device-tree. Thus, you 93 + should: 94 + 95 + a) add your platform support as a _boolean_ option in 96 + arch/powerpc/Kconfig, following the example of PPC_PSERIES, 97 + PPC_PMAC and PPC_MAPLE. The later is probably a good 98 + example of a board support to start from. 99 + 100 + b) create your main platform file as 101 + "arch/powerpc/platforms/myplatform/myboard_setup.c" and add it 102 + to the Makefile under the condition of your ``CONFIG_`` 103 + option. This file will define a structure of type "ppc_md" 104 + containing the various callbacks that the generic code will 105 + use to get to your platform specific code 106 + 107 + A kernel image may support multiple platforms, but only if the 108 + platforms feature the same core architecture. A single kernel build 109 + cannot support both configurations with Book E and configurations 110 + with classic Powerpc architectures.
+1
Documentation/powerpc/index.rst
··· 7 7 .. toctree:: 8 8 :maxdepth: 1 9 9 10 + booting 10 11 bootwrapper 11 12 cpu_families 12 13 cpu_features
+12
Documentation/sh/booting.rst
··· 1 + .. SPDX-License-Identifier: GPL-2.0 2 + 3 + DeviceTree Booting 4 + ------------------ 5 + 6 + Device-tree compatible SH bootloaders are expected to provide the physical 7 + address of the device tree blob in r4. Since legacy bootloaders did not 8 + guarantee any particular initial register state, kernels built to 9 + inter-operate with old bootloaders must either use a builtin DTB or 10 + select a legacy board option (something other than CONFIG_SH_DEVICE_TREE) 11 + that does not use device tree. Support for the latter is being phased out 12 + in favor of device tree.
+1
Documentation/sh/index.rst
··· 7 7 .. toctree:: 8 8 :maxdepth: 1 9 9 10 + booting 10 11 new-machine 11 12 register-banks 12 13
+21
Documentation/x86/booting-dt.rst
··· 1 + .. SPDX-License-Identifier: GPL-2.0 2 + 3 + DeviceTree Booting 4 + ------------------ 5 + 6 + There is one single 32bit entry point to the kernel at code32_start, 7 + the decompressor (the real mode entry point goes to the same 32bit 8 + entry point once it switched into protected mode). That entry point 9 + supports one calling convention which is documented in 10 + Documentation/x86/boot.rst 11 + The physical pointer to the device-tree block is passed via setup_data 12 + which requires at least boot protocol 2.09. 13 + The type filed is defined as 14 + 15 + #define SETUP_DTB 2 16 + 17 + This device-tree is used as an extension to the "boot page". As such it 18 + does not parse / consider data which is already covered by the boot 19 + page. This includes memory size, reserved ranges, command line arguments 20 + or initrd address. It simply holds information which can not be retrieved 21 + otherwise like interrupt routing or a list of devices behind an I2C bus.
+1
Documentation/x86/index.rst
··· 9 9 :numbered: 10 10 11 11 boot 12 + booting-dt 12 13 cpuinfo 13 14 topology 14 15 exception-tables
+1 -1
drivers/of/platform.c
··· 590 590 void of_platform_depopulate(struct device *parent) 591 591 { 592 592 if (parent->of_node && of_node_check_flag(parent->of_node, OF_POPULATED_BUS)) { 593 - device_for_each_child(parent, NULL, of_platform_device_destroy); 593 + device_for_each_child_reverse(parent, NULL, of_platform_device_destroy); 594 594 of_node_clear_flag(parent->of_node, OF_POPULATED_BUS); 595 595 } 596 596 }
+1 -1
scripts/Makefile.lib
··· 328 328 DT_CHECKER ?= dt-validate 329 329 DT_BINDING_DIR := Documentation/devicetree/bindings 330 330 # DT_TMP_SCHEMA may be overridden from Documentation/devicetree/bindings/Makefile 331 - DT_TMP_SCHEMA ?= $(objtree)/$(DT_BINDING_DIR)/processed-schema.yaml 331 + DT_TMP_SCHEMA ?= $(objtree)/$(DT_BINDING_DIR)/processed-schema.json 332 332 333 333 quiet_cmd_dtb_check = CHECK $@ 334 334 cmd_dtb_check = $(DT_CHECKER) -u $(srctree)/$(DT_BINDING_DIR) -p $(DT_TMP_SCHEMA) $@
+1 -3
scripts/dtc/checks.c
··· 891 891 return; 892 892 893 893 prop = get_property(node, "reg"); 894 - if (!prop) { 895 - FAIL(c, dti, node, "missing PCI reg property"); 894 + if (!prop) 896 895 return; 897 - } 898 896 899 897 cells = (cell_t *)prop->val.val; 900 898 if (cells[1] || cells[2])
+2 -2
scripts/dtc/dtc-parser.y
··· 476 476 ; 477 477 478 478 integer_shift: 479 - integer_shift DT_LSHIFT integer_add { $$ = $1 << $3; } 480 - | integer_shift DT_RSHIFT integer_add { $$ = $1 >> $3; } 479 + integer_shift DT_LSHIFT integer_add { $$ = ($3 < 64) ? ($1 << $3) : 0; } 480 + | integer_shift DT_RSHIFT integer_add { $$ = ($3 < 64) ? ($1 >> $3) : 0; } 481 481 | integer_add 482 482 ; 483 483
+2 -1
scripts/dtc/dtx_diff
··· 29 29 -s SRCTREE linux kernel source tree is at path SRCTREE 30 30 (default is current directory) 31 31 -S linux kernel source tree is at root of current git repo 32 - -T Annotate output .dts with input source file and line (-T -T for more details) 32 + -T annotate output .dts with input source file and line 33 + (-T -T for more details) 33 34 -u unsorted, do not sort DTx 34 35 35 36
+21 -10
scripts/dtc/libfdt/fdt.c
··· 134 134 135 135 const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int len) 136 136 { 137 - unsigned absoffset = offset + fdt_off_dt_struct(fdt); 137 + unsigned int uoffset = offset; 138 + unsigned int absoffset = offset + fdt_off_dt_struct(fdt); 139 + 140 + if (offset < 0) 141 + return NULL; 138 142 139 143 if (!can_assume(VALID_INPUT)) 140 - if ((absoffset < offset) 144 + if ((absoffset < uoffset) 141 145 || ((absoffset + len) < absoffset) 142 146 || (absoffset + len) > fdt_totalsize(fdt)) 143 147 return NULL; 144 148 145 149 if (can_assume(LATEST) || fdt_version(fdt) >= 0x11) 146 - if (((offset + len) < offset) 150 + if (((uoffset + len) < uoffset) 147 151 || ((offset + len) > fdt_size_dt_struct(fdt))) 148 152 return NULL; 149 153 ··· 210 206 211 207 int fdt_check_node_offset_(const void *fdt, int offset) 212 208 { 213 - if (can_assume(VALID_INPUT)) 214 - return offset; 215 - if ((offset < 0) || (offset % FDT_TAGSIZE) 216 - || (fdt_next_tag(fdt, offset, &offset) != FDT_BEGIN_NODE)) 209 + if (!can_assume(VALID_INPUT) 210 + && ((offset < 0) || (offset % FDT_TAGSIZE))) 211 + return -FDT_ERR_BADOFFSET; 212 + 213 + if (fdt_next_tag(fdt, offset, &offset) != FDT_BEGIN_NODE) 217 214 return -FDT_ERR_BADOFFSET; 218 215 219 216 return offset; ··· 222 217 223 218 int fdt_check_prop_offset_(const void *fdt, int offset) 224 219 { 225 - if ((offset < 0) || (offset % FDT_TAGSIZE) 226 - || (fdt_next_tag(fdt, offset, &offset) != FDT_PROP)) 220 + if (!can_assume(VALID_INPUT) 221 + && ((offset < 0) || (offset % FDT_TAGSIZE))) 222 + return -FDT_ERR_BADOFFSET; 223 + 224 + if (fdt_next_tag(fdt, offset, &offset) != FDT_PROP) 227 225 return -FDT_ERR_BADOFFSET; 228 226 229 227 return offset; ··· 314 306 315 307 int fdt_move(const void *fdt, void *buf, int bufsize) 316 308 { 309 + if (!can_assume(VALID_INPUT) && bufsize < 0) 310 + return -FDT_ERR_NOSPACE; 311 + 317 312 FDT_RO_PROBE(fdt); 318 313 319 - if (fdt_totalsize(fdt) > bufsize) 314 + if (fdt_totalsize(fdt) > (unsigned int)bufsize) 320 315 return -FDT_ERR_NOSPACE; 321 316 322 317 memmove(buf, fdt, fdt_totalsize(fdt));
+2 -1
scripts/dtc/libfdt/fdt_overlay.c
··· 241 241 242 242 if (fixup_len % sizeof(uint32_t)) 243 243 return -FDT_ERR_BADOVERLAY; 244 + fixup_len /= sizeof(uint32_t); 244 245 245 246 tree_val = fdt_getprop(fdto, tree_node, name, &tree_len); 246 247 if (!tree_val) { ··· 251 250 return tree_len; 252 251 } 253 252 254 - for (i = 0; i < (fixup_len / sizeof(uint32_t)); i++) { 253 + for (i = 0; i < fixup_len; i++) { 255 254 fdt32_t adj_val; 256 255 uint32_t poffset; 257 256
+11 -9
scripts/dtc/libfdt/fdt_ro.c
··· 53 53 54 54 err = -FDT_ERR_BADOFFSET; 55 55 absoffset = stroffset + fdt_off_dt_strings(fdt); 56 - if (absoffset >= totalsize) 56 + if (absoffset >= (unsigned)totalsize) 57 57 goto fail; 58 58 len = totalsize - absoffset; 59 59 ··· 61 61 if (stroffset < 0) 62 62 goto fail; 63 63 if (can_assume(LATEST) || fdt_version(fdt) >= 17) { 64 - if (stroffset >= fdt_size_dt_strings(fdt)) 64 + if ((unsigned)stroffset >= fdt_size_dt_strings(fdt)) 65 65 goto fail; 66 66 if ((fdt_size_dt_strings(fdt) - stroffset) < len) 67 67 len = fdt_size_dt_strings(fdt) - stroffset; 68 68 } 69 69 } else if (fdt_magic(fdt) == FDT_SW_MAGIC) { 70 - if ((stroffset >= 0) 71 - || (stroffset < -fdt_size_dt_strings(fdt))) 70 + unsigned int sw_stroffset = -stroffset; 71 + 72 + if ((stroffset >= 0) || 73 + (sw_stroffset > fdt_size_dt_strings(fdt))) 72 74 goto fail; 73 - if ((-stroffset) < len) 74 - len = -stroffset; 75 + if (sw_stroffset < len) 76 + len = sw_stroffset; 75 77 } else { 76 78 err = -FDT_ERR_INTERNAL; 77 79 goto fail; ··· 159 157 160 158 static const struct fdt_reserve_entry *fdt_mem_rsv(const void *fdt, int n) 161 159 { 162 - int offset = n * sizeof(struct fdt_reserve_entry); 163 - int absoffset = fdt_off_mem_rsvmap(fdt) + offset; 160 + unsigned int offset = n * sizeof(struct fdt_reserve_entry); 161 + unsigned int absoffset = fdt_off_mem_rsvmap(fdt) + offset; 164 162 165 163 if (!can_assume(VALID_INPUT)) { 166 164 if (absoffset < fdt_off_mem_rsvmap(fdt)) ··· 682 680 { 683 681 int offset; 684 682 685 - if ((phandle == 0) || (phandle == -1)) 683 + if ((phandle == 0) || (phandle == ~0U)) 686 684 return -FDT_ERR_BADPHANDLE; 687 685 688 686 FDT_RO_PROBE(fdt);
+1 -1
scripts/dtc/libfdt/fdt_rw.c
··· 59 59 60 60 if ((oldlen < 0) || (soff + oldlen < soff) || (soff + oldlen > dsize)) 61 61 return -FDT_ERR_BADOFFSET; 62 - if ((p < (char *)fdt) || (dsize + newlen < oldlen)) 62 + if ((p < (char *)fdt) || (dsize + newlen < (unsigned)oldlen)) 63 63 return -FDT_ERR_BADOFFSET; 64 64 if (dsize - oldlen + newlen > fdt_totalsize(fdt)) 65 65 return -FDT_ERR_NOSPACE;
+2 -2
scripts/dtc/libfdt/fdt_strerror.c
··· 40 40 FDT_ERRTABENT(FDT_ERR_NOPHANDLES), 41 41 FDT_ERRTABENT(FDT_ERR_BADFLAGS), 42 42 }; 43 - #define FDT_ERRTABSIZE (sizeof(fdt_errtable) / sizeof(fdt_errtable[0])) 43 + #define FDT_ERRTABSIZE ((int)(sizeof(fdt_errtable) / sizeof(fdt_errtable[0]))) 44 44 45 45 const char *fdt_strerror(int errval) 46 46 { ··· 48 48 return "<valid offset/length>"; 49 49 else if (errval == 0) 50 50 return "<no error>"; 51 - else if (errval > -FDT_ERRTABSIZE) { 51 + else if (-errval < FDT_ERRTABSIZE) { 52 52 const char *s = fdt_errtable[-errval].str; 53 53 54 54 if (s)
+15 -12
scripts/dtc/libfdt/fdt_sw.c
··· 93 93 94 94 static void *fdt_grab_space_(void *fdt, size_t len) 95 95 { 96 - int offset = fdt_size_dt_struct(fdt); 97 - int spaceleft; 96 + unsigned int offset = fdt_size_dt_struct(fdt); 97 + unsigned int spaceleft; 98 98 99 99 spaceleft = fdt_totalsize(fdt) - fdt_off_dt_struct(fdt) 100 100 - fdt_size_dt_strings(fdt); ··· 108 108 109 109 int fdt_create_with_flags(void *buf, int bufsize, uint32_t flags) 110 110 { 111 - const size_t hdrsize = FDT_ALIGN(sizeof(struct fdt_header), 112 - sizeof(struct fdt_reserve_entry)); 111 + const int hdrsize = FDT_ALIGN(sizeof(struct fdt_header), 112 + sizeof(struct fdt_reserve_entry)); 113 113 void *fdt = buf; 114 114 115 115 if (bufsize < hdrsize) ··· 152 152 153 153 FDT_SW_PROBE(fdt); 154 154 155 + if (bufsize < 0) 156 + return -FDT_ERR_NOSPACE; 157 + 155 158 headsize = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt); 156 159 tailsize = fdt_size_dt_strings(fdt); 157 160 ··· 162 159 headsize + tailsize > fdt_totalsize(fdt)) 163 160 return -FDT_ERR_INTERNAL; 164 161 165 - if ((headsize + tailsize) > bufsize) 162 + if ((headsize + tailsize) > (unsigned)bufsize) 166 163 return -FDT_ERR_NOSPACE; 167 164 168 165 oldtail = (char *)fdt + fdt_totalsize(fdt) - tailsize; ··· 250 247 static int fdt_add_string_(void *fdt, const char *s) 251 248 { 252 249 char *strtab = (char *)fdt + fdt_totalsize(fdt); 253 - int strtabsize = fdt_size_dt_strings(fdt); 254 - int len = strlen(s) + 1; 255 - int struct_top, offset; 250 + unsigned int strtabsize = fdt_size_dt_strings(fdt); 251 + unsigned int len = strlen(s) + 1; 252 + unsigned int struct_top, offset; 256 253 257 - offset = -strtabsize - len; 254 + offset = strtabsize + len; 258 255 struct_top = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt); 259 - if (fdt_totalsize(fdt) + offset < struct_top) 256 + if (fdt_totalsize(fdt) - offset < struct_top) 260 257 return 0; /* no more room :( */ 261 258 262 - memcpy(strtab + offset, s, len); 259 + memcpy(strtab - offset, s, len); 263 260 fdt_set_size_dt_strings(fdt, strtabsize + len); 264 - return offset; 261 + return -offset; 265 262 } 266 263 267 264 /* Must only be used to roll back in case of error */
+1 -1
scripts/dtc/libfdt/fdt_wip.c
··· 23 23 if (!propval) 24 24 return proplen; 25 25 26 - if (proplen < (len + idx)) 26 + if ((unsigned)proplen < (len + idx)) 27 27 return -FDT_ERR_NOSPACE; 28 28 29 29 memcpy((char *)propval + idx, val, len);
+1
scripts/dtc/util.h
··· 2 2 #ifndef UTIL_H 3 3 #define UTIL_H 4 4 5 + #include <stdlib.h> 5 6 #include <stdarg.h> 6 7 #include <stdbool.h> 7 8 #include <getopt.h>
+1 -1
scripts/dtc/version_gen.h
··· 1 - #define DTC_VERSION "DTC 1.6.0-g9d7888cb" 1 + #define DTC_VERSION "DTC 1.6.0-gcbca977e"