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

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

Pull devicetree updates from Rob Herring:

- Unit test for overlays with GPIO hogs

- Improve dma-ranges parsing to handle dma-ranges with multiple entries

- Update dtc to upstream version v1.6.0-2-g87a656ae5ff9

- Improve overlay error reporting

- Device link support for power-domains and hwlocks bindings

- Add vendor prefixes for Beacon, Topwise, ENE, Dell, SG Micro, Elida,
PocketBook, Xiaomi, Linutronix, OzzMaker, Waveshare Electronics, and
ITE Tech

- Add deprecated Marvell vendor prefix 'mrvl'

- A bunch of binding conversions to DT schema continues. Of note, the
common serial and USB connector bindings are converted.

- Add more Arm CPU compatibles

- Drop Mark Rutland as DT maintainer :(

* tag 'devicetree-for-5.7' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (106 commits)
MAINTAINERS: drop an old reference to stm32 pwm timers doc
MAINTAINERS: dt: update etnaviv file reference
dt-bindings: usb: dwc2: fix bindings for amlogic, meson-gxbb-usb
dt-bindings: uniphier-system-bus: fix warning in the example
dt-bindings: display: meson-vpu: fix indentation of reg-names' "items"
dt-bindings: iio: Fix adi, ltc2983 uint64-matrix schema constraints
dt-bindings: power: Fix example for power-domain
dt-bindings: arm: Add some constraints for PSCI nodes
of: some unittest overlays not untracked
of: gpio unittest kfree() wrong object
dt-bindings: phy: convert phy-rockchip-inno-usb2 bindings to yaml
dt-bindings: serial: sh-sci: Convert to json-schema
dt-bindings: serial: Document serialN aliases
dt-bindings: thermal: tsens: Set 'additionalProperties: false'
dt-bindings: thermal: tsens: Fix nvmem-cell-names schema
dt-bindings: vendor-prefixes: Add Beacon vendor prefix
dt-bindings: vendor-prefixes: Add Topwise
of: of_private.h: Replace zero-length array with flexible-array member
docs: dt: fix a broken reference to input.yaml
docs: dt: fix references to ap806-system-controller.txt
...

+5753 -2663
+2
Documentation/devicetree/bindings/arm/altera/socfpga-clk-manager.yaml
··· 21 21 required: 22 22 - compatible 23 23 24 + additionalProperties: false 25 + 24 26 examples: 25 27 - | 26 28 clkmgr@ffd04000 {
+2
Documentation/devicetree/bindings/arm/amlogic/amlogic,meson-gx-ao-secure.yaml
··· 43 43 - compatible 44 44 - reg 45 45 46 + additionalProperties: false 47 + 46 48 examples: 47 49 - | 48 50 ao-secure@140 {
+11
Documentation/devicetree/bindings/arm/cpus.yaml
··· 123 123 - arm,cortex-a12 124 124 - arm,cortex-a15 125 125 - arm,cortex-a17 126 + - arm,cortex-a32 127 + - arm,cortex-a34 128 + - arm,cortex-a35 126 129 - arm,cortex-a53 127 130 - arm,cortex-a55 128 131 - arm,cortex-a57 132 + - arm,cortex-a65 129 133 - arm,cortex-a72 130 134 - arm,cortex-a73 135 + - arm,cortex-a75 136 + - arm,cortex-a76 137 + - arm,cortex-a77 131 138 - arm,cortex-m0 132 139 - arm,cortex-m0+ 133 140 - arm,cortex-m1 ··· 143 136 - arm,cortex-r4 144 137 - arm,cortex-r5 145 138 - arm,cortex-r7 139 + - arm,neoverse-e1 140 + - arm,neoverse-n1 146 141 - brcm,brahma-b15 147 142 - brcm,brahma-b53 148 143 - brcm,vulcan ··· 164 155 - nvidia,tegra194-carmel 165 156 - qcom,krait 166 157 - qcom,kryo 158 + - qcom,kryo260 159 + - qcom,kryo280 167 160 - qcom,kryo385 168 161 - qcom,kryo485 169 162 - qcom,scorpion
+1 -1
Documentation/devicetree/bindings/arm/freescale/fsl,scu.txt
··· 164 164 - compatible: should be: 165 165 "fsl,imx8qxp-sc-key" 166 166 followed by "fsl,imx-sc-key"; 167 - - linux,keycodes: See Documentation/devicetree/bindings/input/keys.txt 167 + - linux,keycodes: See Documentation/devicetree/bindings/input/input.yaml 168 168 169 169 Example (imx8qxp): 170 170 -------------
+24 -21
Documentation/devicetree/bindings/arm/l2c2x0.yaml
··· 29 29 30 30 properties: 31 31 compatible: 32 - enum: 33 - - arm,pl310-cache 34 - - arm,l220-cache 35 - - arm,l210-cache 36 - # DEPRECATED by "brcm,bcm11351-a2-pl310-cache" 37 - - bcm,bcm11351-a2-pl310-cache 38 - # For Broadcom bcm11351 chipset where an 39 - # offset needs to be added to the address before passing down to the L2 40 - # cache controller 41 - - brcm,bcm11351-a2-pl310-cache 42 - # Marvell Controller designed to be 43 - # compatible with the ARM one, with system cache mode (meaning 44 - # maintenance operations on L1 are broadcasted to the L2 and L2 45 - # performs the same operation). 46 - - marvell,aurora-system-cache 47 - # Marvell Controller designed to be 48 - # compatible with the ARM one with outer cache mode. 49 - - marvell,aurora-outer-cache 50 - # Marvell Tauros3 cache controller, compatible 51 - # with arm,pl310-cache controller. 52 - - marvell,tauros3-cache 32 + oneOf: 33 + - enum: 34 + - arm,pl310-cache 35 + - arm,l220-cache 36 + - arm,l210-cache 37 + # DEPRECATED by "brcm,bcm11351-a2-pl310-cache" 38 + - bcm,bcm11351-a2-pl310-cache 39 + # For Broadcom bcm11351 chipset where an 40 + # offset needs to be added to the address before passing down to the L2 41 + # cache controller 42 + - brcm,bcm11351-a2-pl310-cache 43 + # Marvell Controller designed to be 44 + # compatible with the ARM one, with system cache mode (meaning 45 + # maintenance operations on L1 are broadcasted to the L2 and L2 46 + # performs the same operation). 47 + - marvell,aurora-system-cache 48 + # Marvell Controller designed to be 49 + # compatible with the ARM one with outer cache mode. 50 + - marvell,aurora-outer-cache 51 + - items: 52 + # Marvell Tauros3 cache controller, compatible 53 + # with arm,pl310-cache controller. 54 + - const: marvell,tauros3-cache 55 + - const: arm,pl310-cache 53 56 54 57 cache-level: 55 58 const: 2
+4 -1
Documentation/devicetree/bindings/arm/mrvl/mrvl.yaml
··· 28 28 items: 29 29 - enum: 30 30 - mrvl,mmp2-brownstone 31 + - olpc,xo-1.75 31 32 - const: mrvl,mmp2 32 33 - description: MMP3 based boards 33 34 items: 34 - - const: mrvl,mmp3 35 + - enum: 36 + - dell,wyse-ariel 37 + - const: marvell,mmp3 35 38 ...
+2
Documentation/devicetree/bindings/arm/msm/qcom,llcc.yaml
··· 43 43 - reg-names 44 44 - interrupts 45 45 46 + additionalProperties: false 47 + 46 48 examples: 47 49 - | 48 50 #include <dt-bindings/interrupt-controller/arm-gic.h>
+25 -16
Documentation/devicetree/bindings/arm/pmu.yaml
··· 20 20 items: 21 21 - enum: 22 22 - apm,potenza-pmu 23 - - arm,armv8-pmuv3 24 - - arm,cortex-a73-pmu 25 - - arm,cortex-a72-pmu 26 - - arm,cortex-a57-pmu 27 - - arm,cortex-a53-pmu 28 - - arm,cortex-a35-pmu 29 - - arm,cortex-a17-pmu 30 - - arm,cortex-a15-pmu 31 - - arm,cortex-a12-pmu 32 - - arm,cortex-a9-pmu 33 - - arm,cortex-a8-pmu 34 - - arm,cortex-a7-pmu 35 - - arm,cortex-a5-pmu 36 - - arm,arm11mpcore-pmu 37 - - arm,arm1176-pmu 23 + - arm,armv8-pmuv3 # Only for s/w models 38 24 - arm,arm1136-pmu 25 + - arm,arm1176-pmu 26 + - arm,arm11mpcore-pmu 27 + - arm,cortex-a5-pmu 28 + - arm,cortex-a7-pmu 29 + - arm,cortex-a8-pmu 30 + - arm,cortex-a9-pmu 31 + - arm,cortex-a12-pmu 32 + - arm,cortex-a15-pmu 33 + - arm,cortex-a17-pmu 34 + - arm,cortex-a32-pmu 35 + - arm,cortex-a34-pmu 36 + - arm,cortex-a35-pmu 37 + - arm,cortex-a53-pmu 38 + - arm,cortex-a55-pmu 39 + - arm,cortex-a57-pmu 40 + - arm,cortex-a65-pmu 41 + - arm,cortex-a72-pmu 42 + - arm,cortex-a73-pmu 43 + - arm,cortex-a75-pmu 44 + - arm,cortex-a76-pmu 45 + - arm,cortex-a77-pmu 46 + - arm,neoverse-e1-pmu 47 + - arm,neoverse-n1-pmu 39 48 - brcm,vulcan-pmu 40 49 - cavium,thunder-pmu 50 + - qcom,krait-pmu 41 51 - qcom,scorpion-pmu 42 52 - qcom,scorpion-mp-pmu 43 - - qcom,krait-pmu 44 53 45 54 interrupts: 46 55 # Don't know how many CPUs, so no constraints to specify
+5
Documentation/devicetree/bindings/arm/psci.yaml
··· 32 32 http://infocenter.arm.com/help/topic/com.arm.doc.den0022c/DEN0022C_Power_State_Coordination_Interface.pdf 33 33 34 34 properties: 35 + $nodename: 36 + const: psci 37 + 35 38 compatible: 36 39 oneOf: 37 40 - description: ··· 143 140 required: 144 141 - cpu_off 145 142 - cpu_on 143 + 144 + additionalProperties: false 146 145 147 146 examples: 148 147 - |+
+2
Documentation/devicetree/bindings/arm/renesas,prr.yaml
··· 27 27 - compatible 28 28 - reg 29 29 30 + additionalProperties: false 31 + 30 32 examples: 31 33 - | 32 34 prr: chipid@ff000044 {
+2
Documentation/devicetree/bindings/arm/samsung/exynos-chipid.yaml
··· 30 30 - compatible 31 31 - reg 32 32 33 + additionalProperties: false 34 + 33 35 examples: 34 36 - | 35 37 chipid@10000000 {
+2
Documentation/devicetree/bindings/arm/samsung/pmu.yaml
··· 89 89 - clock-names 90 90 - clocks 91 91 92 + additionalProperties: false 93 + 92 94 examples: 93 95 - | 94 96 #include <dt-bindings/clock/exynos5250.h>
+2
Documentation/devicetree/bindings/arm/samsung/samsung-secure-firmware.yaml
··· 23 23 - compatible 24 24 - reg 25 25 26 + additionalProperties: false 27 + 26 28 examples: 27 29 - | 28 30 firmware@203f000 {
-60
Documentation/devicetree/bindings/arm/socionext/cache-uniphier.txt
··· 1 - UniPhier outer cache controller 2 - 3 - UniPhier SoCs are integrated with a full-custom outer cache controller system. 4 - All of them have a level 2 cache controller, and some have a level 3 cache 5 - controller as well. 6 - 7 - Required properties: 8 - - compatible: should be "socionext,uniphier-system-cache" 9 - - reg: offsets and lengths of the register sets for the device. It should 10 - contain 3 regions: control register, revision register, operation register, 11 - in this order. 12 - - cache-unified: specifies the cache is a unified cache. 13 - - cache-size: specifies the size in bytes of the cache 14 - - cache-sets: specifies the number of associativity sets of the cache 15 - - cache-line-size: specifies the line size in bytes 16 - - cache-level: specifies the level in the cache hierarchy. The value should 17 - be 2 for L2 cache, 3 for L3 cache, etc. 18 - 19 - Optional properties: 20 - - next-level-cache: phandle to the next level cache if present. The next level 21 - cache should be also compatible with "socionext,uniphier-system-cache". 22 - 23 - The L2 cache must exist to use the L3 cache; the cache hierarchy must be 24 - indicated correctly with "next-level-cache" properties. 25 - 26 - Example 1 (system with L2): 27 - l2: l2-cache@500c0000 { 28 - compatible = "socionext,uniphier-system-cache"; 29 - reg = <0x500c0000 0x2000>, <0x503c0100 0x4>, 30 - <0x506c0000 0x400>; 31 - cache-unified; 32 - cache-size = <0x80000>; 33 - cache-sets = <256>; 34 - cache-line-size = <128>; 35 - cache-level = <2>; 36 - }; 37 - 38 - Example 2 (system with L2 and L3): 39 - l2: l2-cache@500c0000 { 40 - compatible = "socionext,uniphier-system-cache"; 41 - reg = <0x500c0000 0x2000>, <0x503c0100 0x8>, 42 - <0x506c0000 0x400>; 43 - cache-unified; 44 - cache-size = <0x200000>; 45 - cache-sets = <512>; 46 - cache-line-size = <128>; 47 - cache-level = <2>; 48 - next-level-cache = <&l3>; 49 - }; 50 - 51 - l3: l3-cache@500c8000 { 52 - compatible = "socionext,uniphier-system-cache"; 53 - reg = <0x500c8000 0x2000>, <0x503c8100 0x8>, 54 - <0x506c8000 0x400>; 55 - cache-unified; 56 - cache-size = <0x400000>; 57 - cache-sets = <512>; 58 - cache-line-size = <256>; 59 - cache-level = <3>; 60 - };
+102
Documentation/devicetree/bindings/arm/socionext/socionext,uniphier-system-cache.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/socionext/socionext,uniphier-system-cache.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: UniPhier outer cache controller 8 + 9 + description: | 10 + UniPhier ARM 32-bit SoCs are integrated with a full-custom outer cache 11 + controller system. All of them have a level 2 cache controller, and some 12 + have a level 3 cache controller as well. 13 + 14 + maintainers: 15 + - Masahiro Yamada <yamada.masahiro@socionext.com> 16 + 17 + properties: 18 + compatible: 19 + const: socionext,uniphier-system-cache 20 + 21 + reg: 22 + description: | 23 + should contain 3 regions: control register, revision register, 24 + operation register, in this order. 25 + minItems: 3 26 + maxItems: 3 27 + 28 + interrupts: 29 + description: | 30 + Interrupts can be used to notify the completion of cache operations. 31 + The number of interrupts should match to the number of CPU cores. 32 + The specified interrupts correspond to CPU0, CPU1, ... in this order. 33 + minItems: 1 34 + maxItems: 4 35 + 36 + cache-unified: true 37 + 38 + cache-size: true 39 + 40 + cache-sets: true 41 + 42 + cache-line-size: true 43 + 44 + cache-level: 45 + minimum: 2 46 + maximum: 3 47 + 48 + next-level-cache: true 49 + 50 + allOf: 51 + - $ref: /schemas/cache-controller.yaml# 52 + 53 + additionalProperties: false 54 + 55 + required: 56 + - compatible 57 + - reg 58 + - interrupts 59 + - cache-unified 60 + - cache-size 61 + - cache-sets 62 + - cache-line-size 63 + - cache-level 64 + 65 + examples: 66 + - | 67 + // System with L2. 68 + cache-controller@500c0000 { 69 + compatible = "socionext,uniphier-system-cache"; 70 + reg = <0x500c0000 0x2000>, <0x503c0100 0x4>, <0x506c0000 0x400>; 71 + interrupts = <0 174 4>, <0 175 4>, <0 190 4>, <0 191 4>; 72 + cache-unified; 73 + cache-size = <0x140000>; 74 + cache-sets = <512>; 75 + cache-line-size = <128>; 76 + cache-level = <2>; 77 + }; 78 + - | 79 + // System with L2 and L3. 80 + // L2 should specify the next level cache by 'next-level-cache'. 81 + l2: cache-controller@500c0000 { 82 + compatible = "socionext,uniphier-system-cache"; 83 + reg = <0x500c0000 0x2000>, <0x503c0100 0x8>, <0x506c0000 0x400>; 84 + interrupts = <0 190 4>, <0 191 4>; 85 + cache-unified; 86 + cache-size = <0x200000>; 87 + cache-sets = <512>; 88 + cache-line-size = <128>; 89 + cache-level = <2>; 90 + next-level-cache = <&l3>; 91 + }; 92 + 93 + l3: cache-controller@500c8000 { 94 + compatible = "socionext,uniphier-system-cache"; 95 + reg = <0x500c8000 0x2000>, <0x503c8100 0x8>, <0x506c8000 0x400>; 96 + interrupts = <0 174 4>, <0 175 4>; 97 + cache-unified; 98 + cache-size = <0x200000>; 99 + cache-sets = <512>; 100 + cache-line-size = <256>; 101 + cache-level = <3>; 102 + };
-47
Documentation/devicetree/bindings/arm/socionext/uniphier.txt
··· 1 - Socionext UniPhier SoC family 2 - ----------------------------- 3 - 4 - Required properties in the root node: 5 - - compatible: should contain board and SoC compatible strings 6 - 7 - SoC and board compatible strings: 8 - (sorted chronologically) 9 - 10 - - LD4 SoC: "socionext,uniphier-ld4" 11 - - Reference Board: "socionext,uniphier-ld4-ref" 12 - 13 - - Pro4 SoC: "socionext,uniphier-pro4" 14 - - Reference Board: "socionext,uniphier-pro4-ref" 15 - - Ace Board: "socionext,uniphier-pro4-ace" 16 - - Sanji Board: "socionext,uniphier-pro4-sanji" 17 - 18 - - sLD8 SoC: "socionext,uniphier-sld8" 19 - - Reference Board: "socionext,uniphier-sld8-ref" 20 - 21 - - PXs2 SoC: "socionext,uniphier-pxs2" 22 - - Gentil Board: "socionext,uniphier-pxs2-gentil" 23 - - Vodka Board: "socionext,uniphier-pxs2-vodka" 24 - 25 - - LD6b SoC: "socionext,uniphier-ld6b" 26 - - Reference Board: "socionext,uniphier-ld6b-ref" 27 - 28 - - LD11 SoC: "socionext,uniphier-ld11" 29 - - Reference Board: "socionext,uniphier-ld11-ref" 30 - - Global Board: "socionext,uniphier-ld11-global" 31 - 32 - - LD20 SoC: "socionext,uniphier-ld20" 33 - - Reference Board: "socionext,uniphier-ld20-ref" 34 - - Global Board: "socionext,uniphier-ld20-global" 35 - 36 - - PXs3 SoC: "socionext,uniphier-pxs3" 37 - - Reference Board: "socionext,uniphier-pxs3-ref" 38 - 39 - Example: 40 - 41 - /dts-v1/; 42 - 43 - / { 44 - compatible = "socionext,uniphier-ld20-ref", "socionext,uniphier-ld20"; 45 - 46 - ... 47 - };
+61
Documentation/devicetree/bindings/arm/socionext/uniphier.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/socionext/uniphier.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Socionext UniPhier platform device tree bindings 8 + 9 + maintainers: 10 + - Masahiro Yamada <yamada.masahiro@socionext.com> 11 + 12 + properties: 13 + $nodename: 14 + const: / 15 + compatible: 16 + oneOf: 17 + - description: LD4 SoC boards 18 + items: 19 + - enum: 20 + - socionext,uniphier-ld4-ref 21 + - const: socionext,uniphier-ld4 22 + - description: Pro4 SoC boards 23 + items: 24 + - enum: 25 + - socionext,uniphier-pro4-ace 26 + - socionext,uniphier-pro4-ref 27 + - socionext,uniphier-pro4-sanji 28 + - const: socionext,uniphier-pro4 29 + - description: sLD8 SoC boards 30 + items: 31 + - enum: 32 + - socionext,uniphier-sld8-ref 33 + - const: socionext,uniphier-sld8 34 + - description: PXs2 SoC boards 35 + items: 36 + - enum: 37 + - socionext,uniphier-pxs2-gentil 38 + - socionext,uniphier-pxs2-vodka 39 + - const: socionext,uniphier-pxs2 40 + - description: LD6b SoC boards 41 + items: 42 + - enum: 43 + - socionext,uniphier-ld6b-ref 44 + - const: socionext,uniphier-ld6b 45 + - description: LD11 SoC boards 46 + items: 47 + - enum: 48 + - socionext,uniphier-ld11-global 49 + - socionext,uniphier-ld11-ref 50 + - const: socionext,uniphier-ld11 51 + - description: LD20 SoC boards 52 + items: 53 + - enum: 54 + - socionext,uniphier-ld20-global 55 + - socionext,uniphier-ld20-ref 56 + - const: socionext,uniphier-ld20 57 + - description: PXs3 SoC boards 58 + items: 59 + - enum: 60 + - socionext,uniphier-pxs3-ref 61 + - const: socionext,uniphier-pxs3
+2
Documentation/devicetree/bindings/arm/stm32/st,stm32-syscon.yaml
··· 29 29 - reg 30 30 - clocks 31 31 32 + additionalProperties: false 33 + 32 34 examples: 33 35 - | 34 36 #include <dt-bindings/clock/stm32mp1-clks.h>
+71
Documentation/devicetree/bindings/ata/renesas,rcar-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/renesas,rcar-sata.yaml#" 5 + $schema: "http://devicetree.org/meta-schemas/core.yaml#" 6 + 7 + title: Renesas R-Car Serial-ATA Interface 8 + 9 + maintainers: 10 + - Geert Uytterhoeven <geert+renesas@glider.be> 11 + 12 + properties: 13 + compatible: 14 + oneOf: 15 + - items: 16 + - enum: 17 + - renesas,sata-r8a7779 # R-Car H1 18 + - items: 19 + - enum: 20 + - renesas,sata-r8a7790-es1 # R-Car H2 ES1 21 + - renesas,sata-r8a7790 # R-Car H2 other than ES1 22 + - renesas,sata-r8a7791 # R-Car M2-W 23 + - renesas,sata-r8a7793 # R-Car M2-N 24 + - const: renesas,rcar-gen2-sata # generic R-Car Gen2 25 + - items: 26 + - enum: 27 + - renesas,sata-r8a774b1 # RZ/G2N 28 + - renesas,sata-r8a7795 # R-Car H3 29 + - renesas,sata-r8a77965 # R-Car M3-N 30 + - const: renesas,rcar-gen3-sata # generic R-Car Gen3 or RZ/G2 31 + 32 + reg: 33 + maxItems: 1 34 + 35 + interrupts: 36 + maxItems: 1 37 + 38 + clocks: 39 + maxItems: 1 40 + 41 + iommus: 42 + maxItems: 1 43 + 44 + power-domains: 45 + maxItems: 1 46 + 47 + resets: 48 + maxItems: 1 49 + 50 + required: 51 + - compatible 52 + - reg 53 + - interrupts 54 + - clocks 55 + 56 + additionalProperties: false 57 + 58 + examples: 59 + - | 60 + #include <dt-bindings/clock/r8a7791-cpg-mssr.h> 61 + #include <dt-bindings/interrupt-controller/arm-gic.h> 62 + #include <dt-bindings/power/r8a7791-sysc.h> 63 + 64 + sata@ee300000 { 65 + compatible = "renesas,sata-r8a7791", "renesas,rcar-gen2-sata"; 66 + reg = <0xee300000 0x200000>; 67 + interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>; 68 + clocks = <&cpg CPG_MOD 815>; 69 + power-domains = <&sysc R8A7791_PD_ALWAYS_ON>; 70 + resets = <&cpg 815>; 71 + };
-36
Documentation/devicetree/bindings/ata/sata_rcar.txt
··· 1 - * Renesas R-Car SATA 2 - 3 - Required properties: 4 - - compatible : should contain one or more of the following: 5 - - "renesas,sata-r8a774b1" for RZ/G2N 6 - - "renesas,sata-r8a7779" for R-Car H1 7 - - "renesas,sata-r8a7790-es1" for R-Car H2 ES1 8 - - "renesas,sata-r8a7790" for R-Car H2 other than ES1 9 - - "renesas,sata-r8a7791" for R-Car M2-W 10 - - "renesas,sata-r8a7793" for R-Car M2-N 11 - - "renesas,sata-r8a7795" for R-Car H3 12 - - "renesas,sata-r8a77965" for R-Car M3-N 13 - - "renesas,rcar-gen2-sata" for a generic R-Car Gen2 14 - compatible device 15 - - "renesas,rcar-gen3-sata" for a generic R-Car Gen3 or 16 - RZ/G2 compatible device 17 - - "renesas,rcar-sata" is deprecated 18 - 19 - When compatible with the generic version nodes 20 - must list the SoC-specific version corresponding 21 - to the platform first followed by the generic 22 - version. 23 - 24 - - reg : address and length of the SATA registers; 25 - - interrupts : must consist of one interrupt specifier. 26 - - clocks : must contain a reference to the functional clock. 27 - 28 - Example: 29 - 30 - sata0: sata@ee300000 { 31 - compatible = "renesas,sata-r8a7791", "renesas,rcar-gen2-sata"; 32 - reg = <0 0xee300000 0 0x2000>; 33 - interrupt-parent = <&gic>; 34 - interrupts = <0 105 IRQ_TYPE_LEVEL_HIGH>; 35 - clocks = <&mstp8_clks R8A7791_CLK_SATA0>; 36 - };
+96
Documentation/devicetree/bindings/bus/socionext,uniphier-system-bus.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/bus/socionext,uniphier-system-bus.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: UniPhier System Bus 8 + 9 + description: | 10 + The UniPhier System Bus is an external bus that connects on-board devices to 11 + the UniPhier SoC. It is a simple (semi-)parallel bus with address, data, and 12 + some control signals. It supports up to 8 banks (chip selects). 13 + 14 + Before any access to the bus, the bus controller must be configured; the bus 15 + controller registers provide the control for the translation from the offset 16 + within each bank to the CPU-viewed address. The needed setup includes the 17 + base address, the size of each bank. Optionally, some timing parameters can 18 + be optimized for faster bus access. 19 + 20 + maintainers: 21 + - Masahiro Yamada <yamada.masahiro@socionext.com> 22 + 23 + properties: 24 + compatible: 25 + const: socionext,uniphier-system-bus 26 + 27 + reg: 28 + maxItems: 1 29 + 30 + "#address-cells": 31 + description: | 32 + The first cell is the bank number (chip select). 33 + The second cell is the address offset within the bank. 34 + const: 2 35 + 36 + "#size-cells": 37 + const: 1 38 + 39 + ranges: 40 + description: | 41 + Provide address translation from the System Bus to the parent bus. 42 + 43 + Note: 44 + The address region(s) that can be assigned for the System Bus is 45 + implementation defined. Some SoCs can use 0x00000000-0x0fffffff and 46 + 0x40000000-0x4fffffff, while other SoCs only 0x40000000-0x4fffffff. 47 + There might be additional limitations depending on SoCs and the boot mode. 48 + The address translation is arbitrary as long as the banks are assigned in 49 + the supported address space with the required alignment and they do not 50 + overlap one another. 51 + 52 + For example, it is possible to map: 53 + bank 0 to 0x42000000-0x43ffffff, bank 5 to 0x46000000-0x46ffffff 54 + It is also possible to map: 55 + bank 0 to 0x48000000-0x49ffffff, bank 5 to 0x44000000-0x44ffffff 56 + There is no reason to stick to a particular translation mapping, but the 57 + "ranges" property should provide a "reasonable" default that is known to 58 + work. The software should initialize the bus controller according to it. 59 + 60 + required: 61 + - compatible 62 + - reg 63 + - "#address-cells" 64 + - "#size-cells" 65 + - ranges 66 + 67 + examples: 68 + - | 69 + // In this example, 70 + // - the Ethernet device is connected at the offset 0x01f00000 of CS1 and 71 + // mapped to 0x43f00000 of the parent bus. 72 + // - the UART device is connected at the offset 0x00200000 of CS5 and 73 + // mapped to 0x46200000 of the parent bus. 74 + 75 + system-bus@58c00000 { 76 + compatible = "socionext,uniphier-system-bus"; 77 + reg = <0x58c00000 0x400>; 78 + #address-cells = <2>; 79 + #size-cells = <1>; 80 + ranges = <1 0x00000000 0x42000000 0x02000000>, 81 + <5 0x00000000 0x46000000 0x01000000>; 82 + 83 + ethernet@1,01f00000 { 84 + compatible = "smsc,lan9115"; 85 + reg = <1 0x01f00000 0x1000>; 86 + interrupts = <0 48 4>; 87 + phy-mode = "mii"; 88 + }; 89 + 90 + uart@5,00200000 { 91 + compatible = "ns16550a"; 92 + reg = <5 0x00200000 0x20>; 93 + interrupts = <0 49 4>; 94 + clock-frequency = <12288000>; 95 + }; 96 + };
-66
Documentation/devicetree/bindings/bus/uniphier-system-bus.txt
··· 1 - UniPhier System Bus 2 - 3 - The UniPhier System Bus is an external bus that connects on-board devices to 4 - the UniPhier SoC. It is a simple (semi-)parallel bus with address, data, and 5 - some control signals. It supports up to 8 banks (chip selects). 6 - 7 - Before any access to the bus, the bus controller must be configured; the bus 8 - controller registers provide the control for the translation from the offset 9 - within each bank to the CPU-viewed address. The needed setup includes the base 10 - address, the size of each bank. Optionally, some timing parameters can be 11 - optimized for faster bus access. 12 - 13 - Required properties: 14 - - compatible: should be "socionext,uniphier-system-bus". 15 - - reg: offset and length of the register set for the bus controller device. 16 - - #address-cells: should be 2. The first cell is the bank number (chip select). 17 - The second cell is the address offset within the bank. 18 - - #size-cells: should be 1. 19 - - ranges: should provide a proper address translation from the System Bus to 20 - the parent bus. 21 - 22 - Note: 23 - The address region(s) that can be assigned for the System Bus is implementation 24 - defined. Some SoCs can use 0x00000000-0x0fffffff and 0x40000000-0x4fffffff, 25 - while other SoCs can only use 0x40000000-0x4fffffff. There might be additional 26 - limitations depending on SoCs and the boot mode. The address translation is 27 - arbitrary as long as the banks are assigned in the supported address space with 28 - the required alignment and they do not overlap one another. 29 - For example, it is possible to map: 30 - bank 0 to 0x42000000-0x43ffffff, bank 5 to 0x46000000-0x46ffffff 31 - It is also possible to map: 32 - bank 0 to 0x48000000-0x49ffffff, bank 5 to 0x44000000-0x44ffffff 33 - There is no reason to stick to a particular translation mapping, but the 34 - "ranges" property should provide a "reasonable" default that is known to work. 35 - The software should initialize the bus controller according to it. 36 - 37 - Example: 38 - 39 - system-bus { 40 - compatible = "socionext,uniphier-system-bus"; 41 - reg = <0x58c00000 0x400>; 42 - #address-cells = <2>; 43 - #size-cells = <1>; 44 - ranges = <1 0x00000000 0x42000000 0x02000000 45 - 5 0x00000000 0x46000000 0x01000000>; 46 - 47 - ethernet@1,01f00000 { 48 - compatible = "smsc,lan9115"; 49 - reg = <1 0x01f00000 0x1000>; 50 - interrupts = <0 48 4> 51 - phy-mode = "mii"; 52 - }; 53 - 54 - uart@5,00200000 { 55 - compatible = "ns16550a"; 56 - reg = <5 0x00200000 0x20>; 57 - interrupts = <0 49 4> 58 - clock-frequency = <12288000>; 59 - }; 60 - }; 61 - 62 - In this example, 63 - - the Ethernet device is connected at the offset 0x01f00000 of CS1 and 64 - mapped to 0x43f00000 of the parent bus. 65 - - the UART device is connected at the offset 0x00200000 of CS5 and 66 - mapped to 0x46200000 of the parent bus.
+54
Documentation/devicetree/bindings/chrome/google,cros-ec-typec.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/chrome/google,cros-ec-typec.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Google Chrome OS EC(Embedded Controller) Type C port driver. 8 + 9 + maintainers: 10 + - Benson Leung <bleung@chromium.org> 11 + - Prashant Malani <pmalani@chromium.org> 12 + 13 + description: 14 + Chrome OS devices have an Embedded Controller(EC) which has access to 15 + Type C port state. This node is intended to allow the host to read and 16 + control the Type C ports. The node for this device should be under a 17 + cros-ec node like google,cros-ec-spi. 18 + 19 + properties: 20 + compatible: 21 + const: google,cros-ec-typec 22 + 23 + connector: 24 + $ref: /schemas/connector/usb-connector.yaml# 25 + 26 + required: 27 + - compatible 28 + 29 + examples: 30 + - |+ 31 + spi0 { 32 + #address-cells = <1>; 33 + #size-cells = <0>; 34 + 35 + cros_ec: ec@0 { 36 + compatible = "google,cros-ec-spi"; 37 + reg = <0>; 38 + 39 + typec { 40 + compatible = "google,cros-ec-typec"; 41 + 42 + #address-cells = <1>; 43 + #size-cells = <0>; 44 + 45 + connector@0 { 46 + compatible = "usb-c-connector"; 47 + reg = <0>; 48 + power-role = "dual"; 49 + data-role = "dual"; 50 + try-power-role = "source"; 51 + }; 52 + }; 53 + }; 54 + };
+1 -1
Documentation/devicetree/bindings/clock/clock-bindings.txt
··· 94 94 /* external oscillator */ 95 95 osc: oscillator { 96 96 compatible = "fixed-clock"; 97 - #clock-cells = <1>; 97 + #clock-cells = <0>; 98 98 clock-frequency = <32678>; 99 99 clock-output-names = "osc"; 100 100 };
+5
Documentation/devicetree/bindings/clock/fsl,plldig.yaml
··· 21 21 reg: 22 22 maxItems: 1 23 23 24 + clocks: 25 + maxItems: 1 26 + 24 27 '#clock-cells': 25 28 const: 0 26 29 ··· 43 40 - reg 44 41 - clocks 45 42 - '#clock-cells' 43 + 44 + additionalProperties: false 46 45 47 46 examples: 48 47 # Display PIXEL Clock node:
+2
Documentation/devicetree/bindings/clock/imx8mn-clock.yaml
··· 52 52 - clock-names 53 53 - '#clock-cells' 54 54 55 + additionalProperties: false 56 + 55 57 examples: 56 58 # Clock Control Module node: 57 59 - |
+2
Documentation/devicetree/bindings/clock/imx8mp-clock.yaml
··· 52 52 - clock-names 53 53 - '#clock-cells' 54 54 55 + additionalProperties: false 56 + 55 57 examples: 56 58 # Clock Control Module node: 57 59 - |
+2
Documentation/devicetree/bindings/clock/milbeaut-clock.yaml
··· 35 35 - clocks 36 36 - '#clock-cells' 37 37 38 + additionalProperties: false 39 + 38 40 examples: 39 41 # Clock controller node: 40 42 - |
+2
Documentation/devicetree/bindings/clock/qcom,gcc-apq8064.yaml
··· 68 68 - nvmem-cell-names 69 69 - '#thermal-sensor-cells' 70 70 71 + additionalProperties: false 72 + 71 73 examples: 72 74 - | 73 75 clock-controller@900000 {
+2
Documentation/devicetree/bindings/clock/qcom,gcc-ipq8074.yaml
··· 40 40 - '#clock-cells' 41 41 - '#reset-cells' 42 42 43 + additionalProperties: false 44 + 43 45 examples: 44 46 - | 45 47 clock-controller@1800000 {
+2
Documentation/devicetree/bindings/clock/qcom,gcc-msm8996.yaml
··· 56 56 - '#reset-cells' 57 57 - '#power-domain-cells' 58 58 59 + additionalProperties: false 60 + 59 61 examples: 60 62 - | 61 63 clock-controller@300000 {
+2
Documentation/devicetree/bindings/clock/qcom,gcc-msm8998.yaml
··· 66 66 - '#reset-cells' 67 67 - '#power-domain-cells' 68 68 69 + additionalProperties: false 70 + 69 71 examples: 70 72 - | 71 73 #include <dt-bindings/clock/qcom,rpmcc.h>
+2
Documentation/devicetree/bindings/clock/qcom,gcc-qcs404.yaml
··· 40 40 - '#clock-cells' 41 41 - '#reset-cells' 42 42 43 + additionalProperties: false 44 + 43 45 examples: 44 46 - | 45 47 clock-controller@1800000 {
+2
Documentation/devicetree/bindings/clock/qcom,gcc-sc7180.yaml
··· 58 58 - '#reset-cells' 59 59 - '#power-domain-cells' 60 60 61 + additionalProperties: false 62 + 61 63 examples: 62 64 - | 63 65 #include <dt-bindings/clock/qcom,rpmh.h>
+2
Documentation/devicetree/bindings/clock/qcom,gcc-sm8150.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>
+2
Documentation/devicetree/bindings/clock/qcom,gcc.yaml
··· 74 74 - '#reset-cells' 75 75 - '#power-domain-cells' 76 76 77 + additionalProperties: false 78 + 77 79 examples: 78 80 # Example for GCC for MSM8960: 79 81 - |
+2
Documentation/devicetree/bindings/clock/qcom,mmcc.yaml
··· 74 74 - '#reset-cells' 75 75 - '#power-domain-cells' 76 76 77 + additionalProperties: false 78 + 77 79 if: 78 80 properties: 79 81 compatible:
+2
Documentation/devicetree/bindings/clock/qcom,msm8998-gpucc.yaml
··· 50 50 - '#reset-cells' 51 51 - '#power-domain-cells' 52 52 53 + additionalProperties: false 54 + 53 55 examples: 54 56 - | 55 57 #include <dt-bindings/clock/qcom,gcc-msm8998.h>
+2
Documentation/devicetree/bindings/clock/qcom,rpmhcc.yaml
··· 35 35 - compatible 36 36 - '#clock-cells' 37 37 38 + additionalProperties: false 39 + 38 40 examples: 39 41 # Example for GCC for SDM845: The below node should be defined inside 40 42 # &apps_rsc node.
+2
Documentation/devicetree/bindings/clock/qcom,sc7180-dispcc.yaml
··· 58 58 - '#reset-cells' 59 59 - '#power-domain-cells' 60 60 61 + additionalProperties: false 62 + 61 63 examples: 62 64 - | 63 65 #include <dt-bindings/clock/qcom,gcc-sc7180.h>
+2
Documentation/devicetree/bindings/clock/qcom,sc7180-gpucc.yaml
··· 52 52 - '#reset-cells' 53 53 - '#power-domain-cells' 54 54 55 + additionalProperties: false 56 + 55 57 examples: 56 58 - | 57 59 #include <dt-bindings/clock/qcom,gcc-sc7180.h>
+2
Documentation/devicetree/bindings/clock/qcom,sc7180-videocc.yaml
··· 48 48 - '#reset-cells' 49 49 - '#power-domain-cells' 50 50 51 + additionalProperties: false 52 + 51 53 examples: 52 54 - | 53 55 #include <dt-bindings/clock/qcom,rpmh.h>
+2
Documentation/devicetree/bindings/clock/qcom,sdm845-dispcc.yaml
··· 67 67 - '#reset-cells' 68 68 - '#power-domain-cells' 69 69 70 + additionalProperties: false 71 + 70 72 examples: 71 73 - | 72 74 #include <dt-bindings/clock/qcom,gcc-sdm845.h>
+2
Documentation/devicetree/bindings/clock/qcom,sdm845-gpucc.yaml
··· 52 52 - '#reset-cells' 53 53 - '#power-domain-cells' 54 54 55 + additionalProperties: false 56 + 55 57 examples: 56 58 - | 57 59 #include <dt-bindings/clock/qcom,gcc-sdm845.h>
+2
Documentation/devicetree/bindings/clock/qcom,sdm845-videocc.yaml
··· 48 48 - '#reset-cells' 49 49 - '#power-domain-cells' 50 50 51 + additionalProperties: false 52 + 51 53 examples: 52 54 - | 53 55 #include <dt-bindings/clock/qcom,rpmh.h>
+94
Documentation/devicetree/bindings/clock/socionext,uniphier-clock.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/socionext,uniphier-clock.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: UniPhier clock controller 8 + 9 + maintainers: 10 + - Masahiro Yamada <yamada.masahiro@socionext.com> 11 + 12 + properties: 13 + compatible: 14 + oneOf: 15 + - description: System clock 16 + enum: 17 + - socionext,uniphier-ld4-clock 18 + - socionext,uniphier-pro4-clock 19 + - socionext,uniphier-sld8-clock 20 + - socionext,uniphier-pro5-clock 21 + - socionext,uniphier-pxs2-clock 22 + - socionext,uniphier-ld6b-clock 23 + - socionext,uniphier-ld11-clock 24 + - socionext,uniphier-ld20-clock 25 + - socionext,uniphier-pxs3-clock 26 + - description: Media I/O (MIO) clock, SD clock 27 + enum: 28 + - socionext,uniphier-ld4-mio-clock 29 + - socionext,uniphier-pro4-mio-clock 30 + - socionext,uniphier-sld8-mio-clock 31 + - socionext,uniphier-pro5-sd-clock 32 + - socionext,uniphier-pxs2-sd-clock 33 + - socionext,uniphier-ld11-mio-clock 34 + - socionext,uniphier-ld20-sd-clock 35 + - socionext,uniphier-pxs3-sd-clock 36 + - description: Peripheral clock 37 + enum: 38 + - socionext,uniphier-ld4-peri-clock 39 + - socionext,uniphier-pro4-peri-clock 40 + - socionext,uniphier-sld8-peri-clock 41 + - socionext,uniphier-pro5-peri-clock 42 + - socionext,uniphier-pxs2-peri-clock 43 + - socionext,uniphier-ld11-peri-clock 44 + - socionext,uniphier-ld20-peri-clock 45 + - socionext,uniphier-pxs3-peri-clock 46 + 47 + "#clock-cells": 48 + const: 1 49 + 50 + additionalProperties: false 51 + 52 + required: 53 + - compatible 54 + - "#clock-cells" 55 + 56 + examples: 57 + - | 58 + sysctrl@61840000 { 59 + compatible = "socionext,uniphier-sysctrl", "simple-mfd", "syscon"; 60 + reg = <0x61840000 0x4000>; 61 + 62 + clock { 63 + compatible = "socionext,uniphier-ld11-clock"; 64 + #clock-cells = <1>; 65 + }; 66 + 67 + // other nodes ... 68 + }; 69 + 70 + - | 71 + mioctrl@59810000 { 72 + compatible = "socionext,uniphier-mioctrl", "simple-mfd", "syscon"; 73 + reg = <0x59810000 0x800>; 74 + 75 + clock { 76 + compatible = "socionext,uniphier-ld11-mio-clock"; 77 + #clock-cells = <1>; 78 + }; 79 + 80 + // other nodes ... 81 + }; 82 + 83 + - | 84 + perictrl@59820000 { 85 + compatible = "socionext,uniphier-perictrl", "simple-mfd", "syscon"; 86 + reg = <0x59820000 0x200>; 87 + 88 + clock { 89 + compatible = "socionext,uniphier-ld11-peri-clock"; 90 + #clock-cells = <1>; 91 + }; 92 + 93 + // other nodes ... 94 + };
-132
Documentation/devicetree/bindings/clock/uniphier-clock.txt
··· 1 - UniPhier clock controller 2 - 3 - 4 - System clock 5 - ------------ 6 - 7 - Required properties: 8 - - compatible: should be one of the following: 9 - "socionext,uniphier-ld4-clock" - for LD4 SoC. 10 - "socionext,uniphier-pro4-clock" - for Pro4 SoC. 11 - "socionext,uniphier-sld8-clock" - for sLD8 SoC. 12 - "socionext,uniphier-pro5-clock" - for Pro5 SoC. 13 - "socionext,uniphier-pxs2-clock" - for PXs2/LD6b SoC. 14 - "socionext,uniphier-ld11-clock" - for LD11 SoC. 15 - "socionext,uniphier-ld20-clock" - for LD20 SoC. 16 - "socionext,uniphier-pxs3-clock" - for PXs3 SoC 17 - - #clock-cells: should be 1. 18 - 19 - Example: 20 - 21 - sysctrl@61840000 { 22 - compatible = "socionext,uniphier-sysctrl", 23 - "simple-mfd", "syscon"; 24 - reg = <0x61840000 0x4000>; 25 - 26 - clock { 27 - compatible = "socionext,uniphier-ld11-clock"; 28 - #clock-cells = <1>; 29 - }; 30 - 31 - other nodes ... 32 - }; 33 - 34 - Provided clocks: 35 - 36 - 8: ST DMAC 37 - 12: GIO (Giga bit stream I/O) 38 - 14: USB3 ch0 host 39 - 15: USB3 ch1 host 40 - 16: USB3 ch0 PHY0 41 - 17: USB3 ch0 PHY1 42 - 20: USB3 ch1 PHY0 43 - 21: USB3 ch1 PHY1 44 - 45 - 46 - Media I/O (MIO) clock, SD clock 47 - ------------------------------- 48 - 49 - Required properties: 50 - - compatible: should be one of the following: 51 - "socionext,uniphier-ld4-mio-clock" - for LD4 SoC. 52 - "socionext,uniphier-pro4-mio-clock" - for Pro4 SoC. 53 - "socionext,uniphier-sld8-mio-clock" - for sLD8 SoC. 54 - "socionext,uniphier-pro5-sd-clock" - for Pro5 SoC. 55 - "socionext,uniphier-pxs2-sd-clock" - for PXs2/LD6b SoC. 56 - "socionext,uniphier-ld11-mio-clock" - for LD11 SoC. 57 - "socionext,uniphier-ld20-sd-clock" - for LD20 SoC. 58 - "socionext,uniphier-pxs3-sd-clock" - for PXs3 SoC 59 - - #clock-cells: should be 1. 60 - 61 - Example: 62 - 63 - mioctrl@59810000 { 64 - compatible = "socionext,uniphier-mioctrl", 65 - "simple-mfd", "syscon"; 66 - reg = <0x59810000 0x800>; 67 - 68 - clock { 69 - compatible = "socionext,uniphier-ld11-mio-clock"; 70 - #clock-cells = <1>; 71 - }; 72 - 73 - other nodes ... 74 - }; 75 - 76 - Provided clocks: 77 - 78 - 0: SD ch0 host 79 - 1: eMMC host 80 - 2: SD ch1 host 81 - 7: MIO DMAC 82 - 8: USB2 ch0 host 83 - 9: USB2 ch1 host 84 - 10: USB2 ch2 host 85 - 12: USB2 ch0 PHY 86 - 13: USB2 ch1 PHY 87 - 14: USB2 ch2 PHY 88 - 89 - 90 - Peripheral clock 91 - ---------------- 92 - 93 - Required properties: 94 - - compatible: should be one of the following: 95 - "socionext,uniphier-ld4-peri-clock" - for LD4 SoC. 96 - "socionext,uniphier-pro4-peri-clock" - for Pro4 SoC. 97 - "socionext,uniphier-sld8-peri-clock" - for sLD8 SoC. 98 - "socionext,uniphier-pro5-peri-clock" - for Pro5 SoC. 99 - "socionext,uniphier-pxs2-peri-clock" - for PXs2/LD6b SoC. 100 - "socionext,uniphier-ld11-peri-clock" - for LD11 SoC. 101 - "socionext,uniphier-ld20-peri-clock" - for LD20 SoC. 102 - "socionext,uniphier-pxs3-peri-clock" - for PXs3 SoC 103 - - #clock-cells: should be 1. 104 - 105 - Example: 106 - 107 - perictrl@59820000 { 108 - compatible = "socionext,uniphier-perictrl", 109 - "simple-mfd", "syscon"; 110 - reg = <0x59820000 0x200>; 111 - 112 - clock { 113 - compatible = "socionext,uniphier-ld11-peri-clock"; 114 - #clock-cells = <1>; 115 - }; 116 - 117 - other nodes ... 118 - }; 119 - 120 - Provided clocks: 121 - 122 - 0: UART ch0 123 - 1: UART ch1 124 - 2: UART ch2 125 - 3: UART ch3 126 - 4: I2C ch0 127 - 5: I2C ch1 128 - 6: I2C ch2 129 - 7: I2C ch3 130 - 8: I2C ch4 131 - 9: I2C ch5 132 - 10: I2C ch6
+1 -1
Documentation/devicetree/bindings/connector/samsung,usb-connector-11pin.txt
··· 19 19 0: High Speed (HS), 20 20 3: Mobile High-Definition Link (MHL), specific to 11-pin Samsung micro-USB. 21 21 22 - [1]: bindings/connector/usb-connector.txt 22 + [1]: bindings/connector/usb-connector.yaml 23 23 24 24 Example 25 25 -------
-135
Documentation/devicetree/bindings/connector/usb-connector.txt
··· 1 - USB Connector 2 - ============= 3 - 4 - A USB connector node represents a physical USB connector. It should be 5 - a child of a USB interface controller. 6 - 7 - Required properties: 8 - - compatible: describes type of the connector, must be one of: 9 - "usb-a-connector", 10 - "usb-b-connector", 11 - "usb-c-connector". 12 - 13 - Optional properties: 14 - - label: symbolic name for the connector, 15 - - type: size of the connector, should be specified in case of USB-A, USB-B 16 - non-fullsize connectors: "mini", "micro". 17 - - self-powered: Set this property if the usb device that has its own power 18 - source. 19 - 20 - Optional properties for usb-b-connector: 21 - - id-gpios: an input gpio for USB ID pin. 22 - - vbus-gpios: an input gpio for USB VBUS pin, used to detect presence of 23 - VBUS 5V. 24 - see gpio/gpio.txt. 25 - - vbus-supply: a phandle to the regulator for USB VBUS if needed when host 26 - mode or dual role mode is supported. 27 - Particularly, if use an output GPIO to control a VBUS regulator, should 28 - model it as a regulator. 29 - see regulator/fixed-regulator.yaml 30 - - pinctrl-names : a pinctrl state named "default" is optional 31 - - pinctrl-0 : pin control group 32 - see pinctrl/pinctrl-bindings.txt 33 - 34 - Optional properties for usb-c-connector: 35 - - power-role: should be one of "source", "sink" or "dual"(DRP) if typec 36 - connector has power support. 37 - - try-power-role: preferred power role if "dual"(DRP) can support Try.SNK 38 - or Try.SRC, should be "sink" for Try.SNK or "source" for Try.SRC. 39 - - data-role: should be one of "host", "device", "dual"(DRD) if typec 40 - connector supports USB data. 41 - 42 - Required properties for usb-c-connector with power delivery support: 43 - - source-pdos: An array of u32 with each entry providing supported power 44 - source data object(PDO), the detailed bit definitions of PDO can be found 45 - in "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.2 46 - Source_Capabilities Message, the order of each entry(PDO) should follow 47 - the PD spec chapter 6.4.1. Required for power source and power dual role. 48 - User can specify the source PDO array via PDO_FIXED/BATT/VAR/PPS_APDO() 49 - defined in dt-bindings/usb/pd.h. 50 - - sink-pdos: An array of u32 with each entry providing supported power 51 - sink data object(PDO), the detailed bit definitions of PDO can be found 52 - in "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.3 53 - Sink Capabilities Message, the order of each entry(PDO) should follow 54 - the PD spec chapter 6.4.1. Required for power sink and power dual role. 55 - User can specify the sink PDO array via PDO_FIXED/BATT/VAR/PPS_APDO() defined 56 - in dt-bindings/usb/pd.h. 57 - - op-sink-microwatt: Sink required operating power in microwatt, if source 58 - can't offer the power, Capability Mismatch is set. Required for power 59 - sink and power dual role. 60 - 61 - Required nodes: 62 - - any data bus to the connector should be modeled using the OF graph bindings 63 - specified in bindings/graph.txt, unless the bus is between parent node and 64 - the connector. Since single connector can have multiple data buses every bus 65 - has assigned OF graph port number as follows: 66 - 0: High Speed (HS), present in all connectors, 67 - 1: Super Speed (SS), present in SS capable connectors, 68 - 2: Sideband use (SBU), present in USB-C. 69 - 70 - Examples 71 - -------- 72 - 73 - 1. Micro-USB connector with HS lines routed via controller (MUIC): 74 - 75 - muic-max77843@66 { 76 - ... 77 - usb_con: connector { 78 - compatible = "usb-b-connector"; 79 - label = "micro-USB"; 80 - type = "micro"; 81 - }; 82 - }; 83 - 84 - 2. USB-C connector attached to CC controller (s2mm005), HS lines routed 85 - to companion PMIC (max77865), SS lines to USB3 PHY and SBU to DisplayPort. 86 - DisplayPort video lines are routed to the connector via SS mux in USB3 PHY. 87 - 88 - ccic: s2mm005@33 { 89 - ... 90 - usb_con: connector { 91 - compatible = "usb-c-connector"; 92 - label = "USB-C"; 93 - 94 - ports { 95 - #address-cells = <1>; 96 - #size-cells = <0>; 97 - 98 - port@0 { 99 - reg = <0>; 100 - usb_con_hs: endpoint { 101 - remote-endpoint = <&max77865_usbc_hs>; 102 - }; 103 - }; 104 - port@1 { 105 - reg = <1>; 106 - usb_con_ss: endpoint { 107 - remote-endpoint = <&usbdrd_phy_ss>; 108 - }; 109 - }; 110 - port@2 { 111 - reg = <2>; 112 - usb_con_sbu: endpoint { 113 - remote-endpoint = <&dp_aux>; 114 - }; 115 - }; 116 - }; 117 - }; 118 - }; 119 - 120 - 3. USB-C connector attached to a typec port controller(ptn5110), which has 121 - power delivery support and enables drp. 122 - 123 - typec: ptn5110@50 { 124 - ... 125 - usb_con: connector { 126 - compatible = "usb-c-connector"; 127 - label = "USB-C"; 128 - power-role = "dual"; 129 - try-power-role = "sink"; 130 - source-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)>; 131 - sink-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM) 132 - PDO_VAR(5000, 12000, 2000)>; 133 - op-sink-microwatt = <10000000>; 134 - }; 135 - };
+206
Documentation/devicetree/bindings/connector/usb-connector.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/connector/usb-connector.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: USB Connector 8 + 9 + maintainers: 10 + - Rob Herring <robh@kernel.org> 11 + 12 + description: 13 + A USB connector node represents a physical USB connector. It should be a child 14 + of a USB interface controller. 15 + 16 + properties: 17 + compatible: 18 + enum: 19 + - usb-a-connector 20 + - usb-b-connector 21 + - usb-c-connector 22 + 23 + label: 24 + description: Symbolic name for the connector. 25 + 26 + type: 27 + description: Size of the connector, should be specified in case of 28 + non-fullsize 'usb-a-connector' or 'usb-b-connector' compatible 29 + connectors. 30 + allOf: 31 + - $ref: /schemas/types.yaml#definitions/string 32 + enum: 33 + - mini 34 + - micro 35 + 36 + self-powered: 37 + description: Set this property if the USB device has its own power source. 38 + type: boolean 39 + 40 + # The following are optional properties for "usb-b-connector". 41 + id-gpios: 42 + description: An input gpio for USB ID pin. 43 + maxItems: 1 44 + 45 + vbus-gpios: 46 + description: An input gpio for USB VBus pin, used to detect presence of 47 + VBUS 5V. 48 + maxItems: 1 49 + 50 + vbus-supply: 51 + description: A phandle to the regulator for USB VBUS if needed when host 52 + mode or dual role mode is supported. 53 + Particularly, if use an output GPIO to control a VBUS regulator, should 54 + model it as a regulator. See bindings/regulator/fixed-regulator.yaml 55 + 56 + # The following are optional properties for "usb-c-connector". 57 + power-role: 58 + description: Determines the power role that the Type C connector will 59 + support. "dual" refers to Dual Role Port (DRP). 60 + allOf: 61 + - $ref: /schemas/types.yaml#definitions/string 62 + enum: 63 + - source 64 + - sink 65 + - dual 66 + 67 + try-power-role: 68 + description: Preferred power role. 69 + allOf: 70 + - $ref: /schemas/types.yaml#definitions/string 71 + enum: 72 + - source 73 + - sink 74 + - dual 75 + 76 + data-role: 77 + description: Data role if Type C connector supports USB data. "dual" refers 78 + Dual Role Device (DRD). 79 + allOf: 80 + - $ref: /schemas/types.yaml#definitions/string 81 + enum: 82 + - host 83 + - device 84 + - dual 85 + 86 + # The following are optional properties for "usb-c-connector" with power 87 + # delivery support. 88 + source-pdos: 89 + description: An array of u32 with each entry providing supported power 90 + source data object(PDO), the detailed bit definitions of PDO can be found 91 + in "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.2 92 + Source_Capabilities Message, the order of each entry(PDO) should follow 93 + the PD spec chapter 6.4.1. Required for power source and power dual role. 94 + User can specify the source PDO array via PDO_FIXED/BATT/VAR/PPS_APDO() 95 + defined in dt-bindings/usb/pd.h. 96 + minItems: 1 97 + maxItems: 7 98 + allOf: 99 + - $ref: /schemas/types.yaml#/definitions/uint32-array 100 + 101 + sink-pdos: 102 + description: An array of u32 with each entry providing supported power sink 103 + data object(PDO), the detailed bit definitions of PDO can be found in 104 + "Universal Serial Bus Power Delivery Specification" chapter 6.4.1.3 105 + Sink Capabilities Message, the order of each entry(PDO) should follow the 106 + PD spec chapter 6.4.1. Required for power sink and power dual role. User 107 + can specify the sink PDO array via PDO_FIXED/BATT/VAR/PPS_APDO() defined 108 + in dt-bindings/usb/pd.h. 109 + minItems: 1 110 + maxItems: 7 111 + allOf: 112 + - $ref: /schemas/types.yaml#/definitions/uint32-array 113 + 114 + op-sink-microwatt: 115 + description: Sink required operating power in microwatt, if source can't 116 + offer the power, Capability Mismatch is set. Required for power sink and 117 + power dual role. 118 + 119 + ports: 120 + description: OF graph bindings (specified in bindings/graph.txt) that model 121 + any data bus to the connector unless the bus is between parent node and 122 + the connector. Since a single connector can have multiple data buses every 123 + bus has an assigned OF graph port number as described below. 124 + type: object 125 + properties: 126 + port@0: 127 + type: object 128 + description: High Speed (HS), present in all connectors. 129 + 130 + port@1: 131 + type: object 132 + description: Super Speed (SS), present in SS capable connectors. 133 + 134 + port@2: 135 + type: object 136 + description: Sideband Use (SBU), present in USB-C. This describes the 137 + alternate mode connection of which SBU is a part. 138 + 139 + required: 140 + - port@0 141 + 142 + required: 143 + - compatible 144 + 145 + examples: 146 + # Micro-USB connector with HS lines routed via controller (MUIC). 147 + - |+ 148 + muic-max77843 { 149 + usb_con1: connector { 150 + compatible = "usb-b-connector"; 151 + label = "micro-USB"; 152 + type = "micro"; 153 + }; 154 + }; 155 + 156 + # USB-C connector attached to CC controller (s2mm005), HS lines routed 157 + # to companion PMIC (max77865), SS lines to USB3 PHY and SBU to DisplayPort. 158 + # DisplayPort video lines are routed to the connector via SS mux in USB3 PHY. 159 + - |+ 160 + ccic: s2mm005 { 161 + usb_con2: connector { 162 + compatible = "usb-c-connector"; 163 + label = "USB-C"; 164 + 165 + ports { 166 + #address-cells = <1>; 167 + #size-cells = <0>; 168 + 169 + port@0 { 170 + reg = <0>; 171 + usb_con_hs: endpoint { 172 + remote-endpoint = <&max77865_usbc_hs>; 173 + }; 174 + }; 175 + port@1 { 176 + reg = <1>; 177 + usb_con_ss: endpoint { 178 + remote-endpoint = <&usbdrd_phy_ss>; 179 + }; 180 + }; 181 + port@2 { 182 + reg = <2>; 183 + usb_con_sbu: endpoint { 184 + remote-endpoint = <&dp_aux>; 185 + }; 186 + }; 187 + }; 188 + }; 189 + }; 190 + 191 + # USB-C connector attached to a typec port controller(ptn5110), which has 192 + # power delivery support and enables drp. 193 + - |+ 194 + #include <dt-bindings/usb/pd.h> 195 + typec: ptn5110 { 196 + usb_con3: connector { 197 + compatible = "usb-c-connector"; 198 + label = "USB-C"; 199 + power-role = "dual"; 200 + try-power-role = "sink"; 201 + source-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)>; 202 + sink-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM) 203 + PDO_VAR(5000, 12000, 2000)>; 204 + op-sink-microwatt = <10000000>; 205 + }; 206 + };
+5 -3
Documentation/devicetree/bindings/display/amlogic,meson-vpu.yaml
··· 71 71 maxItems: 2 72 72 73 73 reg-names: 74 - items: 75 - - const: vpu 76 - - const: hhi 74 + items: 75 + - const: vpu 76 + - const: hhi 77 77 78 78 interrupts: 79 79 maxItems: 1 ··· 106 106 - port@1 107 107 - "#address-cells" 108 108 - "#size-cells" 109 + 110 + additionalProperties: false 109 111 110 112 examples: 111 113 - |
-36
Documentation/devicetree/bindings/display/etnaviv/etnaviv-drm.txt
··· 1 - Vivante GPU core devices 2 - ======================== 3 - 4 - Required properties: 5 - - compatible: Should be "vivante,gc" 6 - A more specific compatible is not needed, as the cores contain chip 7 - identification registers at fixed locations, which provide all the 8 - necessary information to the driver. 9 - - reg: should be register base and length as documented in the 10 - datasheet 11 - - interrupts: Should contain the cores interrupt line 12 - - clocks: should contain one clock for entry in clock-names 13 - see Documentation/devicetree/bindings/clock/clock-bindings.txt 14 - - clock-names: 15 - - "bus": AXI/master interface clock 16 - - "reg": AHB/slave interface clock 17 - (only required if GPU can gate slave interface independently) 18 - - "core": GPU core clock 19 - - "shader": Shader clock (only required if GPU has feature PIPE_3D) 20 - 21 - Optional properties: 22 - - power-domains: a power domain consumer specifier according to 23 - Documentation/devicetree/bindings/power/power_domain.txt 24 - 25 - example: 26 - 27 - gpu_3d: gpu@130000 { 28 - compatible = "vivante,gc"; 29 - reg = <0x00130000 0x4000>; 30 - interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>; 31 - clocks = <&clks IMX6QDL_CLK_GPU3D_AXI>, 32 - <&clks IMX6QDL_CLK_GPU3D_CORE>, 33 - <&clks IMX6QDL_CLK_GPU3D_SHADER>; 34 - clock-names = "bus", "core", "shader"; 35 - power-domains = <&gpc 1>; 36 - };
+2
Documentation/devicetree/bindings/dma/sifive,fu540-c000-pdma.yaml
··· 43 43 - interrupts 44 44 - '#dma-cells' 45 45 46 + additionalProperties: false 47 + 46 48 examples: 47 49 - | 48 50 dma@3000000 {
+63
Documentation/devicetree/bindings/dma/socionext,uniphier-mio-dmac.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/dma/socionext,uniphier-mio-dmac.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: UniPhier Media IO DMA controller 8 + 9 + description: | 10 + This works as an external DMA engine for SD/eMMC controllers etc. 11 + found in UniPhier LD4, Pro4, sLD8 SoCs. 12 + 13 + maintainers: 14 + - Masahiro Yamada <yamada.masahiro@socionext.com> 15 + 16 + allOf: 17 + - $ref: "dma-controller.yaml#" 18 + 19 + properties: 20 + compatible: 21 + const: socionext,uniphier-mio-dmac 22 + 23 + reg: 24 + maxItems: 1 25 + 26 + interrupts: 27 + description: | 28 + A list of interrupt specifiers associated with the DMA channels. 29 + The number of interrupt lines is SoC-dependent. 30 + 31 + clocks: 32 + maxItems: 1 33 + 34 + resets: 35 + maxItems: 1 36 + 37 + '#dma-cells': 38 + description: The single cell represents the channel index. 39 + const: 1 40 + 41 + required: 42 + - compatible 43 + - reg 44 + - interrupts 45 + - clocks 46 + - '#dma-cells' 47 + 48 + additionalProperties: false 49 + 50 + examples: 51 + - | 52 + // In the example below, "interrupts = <0 68 4>, <0 68 4>, ..." is not a 53 + // typo. The first two channels share a single interrupt line. 54 + 55 + dmac: dma-controller@5a000000 { 56 + compatible = "socionext,uniphier-mio-dmac"; 57 + reg = <0x5a000000 0x1000>; 58 + interrupts = <0 68 4>, <0 68 4>, <0 69 4>, <0 70 4>, 59 + <0 71 4>, <0 72 4>, <0 73 4>, <0 74 4>; 60 + clocks = <&mio_clk 7>; 61 + resets = <&mio_rst 7>; 62 + #dma-cells = <1>; 63 + };
-25
Documentation/devicetree/bindings/dma/uniphier-mio-dmac.txt
··· 1 - UniPhier Media IO DMA controller 2 - 3 - This works as an external DMA engine for SD/eMMC controllers etc. 4 - found in UniPhier LD4, Pro4, sLD8 SoCs. 5 - 6 - Required properties: 7 - - compatible: should be "socionext,uniphier-mio-dmac". 8 - - reg: offset and length of the register set for the device. 9 - - interrupts: a list of interrupt specifiers associated with the DMA channels. 10 - - clocks: a single clock specifier. 11 - - #dma-cells: should be <1>. The single cell represents the channel index. 12 - 13 - Example: 14 - dmac: dma-controller@5a000000 { 15 - compatible = "socionext,uniphier-mio-dmac"; 16 - reg = <0x5a000000 0x1000>; 17 - interrupts = <0 68 4>, <0 68 4>, <0 69 4>, <0 70 4>, 18 - <0 71 4>, <0 72 4>, <0 73 4>, <0 74 4>; 19 - clocks = <&mio_clk 7>; 20 - #dma-cells = <1>; 21 - }; 22 - 23 - Note: 24 - In the example above, "interrupts = <0 68 4>, <0 68 4>, ..." is not a typo. 25 - The first two channels share a single interrupt line.
+2
Documentation/devicetree/bindings/dsp/fsl,dsp.yaml
··· 68 68 - mbox-names 69 69 - memory-region 70 70 71 + additionalProperties: false 72 + 71 73 examples: 72 74 - | 73 75 #include <dt-bindings/firmware/imx/rsrc.h>
+2
Documentation/devicetree/bindings/eeprom/at24.yaml
··· 172 172 - compatible 173 173 - reg 174 174 175 + additionalProperties: false 176 + 175 177 examples: 176 178 - | 177 179 i2c {
+2 -2
Documentation/devicetree/bindings/example-schema.yaml
··· 7 7 8 8 # $id is a unique identifier based on the filename. There may or may not be a 9 9 # file present at the URL. 10 - $id: "http://devicetree.org/schemas/example-schema.yaml#" 10 + $id: http://devicetree.org/schemas/example-schema.yaml# 11 11 # $schema is the meta-schema this schema should be validated with. 12 - $schema: "http://devicetree.org/meta-schemas/core.yaml#" 12 + $schema: http://devicetree.org/meta-schemas/core.yaml# 13 13 14 14 title: An example schema annotated with jsonschema details 15 15
+3
Documentation/devicetree/bindings/firmware/intel,ixp4xx-network-processing-engine.yaml
··· 34 34 - compatible 35 35 - reg 36 36 37 + additionalProperties: false 38 + 37 39 examples: 38 40 - | 39 41 npe@c8006000 { 40 42 compatible = "intel,ixp4xx-network-processing-engine"; 41 43 reg = <0xc8006000 0x1000>, <0xc8007000 0x1000>, <0xc8008000 0x1000>; 42 44 }; 45 + ...
+1 -1
Documentation/devicetree/bindings/gnss/gnss.txt
··· 8 8 9 9 Please refer to the following documents for generic properties: 10 10 11 - Documentation/devicetree/bindings/serial/slave-device.txt 11 + Documentation/devicetree/bindings/serial/serial.yaml 12 12 Documentation/devicetree/bindings/spi/spi-bus.txt 13 13 14 14 Required properties:
+2
Documentation/devicetree/bindings/gpio/brcm,xgs-iproc-gpio.yaml
··· 47 47 - "#gpio-cells" 48 48 - gpio-controller 49 49 50 + additionalProperties: false 51 + 50 52 dependencies: 51 53 interrupt-controller: [ interrupts ] 52 54
+1 -1
Documentation/devicetree/bindings/gpio/gpio-mvebu.txt
··· 14 14 15 15 "marvell,armada-8k-gpio" should be used for the Armada 7K and 8K 16 16 SoCs (either from AP or CP), see 17 - Documentation/devicetree/bindings/arm/marvell/ap806-system-controller.txt 17 + Documentation/devicetree/bindings/arm/marvell/ap80x-system-controller.txt 18 18 for specific details about the offset property. 19 19 20 20 - reg: Address and length of the register set for the device. Only one
-51
Documentation/devicetree/bindings/gpio/gpio-uniphier.txt
··· 1 - UniPhier GPIO controller 2 - 3 - Required properties: 4 - - compatible: Should be "socionext,uniphier-gpio". 5 - - reg: Specifies offset and length of the register set for the device. 6 - - gpio-controller: Marks the device node as a GPIO controller. 7 - - #gpio-cells: Should be 2. The first cell is the pin number and the second 8 - cell is used to specify optional parameters. 9 - - interrupt-controller: Marks the device node as an interrupt controller. 10 - - #interrupt-cells: Should be 2. The first cell defines the interrupt number. 11 - The second cell bits[3:0] is used to specify trigger type as follows: 12 - 1 = low-to-high edge triggered 13 - 2 = high-to-low edge triggered 14 - 4 = active high level-sensitive 15 - 8 = active low level-sensitive 16 - Valid combinations are 1, 2, 3, 4, 8. 17 - - ngpios: Specifies the number of GPIO lines. 18 - - gpio-ranges: Mapping to pin controller pins (as described in gpio.txt) 19 - - socionext,interrupt-ranges: Specifies an interrupt number mapping between 20 - this GPIO controller and its interrupt parent, in the form of arbitrary 21 - number of <child-interrupt-base parent-interrupt-base length> triplets. 22 - 23 - Optional properties: 24 - - gpio-ranges-group-names: Used for named gpio ranges (as described in gpio.txt) 25 - 26 - Example: 27 - gpio: gpio@55000000 { 28 - compatible = "socionext,uniphier-gpio"; 29 - reg = <0x55000000 0x200>; 30 - interrupt-parent = <&aidet>; 31 - interrupt-controller; 32 - #interrupt-cells = <2>; 33 - gpio-controller; 34 - #gpio-cells = <2>; 35 - gpio-ranges = <&pinctrl 0 0 0>; 36 - gpio-ranges-group-names = "gpio_range"; 37 - ngpios = <248>; 38 - socionext,interrupt-ranges = <0 48 16>, <16 154 5>, <21 217 3>; 39 - }; 40 - 41 - Consumer Example: 42 - 43 - sdhci0_pwrseq { 44 - compatible = "mmc-pwrseq-emmc"; 45 - reset-gpios = <&gpio UNIPHIER_GPIO_PORT(29, 4) GPIO_ACTIVE_LOW>; 46 - }; 47 - 48 - Please note UNIPHIER_GPIO_PORT(29, 4) represents PORT294 in the SoC document. 49 - Unfortunately, only the one's place is octal in the port numbering. (That is, 50 - PORT 8, 9, 18, 19, 28, 29, ... are missing.) UNIPHIER_GPIO_PORT() is a helper 51 - macro to calculate 29 * 8 + 4.
+94
Documentation/devicetree/bindings/gpio/socionext,uniphier-gpio.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/socionext,uniphier-gpio.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: UniPhier GPIO controller 8 + 9 + maintainers: 10 + - Masahiro Yamada <yamada.masahiro@socionext.com> 11 + 12 + properties: 13 + $nodename: 14 + pattern: "^gpio@[0-9a-f]+$" 15 + 16 + compatible: 17 + const: socionext,uniphier-gpio 18 + 19 + reg: 20 + maxItems: 1 21 + 22 + gpio-controller: true 23 + 24 + "#gpio-cells": 25 + const: 2 26 + 27 + interrupt-controller: true 28 + 29 + "#interrupt-cells": 30 + description: | 31 + The first cell defines the interrupt number. 32 + The second cell bits[3:0] is used to specify trigger type as follows: 33 + 1 = low-to-high edge triggered 34 + 2 = high-to-low edge triggered 35 + 4 = active high level-sensitive 36 + 8 = active low level-sensitive 37 + Valid combinations are 1, 2, 3, 4, 8. 38 + const: 2 39 + 40 + ngpios: 41 + minimum: 0 42 + maximum: 512 43 + 44 + gpio-ranges: true 45 + 46 + gpio-ranges-group-names: 47 + $ref: /schemas/types.yaml#/definitions/string-array 48 + 49 + socionext,interrupt-ranges: 50 + description: | 51 + Specifies an interrupt number mapping between this GPIO controller and 52 + its interrupt parent, in the form of arbitrary number of 53 + <child-interrupt-base parent-interrupt-base length> triplets. 54 + $ref: /schemas/types.yaml#/definitions/uint32-matrix 55 + 56 + required: 57 + - compatible 58 + - reg 59 + - gpio-controller 60 + - "#gpio-cells" 61 + - interrupt-controller 62 + - "#interrupt-cells" 63 + - ngpios 64 + - gpio-ranges 65 + - socionext,interrupt-ranges 66 + 67 + examples: 68 + - | 69 + #include <dt-bindings/gpio/gpio.h> 70 + #include <dt-bindings/gpio/uniphier-gpio.h> 71 + 72 + gpio: gpio@55000000 { 73 + compatible = "socionext,uniphier-gpio"; 74 + reg = <0x55000000 0x200>; 75 + interrupt-parent = <&aidet>; 76 + interrupt-controller; 77 + #interrupt-cells = <2>; 78 + gpio-controller; 79 + #gpio-cells = <2>; 80 + gpio-ranges = <&pinctrl 0 0 0>; 81 + gpio-ranges-group-names = "gpio_range"; 82 + ngpios = <248>; 83 + socionext,interrupt-ranges = <0 48 16>, <16 154 5>, <21 217 3>; 84 + }; 85 + 86 + // Consumer: 87 + // Please note UNIPHIER_GPIO_PORT(29, 4) represents PORT294 in the SoC 88 + // document. Unfortunately, only the one's place is octal in the port 89 + // numbering. (That is, PORT 8, 9, 18, 19, 28, 29, ... do not exist.) 90 + // UNIPHIER_GPIO_PORT() is a helper macro to calculate 29 * 8 + 4. 91 + sdhci0_pwrseq { 92 + compatible = "mmc-pwrseq-emmc"; 93 + reset-gpios = <&gpio UNIPHIER_GPIO_PORT(29, 4) GPIO_ACTIVE_LOW>; 94 + };
+2
Documentation/devicetree/bindings/gpio/xylon,logicvc-gpio.yaml
··· 49 49 - "#gpio-cells" 50 50 - gpio-controller 51 51 52 + additionalProperties: false 53 + 52 54 examples: 53 55 - | 54 56 logicvc: logicvc@43c00000 {
+5 -3
Documentation/devicetree/bindings/gpu/arm,mali-bifrost.yaml
··· 43 43 44 44 operating-points-v2: true 45 45 46 + resets: 47 + maxItems: 2 48 + 46 49 required: 47 50 - compatible 48 51 - reg 49 52 - interrupts 50 53 - interrupt-names 51 54 - clocks 55 + 56 + additionalProperties: false 52 57 53 58 allOf: 54 59 - if: ··· 62 57 contains: 63 58 const: amlogic,meson-g12a-mali 64 59 then: 65 - properties: 66 - resets: 67 - minItems: 2 68 60 required: 69 61 - resets 70 62
+5
Documentation/devicetree/bindings/gpu/arm,mali-midgard.yaml
··· 75 75 76 76 mali-supply: true 77 77 78 + power-domains: 79 + maxItems: 1 80 + 78 81 resets: 79 82 minItems: 1 80 83 maxItems: 2 ··· 93 90 - interrupts 94 91 - interrupt-names 95 92 - clocks 93 + 94 + additionalProperties: false 96 95 97 96 allOf: 98 97 - if:
+2
Documentation/devicetree/bindings/gpu/arm,mali-utgard.yaml
··· 115 115 - clocks 116 116 - clock-names 117 117 118 + additionalProperties: false 119 + 118 120 allOf: 119 121 - if: 120 122 properties:
+2
Documentation/devicetree/bindings/gpu/samsung-rotator.yaml
··· 36 36 - clocks 37 37 - clock-names 38 38 39 + additionalProperties: false 40 + 39 41 examples: 40 42 - | 41 43 rotator@12810000 {
+69
Documentation/devicetree/bindings/gpu/vivante,gc.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/gpu/vivante,gc.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Vivante GPU Bindings 8 + 9 + description: Vivante GPU core devices 10 + 11 + maintainers: 12 + - Lucas Stach <l.stach@pengutronix.de> 13 + 14 + properties: 15 + compatible: 16 + const: vivante,gc 17 + 18 + reg: 19 + maxItems: 1 20 + 21 + interrupts: 22 + maxItems: 1 23 + 24 + clocks: 25 + items: 26 + - description: AXI/master interface clock 27 + - description: GPU core clock 28 + - description: Shader clock (only required if GPU has feature PIPE_3D) 29 + - description: AHB/slave interface clock (only required if GPU can gate slave interface independently) 30 + minItems: 1 31 + maxItems: 4 32 + 33 + clock-names: 34 + items: 35 + enum: [ bus, core, shader, reg ] 36 + minItems: 1 37 + maxItems: 4 38 + 39 + resets: 40 + maxItems: 1 41 + 42 + power-domains: 43 + maxItems: 1 44 + 45 + required: 46 + - compatible 47 + - reg 48 + - interrupts 49 + - clocks 50 + - clock-names 51 + 52 + additionalProperties: false 53 + 54 + examples: 55 + - | 56 + #include <dt-bindings/clock/imx6qdl-clock.h> 57 + #include <dt-bindings/interrupt-controller/arm-gic.h> 58 + gpu@130000 { 59 + compatible = "vivante,gc"; 60 + reg = <0x00130000 0x4000>; 61 + interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>; 62 + clocks = <&clks IMX6QDL_CLK_GPU3D_AXI>, 63 + <&clks IMX6QDL_CLK_GPU3D_CORE>, 64 + <&clks IMX6QDL_CLK_GPU3D_SHADER>; 65 + clock-names = "bus", "core", "shader"; 66 + power-domains = <&gpc 1>; 67 + }; 68 + 69 + ...
+2
Documentation/devicetree/bindings/hwmon/adi,adm1177.yaml
··· 47 47 - compatible 48 48 - reg 49 49 50 + additionalProperties: false 51 + 50 52 examples: 51 53 - | 52 54 #include <dt-bindings/gpio/gpio.h>
+2
Documentation/devicetree/bindings/hwmon/adi,ltc2947.yaml
··· 87 87 - reg 88 88 89 89 90 + additionalProperties: false 91 + 90 92 examples: 91 93 - | 92 94 spi {
+2
Documentation/devicetree/bindings/hwmon/pmbus/ti,ucd90320.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/hwmon/ti,tmp513.yaml
··· 76 76 - compatible 77 77 - reg 78 78 79 + additionalProperties: false 80 + 79 81 examples: 80 82 - | 81 83 i2c {
-68
Documentation/devicetree/bindings/i2c/i2c-rk3x.txt
··· 1 - * Rockchip RK3xxx I2C controller 2 - 3 - This driver interfaces with the native I2C controller present in Rockchip 4 - RK3xxx SoCs. 5 - 6 - Required properties : 7 - 8 - - reg : Offset and length of the register set for the device 9 - - compatible: should be one of the following: 10 - - "rockchip,rv1108-i2c": for rv1108 11 - - "rockchip,rk3066-i2c": for rk3066 12 - - "rockchip,rk3188-i2c": for rk3188 13 - - "rockchip,rk3228-i2c": for rk3228 14 - - "rockchip,rk3288-i2c": for rk3288 15 - - "rockchip,rk3328-i2c", "rockchip,rk3399-i2c": for rk3328 16 - - "rockchip,rk3399-i2c": for rk3399 17 - - interrupts : interrupt number 18 - - clocks: See ../clock/clock-bindings.txt 19 - - For older hardware (rk3066, rk3188, rk3228, rk3288): 20 - - There is one clock that's used both to derive the functional clock 21 - for the device and as the bus clock. 22 - - For newer hardware (rk3399): specified by name 23 - - "i2c": This is used to derive the functional clock. 24 - - "pclk": This is the bus clock. 25 - 26 - Required on RK3066, RK3188 : 27 - 28 - - rockchip,grf : the phandle of the syscon node for the general register 29 - file (GRF) 30 - - on those SoCs an alias with the correct I2C bus ID (bit offset in the GRF) 31 - is also required. 32 - 33 - Optional properties : 34 - 35 - - clock-frequency : SCL frequency to use (in Hz). If omitted, 100kHz is used. 36 - - i2c-scl-rising-time-ns : Number of nanoseconds the SCL signal takes to rise 37 - (t(r) in I2C specification). If not specified this is assumed to be 38 - the maximum the specification allows(1000 ns for Standard-mode, 39 - 300 ns for Fast-mode) which might cause slightly slower communication. 40 - - i2c-scl-falling-time-ns : Number of nanoseconds the SCL signal takes to fall 41 - (t(f) in the I2C specification). If not specified this is assumed to 42 - be the maximum the specification allows (300 ns) which might cause 43 - slightly slower communication. 44 - - i2c-sda-falling-time-ns : Number of nanoseconds the SDA signal takes to fall 45 - (t(f) in the I2C specification). If not specified we'll use the SCL 46 - value since they are the same in nearly all cases. 47 - 48 - Example: 49 - 50 - aliases { 51 - i2c0 = &i2c0; 52 - } 53 - 54 - i2c0: i2c@2002d000 { 55 - compatible = "rockchip,rk3188-i2c"; 56 - reg = <0x2002d000 0x1000>; 57 - interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>; 58 - #address-cells = <1>; 59 - #size-cells = <0>; 60 - 61 - rockchip,grf = <&grf>; 62 - 63 - clock-names = "i2c"; 64 - clocks = <&cru PCLK_I2C0>; 65 - 66 - i2c-scl-rising-time-ns = <800>; 67 - i2c-scl-falling-time-ns = <100>; 68 - };
+136
Documentation/devicetree/bindings/i2c/i2c-rk3x.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/i2c/i2c-rk3x.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Rockchip RK3xxx I2C controller 8 + 9 + description: 10 + This driver interfaces with the native I2C controller present in Rockchip 11 + RK3xxx SoCs. 12 + 13 + allOf: 14 + - $ref: /schemas/i2c/i2c-controller.yaml# 15 + 16 + maintainers: 17 + - Heiko Stuebner <heiko@sntech.de> 18 + 19 + # Everything else is described in the common file 20 + properties: 21 + compatible: 22 + oneOf: 23 + - const: rockchip,rv1108-i2c 24 + - const: rockchip,rk3066-i2c 25 + - const: rockchip,rk3188-i2c 26 + - const: rockchip,rk3228-i2c 27 + - const: rockchip,rk3288-i2c 28 + - const: rockchip,rk3399-i2c 29 + - items: 30 + - enum: 31 + - rockchip,rk3036-i2c 32 + - rockchip,rk3368-i2c 33 + - const: rockchip,rk3288-i2c 34 + - items: 35 + - enum: 36 + - rockchip,px30-i2c 37 + - rockchip,rk3308-i2c 38 + - rockchip,rk3328-i2c 39 + - const: rockchip,rk3399-i2c 40 + 41 + reg: 42 + maxItems: 1 43 + 44 + interrupts: 45 + maxItems: 1 46 + 47 + clocks: 48 + minItems: 1 49 + items: 50 + - description: 51 + For older hardware (rk3066, rk3188, rk3228, rk3288) 52 + there is one clock that is used both to derive the functional clock 53 + for the device and as the bus clock. 54 + For newer hardware (rk3399) this clock is used to derive 55 + the functional clock 56 + - description: 57 + For newer hardware (rk3399) this is the bus clock 58 + 59 + clock-names: 60 + minItems: 1 61 + items: 62 + - const: i2c 63 + - const: pclk 64 + 65 + rockchip,grf: 66 + $ref: /schemas/types.yaml#/definitions/phandle 67 + description: 68 + Required on RK3066, RK3188 the phandle of the syscon node for 69 + the general register file (GRF) 70 + On those SoCs an alias with the correct I2C bus ID 71 + (bit offset in the GRF) is also required. 72 + 73 + clock-frequency: 74 + default: 100000 75 + description: 76 + SCL frequency to use (in Hz). If omitted, 100kHz is used. 77 + 78 + i2c-scl-rising-time-ns: 79 + default: 1000 80 + description: 81 + Number of nanoseconds the SCL signal takes to rise 82 + (t(r) in I2C specification). If not specified this is assumed to be 83 + the maximum the specification allows(1000 ns for Standard-mode, 84 + 300 ns for Fast-mode) which might cause slightly slower communication. 85 + 86 + i2c-scl-falling-time-ns: 87 + default: 300 88 + description: 89 + Number of nanoseconds the SCL signal takes to fall 90 + (t(f) in the I2C specification). If not specified this is assumed to 91 + be the maximum the specification allows (300 ns) which might cause 92 + slightly slower communication. 93 + 94 + i2c-sda-falling-time-ns: 95 + default: 300 96 + description: 97 + Number of nanoseconds the SDA signal takes to fall 98 + (t(f) in the I2C specification). If not specified we will use the SCL 99 + value since they are the same in nearly all cases. 100 + 101 + required: 102 + - compatible 103 + - reg 104 + - interrupts 105 + - clocks 106 + - clock-names 107 + 108 + if: 109 + properties: 110 + compatible: 111 + contains: 112 + enum: 113 + - rockchip,rk3066-i2c 114 + - rockchip,rk3188-i2c 115 + 116 + then: 117 + required: 118 + - rockchip,grf 119 + 120 + examples: 121 + - | 122 + #include <dt-bindings/clock/rk3188-cru-common.h> 123 + #include <dt-bindings/interrupt-controller/arm-gic.h> 124 + #include <dt-bindings/interrupt-controller/irq.h> 125 + i2c0: i2c@2002d000 { 126 + compatible = "rockchip,rk3188-i2c"; 127 + reg = <0x2002d000 0x1000>; 128 + interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>; 129 + clocks = <&cru PCLK_I2C0>; 130 + clock-names = "i2c"; 131 + rockchip,grf = <&grf>; 132 + i2c-scl-falling-time-ns = <100>; 133 + i2c-scl-rising-time-ns = <800>; 134 + #address-cells = <1>; 135 + #size-cells = <0>; 136 + };
-25
Documentation/devicetree/bindings/i2c/i2c-uniphier-f.txt
··· 1 - UniPhier I2C controller (FIFO-builtin) 2 - 3 - Required properties: 4 - - compatible: should be "socionext,uniphier-fi2c". 5 - - #address-cells: should be 1. 6 - - #size-cells: should be 0. 7 - - reg: offset and length of the register set for the device. 8 - - interrupts: a single interrupt specifier. 9 - - clocks: phandle to the input clock. 10 - 11 - Optional properties: 12 - - clock-frequency: desired I2C bus frequency in Hz. The maximum supported 13 - value is 400000. Defaults to 100000 if not specified. 14 - 15 - Examples: 16 - 17 - i2c0: i2c@58780000 { 18 - compatible = "socionext,uniphier-fi2c"; 19 - reg = <0x58780000 0x80>; 20 - #address-cells = <1>; 21 - #size-cells = <0>; 22 - interrupts = <0 41 4>; 23 - clocks = <&i2c_clk>; 24 - clock-frequency = <100000>; 25 - };
-25
Documentation/devicetree/bindings/i2c/i2c-uniphier.txt
··· 1 - UniPhier I2C controller (FIFO-less) 2 - 3 - Required properties: 4 - - compatible: should be "socionext,uniphier-i2c". 5 - - #address-cells: should be 1. 6 - - #size-cells: should be 0. 7 - - reg: offset and length of the register set for the device. 8 - - interrupts: a single interrupt specifier. 9 - - clocks: phandle to the input clock. 10 - 11 - Optional properties: 12 - - clock-frequency: desired I2C bus frequency in Hz. The maximum supported 13 - value is 400000. Defaults to 100000 if not specified. 14 - 15 - Examples: 16 - 17 - i2c0: i2c@58400000 { 18 - compatible = "socionext,uniphier-i2c"; 19 - reg = <0x58400000 0x40>; 20 - #address-cells = <1>; 21 - #size-cells = <0>; 22 - interrupts = <0 41 1>; 23 - clocks = <&i2c_clk>; 24 - clock-frequency = <100000>; 25 - };
+50
Documentation/devicetree/bindings/i2c/socionext,uniphier-fi2c.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/i2c/socionext,uniphier-fi2c.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: UniPhier I2C controller (FIFO-builtin) 8 + 9 + maintainers: 10 + - Masahiro Yamada <yamada.masahiro@socionext.com> 11 + 12 + allOf: 13 + - $ref: /schemas/i2c/i2c-controller.yaml# 14 + 15 + properties: 16 + compatible: 17 + const: socionext,uniphier-fi2c 18 + 19 + reg: 20 + maxItems: 1 21 + 22 + interrupts: 23 + maxItems: 1 24 + 25 + clocks: 26 + maxItems: 1 27 + 28 + clock-frequency: 29 + minimum: 100000 30 + maximum: 400000 31 + 32 + required: 33 + - compatible 34 + - reg 35 + - "#address-cells" 36 + - "#size-cells" 37 + - interrupts 38 + - clocks 39 + 40 + examples: 41 + - | 42 + i2c0: i2c@58780000 { 43 + compatible = "socionext,uniphier-fi2c"; 44 + reg = <0x58780000 0x80>; 45 + #address-cells = <1>; 46 + #size-cells = <0>; 47 + interrupts = <0 41 4>; 48 + clocks = <&i2c_clk>; 49 + clock-frequency = <100000>; 50 + };
+50
Documentation/devicetree/bindings/i2c/socionext,uniphier-i2c.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/i2c/socionext,uniphier-i2c.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: UniPhier I2C controller (FIFO-less) 8 + 9 + maintainers: 10 + - Masahiro Yamada <yamada.masahiro@socionext.com> 11 + 12 + allOf: 13 + - $ref: /schemas/i2c/i2c-controller.yaml# 14 + 15 + properties: 16 + compatible: 17 + const: socionext,uniphier-i2c 18 + 19 + reg: 20 + maxItems: 1 21 + 22 + interrupts: 23 + maxItems: 1 24 + 25 + clocks: 26 + maxItems: 1 27 + 28 + clock-frequency: 29 + minimum: 100000 30 + maximum: 400000 31 + 32 + required: 33 + - compatible 34 + - reg 35 + - "#address-cells" 36 + - "#size-cells" 37 + - interrupts 38 + - clocks 39 + 40 + examples: 41 + - | 42 + i2c0: i2c@58400000 { 43 + compatible = "socionext,uniphier-i2c"; 44 + reg = <0x58400000 0x40>; 45 + #address-cells = <1>; 46 + #size-cells = <0>; 47 + interrupts = <0 41 1>; 48 + clocks = <&i2c_clk>; 49 + clock-frequency = <100000>; 50 + };
+7 -3
Documentation/devicetree/bindings/iio/accel/adi,adxl345.yaml
··· 17 17 18 18 properties: 19 19 compatible: 20 - enum: 21 - - adi,adxl345 22 - - adi,adxl375 20 + oneOf: 21 + - items: 22 + - const: adi,adxl346 23 + - const: adi,adxl345 24 + - enum: 25 + - adi,adxl345 26 + - adi,adxl375 23 27 24 28 reg: 25 29 maxItems: 1
+2
Documentation/devicetree/bindings/iio/accel/bosch,bma400.yaml
··· 36 36 - compatible 37 37 - reg 38 38 39 + additionalProperties: false 40 + 39 41 examples: 40 42 - | 41 43 #include <dt-bindings/gpio/gpio.h>
-1
Documentation/devicetree/bindings/iio/adc/adi,ad7192.yaml
··· 106 106 spi-cpha; 107 107 clocks = <&ad7192_mclk>; 108 108 clock-names = "mclk"; 109 - #interrupt-cells = <2>; 110 109 interrupts = <25 0x2>; 111 110 interrupt-parent = <&gpio>; 112 111 dvdd-supply = <&dvdd>;
+2
Documentation/devicetree/bindings/iio/adc/adi,ad7780.yaml
··· 67 67 - compatible 68 68 - reg 69 69 70 + additionalProperties: false 71 + 70 72 examples: 71 73 - | 72 74 #include <dt-bindings/gpio/gpio.h>
+2
Documentation/devicetree/bindings/iio/adc/avia-hx711.yaml
··· 53 53 - dout-gpios 54 54 - avdd-supply 55 55 56 + additionalProperties: false 57 + 56 58 examples: 57 59 - | 58 60 #include <dt-bindings/gpio/gpio.h>
+2
Documentation/devicetree/bindings/iio/adc/lltc,ltc2496.yaml
··· 32 32 - vref-supply 33 33 - reg 34 34 35 + additionalProperties: false 36 + 35 37 examples: 36 38 - | 37 39 spi {
+2
Documentation/devicetree/bindings/iio/adc/microchip,mcp3911.yaml
··· 52 52 - compatible 53 53 - reg 54 54 55 + additionalProperties: false 56 + 55 57 examples: 56 58 - | 57 59 spi {
+2
Documentation/devicetree/bindings/iio/adc/st,stm32-dfsdm-adc.yaml
··· 69 69 - "#address-cells" 70 70 - "#size-cells" 71 71 72 + additionalProperties: false 73 + 72 74 patternProperties: 73 75 "^filter@[0-9]+$": 74 76 type: object
+2
Documentation/devicetree/bindings/iio/chemical/plantower,pms7003.yaml
··· 38 38 - compatible 39 39 - vcc-supply 40 40 41 + additionalProperties: false 42 + 41 43 examples: 42 44 - | 43 45 serial {
+2
Documentation/devicetree/bindings/iio/chemical/sensirion,sps30.yaml
··· 24 24 - compatible 25 25 - reg 26 26 27 + additionalProperties: false 28 + 27 29 examples: 28 30 - | 29 31 i2c {
+2
Documentation/devicetree/bindings/iio/dac/lltc,ltc1660.yaml
··· 34 34 - reg 35 35 - vref-supply 36 36 37 + additionalProperties: false 38 + 37 39 examples: 38 40 - | 39 41 spi {
+2
Documentation/devicetree/bindings/iio/light/adux1020.yaml
··· 28 28 - compatible 29 29 - reg 30 30 31 + additionalProperties: false 32 + 31 33 examples: 32 34 - | 33 35 #include <dt-bindings/interrupt-controller/irq.h>
+2
Documentation/devicetree/bindings/iio/light/bh1750.yaml
··· 28 28 - compatible 29 29 - reg 30 30 31 + additionalProperties: false 32 + 31 33 examples: 32 34 - | 33 35 i2c {
+2
Documentation/devicetree/bindings/iio/light/isl29018.yaml
··· 38 38 - compatible 39 39 - reg 40 40 41 + additionalProperties: false 42 + 41 43 examples: 42 44 - | 43 45 #include <dt-bindings/interrupt-controller/irq.h>
+2
Documentation/devicetree/bindings/iio/light/noa1305.yaml
··· 29 29 - compatible 30 30 - reg 31 31 32 + additionalProperties: false 33 + 32 34 examples: 33 35 - | 34 36 i2c {
+2
Documentation/devicetree/bindings/iio/light/stk33xx.yaml
··· 30 30 - compatible 31 31 - reg 32 32 33 + additionalProperties: false 34 + 33 35 examples: 34 36 - | 35 37 #include <dt-bindings/interrupt-controller/irq.h>
+2
Documentation/devicetree/bindings/iio/light/tsl2583.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/tsl2772.yaml
··· 62 62 - compatible 63 63 - reg 64 64 65 + additionalProperties: false 66 + 65 67 examples: 66 68 - | 67 69 #include <dt-bindings/interrupt-controller/irq.h>
+2
Documentation/devicetree/bindings/iio/light/veml6030.yaml
··· 45 45 - compatible 46 46 - reg 47 47 48 + additionalProperties: false 49 + 48 50 examples: 49 51 - | 50 52 #include <dt-bindings/interrupt-controller/irq.h>
+2
Documentation/devicetree/bindings/iio/pressure/asc,dlhl60d.yaml
··· 33 33 - compatible 34 34 - reg 35 35 36 + additionalProperties: false 37 + 36 38 examples: 37 39 - | 38 40 #include <dt-bindings/interrupt-controller/irq.h>
+5
Documentation/devicetree/bindings/iio/pressure/bmp085.yaml
··· 25 25 - bosch,bmp280 26 26 - bosch,bme280 27 27 28 + reg: 29 + maxItems: 1 30 + 28 31 vddd-supply: 29 32 description: 30 33 digital voltage regulator (see regulator/regulator.txt) ··· 51 48 - compatible 52 49 - vddd-supply 53 50 - vdda-supply 51 + 52 + additionalProperties: false 54 53 55 54 examples: 56 55 - |
+2
Documentation/devicetree/bindings/iio/proximity/devantech-srf04.yaml
··· 74 74 - trig-gpios 75 75 - echo-gpios 76 76 77 + additionalProperties: false 78 + 77 79 examples: 78 80 - | 79 81 #include <dt-bindings/gpio/gpio.h>
+2
Documentation/devicetree/bindings/iio/proximity/parallax-ping.yaml
··· 42 42 - compatible 43 43 - ping-gpios 44 44 45 + additionalProperties: false 46 + 45 47 examples: 46 48 - | 47 49 #include <dt-bindings/gpio/gpio.h>
+20 -20
Documentation/devicetree/bindings/iio/temperature/adi,ltc2983.yaml
··· 123 123 sign. 124 124 allOf: 125 125 - $ref: /schemas/types.yaml#/definitions/uint64-matrix 126 + minItems: 3 127 + maxItems: 64 126 128 items: 127 - minItems: 3 128 - maxItems: 64 129 - items: 130 - minItems: 2 131 - maxItems: 2 129 + minItems: 2 130 + maxItems: 2 132 131 133 132 "^diode@": 134 133 type: object ··· 327 328 78 and 79. 328 329 allOf: 329 330 - $ref: /schemas/types.yaml#/definitions/uint64-matrix 331 + minItems: 3 332 + maxItems: 64 330 333 items: 331 - minItems: 3 332 - maxItems: 64 333 - items: 334 - minItems: 2 335 - maxItems: 2 334 + minItems: 2 335 + maxItems: 2 336 336 337 337 adi,custom-steinhart: 338 338 description: ··· 395 397 - compatible 396 398 - reg 397 399 - interrupts 400 + 401 + additionalProperties: false 398 402 399 403 examples: 400 404 - | ··· 463 463 adi,sensor-type = <9>; //custom thermocouple 464 464 adi,single-ended; 465 465 adi,custom-thermocouple = /bits/ 64 466 - <(-50220000) 0 467 - (-30200000) 99100000 468 - (-5300000) 135400000 469 - 0 273150000 470 - 40200000 361200000 471 - 55300000 522100000 472 - 88300000 720300000 473 - 132200000 811200000 474 - 188700000 922500000 475 - 460400000 1000000000>; //10 pairs 466 + <(-50220000) 0>, 467 + <(-30200000) 99100000>, 468 + <(-5300000) 135400000>, 469 + <0 273150000>, 470 + <40200000 361200000>, 471 + <55300000 522100000>, 472 + <88300000 720300000>, 473 + <132200000 811200000>, 474 + <188700000 922500000>, 475 + <460400000 1000000000>; //10 pairs 476 476 }; 477 477 478 478 };
+2
Documentation/devicetree/bindings/input/gpio-vibrator.yaml
··· 26 26 - compatible 27 27 - enable-gpios 28 28 29 + additionalProperties: false 30 + 29 31 examples: 30 32 - | 31 33 #include <dt-bindings/gpio/gpio.h>
+3
Documentation/devicetree/bindings/input/max77650-onkey.yaml
··· 33 33 34 34 required: 35 35 - compatible 36 + additionalProperties: false 37 + 38 + ...
-28
Documentation/devicetree/bindings/input/st,stpmic1-onkey.txt
··· 1 - STMicroelectronics STPMIC1 Onkey 2 - 3 - Required properties: 4 - 5 - - compatible = "st,stpmic1-onkey"; 6 - - interrupts: interrupt line to use 7 - - interrupt-names = "onkey-falling", "onkey-rising" 8 - onkey-falling: happens when onkey is pressed; IT_PONKEY_F of pmic 9 - onkey-rising: happens when onkey is released; IT_PONKEY_R of pmic 10 - 11 - Optional properties: 12 - 13 - - st,onkey-clear-cc-flag: onkey is able power on after an 14 - over-current shutdown event. 15 - - st,onkey-pu-inactive: onkey pull up is not active 16 - - power-off-time-sec: Duration in seconds which the key should be kept 17 - pressed for device to power off automatically (from 1 to 16 seconds). 18 - see See Documentation/devicetree/bindings/input/input.yaml 19 - 20 - Example: 21 - 22 - onkey { 23 - compatible = "st,stpmic1-onkey"; 24 - interrupt-parent = <&pmic>; 25 - interrupts = <IT_PONKEY_F 0>,<IT_PONKEY_R 1>; 26 - interrupt-names = "onkey-falling", "onkey-rising"; 27 - power-off-time-sec = <10>; 28 - };
+2
Documentation/devicetree/bindings/interrupt-controller/intel,ixp4xx-interrupt.yaml
··· 44 44 - interrupt-controller 45 45 - '#interrupt-cells' 46 46 47 + additionalProperties: false 48 + 47 49 examples: 48 50 - | 49 51 intcon: interrupt-controller@c8003000 {
+1 -1
Documentation/devicetree/bindings/interrupt-controller/msi.txt
··· 98 98 }; 99 99 100 100 msi_c: msi-controller@c { 101 - reg = <0xb 0xf00>; 101 + reg = <0xc 0xf00>; 102 102 compatible = "vendor-b,another-controller"; 103 103 msi-controller; 104 104 /* Each device has some unique ID */
-32
Documentation/devicetree/bindings/interrupt-controller/socionext,uniphier-aidet.txt
··· 1 - UniPhier AIDET 2 - 3 - UniPhier AIDET (ARM Interrupt Detector) is an add-on block for ARM GIC (Generic 4 - Interrupt Controller). GIC itself can handle only high level and rising edge 5 - interrupts. The AIDET provides logic inverter to support low level and falling 6 - edge interrupts. 7 - 8 - Required properties: 9 - - compatible: Should be one of the following: 10 - "socionext,uniphier-ld4-aidet" - for LD4 SoC 11 - "socionext,uniphier-pro4-aidet" - for Pro4 SoC 12 - "socionext,uniphier-sld8-aidet" - for sLD8 SoC 13 - "socionext,uniphier-pro5-aidet" - for Pro5 SoC 14 - "socionext,uniphier-pxs2-aidet" - for PXs2/LD6b SoC 15 - "socionext,uniphier-ld11-aidet" - for LD11 SoC 16 - "socionext,uniphier-ld20-aidet" - for LD20 SoC 17 - "socionext,uniphier-pxs3-aidet" - for PXs3 SoC 18 - - reg: Specifies offset and length of the register set for the device. 19 - - interrupt-controller: Identifies the node as an interrupt controller 20 - - #interrupt-cells : Specifies the number of cells needed to encode an interrupt 21 - source. The value should be 2. The first cell defines the interrupt number 22 - (corresponds to the SPI interrupt number of GIC). The second cell specifies 23 - the trigger type as defined in interrupts.txt in this directory. 24 - 25 - Example: 26 - 27 - aidet: aidet@5fc20000 { 28 - compatible = "socionext,uniphier-pro4-aidet"; 29 - reg = <0x5fc20000 0x200>; 30 - interrupt-controller; 31 - #interrupt-cells = <2>; 32 - };
+61
Documentation/devicetree/bindings/interrupt-controller/socionext,uniphier-aidet.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/interrupt-controller/socionext,uniphier-aidet.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: UniPhier AIDET 8 + 9 + description: | 10 + UniPhier AIDET (ARM Interrupt Detector) is an add-on block for ARM GIC 11 + (Generic Interrupt Controller). GIC itself can handle only high level and 12 + rising edge interrupts. The AIDET provides logic inverter to support low 13 + level and falling edge interrupts. 14 + 15 + maintainers: 16 + - Masahiro Yamada <yamada.masahiro@socionext.com> 17 + 18 + allOf: 19 + - $ref: /schemas/interrupt-controller.yaml# 20 + 21 + properties: 22 + compatible: 23 + enum: 24 + - socionext,uniphier-ld4-aidet 25 + - socionext,uniphier-pro4-aidet 26 + - socionext,uniphier-sld8-aidet 27 + - socionext,uniphier-pro5-aidet 28 + - socionext,uniphier-pxs2-aidet 29 + - socionext,uniphier-ld6b-aidet 30 + - socionext,uniphier-ld11-aidet 31 + - socionext,uniphier-ld20-aidet 32 + - socionext,uniphier-pxs3-aidet 33 + 34 + reg: 35 + maxItems: 1 36 + 37 + interrupt-controller: true 38 + 39 + '#interrupt-cells': 40 + description: | 41 + The first cell defines the interrupt number (corresponds to the SPI 42 + interrupt number of GIC). The second cell specifies the trigger type as 43 + defined in interrupts.txt in this directory. 44 + const: 2 45 + 46 + required: 47 + - compatible 48 + - reg 49 + - interrupt-controller 50 + - '#interrupt-cells' 51 + 52 + additionalProperties: false 53 + 54 + examples: 55 + - | 56 + interrupt-controller@5fc20000 { 57 + compatible = "socionext,uniphier-pro4-aidet"; 58 + reg = <0x5fc20000 0x200>; 59 + interrupt-controller; 60 + #interrupt-cells = <2>; 61 + };
+2
Documentation/devicetree/bindings/iommu/samsung,sysmmu.yaml
··· 80 80 - clock-names 81 81 - "#iommu-cells" 82 82 83 + additionalProperties: false 84 + 83 85 examples: 84 86 - | 85 87 #include <dt-bindings/clock/exynos5250.h>
+2 -2
Documentation/devicetree/bindings/leds/common.yaml
··· 167 167 led-controller { 168 168 compatible = "gpio-leds"; 169 169 170 - led0 { 170 + led-0 { 171 171 function = LED_FUNCTION_STATUS; 172 172 linux,default-trigger = "heartbeat"; 173 173 gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>; 174 174 }; 175 175 176 - led1 { 176 + led-1 { 177 177 function = LED_FUNCTION_USB; 178 178 gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>; 179 179 trigger-sources = <&ohci_port1>, <&ehci_port1>;
+3
Documentation/devicetree/bindings/leds/leds-max77650.yaml
··· 49 49 - compatible 50 50 - "#address-cells" 51 51 - "#size-cells" 52 + additionalProperties: false 53 + 54 + ...
+3
Documentation/devicetree/bindings/leds/rohm,bd71828-leds.yaml
··· 50 50 51 51 required: 52 52 - compatible 53 + additionalProperties: false 54 + 55 + ...
+2
Documentation/devicetree/bindings/mailbox/amlogic,meson-gxbb-mhu.yaml
··· 41 41 - interrupts 42 42 - "#mbox-cells" 43 43 44 + additionalProperties: false 45 + 44 46 examples: 45 47 - | 46 48 mailbox@c883c404 {
+2
Documentation/devicetree/bindings/media/amlogic,gx-vdec.yaml
··· 124 124 - amlogic,ao-sysctrl 125 125 - amlogic,canvas 126 126 127 + additionalProperties: false 128 + 127 129 examples: 128 130 - | 129 131 vdec: video-decoder@c8820000 {
+8 -3
Documentation/devicetree/bindings/media/amlogic,meson-gx-ao-cec.yaml
··· 24 24 reg: 25 25 maxItems: 1 26 26 27 + clocks: 28 + maxItems: 1 29 + 30 + clock-names: 31 + maxItems: 1 32 + 27 33 interrupts: 28 34 maxItems: 1 29 35 ··· 53 47 - description: AO-CEC clock 54 48 55 49 clock-names: 56 - maxItems: 1 57 50 items: 58 51 - const: core 59 52 ··· 71 66 - description: AO-CEC clock generator source 72 67 73 68 clock-names: 74 - maxItems: 1 75 69 items: 76 70 - const: oscin 77 71 ··· 82 78 - clocks 83 79 - clock-names 84 80 81 + additionalProperties: false 82 + 85 83 examples: 86 84 - | 87 85 cec_AO: cec@100 { ··· 94 88 clock-names = "core"; 95 89 hdmi-phandle = <&hdmi_tx>; 96 90 }; 97 -
+2
Documentation/devicetree/bindings/media/renesas,ceu.yaml
··· 59 59 - interrupts 60 60 - port 61 61 62 + additionalProperties: false 63 + 62 64 examples: 63 65 - | 64 66 #include <dt-bindings/interrupt-controller/arm-gic.h>
-217
Documentation/devicetree/bindings/media/renesas,vin.txt
··· 1 - Renesas R-Car Video Input driver (rcar_vin) 2 - ------------------------------------------- 3 - 4 - The rcar_vin device provides video input capabilities for the Renesas R-Car 5 - family of devices. 6 - 7 - Each VIN instance has a single parallel input that supports RGB and YUV video, 8 - with both external synchronization and BT.656 synchronization for the latter. 9 - Depending on the instance the VIN input is connected to external SoC pins, or 10 - on Gen3 and RZ/G2 platforms to a CSI-2 receiver. 11 - 12 - - compatible: Must be one or more of the following 13 - - "renesas,vin-r8a7743" for the R8A7743 device 14 - - "renesas,vin-r8a7744" for the R8A7744 device 15 - - "renesas,vin-r8a7745" for the R8A7745 device 16 - - "renesas,vin-r8a77470" for the R8A77470 device 17 - - "renesas,vin-r8a774a1" for the R8A774A1 device 18 - - "renesas,vin-r8a774b1" for the R8A774B1 device 19 - - "renesas,vin-r8a774c0" for the R8A774C0 device 20 - - "renesas,vin-r8a7778" for the R8A7778 device 21 - - "renesas,vin-r8a7779" for the R8A7779 device 22 - - "renesas,vin-r8a7790" for the R8A7790 device 23 - - "renesas,vin-r8a7791" for the R8A7791 device 24 - - "renesas,vin-r8a7792" for the R8A7792 device 25 - - "renesas,vin-r8a7793" for the R8A7793 device 26 - - "renesas,vin-r8a7794" for the R8A7794 device 27 - - "renesas,vin-r8a7795" for the R8A7795 device 28 - - "renesas,vin-r8a7796" for the R8A7796 device 29 - - "renesas,vin-r8a77965" for the R8A77965 device 30 - - "renesas,vin-r8a77970" for the R8A77970 device 31 - - "renesas,vin-r8a77980" for the R8A77980 device 32 - - "renesas,vin-r8a77990" for the R8A77990 device 33 - - "renesas,vin-r8a77995" for the R8A77995 device 34 - - "renesas,rcar-gen2-vin" for a generic R-Car Gen2 or RZ/G1 compatible 35 - device. 36 - 37 - When compatible with the generic version nodes must list the 38 - SoC-specific version corresponding to the platform first 39 - followed by the generic version. 40 - 41 - - reg: the register base and size for the device registers 42 - - interrupts: the interrupt for the device 43 - - clocks: Reference to the parent clock 44 - 45 - The per-board settings for Gen2 and RZ/G1 platforms: 46 - 47 - - port - sub-node describing a single endpoint connected to the VIN 48 - from external SoC pins as described in video-interfaces.txt[1]. 49 - Only the first one will be considered as each vin interface has one 50 - input port. 51 - 52 - - Optional properties for endpoint nodes: 53 - - hsync-active: see [1] for description. Default is active high. 54 - - vsync-active: see [1] for description. Default is active high. 55 - If both HSYNC and VSYNC polarities are not specified, embedded 56 - synchronization is selected. 57 - - field-active-even: see [1] for description. Default is active high. 58 - - bus-width: see [1] for description. The selected bus width depends on 59 - the SoC type and selected input image format. 60 - Valid values are: 8, 10, 12, 16, 24 and 32. 61 - - data-shift: see [1] for description. Valid values are 0 and 8. 62 - - data-enable-active: polarity of CLKENB signal, see [1] for 63 - description. Default is active high. 64 - 65 - The per-board settings for Gen3 and RZ/G2 platforms: 66 - 67 - Gen3 and RZ/G2 platforms can support both a single connected parallel input 68 - source from external SoC pins (port@0) and/or multiple parallel input sources 69 - from local SoC CSI-2 receivers (port@1) depending on SoC. 70 - 71 - - renesas,id - ID number of the VIN, VINx in the documentation. 72 - - ports 73 - - port@0 - sub-node describing a single endpoint connected to the VIN 74 - from external SoC pins as described in video-interfaces.txt[1]. 75 - Describing more than one endpoint in port@0 is invalid. Only VIN 76 - instances that are connected to external pins should have port@0. 77 - 78 - Endpoint nodes of port@0 support the optional properties listed in 79 - the Gen2 per-board settings description. 80 - 81 - - port@1 - sub-nodes describing one or more endpoints connected to 82 - the VIN from local SoC CSI-2 receivers. The endpoint numbers must 83 - use the following schema. 84 - 85 - - endpoint@0 - sub-node describing the endpoint connected to CSI20 86 - - endpoint@1 - sub-node describing the endpoint connected to CSI21 87 - - endpoint@2 - sub-node describing the endpoint connected to CSI40 88 - - endpoint@3 - sub-node describing the endpoint connected to CSI41 89 - 90 - Endpoint nodes of port@1 do not support any optional endpoint property. 91 - 92 - Device node example for Gen2 platforms 93 - -------------------------------------- 94 - 95 - aliases { 96 - vin0 = &vin0; 97 - }; 98 - 99 - vin0: vin@e6ef0000 { 100 - compatible = "renesas,vin-r8a7790", "renesas,rcar-gen2-vin"; 101 - clocks = <&mstp8_clks R8A7790_CLK_VIN0>; 102 - reg = <0 0xe6ef0000 0 0x1000>; 103 - interrupts = <0 188 IRQ_TYPE_LEVEL_HIGH>; 104 - status = "disabled"; 105 - }; 106 - 107 - Board setup example for Gen2 platforms (vin1 composite video input) 108 - ------------------------------------------------------------------- 109 - 110 - &i2c2 { 111 - status = "okay"; 112 - pinctrl-0 = <&i2c2_pins>; 113 - pinctrl-names = "default"; 114 - 115 - adv7180@20 { 116 - compatible = "adi,adv7180"; 117 - reg = <0x20>; 118 - remote = <&vin1>; 119 - 120 - port { 121 - adv7180: endpoint { 122 - bus-width = <8>; 123 - remote-endpoint = <&vin1ep0>; 124 - }; 125 - }; 126 - }; 127 - }; 128 - 129 - /* composite video input */ 130 - &vin1 { 131 - pinctrl-0 = <&vin1_pins>; 132 - pinctrl-names = "default"; 133 - 134 - status = "okay"; 135 - 136 - port { 137 - vin1ep0: endpoint { 138 - remote-endpoint = <&adv7180>; 139 - bus-width = <8>; 140 - }; 141 - }; 142 - }; 143 - 144 - Device node example for Gen3 platforms 145 - -------------------------------------- 146 - 147 - vin0: video@e6ef0000 { 148 - compatible = "renesas,vin-r8a7795"; 149 - reg = <0 0xe6ef0000 0 0x1000>; 150 - interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>; 151 - clocks = <&cpg CPG_MOD 811>; 152 - power-domains = <&sysc R8A7795_PD_ALWAYS_ON>; 153 - resets = <&cpg 811>; 154 - renesas,id = <0>; 155 - 156 - ports { 157 - #address-cells = <1>; 158 - #size-cells = <0>; 159 - 160 - port@1 { 161 - #address-cells = <1>; 162 - #size-cells = <0>; 163 - 164 - reg = <1>; 165 - 166 - vin0csi20: endpoint@0 { 167 - reg = <0>; 168 - remote-endpoint= <&csi20vin0>; 169 - }; 170 - vin0csi21: endpoint@1 { 171 - reg = <1>; 172 - remote-endpoint= <&csi21vin0>; 173 - }; 174 - vin0csi40: endpoint@2 { 175 - reg = <2>; 176 - remote-endpoint= <&csi40vin0>; 177 - }; 178 - }; 179 - }; 180 - }; 181 - 182 - csi20: csi2@fea80000 { 183 - compatible = "renesas,r8a7795-csi2"; 184 - reg = <0 0xfea80000 0 0x10000>; 185 - interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>; 186 - clocks = <&cpg CPG_MOD 714>; 187 - power-domains = <&sysc R8A7795_PD_ALWAYS_ON>; 188 - resets = <&cpg 714>; 189 - 190 - ports { 191 - #address-cells = <1>; 192 - #size-cells = <0>; 193 - 194 - port@0 { 195 - reg = <0>; 196 - csi20_in: endpoint { 197 - clock-lanes = <0>; 198 - data-lanes = <1>; 199 - remote-endpoint = <&adv7482_txb>; 200 - }; 201 - }; 202 - 203 - port@1 { 204 - #address-cells = <1>; 205 - #size-cells = <0>; 206 - 207 - reg = <1>; 208 - 209 - csi20vin0: endpoint@0 { 210 - reg = <0>; 211 - remote-endpoint = <&vin0csi20>; 212 - }; 213 - }; 214 - }; 215 - }; 216 - 217 - [1] video-interfaces.txt common video media interface
+402
Documentation/devicetree/bindings/media/renesas,vin.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + # Copyright (C) 2020 Renesas Electronics Corp. 3 + %YAML 1.2 4 + --- 5 + $id: http://devicetree.org/schemas/media/renesas,vin.yaml# 6 + $schema: http://devicetree.org/meta-schemas/core.yaml# 7 + 8 + title: Renesas R-Car Video Input (VIN) 9 + 10 + maintainers: 11 + - Niklas Söderlund <niklas.soderlund@ragnatech.se> 12 + 13 + description: 14 + The R-Car Video Input (VIN) device provides video input capabilities for the 15 + Renesas R-Car family of devices. 16 + 17 + Each VIN instance has a single parallel input that supports RGB and YUV video, 18 + with both external synchronization and BT.656 synchronization for the latter. 19 + Depending on the instance the VIN input is connected to external SoC pins, or 20 + on Gen3 and RZ/G2 platforms to a CSI-2 receiver. 21 + 22 + properties: 23 + compatible: 24 + oneOf: 25 + - items: 26 + - enum: 27 + - renesas,vin-r8a7743 # RZ/G1M 28 + - renesas,vin-r8a7744 # RZ/G1N 29 + - renesas,vin-r8a7745 # RZ/G1E 30 + - renesas,vin-r8a77470 # RZ/G1C 31 + - renesas,vin-r8a7790 # R-Car H2 32 + - renesas,vin-r8a7791 # R-Car M2-W 33 + - renesas,vin-r8a7792 # R-Car V2H 34 + - renesas,vin-r8a7793 # R-Car M2-N 35 + - renesas,vin-r8a7794 # R-Car E2 36 + - const: renesas,rcar-gen2-vin # Generic R-Car Gen2 or RZ/G1 37 + 38 + - items: 39 + - enum: 40 + - renesas,vin-r8a774a1 # RZ/G2M 41 + - renesas,vin-r8a774b1 # RZ/G2N 42 + - renesas,vin-r8a774c0 # RZ/G2E 43 + - renesas,vin-r8a7778 # R-Car M1 44 + - renesas,vin-r8a7779 # R-Car H1 45 + - renesas,vin-r8a7795 # R-Car H3 46 + - renesas,vin-r8a7796 # R-Car M3-W 47 + - renesas,vin-r8a77965 # R-Car M3-N 48 + - renesas,vin-r8a77970 # R-Car V3M 49 + - renesas,vin-r8a77980 # R-Car V3H 50 + - renesas,vin-r8a77990 # R-Car E3 51 + - renesas,vin-r8a77995 # R-Car D3 52 + 53 + reg: 54 + maxItems: 1 55 + 56 + interrupts: 57 + maxItems: 1 58 + 59 + clocks: 60 + maxItems: 1 61 + 62 + power-domains: 63 + maxItems: 1 64 + 65 + resets: 66 + maxItems: 1 67 + 68 + #The per-board settings for Gen2 and RZ/G1 platforms: 69 + port: 70 + type: object 71 + description: 72 + A node containing a parallel input with a single endpoint definitions as 73 + documented in 74 + Documentation/devicetree/bindings/media/video-interfaces.txt 75 + 76 + properties: 77 + endpoint: 78 + type: object 79 + 80 + properties: 81 + hsync-active: 82 + description: 83 + If both HSYNC and VSYNC polarities are not specified, embedded 84 + synchronization is selected. 85 + default: 1 86 + 87 + vsync-active: 88 + description: 89 + If both HSYNC and VSYNC polarities are not specified, embedded 90 + synchronization is selected. 91 + default: 1 92 + 93 + field-active-even: true 94 + 95 + bus-width: true 96 + 97 + data-shift: true 98 + 99 + data-enable-active: 100 + description: Polarity of CLKENB signal 101 + default: 1 102 + 103 + pclk-sample: true 104 + 105 + data-active: true 106 + 107 + remote-endpoint: true 108 + 109 + required: 110 + - remote-endpoint 111 + 112 + additionalProperties: false 113 + 114 + additionalProperties: false 115 + 116 + #The per-board settings for Gen3 and RZ/G2 platforms: 117 + renesas,id: 118 + description: VIN channel number 119 + allOf: 120 + - $ref: /schemas/types.yaml#/definitions/uint32 121 + - minimum: 0 122 + - maximum: 15 123 + 124 + ports: 125 + type: object 126 + description: 127 + A node containing input nodes with endpoint definitions as documented in 128 + Documentation/devicetree/bindings/media/video-interfaces.txt 129 + 130 + properties: 131 + port@0: 132 + type: object 133 + description: 134 + Input port node, single endpoint describing a parallel input source. 135 + 136 + properties: 137 + reg: 138 + const: 0 139 + 140 + endpoint: 141 + type: object 142 + 143 + properties: 144 + hsync-active: 145 + description: 146 + If both HSYNC and VSYNC polarities are not specified, embedded 147 + synchronization is selected. 148 + default: 1 149 + 150 + vsync-active: 151 + description: 152 + If both HSYNC and VSYNC polarities are not specified, embedded 153 + synchronization is selected. 154 + default: 1 155 + 156 + field-active-even: true 157 + 158 + bus-width: true 159 + 160 + data-shift: true 161 + 162 + data-enable-active: 163 + description: Polarity of CLKENB signal 164 + default: 1 165 + 166 + pclk-sample: true 167 + 168 + data-active: true 169 + 170 + remote-endpoint: true 171 + 172 + required: 173 + - remote-endpoint 174 + 175 + additionalProperties: false 176 + 177 + required: 178 + - endpoint 179 + 180 + additionalProperties: false 181 + 182 + port@1: 183 + type: object 184 + description: 185 + Input port node, multiple endpoints describing all the R-Car CSI-2 186 + modules connected the VIN. 187 + 188 + properties: 189 + '#address-cells': 190 + const: 1 191 + 192 + '#size-cells': 193 + const: 0 194 + 195 + reg: 196 + const: 1 197 + 198 + endpoint@0: 199 + type: object 200 + description: Endpoint connected to CSI20. 201 + 202 + properties: 203 + reg: 204 + const: 0 205 + 206 + remote-endpoint: true 207 + 208 + required: 209 + - reg 210 + - remote-endpoint 211 + 212 + additionalProperties: false 213 + 214 + endpoint@1: 215 + type: object 216 + description: Endpoint connected to CSI21. 217 + 218 + properties: 219 + reg: 220 + const: 1 221 + 222 + remote-endpoint: true 223 + 224 + required: 225 + - reg 226 + - remote-endpoint 227 + 228 + additionalProperties: false 229 + 230 + endpoint@2: 231 + type: object 232 + description: Endpoint connected to CSI40. 233 + 234 + properties: 235 + reg: 236 + const: 2 237 + 238 + remote-endpoint: true 239 + 240 + required: 241 + - reg 242 + - remote-endpoint 243 + 244 + additionalProperties: false 245 + 246 + endpoint@3: 247 + type: object 248 + description: Endpoint connected to CSI41. 249 + 250 + properties: 251 + reg: 252 + const: 3 253 + 254 + remote-endpoint: true 255 + 256 + required: 257 + - reg 258 + - remote-endpoint 259 + 260 + additionalProperties: false 261 + 262 + anyOf: 263 + - required: 264 + - endpoint@0 265 + - required: 266 + - endpoint@1 267 + - required: 268 + - endpoint@2 269 + - required: 270 + - endpoint@3 271 + 272 + additionalProperties: false 273 + 274 + required: 275 + - compatible 276 + - reg 277 + - interrupts 278 + - clocks 279 + - power-domains 280 + - resets 281 + 282 + if: 283 + properties: 284 + compatible: 285 + contains: 286 + enum: 287 + - renesas,vin-r8a7778 288 + - renesas,vin-r8a7779 289 + - renesas,rcar-gen2-vin 290 + then: 291 + required: 292 + - port 293 + else: 294 + required: 295 + - renesas,id 296 + - ports 297 + 298 + additionalProperties: false 299 + 300 + examples: 301 + # Device node example for Gen2 platform 302 + - | 303 + #include <dt-bindings/clock/r8a7790-cpg-mssr.h> 304 + #include <dt-bindings/interrupt-controller/arm-gic.h> 305 + #include <dt-bindings/power/r8a7790-sysc.h> 306 + 307 + vin1: vin@e6ef1000 { 308 + compatible = "renesas,vin-r8a7790", 309 + "renesas,rcar-gen2-vin"; 310 + reg = <0 0xe6ef1000 0 0x1000>; 311 + interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>; 312 + clocks = <&cpg CPG_MOD 810>; 313 + power-domains = <&sysc R8A7790_PD_ALWAYS_ON>; 314 + resets = <&cpg 810>; 315 + 316 + port { 317 + vin1ep0: endpoint { 318 + remote-endpoint = <&adv7180>; 319 + bus-width = <8>; 320 + }; 321 + }; 322 + }; 323 + 324 + # Device node example for Gen3 platform with only CSI-2 325 + - | 326 + #include <dt-bindings/clock/r8a7795-cpg-mssr.h> 327 + #include <dt-bindings/interrupt-controller/arm-gic.h> 328 + #include <dt-bindings/power/r8a7795-sysc.h> 329 + 330 + vin0: video@e6ef0000 { 331 + compatible = "renesas,vin-r8a7795"; 332 + reg = <0 0xe6ef0000 0 0x1000>; 333 + interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>; 334 + clocks = <&cpg CPG_MOD 811>; 335 + power-domains = <&sysc R8A7795_PD_ALWAYS_ON>; 336 + resets = <&cpg 811>; 337 + renesas,id = <0>; 338 + 339 + ports { 340 + #address-cells = <1>; 341 + #size-cells = <0>; 342 + 343 + port@1 { 344 + #address-cells = <1>; 345 + #size-cells = <0>; 346 + 347 + reg = <1>; 348 + 349 + vin0csi20: endpoint@0 { 350 + reg = <0>; 351 + remote-endpoint= <&csi20vin0>; 352 + }; 353 + vin0csi40: endpoint@2 { 354 + reg = <2>; 355 + remote-endpoint= <&csi40vin0>; 356 + }; 357 + }; 358 + }; 359 + }; 360 + 361 + # Device node example for Gen3 platform with CSI-2 and parallel 362 + - | 363 + #include <dt-bindings/clock/r8a77970-cpg-mssr.h> 364 + #include <dt-bindings/interrupt-controller/arm-gic.h> 365 + #include <dt-bindings/power/r8a77970-sysc.h> 366 + 367 + vin2: video@e6ef2000 { 368 + compatible = "renesas,vin-r8a77970"; 369 + reg = <0 0xe6ef2000 0 0x1000>; 370 + interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>; 371 + clocks = <&cpg CPG_MOD 809>; 372 + power-domains = <&sysc R8A77970_PD_ALWAYS_ON>; 373 + resets = <&cpg 809>; 374 + renesas,id = <2>; 375 + 376 + ports { 377 + #address-cells = <1>; 378 + #size-cells = <0>; 379 + 380 + port@0 { 381 + reg = <0>; 382 + 383 + vin2_in: endpoint { 384 + remote-endpoint = <&adv7612_out>; 385 + hsync-active = <0>; 386 + vsync-active = <0>; 387 + }; 388 + }; 389 + 390 + port@1 { 391 + #address-cells = <1>; 392 + #size-cells = <0>; 393 + 394 + reg = <1>; 395 + 396 + vin2csi40: endpoint@2 { 397 + reg = <2>; 398 + remote-endpoint = <&csi40vin2>; 399 + }; 400 + }; 401 + }; 402 + };
+2
Documentation/devicetree/bindings/mfd/max77650.yaml
··· 73 73 - gpio-controller 74 74 - "#gpio-cells" 75 75 76 + additionalProperties: false 77 + 76 78 examples: 77 79 - | 78 80 #include <dt-bindings/interrupt-controller/irq.h>
+5
Documentation/devicetree/bindings/mfd/rohm,bd71828-pmic.yaml
··· 41 41 "#clock-cells": 42 42 const: 0 43 43 44 + clock-output-names: 45 + const: bd71828-32k-out 46 + 44 47 rohm,charger-sense-resistor-ohms: 45 48 minimum: 10000000 46 49 maximum: 50000000 ··· 76 73 - regulators 77 74 - gpio-controller 78 75 - "#gpio-cells" 76 + 77 + additionalProperties: false 79 78 80 79 examples: 81 80 - |
-61
Documentation/devicetree/bindings/mfd/st,stpmic1.txt
··· 1 - * STMicroelectronics STPMIC1 Power Management IC 2 - 3 - Required properties: 4 - - compatible: : "st,stpmic1" 5 - - reg: : The I2C slave address for the STPMIC1 chip. 6 - - interrupts: : The interrupt line the device is connected to. 7 - - #interrupt-cells: : Should be 1. 8 - - interrupt-controller: : Marks the device node as an interrupt controller. 9 - Interrupt numbers are defined at 10 - dt-bindings/mfd/st,stpmic1.h. 11 - 12 - STPMIC1 consists in a varied group of sub-devices. 13 - Each sub-device binding is be described in own documentation file. 14 - 15 - Device Description 16 - ------ ------------ 17 - st,stpmic1-onkey : Power on key, see ../input/st,stpmic1-onkey.txt 18 - st,stpmic1-regulators : Regulators, see ../regulator/st,stpmic1-regulator.txt 19 - st,stpmic1-wdt : Watchdog, see ../watchdog/st,stpmic1-wdt.txt 20 - 21 - Example: 22 - 23 - #include <dt-bindings/mfd/st,stpmic1.h> 24 - 25 - pmic: pmic@33 { 26 - compatible = "st,stpmic1"; 27 - reg = <0x33>; 28 - interrupt-parent = <&gpioa>; 29 - interrupts = <0 2>; 30 - 31 - interrupt-controller; 32 - #interrupt-cells = <2>; 33 - 34 - onkey { 35 - compatible = "st,stpmic1-onkey"; 36 - interrupts = <IT_PONKEY_F 0>,<IT_PONKEY_R 1>; 37 - interrupt-names = "onkey-falling", "onkey-rising"; 38 - power-off-time-sec = <10>; 39 - }; 40 - 41 - watchdog { 42 - compatible = "st,stpmic1-wdt"; 43 - }; 44 - 45 - regulators { 46 - compatible = "st,stpmic1-regulators"; 47 - 48 - vdd_core: buck1 { 49 - regulator-name = "vdd_core"; 50 - regulator-boot-on; 51 - regulator-min-microvolt = <700000>; 52 - regulator-max-microvolt = <1200000>; 53 - }; 54 - vdd: buck3 { 55 - regulator-name = "vdd"; 56 - regulator-min-microvolt = <3300000>; 57 - regulator-max-microvolt = <3300000>; 58 - regulator-boot-on; 59 - regulator-pull-down; 60 - }; 61 - };
+339
Documentation/devicetree/bindings/mfd/st,stpmic1.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/mfd/st,stpmic1.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: STMicroelectonics STPMIC1 Power Management IC bindings 8 + 9 + description: STMicroelectronics STPMIC1 Power Management IC 10 + 11 + maintainers: 12 + - pascal Paillet <p.paillet@st.com> 13 + 14 + properties: 15 + compatible: 16 + const: st,stpmic1 17 + 18 + reg: 19 + const: 0x33 20 + 21 + interrupts: 22 + maxItems: 1 23 + 24 + "#interrupt-cells": 25 + const: 2 26 + 27 + interrupt-controller: true 28 + 29 + onkey: 30 + type: object 31 + 32 + allOf: 33 + - $ref: ../input/input.yaml 34 + 35 + properties: 36 + compatible: 37 + const: st,stpmic1-onkey 38 + 39 + interrupts: 40 + items: 41 + - description: onkey-falling, happens when onkey is pressed. IT_PONKEY_F of pmic 42 + - description: onkey-rising, happens when onkey is released. IT_PONKEY_R of pmic 43 + 44 + interrupt-names: 45 + items: 46 + - const: onkey-falling 47 + - const: onkey-rising 48 + 49 + st,onkey-clear-cc-flag: 50 + description: onkey is able power on after an over-current shutdown event. 51 + $ref: /schemas/types.yaml#/definitions/flag 52 + 53 + st,onkey-pu-inactive: 54 + description: onkey pull up is not active 55 + $ref: /schemas/types.yaml#/definitions/flag 56 + 57 + power-off-time-sec: 58 + minimum: 1 59 + maximum: 16 60 + 61 + required: 62 + - compatible 63 + - interrupts 64 + - interrupt-names 65 + 66 + additionalProperties: false 67 + 68 + watchdog: 69 + type: object 70 + 71 + allOf: 72 + - $ref: ../watchdog/watchdog.yaml 73 + 74 + properties: 75 + compatible: 76 + const: st,stpmic1-wdt 77 + 78 + timeout-sec: true 79 + 80 + required: 81 + - compatible 82 + 83 + additionalProperties: false 84 + 85 + regulators: 86 + type: object 87 + 88 + description: | 89 + Available Regulators in STPMIC1 device are: 90 + - buck1 for Buck BUCK1 91 + - buck2 for Buck BUCK2 92 + - buck3 for Buck BUCK3 93 + - buck4 for Buck BUCK4 94 + - ldo1 for LDO LDO1 95 + - ldo2 for LDO LDO2 96 + - ldo3 for LDO LDO3 97 + - ldo4 for LDO LDO4 98 + - ldo5 for LDO LDO5 99 + - ldo6 for LDO LDO6 100 + - vref_ddr for LDO Vref DDR 101 + - boost for Buck BOOST 102 + - pwr_sw1 for VBUS_OTG switch 103 + - pwr_sw2 for SW_OUT switch 104 + Switches are fixed voltage regulators with only enable/disable capability. 105 + 106 + properties: 107 + compatible: 108 + const: st,stpmic1-regulators 109 + 110 + ldo3: 111 + type: object 112 + 113 + properties: 114 + interrupts: 115 + maxItems: 1 116 + 117 + st,mask-reset: 118 + description: mask reset for this regulator, 119 + the regulator configuration is maintained during pmic reset. 120 + $ref: /schemas/types.yaml#/definitions/flag 121 + 122 + regulator-name: true 123 + regulator-boot-on: true 124 + regulator-always-on: true 125 + regulator-min-microvolt: true 126 + regulator-max-microvolt: true 127 + regulator-allow-bypass: true 128 + regulator-over-current-protection: true 129 + 130 + additionalProperties: false 131 + 132 + ldo4: 133 + type: object 134 + 135 + properties: 136 + interrupts: 137 + maxItems: 1 138 + 139 + st,mask-reset: 140 + description: mask reset for this regulator, 141 + the regulator configuration is maintained during pmic reset. 142 + $ref: /schemas/types.yaml#/definitions/flag 143 + 144 + regulator-name: true 145 + regulator-boot-on: true 146 + regulator-always-on: true 147 + regulator-over-current-protection: true 148 + 149 + additionalProperties: false 150 + 151 + vref_ddr: 152 + type: object 153 + 154 + properties: 155 + interrupts: 156 + maxItems: 1 157 + 158 + st,mask-reset: 159 + description: mask reset for this regulator, 160 + the regulator configuration is maintained during pmic reset. 161 + $ref: /schemas/types.yaml#/definitions/flag 162 + 163 + regulator-name: true 164 + regulator-boot-on: true 165 + regulator-always-on: true 166 + 167 + additionalProperties: false 168 + 169 + boost: 170 + type: object 171 + 172 + properties: 173 + interrupts: 174 + maxItems: 1 175 + 176 + st,mask-reset: 177 + description: mask reset for this regulator, 178 + the regulator configuration is maintained during pmic reset. 179 + $ref: /schemas/types.yaml#/definitions/flag 180 + 181 + regulator-name: true 182 + regulator-boot-on: true 183 + regulator-always-on: true 184 + regulator-over-current-protection: true 185 + 186 + additionalProperties: false 187 + 188 + patternProperties: 189 + "^(buck[1-4]|ldo[1-6]|boost|pwr_sw[1-2])-supply$": 190 + description: STPMIC1 voltage regulators supplies 191 + 192 + "^(buck[1-4]|ldo[1-6]|boost|vref_ddr|pwr_sw[1-2])$": 193 + allOf: 194 + - $ref: ../regulator/regulator.yaml 195 + 196 + "^ldo[1-2,5-6]$": 197 + type: object 198 + 199 + properties: 200 + interrupts: 201 + maxItems: 1 202 + 203 + st,mask-reset: 204 + description: mask reset for this regulator, 205 + the regulator configuration is maintained during pmic reset. 206 + $ref: /schemas/types.yaml#/definitions/flag 207 + 208 + regulator-name: true 209 + regulator-boot-on: true 210 + regulator-always-on: true 211 + regulator-min-microvolt: true 212 + regulator-max-microvolt: true 213 + regulator-over-current-protection: true 214 + regulator-enable-ramp-delay: true 215 + 216 + additionalProperties: false 217 + 218 + "^buck[1-4]$": 219 + type: object 220 + 221 + properties: 222 + interrupts: 223 + maxItems: 1 224 + 225 + st,mask-reset: 226 + description: mask reset for this regulator, 227 + the regulator configuration is maintained during pmic reset. 228 + $ref: /schemas/types.yaml#/definitions/flag 229 + 230 + regulator-name: true 231 + regulator-boot-on: true 232 + regulator-always-on: true 233 + regulator-min-microvolt: true 234 + regulator-max-microvolt: true 235 + regulator-initial-mode: true 236 + regulator-pull-down: true 237 + regulator-over-current-protection: true 238 + regulator-enable-ramp-delay: true 239 + 240 + additionalProperties: false 241 + 242 + "^pwr_sw[1-2]$": 243 + type: object 244 + 245 + properties: 246 + interrupts: 247 + maxItems: 1 248 + 249 + regulator-name: true 250 + regulator-boot-on: true 251 + regulator-always-on: true 252 + regulator-over-current-protection: true 253 + regulator-active-discharge: true 254 + 255 + additionalProperties: false 256 + 257 + required: 258 + - compatible 259 + 260 + additionalProperties: false 261 + 262 + additionalProperties: false 263 + 264 + additionalProperties: false 265 + 266 + required: 267 + - compatible 268 + - reg 269 + - interrupts 270 + - "#interrupt-cells" 271 + - interrupt-controller 272 + 273 + examples: 274 + - | 275 + #include <dt-bindings/mfd/st,stpmic1.h> 276 + #include <dt-bindings/interrupt-controller/arm-gic.h> 277 + i2c@0 { 278 + #address-cells = <1>; 279 + #size-cells = <0>; 280 + pmic@33 { 281 + compatible = "st,stpmic1"; 282 + reg = <0x33>; 283 + interrupt-parent = <&gpioa>; 284 + interrupts = <0 2>; 285 + 286 + interrupt-controller; 287 + #interrupt-cells = <2>; 288 + 289 + onkey { 290 + compatible = "st,stpmic1-onkey"; 291 + interrupts = <IT_PONKEY_F 0>,<IT_PONKEY_R 1>; 292 + interrupt-names = "onkey-falling", "onkey-rising"; 293 + power-off-time-sec = <10>; 294 + }; 295 + 296 + watchdog { 297 + compatible = "st,stpmic1-wdt"; 298 + }; 299 + 300 + regulators { 301 + compatible = "st,stpmic1-regulators"; 302 + 303 + ldo6-supply = <&v3v3>; 304 + 305 + buck1 { 306 + regulator-name = "vdd_core"; 307 + interrupts = <IT_CURLIM_BUCK1 0>; 308 + st,mask-reset; 309 + regulator-boot-on; 310 + regulator-min-microvolt = <700000>; 311 + regulator-max-microvolt = <1200000>; 312 + }; 313 + 314 + buck3 { 315 + regulator-name = "vdd"; 316 + regulator-min-microvolt = <3300000>; 317 + regulator-max-microvolt = <3300000>; 318 + regulator-boot-on; 319 + regulator-pull-down; 320 + }; 321 + 322 + buck4 { 323 + regulator-name = "v3v3"; 324 + interrupts = <IT_CURLIM_BUCK4 0>; 325 + regulator-min-microvolt = <3300000>; 326 + regulator-max-microvolt = <3300000>; 327 + }; 328 + 329 + ldo6 { 330 + regulator-name = "v1v8"; 331 + regulator-min-microvolt = <1800000>; 332 + regulator-max-microvolt = <1800000>; 333 + regulator-over-current-protection; 334 + }; 335 + }; 336 + }; 337 + }; 338 + 339 + ...
+2
Documentation/devicetree/bindings/misc/intel,ixp4xx-ahb-queue-manager.yaml
··· 38 38 - reg 39 39 - interrupts 40 40 41 + additionalProperties: false 42 + 41 43 examples: 42 44 - | 43 45 #include <dt-bindings/interrupt-controller/irq.h>
+143
Documentation/devicetree/bindings/mmc/cdns,sdhci.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/mmc/cdns,sdhci.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Cadence SD/SDIO/eMMC Host Controller (SD4HC) 8 + 9 + maintainers: 10 + - Masahiro Yamada <yamada.masahiro@socionext.com> 11 + - Piotr Sroka <piotrs@cadence.com> 12 + 13 + allOf: 14 + - $ref: mmc-controller.yaml 15 + 16 + properties: 17 + compatible: 18 + items: 19 + - enum: 20 + - socionext,uniphier-sd4hc 21 + - const: cdns,sd4hc 22 + 23 + reg: 24 + maxItems: 1 25 + 26 + interrupts: 27 + maxItems: 1 28 + 29 + clocks: 30 + maxItems: 1 31 + 32 + # PHY DLL input delays: 33 + # They are used to delay the data valid window, and align the window to 34 + # sampling clock. The delay starts from 5ns (for delay parameter equal to 0) 35 + # and it is increased by 2.5ns in each step. 36 + 37 + cdns,phy-input-delay-sd-highspeed: 38 + description: Value of the delay in the input path for SD high-speed timing 39 + allOf: 40 + - $ref: "/schemas/types.yaml#/definitions/uint32" 41 + - minimum: 0 42 + - maximum: 0x1f 43 + 44 + cdns,phy-input-delay-legacy: 45 + description: Value of the delay in the input path for legacy timing 46 + allOf: 47 + - $ref: "/schemas/types.yaml#/definitions/uint32" 48 + - minimum: 0 49 + - maximum: 0x1f 50 + 51 + cdns,phy-input-delay-sd-uhs-sdr12: 52 + description: Value of the delay in the input path for SD UHS SDR12 timing 53 + allOf: 54 + - $ref: "/schemas/types.yaml#/definitions/uint32" 55 + - minimum: 0 56 + - maximum: 0x1f 57 + 58 + cdns,phy-input-delay-sd-uhs-sdr25: 59 + description: Value of the delay in the input path for SD UHS SDR25 timing 60 + allOf: 61 + - $ref: "/schemas/types.yaml#/definitions/uint32" 62 + - minimum: 0 63 + - maximum: 0x1f 64 + 65 + cdns,phy-input-delay-sd-uhs-sdr50: 66 + description: Value of the delay in the input path for SD UHS SDR50 timing 67 + allOf: 68 + - $ref: "/schemas/types.yaml#/definitions/uint32" 69 + - minimum: 0 70 + - maximum: 0x1f 71 + 72 + cdns,phy-input-delay-sd-uhs-ddr50: 73 + description: Value of the delay in the input path for SD UHS DDR50 timing 74 + allOf: 75 + - $ref: "/schemas/types.yaml#/definitions/uint32" 76 + - minimum: 0 77 + - maximum: 0x1f 78 + 79 + cdns,phy-input-delay-mmc-highspeed: 80 + description: Value of the delay in the input path for MMC high-speed timing 81 + allOf: 82 + - $ref: "/schemas/types.yaml#/definitions/uint32" 83 + - minimum: 0 84 + - maximum: 0x1f 85 + 86 + cdns,phy-input-delay-mmc-ddr: 87 + description: Value of the delay in the input path for eMMC high-speed DDR timing 88 + allOf: 89 + - $ref: "/schemas/types.yaml#/definitions/uint32" 90 + - minimum: 0 91 + - maximum: 0x1f 92 + 93 + # PHY DLL clock delays: 94 + # Each delay property represents the fraction of the clock period. 95 + # The approximate delay value will be 96 + # (<delay property value>/128)*sdmclk_clock_period. 97 + 98 + cdns,phy-dll-delay-sdclk: 99 + description: | 100 + Value of the delay introduced on the sdclk output for all modes except 101 + HS200, HS400 and HS400_ES. 102 + allOf: 103 + - $ref: "/schemas/types.yaml#/definitions/uint32" 104 + - minimum: 0 105 + - maximum: 0x7f 106 + 107 + cdns,phy-dll-delay-sdclk-hsmmc: 108 + description: | 109 + Value of the delay introduced on the sdclk output for HS200, HS400 and 110 + HS400_ES speed modes. 111 + allOf: 112 + - $ref: "/schemas/types.yaml#/definitions/uint32" 113 + - minimum: 0 114 + - maximum: 0x7f 115 + 116 + cdns,phy-dll-delay-strobe: 117 + description: | 118 + Value of the delay introduced on the dat_strobe input used in 119 + HS400 / HS400_ES speed modes. 120 + allOf: 121 + - $ref: "/schemas/types.yaml#/definitions/uint32" 122 + - minimum: 0 123 + - maximum: 0x7f 124 + 125 + required: 126 + - compatible 127 + - reg 128 + - interrupts 129 + - clocks 130 + 131 + examples: 132 + - | 133 + emmc: mmc@5a000000 { 134 + compatible = "socionext,uniphier-sd4hc", "cdns,sd4hc"; 135 + reg = <0x5a000000 0x400>; 136 + interrupts = <0 78 4>; 137 + clocks = <&clk 4>; 138 + bus-width = <8>; 139 + mmc-ddr-1_8v; 140 + mmc-hs200-1_8v; 141 + mmc-hs400-1_8v; 142 + cdns,phy-dll-delay-sdclk = <0>; 143 + };
-80
Documentation/devicetree/bindings/mmc/sdhci-cadence.txt
··· 1 - * Cadence SD/SDIO/eMMC Host Controller 2 - 3 - Required properties: 4 - - compatible: should be one of the following: 5 - "cdns,sd4hc" - default of the IP 6 - "socionext,uniphier-sd4hc" - for Socionext UniPhier SoCs 7 - - reg: offset and length of the register set for the device. 8 - - interrupts: a single interrupt specifier. 9 - - clocks: phandle to the input clock. 10 - 11 - Optional properties: 12 - For eMMC configuration, supported speed modes are not indicated by the SDHCI 13 - Capabilities Register. Instead, the following properties should be specified 14 - if supported. See mmc.txt for details. 15 - - mmc-ddr-1_8v 16 - - mmc-ddr-1_2v 17 - - mmc-hs200-1_8v 18 - - mmc-hs200-1_2v 19 - - mmc-hs400-1_8v 20 - - mmc-hs400-1_2v 21 - 22 - Some PHY delays can be configured by following properties. 23 - PHY DLL input delays: 24 - They are used to delay the data valid window, and align the window 25 - to sampling clock. The delay starts from 5ns (for delay parameter equal to 0) 26 - and it is increased by 2.5ns in each step. 27 - - cdns,phy-input-delay-sd-highspeed: 28 - Value of the delay in the input path for SD high-speed timing 29 - Valid range = [0:0x1F]. 30 - - cdns,phy-input-delay-legacy: 31 - Value of the delay in the input path for legacy timing 32 - Valid range = [0:0x1F]. 33 - - cdns,phy-input-delay-sd-uhs-sdr12: 34 - Value of the delay in the input path for SD UHS SDR12 timing 35 - Valid range = [0:0x1F]. 36 - - cdns,phy-input-delay-sd-uhs-sdr25: 37 - Value of the delay in the input path for SD UHS SDR25 timing 38 - Valid range = [0:0x1F]. 39 - - cdns,phy-input-delay-sd-uhs-sdr50: 40 - Value of the delay in the input path for SD UHS SDR50 timing 41 - Valid range = [0:0x1F]. 42 - - cdns,phy-input-delay-sd-uhs-ddr50: 43 - Value of the delay in the input path for SD UHS DDR50 timing 44 - Valid range = [0:0x1F]. 45 - - cdns,phy-input-delay-mmc-highspeed: 46 - Value of the delay in the input path for MMC high-speed timing 47 - Valid range = [0:0x1F]. 48 - - cdns,phy-input-delay-mmc-ddr: 49 - Value of the delay in the input path for eMMC high-speed DDR timing 50 - Valid range = [0:0x1F]. 51 - 52 - PHY DLL clock delays: 53 - Each delay property represents the fraction of the clock period. 54 - The approximate delay value will be 55 - (<delay property value>/128)*sdmclk_clock_period. 56 - - cdns,phy-dll-delay-sdclk: 57 - Value of the delay introduced on the sdclk output 58 - for all modes except HS200, HS400 and HS400_ES. 59 - Valid range = [0:0x7F]. 60 - - cdns,phy-dll-delay-sdclk-hsmmc: 61 - Value of the delay introduced on the sdclk output 62 - for HS200, HS400 and HS400_ES speed modes. 63 - Valid range = [0:0x7F]. 64 - - cdns,phy-dll-delay-strobe: 65 - Value of the delay introduced on the dat_strobe input 66 - used in HS400 / HS400_ES speed modes. 67 - Valid range = [0:0x7F]. 68 - 69 - Example: 70 - emmc: sdhci@5a000000 { 71 - compatible = "socionext,uniphier-sd4hc", "cdns,sd4hc"; 72 - reg = <0x5a000000 0x400>; 73 - interrupts = <0 78 4>; 74 - clocks = <&clk 4>; 75 - bus-width = <8>; 76 - mmc-ddr-1_8v; 77 - mmc-hs200-1_8v; 78 - mmc-hs400-1_8v; 79 - cdns,phy-dll-delay-sdclk = <0>; 80 - };
+99
Documentation/devicetree/bindings/mmc/socionext,uniphier-sd.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/mmc/socionext,uniphier-sd.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: UniPhier SD/SDIO/eMMC controller 8 + 9 + maintainers: 10 + - Masahiro Yamada <yamada.masahiro@socionext.com> 11 + 12 + properties: 13 + compatible: 14 + description: version 2.91, 3.1, 3.1.1, respectively 15 + enum: 16 + - socionext,uniphier-sd-v2.91 17 + - socionext,uniphier-sd-v3.1 18 + - socionext,uniphier-sd-v3.1.1 19 + 20 + reg: 21 + maxItems: 1 22 + 23 + interrupts: 24 + maxItems: 1 25 + 26 + clocks: 27 + maxItems: 1 28 + 29 + reset-names: 30 + description: | 31 + There are three reset signals at maximum 32 + host: mandatory for all variants 33 + bridge: exist only for version 2.91 34 + hw: optional. exist if eMMC hw reset line is available 35 + oneOf: 36 + - const: host 37 + - items: 38 + - const: host 39 + - const: bridge 40 + - items: 41 + - const: host 42 + - const: hw 43 + - items: 44 + - const: host 45 + - const: bridge 46 + - const: hw 47 + 48 + resets: 49 + minItems: 1 50 + maxItems: 3 51 + 52 + allOf: 53 + - $ref: mmc-controller.yaml 54 + 55 + - if: 56 + properties: 57 + compatible: 58 + contains: 59 + const: socionext,uniphier-sd-v2.91 60 + then: 61 + properties: 62 + reset-names: 63 + contains: 64 + const: bridge 65 + else: 66 + properties: 67 + reset-names: 68 + not: 69 + contains: 70 + const: bridge 71 + 72 + required: 73 + - compatible 74 + - reg 75 + - interrupts 76 + - clocks 77 + - reset-names 78 + - resets 79 + 80 + examples: 81 + - | 82 + sd: mmc@5a400000 { 83 + compatible = "socionext,uniphier-sd-v2.91"; 84 + reg = <0x5a400000 0x200>; 85 + interrupts = <0 76 4>; 86 + pinctrl-names = "default", "uhs"; 87 + pinctrl-0 = <&pinctrl_sd>; 88 + pinctrl-1 = <&pinctrl_sd_uhs>; 89 + clocks = <&mio_clk 0>; 90 + reset-names = "host", "bridge"; 91 + resets = <&mio_rst 0>, <&mio_rst 3>; 92 + dma-names = "rx-tx"; 93 + dmas = <&dmac 4>; 94 + bus-width = <4>; 95 + cap-sd-highspeed; 96 + sd-uhs-sdr12; 97 + sd-uhs-sdr25; 98 + sd-uhs-sdr50; 99 + };
-55
Documentation/devicetree/bindings/mmc/uniphier-sd.txt
··· 1 - UniPhier SD/eMMC controller 2 - 3 - Required properties: 4 - - compatible: should be one of the following: 5 - "socionext,uniphier-sd-v2.91" - IP version 2.91 6 - "socionext,uniphier-sd-v3.1" - IP version 3.1 7 - "socionext,uniphier-sd-v3.1.1" - IP version 3.1.1 8 - - reg: offset and length of the register set for the device. 9 - - interrupts: a single interrupt specifier. 10 - - clocks: a single clock specifier of the controller clock. 11 - - reset-names: should contain the following: 12 - "host" - mandatory for all versions 13 - "bridge" - should exist only for "socionext,uniphier-sd-v2.91" 14 - "hw" - should exist if eMMC hw reset line is available 15 - - resets: a list of reset specifiers, corresponding to the reset-names 16 - 17 - Optional properties: 18 - - pinctrl-names: if present, should contain the following: 19 - "default" - should exist for all instances 20 - "uhs" - should exist for SD instance with UHS support 21 - - pinctrl-0: pin control state for the default mode 22 - - pinctrl-1: pin control state for the UHS mode 23 - - dma-names: should be "rx-tx" if present. 24 - This property can exist only for "socionext,uniphier-sd-v2.91". 25 - - dmas: a single DMA channel specifier 26 - This property can exist only for "socionext,uniphier-sd-v2.91". 27 - - bus-width: see mmc.txt 28 - - cap-sd-highspeed: see mmc.txt 29 - - cap-mmc-highspeed: see mmc.txt 30 - - sd-uhs-sdr12: see mmc.txt 31 - - sd-uhs-sdr25: see mmc.txt 32 - - sd-uhs-sdr50: see mmc.txt 33 - - cap-mmc-hw-reset: should exist if reset-names contains "hw". see mmc.txt 34 - - non-removable: see mmc.txt 35 - 36 - Example: 37 - 38 - sd: sdhc@5a400000 { 39 - compatible = "socionext,uniphier-sd-v2.91"; 40 - reg = <0x5a400000 0x200>; 41 - interrupts = <0 76 4>; 42 - pinctrl-names = "default", "uhs"; 43 - pinctrl-0 = <&pinctrl_sd>; 44 - pinctrl-1 = <&pinctrl_sd_uhs>; 45 - clocks = <&mio_clk 0>; 46 - reset-names = "host", "bridge"; 47 - resets = <&mio_rst 0>, <&mio_rst 3>; 48 - dma-names = "rx-tx"; 49 - dmas = <&dmac 4>; 50 - bus-width = <4>; 51 - cap-sd-highspeed; 52 - sd-uhs-sdr12; 53 - sd-uhs-sdr25; 54 - sd-uhs-sdr50; 55 - };
+148
Documentation/devicetree/bindings/mtd/denali,nand.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/mtd/denali,nand.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Denali NAND controller 8 + 9 + maintainers: 10 + - Masahiro Yamada <yamada.masahiro@socionext.com> 11 + 12 + properties: 13 + compatible: 14 + enum: 15 + - altr,socfpga-denali-nand 16 + - socionext,uniphier-denali-nand-v5a 17 + - socionext,uniphier-denali-nand-v5b 18 + 19 + reg-names: 20 + description: | 21 + There are two register regions: 22 + nand_data: host data/command interface 23 + denali_reg: register interface 24 + items: 25 + - const: nand_data 26 + - const: denali_reg 27 + 28 + reg: 29 + minItems: 2 30 + maxItems: 2 31 + 32 + interrupts: 33 + maxItems: 1 34 + 35 + clock-names: 36 + description: | 37 + There are three clocks: 38 + nand: controller core clock 39 + nand_x: bus interface clock 40 + ecc: ECC circuit clock 41 + items: 42 + - const: nand 43 + - const: nand_x 44 + - const: ecc 45 + 46 + clocks: 47 + minItems: 3 48 + maxItems: 3 49 + 50 + reset-names: 51 + description: | 52 + There are two optional resets: 53 + nand: controller core reset 54 + reg: register reset 55 + oneOf: 56 + - items: 57 + - const: nand 58 + - const: reg 59 + - const: nand 60 + - const: reg 61 + 62 + resets: 63 + minItems: 1 64 + maxItems: 2 65 + 66 + allOf: 67 + - $ref: nand-controller.yaml 68 + 69 + - if: 70 + properties: 71 + compatible: 72 + contains: 73 + const: altr,socfpga-denali-nand 74 + then: 75 + patternProperties: 76 + "^nand@[a-f0-9]$": 77 + type: object 78 + properties: 79 + nand-ecc-strength: 80 + enum: 81 + - 8 82 + - 15 83 + nand-ecc-step-size: 84 + enum: 85 + - 512 86 + 87 + - if: 88 + properties: 89 + compatible: 90 + contains: 91 + const: socionext,uniphier-denali-nand-v5a 92 + then: 93 + patternProperties: 94 + "^nand@[a-f0-9]$": 95 + type: object 96 + properties: 97 + nand-ecc-strength: 98 + enum: 99 + - 8 100 + - 16 101 + - 24 102 + nand-ecc-step-size: 103 + enum: 104 + - 1024 105 + 106 + - if: 107 + properties: 108 + compatible: 109 + contains: 110 + const: socionext,uniphier-denali-nand-v5b 111 + then: 112 + patternProperties: 113 + "^nand@[a-f0-9]$": 114 + type: object 115 + properties: 116 + nand-ecc-strength: 117 + enum: 118 + - 8 119 + - 16 120 + nand-ecc-step-size: 121 + enum: 122 + - 1024 123 + 124 + required: 125 + - compatible 126 + - reg 127 + - interrupts 128 + - clock-names 129 + - clocks 130 + 131 + examples: 132 + - | 133 + nand-controller@ff900000 { 134 + compatible = "altr,socfpga-denali-nand"; 135 + reg-names = "nand_data", "denali_reg"; 136 + reg = <0xff900000 0x20>, <0xffb80000 0x1000>; 137 + interrupts = <0 144 4>; 138 + clock-names = "nand", "nand_x", "ecc"; 139 + clocks = <&nand_clk>, <&nand_x_clk>, <&nand_ecc_clk>; 140 + reset-names = "nand", "reg"; 141 + resets = <&nand_rst>, <&nand_reg_rst>; 142 + #address-cells = <1>; 143 + #size-cells = <0>; 144 + 145 + nand@0 { 146 + reg = <0>; 147 + }; 148 + };
-61
Documentation/devicetree/bindings/mtd/denali-nand.txt
··· 1 - * Denali NAND controller 2 - 3 - Required properties: 4 - - compatible : should be one of the following: 5 - "altr,socfpga-denali-nand" - for Altera SOCFPGA 6 - "socionext,uniphier-denali-nand-v5a" - for Socionext UniPhier (v5a) 7 - "socionext,uniphier-denali-nand-v5b" - for Socionext UniPhier (v5b) 8 - - reg : should contain registers location and length for data and reg. 9 - - reg-names: Should contain the reg names "nand_data" and "denali_reg" 10 - - #address-cells: should be 1. The cell encodes the chip select connection. 11 - - #size-cells : should be 0. 12 - - interrupts : The interrupt number. 13 - - clocks: should contain phandle of the controller core clock, the bus 14 - interface clock, and the ECC circuit clock. 15 - - clock-names: should contain "nand", "nand_x", "ecc" 16 - 17 - Optional properties: 18 - - resets: may contain phandles to the controller core reset, the register 19 - reset 20 - - reset-names: may contain "nand", "reg" 21 - 22 - Sub-nodes: 23 - Sub-nodes represent available NAND chips. 24 - 25 - Required properties: 26 - - reg: should contain the bank ID of the controller to which each chip 27 - select is connected. 28 - 29 - Optional properties: 30 - - nand-ecc-step-size: see nand-controller.yaml for details. 31 - If present, the value must be 32 - 512 for "altr,socfpga-denali-nand" 33 - 1024 for "socionext,uniphier-denali-nand-v5a" 34 - 1024 for "socionext,uniphier-denali-nand-v5b" 35 - - nand-ecc-strength: see nand-controller.yaml for details. Valid values are: 36 - 8, 15 for "altr,socfpga-denali-nand" 37 - 8, 16, 24 for "socionext,uniphier-denali-nand-v5a" 38 - 8, 16 for "socionext,uniphier-denali-nand-v5b" 39 - - nand-ecc-maximize: see nand-controller.yaml for details 40 - 41 - The chip nodes may optionally contain sub-nodes describing partitions of the 42 - address space. See partition.txt for more detail. 43 - 44 - Examples: 45 - 46 - nand: nand@ff900000 { 47 - #address-cells = <1>; 48 - #size-cells = <0>; 49 - compatible = "altr,socfpga-denali-nand"; 50 - reg = <0xff900000 0x20>, <0xffb80000 0x1000>; 51 - reg-names = "nand_data", "denali_reg"; 52 - clocks = <&nand_clk>, <&nand_x_clk>, <&nand_ecc_clk>; 53 - clock-names = "nand", "nand_x", "ecc"; 54 - resets = <&nand_rst>, <&nand_reg_rst>; 55 - reset-names = "nand", "reg"; 56 - interrupts = <0 144 4>; 57 - 58 - nand@0 { 59 - reg = <0>; 60 - } 61 - };
+1 -1
Documentation/devicetree/bindings/net/broadcom-bluetooth.txt
··· 20 20 21 21 Optional properties: 22 22 23 - - max-speed: see Documentation/devicetree/bindings/serial/slave-device.txt 23 + - max-speed: see Documentation/devicetree/bindings/serial/serial.yaml 24 24 - shutdown-gpios: GPIO specifier, used to enable the BT module 25 25 - device-wakeup-gpios: GPIO specifier, used to wakeup the controller 26 26 - host-wakeup-gpios: GPIO specifier, used to wakeup the host processor.
+144
Documentation/devicetree/bindings/net/can/bosch,m_can.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/net/can/bosch,m_can.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Bosch MCAN controller Bindings 8 + 9 + description: Bosch MCAN controller for CAN bus 10 + 11 + maintainers: 12 + - Sriram Dash <sriram.dash@samsung.com> 13 + 14 + properties: 15 + compatible: 16 + const: bosch,m_can 17 + 18 + reg: 19 + items: 20 + - description: M_CAN registers map 21 + - description: message RAM 22 + 23 + reg-names: 24 + items: 25 + - const: m_can 26 + - const: message_ram 27 + 28 + interrupts: 29 + items: 30 + - description: interrupt line0 31 + - description: interrupt line1 32 + minItems: 1 33 + maxItems: 2 34 + 35 + interrupt-names: 36 + items: 37 + - const: int0 38 + - const: int1 39 + minItems: 1 40 + maxItems: 2 41 + 42 + clocks: 43 + items: 44 + - description: peripheral clock 45 + - description: bus clock 46 + 47 + clock-names: 48 + items: 49 + - const: hclk 50 + - const: cclk 51 + 52 + bosch,mram-cfg: 53 + description: | 54 + Message RAM configuration data. 55 + Multiple M_CAN instances can share the same Message RAM 56 + and each element(e.g Rx FIFO or Tx Buffer and etc) number 57 + in Message RAM is also configurable, so this property is 58 + telling driver how the shared or private Message RAM are 59 + used by this M_CAN controller. 60 + 61 + The format should be as follows: 62 + <offset sidf_elems xidf_elems rxf0_elems rxf1_elems rxb_elems txe_elems txb_elems> 63 + The 'offset' is an address offset of the Message RAM where 64 + the following elements start from. This is usually set to 65 + 0x0 if you're using a private Message RAM. The remain cells 66 + are used to specify how many elements are used for each FIFO/Buffer. 67 + 68 + M_CAN includes the following elements according to user manual: 69 + 11-bit Filter 0-128 elements / 0-128 words 70 + 29-bit Filter 0-64 elements / 0-128 words 71 + Rx FIFO 0 0-64 elements / 0-1152 words 72 + Rx FIFO 1 0-64 elements / 0-1152 words 73 + Rx Buffers 0-64 elements / 0-1152 words 74 + Tx Event FIFO 0-32 elements / 0-64 words 75 + Tx Buffers 0-32 elements / 0-576 words 76 + 77 + Please refer to 2.4.1 Message RAM Configuration in Bosch 78 + M_CAN user manual for details. 79 + allOf: 80 + - $ref: /schemas/types.yaml#/definitions/int32-array 81 + - items: 82 + items: 83 + - description: The 'offset' is an address offset of the Message RAM 84 + where the following elements start from. This is usually 85 + set to 0x0 if you're using a private Message RAM. 86 + default: 0 87 + - description: 11-bit Filter 0-128 elements / 0-128 words 88 + minimum: 0 89 + maximum: 128 90 + - description: 29-bit Filter 0-64 elements / 0-128 words 91 + minimum: 0 92 + maximum: 64 93 + - description: Rx FIFO 0 0-64 elements / 0-1152 words 94 + minimum: 0 95 + maximum: 64 96 + - description: Rx FIFO 1 0-64 elements / 0-1152 words 97 + minimum: 0 98 + maximum: 64 99 + - description: Rx Buffers 0-64 elements / 0-1152 words 100 + minimum: 0 101 + maximum: 64 102 + - description: Tx Event FIFO 0-32 elements / 0-64 words 103 + minimum: 0 104 + maximum: 32 105 + - description: Tx Buffers 0-32 elements / 0-576 words 106 + minimum: 0 107 + maximum: 32 108 + maxItems: 1 109 + 110 + can-transceiver: 111 + $ref: can-transceiver.yaml# 112 + 113 + required: 114 + - compatible 115 + - reg 116 + - reg-names 117 + - interrupts 118 + - interrupt-names 119 + - clocks 120 + - clock-names 121 + - bosch,mram-cfg 122 + 123 + additionalProperties: false 124 + 125 + examples: 126 + - | 127 + #include <dt-bindings/clock/imx6sx-clock.h> 128 + can@20e8000 { 129 + compatible = "bosch,m_can"; 130 + reg = <0x020e8000 0x4000>, <0x02298000 0x4000>; 131 + reg-names = "m_can", "message_ram"; 132 + interrupts = <0 114 0x04>, <0 114 0x04>; 133 + interrupt-names = "int0", "int1"; 134 + clocks = <&clks IMX6SX_CLK_CANFD>, 135 + <&clks IMX6SX_CLK_CANFD>; 136 + clock-names = "hclk", "cclk"; 137 + bosch,mram-cfg = <0x0 0 0 32 0 0 0 1>; 138 + 139 + can-transceiver { 140 + max-bitrate = <5000000>; 141 + }; 142 + }; 143 + 144 + ...
-24
Documentation/devicetree/bindings/net/can/can-transceiver.txt
··· 1 - Generic CAN transceiver Device Tree binding 2 - ------------------------------ 3 - 4 - CAN transceiver typically limits the max speed in standard CAN and CAN FD 5 - modes. Typically these limitations are static and the transceivers themselves 6 - provide no way to detect this limitation at runtime. For this situation, 7 - the "can-transceiver" node can be used. 8 - 9 - Required Properties: 10 - max-bitrate: a positive non 0 value that determines the max 11 - speed that CAN/CAN-FD can run. Any other value 12 - will be ignored. 13 - 14 - Examples: 15 - 16 - Based on Texas Instrument's TCAN1042HGV CAN Transceiver 17 - 18 - m_can0 { 19 - .... 20 - can-transceiver { 21 - max-bitrate = <5000000>; 22 - }; 23 - ... 24 - };
+18
Documentation/devicetree/bindings/net/can/can-transceiver.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/net/can/can-transceiver.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: CAN transceiver Bindings 8 + 9 + description: CAN transceiver generic properties bindings 10 + 11 + maintainers: 12 + - Rob Herring <robh@kernel.org> 13 + 14 + properties: 15 + max-bitrate: 16 + $ref: /schemas/types.yaml#/definitions/uint32 17 + description: a positive non 0 value that determines the max speed that CAN/CAN-FD can run. 18 + minimum: 1
-75
Documentation/devicetree/bindings/net/can/m_can.txt
··· 1 - Bosch MCAN controller Device Tree Bindings 2 - ------------------------------------------------- 3 - 4 - Required properties: 5 - - compatible : Should be "bosch,m_can" for M_CAN controllers 6 - - reg : physical base address and size of the M_CAN 7 - registers map and Message RAM 8 - - reg-names : Should be "m_can" and "message_ram" 9 - - interrupts : Should be the interrupt number of M_CAN interrupt 10 - line 0 and line 1, could be same if sharing 11 - the same interrupt. 12 - - interrupt-names : Should contain "int0" and "int1" 13 - - clocks : Clocks used by controller, should be host clock 14 - and CAN clock. 15 - - clock-names : Should contain "hclk" and "cclk" 16 - - pinctrl-<n> : Pinctrl states as described in bindings/pinctrl/pinctrl-bindings.txt 17 - - pinctrl-names : Names corresponding to the numbered pinctrl states 18 - - bosch,mram-cfg : Message RAM configuration data. 19 - Multiple M_CAN instances can share the same Message 20 - RAM and each element(e.g Rx FIFO or Tx Buffer and etc) 21 - number in Message RAM is also configurable, 22 - so this property is telling driver how the shared or 23 - private Message RAM are used by this M_CAN controller. 24 - 25 - The format should be as follows: 26 - <offset sidf_elems xidf_elems rxf0_elems rxf1_elems 27 - rxb_elems txe_elems txb_elems> 28 - The 'offset' is an address offset of the Message RAM 29 - where the following elements start from. This is 30 - usually set to 0x0 if you're using a private Message 31 - RAM. The remain cells are used to specify how many 32 - elements are used for each FIFO/Buffer. 33 - 34 - M_CAN includes the following elements according to user manual: 35 - 11-bit Filter 0-128 elements / 0-128 words 36 - 29-bit Filter 0-64 elements / 0-128 words 37 - Rx FIFO 0 0-64 elements / 0-1152 words 38 - Rx FIFO 1 0-64 elements / 0-1152 words 39 - Rx Buffers 0-64 elements / 0-1152 words 40 - Tx Event FIFO 0-32 elements / 0-64 words 41 - Tx Buffers 0-32 elements / 0-576 words 42 - 43 - Please refer to 2.4.1 Message RAM Configuration in 44 - Bosch M_CAN user manual for details. 45 - 46 - Optional Subnode: 47 - - can-transceiver : Can-transceiver subnode describing maximum speed 48 - that can be used for CAN/CAN-FD modes. See 49 - Documentation/devicetree/bindings/net/can/can-transceiver.txt 50 - for details. 51 - Example: 52 - SoC dtsi: 53 - m_can1: can@20e8000 { 54 - compatible = "bosch,m_can"; 55 - reg = <0x020e8000 0x4000>, <0x02298000 0x4000>; 56 - reg-names = "m_can", "message_ram"; 57 - interrupts = <0 114 0x04>, 58 - <0 114 0x04>; 59 - interrupt-names = "int0", "int1"; 60 - clocks = <&clks IMX6SX_CLK_CANFD>, 61 - <&clks IMX6SX_CLK_CANFD>; 62 - clock-names = "hclk", "cclk"; 63 - bosch,mram-cfg = <0x0 0 0 32 0 0 0 1>; 64 - }; 65 - 66 - Board dts: 67 - &m_can1 { 68 - pinctrl-names = "default"; 69 - pinctrl-0 = <&pinctrl_m_can1>; 70 - status = "enabled"; 71 - 72 - can-transceiver { 73 - max-bitrate = <5000000>; 74 - }; 75 - };
+1 -1
Documentation/devicetree/bindings/net/can/tcan4x5x.txt
··· 14 14 the interrupt. 15 15 - interrupts: interrupt specification for data-ready. 16 16 17 - See Documentation/devicetree/bindings/net/can/m_can.txt for additional 17 + See Documentation/devicetree/bindings/net/can/bosch,m_can.yaml for additional 18 18 required property details. 19 19 20 20 Optional properties:
+1 -1
Documentation/devicetree/bindings/net/mediatek-bluetooth.txt
··· 42 42 43 43 Please refer to the following documents for generic properties: 44 44 45 - Documentation/devicetree/bindings/serial/slave-device.txt 45 + Documentation/devicetree/bindings/serial/serial.yaml 46 46 47 47 Required properties: 48 48
+1 -1
Documentation/devicetree/bindings/net/qca,qca7000.txt
··· 68 68 Optional properties: 69 69 - local-mac-address : see ./ethernet.txt 70 70 - current-speed : current baud rate of QCA7000 which defaults to 115200 71 - if absent, see also ../serial/slave-device.txt 71 + if absent, see also ../serial/serial.yaml 72 72 73 73 UART Example: 74 74
+17 -8
Documentation/devicetree/bindings/net/ti,cpsw-switch.yaml
··· 37 37 description: 38 38 The physical base address and size of full the CPSW module IO range 39 39 40 + '#address-cells': 41 + const: 1 42 + 43 + '#size-cells': 44 + const: 1 45 + 40 46 ranges: true 41 47 42 48 clocks: ··· 117 111 - reg 118 112 - phys 119 113 120 - mdio: 121 - type: object 122 - allOf: 123 - - $ref: "ti,davinci-mdio.yaml#" 124 - description: 125 - CPSW MDIO bus. 126 - 127 114 cpts: 128 115 type: object 129 116 description: ··· 147 148 - clocks 148 149 - clock-names 149 150 151 + patternProperties: 152 + "^mdio@": 153 + type: object 154 + allOf: 155 + - $ref: "ti,davinci-mdio.yaml#" 156 + description: 157 + CPSW MDIO bus. 158 + 159 + 150 160 required: 151 161 - compatible 152 162 - reg ··· 166 158 - interrupt-names 167 159 - '#address-cells' 168 160 - '#size-cells' 161 + 162 + additionalProperties: false 169 163 170 164 examples: 171 165 - | ··· 184 174 #address-cells = <1>; 185 175 #size-cells = <1>; 186 176 syscon = <&scm_conf>; 187 - inctrl-names = "default", "sleep"; 188 177 189 178 interrupts = <GIC_SPI 334 IRQ_TYPE_LEVEL_HIGH>, 190 179 <GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH>,
+1 -2
Documentation/devicetree/bindings/net/ti-bluetooth.txt
··· 15 15 TI WiLink devices also have a separate WiFi interface as described in 16 16 wireless/ti,wlcore.txt. 17 17 18 - This bindings follows the UART slave device binding in 19 - ../serial/slave-device.txt. 18 + This bindings follows the UART slave device binding in ../serial/serial.yaml. 20 19 21 20 Required properties: 22 21 - compatible: should be one of the following:
+2
Documentation/devicetree/bindings/phy/allwinner,sun50i-h6-usb3-phy.yaml
··· 34 34 - resets 35 35 - "#phy-cells" 36 36 37 + additionalProperties: false 38 + 37 39 examples: 38 40 - | 39 41 #include <dt-bindings/clock/sun50i-h6-ccu.h>
+2
Documentation/devicetree/bindings/phy/amlogic,meson-g12a-usb3-pcie-phy.yaml
··· 44 44 - reset-names 45 45 - "#phy-cells" 46 46 47 + additionalProperties: false 48 + 47 49 examples: 48 50 - | 49 51 phy@46000 {
+2
Documentation/devicetree/bindings/phy/intel,lgm-emmc-phy.yaml
··· 40 40 - reg 41 41 - clocks 42 42 43 + additionalProperties: false 44 + 43 45 examples: 44 46 - | 45 47 sysconf: chiptop@e0200000 {
+2
Documentation/devicetree/bindings/phy/marvell,mmp3-hsic-phy.yaml
··· 31 31 - reset-gpios 32 32 - "#phy-cells" 33 33 34 + additionalProperties: false 35 + 34 36 examples: 35 37 - | 36 38 #include <dt-bindings/gpio/gpio.h>
+42
Documentation/devicetree/bindings/phy/marvell,mmp3-usb-phy.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) 2 + # Copyright 2019,2020 Lubomir Rintel <lkundrak@v3.sk> 3 + %YAML 1.2 4 + --- 5 + $id: http://devicetree.org/schemas/phy/marvell,mmp3-usb-phy.yaml# 6 + $schema: http://devicetree.org/meta-schemas/core.yaml# 7 + 8 + title: Marvell MMP3 USB PHY bindings 9 + 10 + maintainers: 11 + - Lubomir Rintel <lkundrak@v3.sk> 12 + 13 + properties: 14 + $nodename: 15 + pattern: '^usb-phy@[a-f0-9]+$' 16 + 17 + compatible: 18 + const: marvell,mmp3-usb-phy 19 + 20 + reg: 21 + maxItems: 1 22 + description: base address of the device 23 + 24 + '#phy-cells': 25 + const: 0 26 + 27 + required: 28 + - compatible 29 + - reg 30 + - '#phy-cells' 31 + 32 + additionalProperties: false 33 + 34 + examples: 35 + - | 36 + usb-phy@d4207000 { 37 + compatible = "marvell,mmp3-usb-phy"; 38 + reg = <0xd4207000 0x40>; 39 + #phy-cells = <0>; 40 + }; 41 + 42 + ...
-13
Documentation/devicetree/bindings/phy/phy-mmp3-usb.txt
··· 1 - Marvell MMP3 USB PHY 2 - -------------------- 3 - 4 - Required properties: 5 - - compatible: must be "marvell,mmp3-usb-phy" 6 - - #phy-cells: must be 0 7 - 8 - Example: 9 - usb-phy: usb-phy@d4207000 { 10 - compatible = "marvell,mmp3-usb-phy"; 11 - reg = <0xd4207000 0x40>; 12 - #phy-cells = <0>; 13 - };
-81
Documentation/devicetree/bindings/phy/phy-rockchip-inno-usb2.txt
··· 1 - ROCKCHIP USB2.0 PHY WITH INNO IP BLOCK 2 - 3 - Required properties (phy (parent) node): 4 - - compatible : should be one of the listed compatibles: 5 - * "rockchip,px30-usb2phy" 6 - * "rockchip,rk3228-usb2phy" 7 - * "rockchip,rk3328-usb2phy" 8 - * "rockchip,rk3366-usb2phy" 9 - * "rockchip,rk3399-usb2phy" 10 - * "rockchip,rv1108-usb2phy" 11 - - reg : the address offset of grf for usb-phy configuration. 12 - - #clock-cells : should be 0. 13 - - clock-output-names : specify the 480m output clock name. 14 - 15 - Optional properties: 16 - - clocks : phandle + phy specifier pair, for the input clock of phy. 17 - - clock-names : input clock name of phy, must be "phyclk". 18 - - assigned-clocks : phandle of usb 480m clock. 19 - - assigned-clock-parents : parent of usb 480m clock, select between 20 - usb-phy output 480m and xin24m. 21 - Refer to clk/clock-bindings.txt for generic clock 22 - consumer properties. 23 - - rockchip,usbgrf : phandle to the syscon managing the "usb general 24 - register files". When set driver will request its 25 - phandle as one companion-grf for some special SoCs 26 - (e.g RV1108). 27 - - extcon : phandle to the extcon device providing the cable state for 28 - the otg phy. 29 - 30 - Required nodes : a sub-node is required for each port the phy provides. 31 - The sub-node name is used to identify host or otg port, 32 - and shall be the following entries: 33 - * "otg-port" : the name of otg port. 34 - * "host-port" : the name of host port. 35 - 36 - Required properties (port (child) node): 37 - - #phy-cells : must be 0. See ./phy-bindings.txt for details. 38 - - interrupts : specify an interrupt for each entry in interrupt-names. 39 - - interrupt-names : a list which should be one of the following cases: 40 - Regular case: 41 - * "otg-id" : for the otg id interrupt. 42 - * "otg-bvalid" : for the otg vbus interrupt. 43 - * "linestate" : for the host/otg linestate interrupt. 44 - Some SoCs use one interrupt with the above muxed together, so for these 45 - * "otg-mux" : otg-port interrupt, which mux otg-id/otg-bvalid/linestate 46 - to one. 47 - 48 - Optional properties: 49 - - phy-supply : phandle to a regulator that provides power to VBUS. 50 - See ./phy-bindings.txt for details. 51 - 52 - Example: 53 - 54 - grf: syscon@ff770000 { 55 - compatible = "rockchip,rk3366-grf", "syscon", "simple-mfd"; 56 - #address-cells = <1>; 57 - #size-cells = <1>; 58 - 59 - ... 60 - 61 - u2phy: usb2-phy@700 { 62 - compatible = "rockchip,rk3366-usb2phy"; 63 - reg = <0x700 0x2c>; 64 - #clock-cells = <0>; 65 - clock-output-names = "sclk_otgphy0_480m"; 66 - 67 - u2phy_otg: otg-port { 68 - #phy-cells = <0>; 69 - interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>, 70 - <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>, 71 - <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>; 72 - interrupt-names = "otg-id", "otg-bvalid", "linestate"; 73 - }; 74 - 75 - u2phy_host: host-port { 76 - #phy-cells = <0>; 77 - interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; 78 - interrupt-names = "linestate"; 79 - }; 80 - }; 81 - };
+155
Documentation/devicetree/bindings/phy/phy-rockchip-inno-usb2.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/phy/phy-rockchip-inno-usb2.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Rockchip USB2.0 phy with inno IP block 8 + 9 + maintainers: 10 + - Heiko Stuebner <heiko@sntech.de> 11 + 12 + properties: 13 + compatible: 14 + enum: 15 + - rockchip,px30-usb2phy 16 + - rockchip,rk3228-usb2phy 17 + - rockchip,rk3328-usb2phy 18 + - rockchip,rk3366-usb2phy 19 + - rockchip,rk3399-usb2phy 20 + - rockchip,rv1108-usb2phy 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + clock-output-names: 26 + description: 27 + The usb 480m output clock name. 28 + 29 + "#clock-cells": 30 + const: 0 31 + 32 + "#phy-cells": 33 + const: 0 34 + 35 + clocks: 36 + maxItems: 1 37 + 38 + clock-names: 39 + const: phyclk 40 + 41 + assigned-clocks: 42 + description: 43 + Phandle of the usb 480m clock. 44 + 45 + assigned-clock-parents: 46 + description: 47 + Parent of the usb 480m clock. 48 + Select between usb-phy output 480m and xin24m. 49 + Refer to clk/clock-bindings.txt for generic clock consumer properties. 50 + 51 + extcon: 52 + description: 53 + Phandle to the extcon device providing the cable state for the otg phy. 54 + 55 + rockchip,usbgrf: 56 + $ref: /schemas/types.yaml#/definitions/phandle 57 + description: 58 + Phandle to the syscon managing the 'usb general register files'. 59 + When set the driver will request its phandle as one companion-grf 60 + for some special SoCs (e.g rv1108). 61 + 62 + host-port: 63 + type: object 64 + additionalProperties: false 65 + 66 + properties: 67 + "#phy-cells": 68 + const: 0 69 + 70 + interrupts: 71 + description: host linestate interrupt 72 + 73 + interrupt-names: 74 + const: linestate 75 + 76 + phy-supply: 77 + description: 78 + Phandle to a regulator that provides power to VBUS. 79 + See ./phy-bindings.txt for details. 80 + 81 + required: 82 + - "#phy-cells" 83 + - interrupts 84 + - interrupt-names 85 + 86 + otg-port: 87 + type: object 88 + additionalProperties: false 89 + 90 + properties: 91 + "#phy-cells": 92 + const: 0 93 + 94 + interrupts: 95 + minItems: 1 96 + maxItems: 3 97 + 98 + interrupt-names: 99 + oneOf: 100 + - const: linestate 101 + - const: otg-mux 102 + - items: 103 + - const: otg-bvalid 104 + - const: otg-id 105 + - const: linestate 106 + 107 + phy-supply: 108 + description: 109 + Phandle to a regulator that provides power to VBUS. 110 + See ./phy-bindings.txt for details. 111 + 112 + required: 113 + - "#phy-cells" 114 + - interrupts 115 + - interrupt-names 116 + 117 + required: 118 + - compatible 119 + - reg 120 + - clock-output-names 121 + - "#clock-cells" 122 + - "#phy-cells" 123 + - host-port 124 + - otg-port 125 + 126 + additionalProperties: false 127 + 128 + examples: 129 + - | 130 + #include <dt-bindings/clock/rk3399-cru.h> 131 + #include <dt-bindings/interrupt-controller/arm-gic.h> 132 + #include <dt-bindings/interrupt-controller/irq.h> 133 + u2phy0: usb2-phy@e450 { 134 + compatible = "rockchip,rk3399-usb2phy"; 135 + reg = <0xe450 0x10>; 136 + clocks = <&cru SCLK_USB2PHY0_REF>; 137 + clock-names = "phyclk"; 138 + clock-output-names = "clk_usbphy0_480m"; 139 + #clock-cells = <0>; 140 + #phy-cells = <0>; 141 + 142 + u2phy0_host: host-port { 143 + #phy-cells = <0>; 144 + interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH 0>; 145 + interrupt-names = "linestate"; 146 + }; 147 + 148 + u2phy0_otg: otg-port { 149 + #phy-cells = <0>; 150 + interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH 0>, 151 + <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH 0>, 152 + <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH 0>; 153 + interrupt-names = "otg-bvalid", "otg-id", "linestate"; 154 + }; 155 + };
+2
Documentation/devicetree/bindings/phy/ti,phy-j721e-wiz.yaml
··· 159 159 - "#reset-cells" 160 160 - ranges 161 161 162 + additionalProperties: false 163 + 162 164 examples: 163 165 - | 164 166 #include <dt-bindings/soc/ti,sci_pm_domain.h>
+2
Documentation/devicetree/bindings/pinctrl/aspeed,ast2400-pinctrl.yaml
··· 57 57 required: 58 58 - compatible 59 59 60 + additionalProperties: false 61 + 60 62 examples: 61 63 - | 62 64 syscon: scu@1e6e2000 {
+2
Documentation/devicetree/bindings/pinctrl/aspeed,ast2500-pinctrl.yaml
··· 70 70 - compatible 71 71 - aspeed,external-nodes 72 72 73 + additionalProperties: false 74 + 73 75 examples: 74 76 - | 75 77 apb {
+2
Documentation/devicetree/bindings/pinctrl/aspeed,ast2600-pinctrl.yaml
··· 92 92 required: 93 93 - compatible 94 94 95 + additionalProperties: false 96 + 95 97 examples: 96 98 - | 97 99 syscon: scu@1e6e2000 {
-27
Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.txt
··· 1 - UniPhier SoCs pin controller 2 - 3 - Required properties: 4 - - compatible: should be one of the following: 5 - "socionext,uniphier-ld4-pinctrl" - for LD4 SoC 6 - "socionext,uniphier-pro4-pinctrl" - for Pro4 SoC 7 - "socionext,uniphier-sld8-pinctrl" - for sLD8 SoC 8 - "socionext,uniphier-pro5-pinctrl" - for Pro5 SoC 9 - "socionext,uniphier-pxs2-pinctrl" - for PXs2 SoC 10 - "socionext,uniphier-ld6b-pinctrl" - for LD6b SoC 11 - "socionext,uniphier-ld11-pinctrl" - for LD11 SoC 12 - "socionext,uniphier-ld20-pinctrl" - for LD20 SoC 13 - "socionext,uniphier-pxs3-pinctrl" - for PXs3 SoC 14 - 15 - Note: 16 - The UniPhier pinctrl should be a subnode of a "syscon" compatible node. 17 - 18 - Example: 19 - soc-glue@5f800000 { 20 - compatible = "socionext,uniphier-pro4-soc-glue", 21 - "simple-mfd", "syscon"; 22 - reg = <0x5f800000 0x2000>; 23 - 24 - pinctrl: pinctrl { 25 - compatible = "socionext,uniphier-pro4-pinctrl"; 26 - }; 27 - };
+42
Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/pinctrl/socionext,uniphier-pinctrl.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: UniPhier SoCs pin controller 8 + 9 + maintainers: 10 + - Masahiro Yamada <yamada.masahiro@socionext.com> 11 + 12 + properties: 13 + $nodename: 14 + pattern: "pinctrl" 15 + 16 + compatible: 17 + enum: 18 + - socionext,uniphier-ld4-pinctrl 19 + - socionext,uniphier-pro4-pinctrl 20 + - socionext,uniphier-sld8-pinctrl 21 + - socionext,uniphier-pro5-pinctrl 22 + - socionext,uniphier-pxs2-pinctrl 23 + - socionext,uniphier-ld6b-pinctrl 24 + - socionext,uniphier-ld11-pinctrl 25 + - socionext,uniphier-ld20-pinctrl 26 + - socionext,uniphier-pxs3-pinctrl 27 + 28 + required: 29 + - compatible 30 + 31 + examples: 32 + - | 33 + // The UniPhier pinctrl should be a subnode of a "syscon" compatible node. 34 + 35 + soc-glue@5f800000 { 36 + compatible = "socionext,uniphier-pro4-soc-glue", "simple-mfd", "syscon"; 37 + reg = <0x5f800000 0x2000>; 38 + 39 + pinctrl: pinctrl { 40 + compatible = "socionext,uniphier-pro4-pinctrl"; 41 + }; 42 + };
+2
Documentation/devicetree/bindings/pinctrl/st,stm32-pinctrl.yaml
··· 194 194 - ranges 195 195 - pins-are-numbered 196 196 197 + additionalProperties: false 198 + 197 199 examples: 198 200 - | 199 201 #include <dt-bindings/pinctrl/stm32-pinfunc.h>
+2
Documentation/devicetree/bindings/power/amlogic,meson-ee-pwrc.yaml
··· 68 68 - "#power-domain-cells" 69 69 - amlogic,ao-sysctrl 70 70 71 + additionalProperties: false 72 + 71 73 examples: 72 74 - | 73 75 pwrc: power-controller {
+13 -13
Documentation/devicetree/bindings/power/power-domain.yaml
··· 114 114 domain-idle-states = <&DOMAIN_PWR_DN>; 115 115 }; 116 116 117 - DOMAIN_RET: state@0 { 118 - compatible = "domain-idle-state"; 119 - reg = <0x0 0x0>; 120 - entry-latency-us = <1000>; 121 - exit-latency-us = <2000>; 122 - min-residency-us = <10000>; 123 - }; 117 + domain-idle-states { 118 + DOMAIN_RET: domain-retention { 119 + compatible = "domain-idle-state"; 120 + entry-latency-us = <1000>; 121 + exit-latency-us = <2000>; 122 + min-residency-us = <10000>; 123 + }; 124 124 125 - DOMAIN_PWR_DN: state@1 { 126 - compatible = "domain-idle-state"; 127 - reg = <0x1 0x0>; 128 - entry-latency-us = <5000>; 129 - exit-latency-us = <8000>; 130 - min-residency-us = <7000>; 125 + DOMAIN_PWR_DN: domain-pwr-dn { 126 + compatible = "domain-idle-state"; 127 + entry-latency-us = <5000>; 128 + exit-latency-us = <8000>; 129 + min-residency-us = <7000>; 130 + }; 131 131 };
-35
Documentation/devicetree/bindings/power/renesas,apmu.txt
··· 1 - DT bindings for the Renesas Advanced Power Management Unit 2 - 3 - Renesas R-Car and RZ/G1 SoCs utilize one or more APMU hardware units 4 - for CPU core power domain control including SMP boot and CPU Hotplug. 5 - 6 - Required properties: 7 - 8 - - compatible: Should be "renesas,<soctype>-apmu", "renesas,apmu" as fallback. 9 - Examples with soctypes are: 10 - - "renesas,r8a7743-apmu" (RZ/G1M) 11 - - "renesas,r8a7744-apmu" (RZ/G1N) 12 - - "renesas,r8a7745-apmu" (RZ/G1E) 13 - - "renesas,r8a77470-apmu" (RZ/G1C) 14 - - "renesas,r8a7790-apmu" (R-Car H2) 15 - - "renesas,r8a7791-apmu" (R-Car M2-W) 16 - - "renesas,r8a7792-apmu" (R-Car V2H) 17 - - "renesas,r8a7793-apmu" (R-Car M2-N) 18 - - "renesas,r8a7794-apmu" (R-Car E2) 19 - 20 - - reg: Base address and length of the I/O registers used by the APMU. 21 - 22 - - cpus: This node contains a list of CPU cores, which should match the order 23 - of CPU cores used by the WUPCR and PSTR registers in the Advanced Power 24 - Management Unit section of the device's datasheet. 25 - 26 - 27 - Example: 28 - 29 - This shows the r8a7791 APMU that can control CPU0 and CPU1. 30 - 31 - apmu@e6152000 { 32 - compatible = "renesas,r8a7791-apmu", "renesas,apmu"; 33 - reg = <0 0xe6152000 0 0x188>; 34 - cpus = <&cpu0 &cpu1>; 35 - };
+55
Documentation/devicetree/bindings/power/renesas,apmu.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: "http://devicetree.org/schemas/power/renesas,apmu.yaml#" 5 + $schema: "http://devicetree.org/meta-schemas/core.yaml#" 6 + 7 + title: Renesas Advanced Power Management Unit 8 + 9 + maintainers: 10 + - Geert Uytterhoeven <geert+renesas@glider.be> 11 + - Magnus Damm <magnus.damm@gmail.com> 12 + 13 + description: 14 + Renesas R-Car Gen2 and RZ/G1 SoCs utilize one or more APMU hardware units for 15 + CPU core power domain control including SMP boot and CPU Hotplug. 16 + 17 + properties: 18 + compatible: 19 + items: 20 + - enum: 21 + - renesas,r8a7743-apmu # RZ/G1M 22 + - renesas,r8a7744-apmu # RZ/G1N 23 + - renesas,r8a7745-apmu # RZ/G1E 24 + - renesas,r8a77470-apmu # RZ/G1C 25 + - renesas,r8a7790-apmu # R-Car H2 26 + - renesas,r8a7791-apmu # R-Car M2-W 27 + - renesas,r8a7792-apmu # R-Car V2H 28 + - renesas,r8a7793-apmu # R-Car M2-N 29 + - renesas,r8a7794-apmu # R-Car E2 30 + - const: renesas,apmu 31 + 32 + reg: 33 + maxItems: 1 34 + 35 + cpus: 36 + $ref: /schemas/types.yaml#/definitions/phandle-array 37 + description: | 38 + Array of phandles pointing to CPU cores, which should match the order of 39 + CPU cores used by the WUPCR and PSTR registers in the Advanced Power 40 + Management Unit section of the device's datasheet. 41 + 42 + required: 43 + - compatible 44 + - reg 45 + - cpus 46 + 47 + additionalProperties: false 48 + 49 + examples: 50 + - | 51 + apmu@e6152000 { 52 + compatible = "renesas,r8a7791-apmu", "renesas,apmu"; 53 + reg = <0xe6152000 0x188>; 54 + cpus = <&cpu0 &cpu1>; 55 + };
-62
Documentation/devicetree/bindings/power/renesas,rcar-sysc.txt
··· 1 - DT bindings for the Renesas R-Car (RZ/G) System Controller 2 - 3 - == System Controller Node == 4 - 5 - The R-Car (RZ/G) System Controller provides power management for the CPU cores 6 - and various coprocessors. 7 - 8 - Required properties: 9 - - compatible: Must contain exactly one of the following: 10 - - "renesas,r8a7743-sysc" (RZ/G1M) 11 - - "renesas,r8a7744-sysc" (RZ/G1N) 12 - - "renesas,r8a7745-sysc" (RZ/G1E) 13 - - "renesas,r8a77470-sysc" (RZ/G1C) 14 - - "renesas,r8a774a1-sysc" (RZ/G2M) 15 - - "renesas,r8a774b1-sysc" (RZ/G2N) 16 - - "renesas,r8a774c0-sysc" (RZ/G2E) 17 - - "renesas,r8a7779-sysc" (R-Car H1) 18 - - "renesas,r8a7790-sysc" (R-Car H2) 19 - - "renesas,r8a7791-sysc" (R-Car M2-W) 20 - - "renesas,r8a7792-sysc" (R-Car V2H) 21 - - "renesas,r8a7793-sysc" (R-Car M2-N) 22 - - "renesas,r8a7794-sysc" (R-Car E2) 23 - - "renesas,r8a7795-sysc" (R-Car H3) 24 - - "renesas,r8a7796-sysc" (R-Car M3-W) 25 - - "renesas,r8a77961-sysc" (R-Car M3-W+) 26 - - "renesas,r8a77965-sysc" (R-Car M3-N) 27 - - "renesas,r8a77970-sysc" (R-Car V3M) 28 - - "renesas,r8a77980-sysc" (R-Car V3H) 29 - - "renesas,r8a77990-sysc" (R-Car E3) 30 - - "renesas,r8a77995-sysc" (R-Car D3) 31 - - reg: Address start and address range for the device. 32 - - #power-domain-cells: Must be 1. 33 - 34 - 35 - Example: 36 - 37 - sysc: system-controller@e6180000 { 38 - compatible = "renesas,r8a7791-sysc"; 39 - reg = <0 0xe6180000 0 0x0200>; 40 - #power-domain-cells = <1>; 41 - }; 42 - 43 - 44 - == PM Domain Consumers == 45 - 46 - Devices residing in a power area must refer to that power area, as documented 47 - by the generic PM domain bindings in 48 - Documentation/devicetree/bindings/power/power_domain.txt. 49 - 50 - Required properties: 51 - - power-domains: A phandle and symbolic PM domain specifier, as defined in 52 - <dt-bindings/power/r8a77*-sysc.h>. 53 - 54 - 55 - Example: 56 - 57 - L2_CA15: cache-controller@0 { 58 - compatible = "cache"; 59 - power-domains = <&sysc R8A7791_PD_CA15_SCU>; 60 - cache-unified; 61 - cache-level = <2>; 62 - };
+73
Documentation/devicetree/bindings/power/renesas,rcar-sysc.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: "http://devicetree.org/schemas/power/renesas,rcar-sysc.yaml#" 5 + $schema: "http://devicetree.org/meta-schemas/core.yaml#" 6 + 7 + title: Renesas R-Car and RZ/G System Controller 8 + 9 + maintainers: 10 + - Geert Uytterhoeven <geert+renesas@glider.be> 11 + - Magnus Damm <magnus.damm@gmail.com> 12 + 13 + description: 14 + The R-Car (RZ/G) System Controller provides power management for the CPU 15 + cores and various coprocessors. 16 + 17 + properties: 18 + compatible: 19 + enum: 20 + - renesas,r8a7743-sysc # RZ/G1M 21 + - renesas,r8a7744-sysc # RZ/G1N 22 + - renesas,r8a7745-sysc # RZ/G1E 23 + - renesas,r8a77470-sysc # RZ/G1C 24 + - renesas,r8a774a1-sysc # RZ/G2M 25 + - renesas,r8a774b1-sysc # RZ/G2N 26 + - renesas,r8a774c0-sysc # RZ/G2E 27 + - renesas,r8a7779-sysc # R-Car H1 28 + - renesas,r8a7790-sysc # R-Car H2 29 + - renesas,r8a7791-sysc # R-Car M2-W 30 + - renesas,r8a7792-sysc # R-Car V2H 31 + - renesas,r8a7793-sysc # R-Car M2-N 32 + - renesas,r8a7794-sysc # R-Car E2 33 + - renesas,r8a7795-sysc # R-Car H3 34 + - renesas,r8a77961-sysc # R-Car M3-W+ 35 + - renesas,r8a77965-sysc # R-Car M3-N 36 + - renesas,r8a7796-sysc # R-Car M3-W 37 + - renesas,r8a77970-sysc # R-Car V3M 38 + - renesas,r8a77980-sysc # R-Car V3H 39 + - renesas,r8a77990-sysc # R-Car E3 40 + - renesas,r8a77995-sysc # R-Car D3 41 + 42 + reg: 43 + maxItems: 1 44 + 45 + '#power-domain-cells': 46 + const: 1 47 + 48 + required: 49 + - compatible 50 + - reg 51 + - '#power-domain-cells' 52 + 53 + additionalProperties: false 54 + 55 + examples: 56 + - | 57 + // System Controller node 58 + sysc: system-controller@e6180000 { 59 + compatible = "renesas,r8a7791-sysc"; 60 + reg = <0xe6180000 0x0200>; 61 + #power-domain-cells = <1>; 62 + }; 63 + 64 + - | 65 + // Power Domain consumers 66 + #include <dt-bindings/power/r8a7791-sysc.h> 67 + 68 + cache-controller-0 { 69 + compatible = "cache"; 70 + power-domains = <&sysc R8A7791_PD_CA15_SCU>; 71 + cache-unified; 72 + cache-level = <2>; 73 + };
+2
Documentation/devicetree/bindings/power/reset/syscon-poweroff.yaml
··· 41 41 - regmap 42 42 - offset 43 43 44 + additionalProperties: false 45 + 44 46 allOf: 45 47 - if: 46 48 not:
+2
Documentation/devicetree/bindings/power/reset/syscon-reboot.yaml
··· 41 41 - regmap 42 42 - offset 43 43 44 + additionalProperties: false 45 + 44 46 allOf: 45 47 - if: 46 48 not:
+3
Documentation/devicetree/bindings/power/supply/max77650-charger.yaml
··· 32 32 33 33 required: 34 34 - compatible 35 + additionalProperties: false 36 + 37 + ...
+2
Documentation/devicetree/bindings/ptp/ptp-idtcm.yaml
··· 55 55 - compatible 56 56 - reg 57 57 58 + additionalProperties: false 59 + 58 60 examples: 59 61 - | 60 62 i2c@1 {
+5
Documentation/devicetree/bindings/pwm/pwm-mediatek.txt
··· 19 19 - "pwm1-8": the eight per PWM clocks for mt2712 20 20 - "pwm1-6": the six per PWM clocks for mt7622 21 21 - "pwm1-5": the five per PWM clocks for mt7623 22 + - "pwm1" : the PWM1 clock for mt7629 22 23 - pinctrl-names: Must contain a "default" entry. 23 24 - pinctrl-0: One property must exist for each entry in pinctrl-names. 24 25 See pinctrl/pinctrl-bindings.txt for details of the property values. 26 + 27 + Optional properties: 28 + - assigned-clocks: Reference to the PWM clock entries. 29 + - assigned-clock-parents: The phandle of the parent clock of PWM clock. 25 30 26 31 Example: 27 32 pwm0: pwm@11006000 {
+4
Documentation/devicetree/bindings/pwm/renesas,tpu-pwm.yaml
··· 19 19 - renesas,tpu-r8a7744 # RZ/G1N 20 20 - renesas,tpu-r8a7745 # RZ/G1E 21 21 - renesas,tpu-r8a7790 # R-Car H2 22 + - renesas,tpu-r8a7791 # R-Car M2-W 23 + - renesas,tpu-r8a7792 # R-Car V2H 24 + - renesas,tpu-r8a7793 # R-Car M2-N 25 + - renesas,tpu-r8a7794 # R-Car E2 22 26 - renesas,tpu-r8a7795 # R-Car H3 23 27 - renesas,tpu-r8a7796 # R-Car M3-W 24 28 - renesas,tpu-r8a77965 # R-Car M3-N
+4 -1
Documentation/devicetree/bindings/regulator/max77650-regulator.yaml
··· 24 24 const: maxim,max77650-regulator 25 25 26 26 patternProperties: 27 - "^regulator@[0-3]$": 27 + "^regulator-(ldo|sbb[0-2])$": 28 28 $ref: "regulator.yaml#" 29 29 30 30 required: 31 31 - compatible 32 + additionalProperties: false 33 + 34 + ...
-64
Documentation/devicetree/bindings/regulator/st,stpmic1-regulator.txt
··· 1 - STMicroelectronics STPMIC1 Voltage regulators 2 - 3 - Regulator Nodes are optional depending on needs. 4 - 5 - Available Regulators in STPMIC1 device are: 6 - - buck1 for Buck BUCK1 7 - - buck2 for Buck BUCK2 8 - - buck3 for Buck BUCK3 9 - - buck4 for Buck BUCK4 10 - - ldo1 for LDO LDO1 11 - - ldo2 for LDO LDO2 12 - - ldo3 for LDO LDO3 13 - - ldo4 for LDO LDO4 14 - - ldo5 for LDO LDO5 15 - - ldo6 for LDO LDO6 16 - - vref_ddr for LDO Vref DDR 17 - - boost for Buck BOOST 18 - - pwr_sw1 for VBUS_OTG switch 19 - - pwr_sw2 for SW_OUT switch 20 - 21 - Switches are fixed voltage regulators with only enable/disable capability. 22 - 23 - Optional properties: 24 - - st,mask-reset: mask reset for this regulator: the regulator configuration 25 - is maintained during pmic reset. 26 - - regulator-over-current-protection: 27 - if set, all regulators are switched off in case of over-current detection 28 - on this regulator, 29 - if not set, the driver only sends an over-current event. 30 - - interrupts: index of current limit detection interrupt 31 - - <regulator>-supply: phandle to the parent supply/regulator node 32 - each regulator supply can be described except vref_ddr. 33 - - regulator-active-discharge: can be used on pwr_sw1 and pwr_sw2. 34 - 35 - Example: 36 - regulators { 37 - compatible = "st,stpmic1-regulators"; 38 - 39 - ldo6-supply = <&v3v3>; 40 - 41 - vdd_core: buck1 { 42 - regulator-name = "vdd_core"; 43 - interrupts = <IT_CURLIM_BUCK1 0>; 44 - st,mask-reset; 45 - regulator-pull-down; 46 - regulator-min-microvolt = <700000>; 47 - regulator-max-microvolt = <1200000>; 48 - }; 49 - 50 - v3v3: buck4 { 51 - regulator-name = "v3v3"; 52 - interrupts = <IT_CURLIM_BUCK4 0>; 53 - 54 - regulator-min-microvolt = <3300000>; 55 - regulator-max-microvolt = <3300000>; 56 - }; 57 - 58 - v1v8: ldo6 { 59 - regulator-name = "v1v8"; 60 - regulator-min-microvolt = <1800000>; 61 - regulator-max-microvolt = <1800000>; 62 - regulator-over-current-protection; 63 - }; 64 - };
+2
Documentation/devicetree/bindings/reset/amlogic,meson-reset.yaml
··· 29 29 - reg 30 30 - "#reset-cells" 31 31 32 + additionalProperties: false 33 + 32 34 examples: 33 35 - | 34 36 reset-controller@c884404 {
+2
Documentation/devicetree/bindings/reset/brcm,bcm7216-pcie-sata-rescal.yaml
··· 28 28 - reg 29 29 - "#reset-cells" 30 30 31 + additionalProperties: false 32 + 31 33 examples: 32 34 - | 33 35 reset-controller@8b2c800 {
-48
Documentation/devicetree/bindings/reset/renesas,rst.txt
··· 1 - DT bindings for the Renesas R-Car and RZ/G Reset Controllers 2 - 3 - The R-Car and RZ/G Reset Controllers provide reset control, and implement the 4 - following functions: 5 - - Latching of the levels on mode pins when PRESET# is negated, 6 - - Mode monitoring register, 7 - - Reset control of peripheral devices (on R-Car Gen1), 8 - - Watchdog timer (on R-Car Gen1), 9 - - Register-based reset control and boot address registers for the various CPU 10 - cores (on R-Car Gen2 and Gen3, and on RZ/G). 11 - 12 - 13 - Required properties: 14 - - compatible: Should be 15 - - "renesas,<soctype>-reset-wdt" for R-Car Gen1, 16 - - "renesas,<soctype>-rst" for R-Car Gen2 and Gen3, and RZ/G 17 - Examples with soctypes are: 18 - - "renesas,r8a7743-rst" (RZ/G1M) 19 - - "renesas,r8a7744-rst" (RZ/G1N) 20 - - "renesas,r8a7745-rst" (RZ/G1E) 21 - - "renesas,r8a77470-rst" (RZ/G1C) 22 - - "renesas,r8a774a1-rst" (RZ/G2M) 23 - - "renesas,r8a774b1-rst" (RZ/G2N) 24 - - "renesas,r8a774c0-rst" (RZ/G2E) 25 - - "renesas,r8a7778-reset-wdt" (R-Car M1A) 26 - - "renesas,r8a7779-reset-wdt" (R-Car H1) 27 - - "renesas,r8a7790-rst" (R-Car H2) 28 - - "renesas,r8a7791-rst" (R-Car M2-W) 29 - - "renesas,r8a7792-rst" (R-Car V2H 30 - - "renesas,r8a7793-rst" (R-Car M2-N) 31 - - "renesas,r8a7794-rst" (R-Car E2) 32 - - "renesas,r8a7795-rst" (R-Car H3) 33 - - "renesas,r8a7796-rst" (R-Car M3-W) 34 - - "renesas,r8a77961-rst" (R-Car M3-W+) 35 - - "renesas,r8a77965-rst" (R-Car M3-N) 36 - - "renesas,r8a77970-rst" (R-Car V3M) 37 - - "renesas,r8a77980-rst" (R-Car V3H) 38 - - "renesas,r8a77990-rst" (R-Car E3) 39 - - "renesas,r8a77995-rst" (R-Car D3) 40 - - reg: Address start and address range for the device. 41 - 42 - 43 - Example: 44 - 45 - rst: reset-controller@e6160000 { 46 - compatible = "renesas,r8a7795-rst"; 47 - reg = <0 0xe6160000 0 0x0200>; 48 - };
+63
Documentation/devicetree/bindings/reset/renesas,rst.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: "http://devicetree.org/schemas/reset/renesas,rst.yaml#" 5 + $schema: "http://devicetree.org/meta-schemas/core.yaml#" 6 + 7 + title: Renesas R-Car and RZ/G Reset Controller 8 + 9 + maintainers: 10 + - Geert Uytterhoeven <geert+renesas@glider.be> 11 + - Magnus Damm <magnus.damm@gmail.com> 12 + 13 + description: | 14 + The R-Car and RZ/G Reset Controllers provide reset control, and implement the 15 + following functions: 16 + - Latching of the levels on mode pins when PRESET# is negated, 17 + - Mode monitoring register, 18 + - Reset control of peripheral devices (on R-Car Gen1), 19 + - Watchdog timer (on R-Car Gen1), 20 + - Register-based reset control and boot address registers for the various 21 + CPU cores (on R-Car Gen2 and Gen3, and on RZ/G). 22 + 23 + properties: 24 + compatible: 25 + enum: 26 + - renesas,r8a7743-rst # RZ/G1M 27 + - renesas,r8a7744-rst # RZ/G1N 28 + - renesas,r8a7745-rst # RZ/G1E 29 + - renesas,r8a77470-rst # RZ/G1C 30 + - renesas,r8a774a1-rst # RZ/G2M 31 + - renesas,r8a774b1-rst # RZ/G2N 32 + - renesas,r8a774c0-rst # RZ/G2E 33 + - renesas,r8a7778-reset-wdt # R-Car M1A 34 + - renesas,r8a7779-reset-wdt # R-Car H1 35 + - renesas,r8a7790-rst # R-Car H2 36 + - renesas,r8a7791-rst # R-Car M2-W 37 + - renesas,r8a7792-rst # R-Car V2H 38 + - renesas,r8a7793-rst # R-Car M2-N 39 + - renesas,r8a7794-rst # R-Car E2 40 + - renesas,r8a7795-rst # R-Car H3 41 + - renesas,r8a7796-rst # R-Car M3-W 42 + - renesas,r8a77961-rst # R-Car M3-W+ 43 + - renesas,r8a77965-rst # R-Car M3-N 44 + - renesas,r8a77970-rst # R-Car V3M 45 + - renesas,r8a77980-rst # R-Car V3H 46 + - renesas,r8a77990-rst # R-Car E3 47 + - renesas,r8a77995-rst # R-Car D3 48 + 49 + reg: 50 + maxItems: 1 51 + 52 + required: 53 + - compatible 54 + - reg 55 + 56 + additionalProperties: false 57 + 58 + examples: 59 + - | 60 + rst: reset-controller@e6160000 { 61 + compatible = "renesas,r8a7795-rst"; 62 + reg = <0xe6160000 0x0200>; 63 + };
+2
Documentation/devicetree/bindings/rng/amlogic,meson-rng.yaml
··· 29 29 - compatible 30 30 - reg 31 31 32 + additionalProperties: false 33 + 32 34 examples: 33 35 - | 34 36 rng@c8834000 {
-40
Documentation/devicetree/bindings/rng/brcm,bcm2835.txt
··· 1 - BCM2835/6368 Random number generator 2 - 3 - Required properties: 4 - 5 - - compatible : should be one of 6 - "brcm,bcm2835-rng" 7 - "brcm,bcm-nsp-rng" 8 - "brcm,bcm5301x-rng" or 9 - "brcm,bcm6368-rng" 10 - - reg : Specifies base physical address and size of the registers. 11 - 12 - Optional properties: 13 - 14 - - clocks : phandle to clock-controller plus clock-specifier pair 15 - - clock-names : "ipsec" as a clock name 16 - 17 - Optional properties: 18 - 19 - - interrupts: specify the interrupt for the RNG block 20 - 21 - Example: 22 - 23 - rng { 24 - compatible = "brcm,bcm2835-rng"; 25 - reg = <0x7e104000 0x10>; 26 - interrupts = <2 29>; 27 - }; 28 - 29 - rng@18033000 { 30 - compatible = "brcm,bcm-nsp-rng"; 31 - reg = <0x18033000 0x14>; 32 - }; 33 - 34 - random: rng@10004180 { 35 - compatible = "brcm,bcm6368-rng"; 36 - reg = <0x10004180 0x14>; 37 - 38 - clocks = <&periph_clk 18>; 39 - clock-names = "ipsec"; 40 - };
+61
Documentation/devicetree/bindings/rng/brcm,bcm2835.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/rng/brcm,bcm2835.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: BCM2835/6368 Random number generator 8 + 9 + maintainers: 10 + - Stefan Wahren <stefan.wahren@i2se.com> 11 + - Florian Fainelli <f.fainelli@gmail.com> 12 + - Herbert Xu <herbert@gondor.apana.org.au> 13 + 14 + properties: 15 + compatible: 16 + enum: 17 + - brcm,bcm2835-rng 18 + - brcm,bcm-nsp-rng 19 + - brcm,bcm5301x-rng 20 + - brcm,bcm6368-rng 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + clocks: 26 + maxItems: 1 27 + 28 + clock-names: 29 + const: ipsec 30 + 31 + interrupts: 32 + maxItems: 1 33 + 34 + required: 35 + - compatible 36 + - reg 37 + 38 + additionalProperties: false 39 + 40 + examples: 41 + - | 42 + rng { 43 + compatible = "brcm,bcm2835-rng"; 44 + reg = <0x7e104000 0x10>; 45 + interrupts = <2 29>; 46 + }; 47 + 48 + - | 49 + rng@18033000 { 50 + compatible = "brcm,bcm-nsp-rng"; 51 + reg = <0x18033000 0x14>; 52 + }; 53 + 54 + - | 55 + rng@10004180 { 56 + compatible = "brcm,bcm6368-rng"; 57 + reg = <0x10004180 0x14>; 58 + 59 + clocks = <&periph_clk 18>; 60 + clock-names = "ipsec"; 61 + };
+2
Documentation/devicetree/bindings/rtc/renesas,sh-rtc.yaml
··· 51 51 - clocks 52 52 - clock-names 53 53 54 + additionalProperties: false 55 + 54 56 examples: 55 57 - | 56 58 #include <dt-bindings/clock/r7s72100-clock.h>
+2
Documentation/devicetree/bindings/rtc/st,stm32-rtc.yaml
··· 111 111 - clocks 112 112 - interrupts 113 113 114 + additionalProperties: false 115 + 114 116 examples: 115 117 - | 116 118 #include <dt-bindings/mfd/stm32f4-rcc.h>
+2
Documentation/devicetree/bindings/serial/amlogic,meson-uart.yaml
··· 62 62 - clocks 63 63 - clock-names 64 64 65 + additionalProperties: false 66 + 65 67 examples: 66 68 - | 67 69 serial@84c0 {
+1 -1
Documentation/devicetree/bindings/serial/fsl-imx-uart.txt
··· 19 19 the transceiver is actually CTS_B, not RTS_B. CTS_B is always output, 20 20 and RTS_B is input, regardless of dte-mode. 21 21 22 - Please check Documentation/devicetree/bindings/serial/serial.txt 22 + Please check Documentation/devicetree/bindings/serial/serial.yaml 23 23 for the complete list of generic properties. 24 24 25 25 Note: Each uart controller should have an alias correctly numbered
+135
Documentation/devicetree/bindings/serial/renesas,hscif.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/renesas,hscif.yaml#" 5 + $schema: "http://devicetree.org/meta-schemas/core.yaml#" 6 + 7 + title: Renesas High Speed Serial Communication Interface with FIFO (HSCIF) 8 + 9 + maintainers: 10 + - Geert Uytterhoeven <geert+renesas@glider.be> 11 + 12 + allOf: 13 + - $ref: serial.yaml# 14 + 15 + properties: 16 + compatible: 17 + oneOf: 18 + - items: 19 + - enum: 20 + - renesas,hscif-r8a7778 # R-Car M1 21 + - renesas,hscif-r8a7779 # R-Car H1 22 + - const: renesas,rcar-gen1-hscif # R-Car Gen1 23 + - const: renesas,hscif # generic HSCIF compatible UART 24 + 25 + - items: 26 + - enum: 27 + - renesas,hscif-r8a7743 # RZ/G1M 28 + - renesas,hscif-r8a7744 # RZ/G1N 29 + - renesas,hscif-r8a7745 # RZ/G1E 30 + - renesas,hscif-r8a77470 # RZ/G1C 31 + - renesas,hscif-r8a7790 # R-Car H2 32 + - renesas,hscif-r8a7791 # R-Car M2-W 33 + - renesas,hscif-r8a7792 # R-Car V2H 34 + - renesas,hscif-r8a7793 # R-Car M2-N 35 + - renesas,hscif-r8a7794 # R-Car E2 36 + - const: renesas,rcar-gen2-hscif # R-Car Gen2 and RZ/G1 37 + - const: renesas,hscif # generic HSCIF compatible UART 38 + 39 + - items: 40 + - enum: 41 + - renesas,hscif-r8a774a1 # RZ/G2M 42 + - renesas,hscif-r8a774b1 # RZ/G2N 43 + - renesas,hscif-r8a774c0 # RZ/G2E 44 + - renesas,hscif-r8a7795 # R-Car H3 45 + - renesas,hscif-r8a7796 # R-Car M3-W 46 + - renesas,hscif-r8a77961 # R-Car M3-W+ 47 + - renesas,hscif-r8a77965 # R-Car M3-N 48 + - renesas,hscif-r8a77970 # R-Car V3M 49 + - renesas,hscif-r8a77980 # R-Car V3H 50 + - renesas,hscif-r8a77990 # R-Car E3 51 + - renesas,hscif-r8a77995 # R-Car D3 52 + - const: renesas,rcar-gen3-hscif # R-Car Gen3 and RZ/G2 53 + - const: renesas,hscif # generic HSCIF compatible UART 54 + 55 + reg: 56 + maxItems: 1 57 + 58 + interrupts: 59 + maxItems: 1 60 + 61 + clocks: 62 + minItems: 1 63 + maxItems: 4 64 + 65 + clock-names: 66 + minItems: 1 67 + maxItems: 4 68 + items: 69 + enum: 70 + - fck # UART functional clock 71 + - hsck # optional external clock input 72 + - brg_int # optional internal clock source for BRG frequency divider 73 + - scif_clk # optional external clock source for BRG frequency divider 74 + 75 + power-domains: 76 + maxItems: 1 77 + 78 + resets: 79 + maxItems: 1 80 + 81 + dmas: 82 + description: 83 + Must contain a list of pairs of references to DMA specifiers, one for 84 + transmission, and one for reception. 85 + 86 + dma-names: 87 + minItems: 2 88 + maxItems: 4 89 + items: 90 + enum: 91 + - tx 92 + - rx 93 + 94 + required: 95 + - compatible 96 + - reg 97 + - interrupts 98 + - clocks 99 + - clock-names 100 + - power-domains 101 + 102 + if: 103 + properties: 104 + compatible: 105 + contains: 106 + enum: 107 + - renesas,rcar-gen2-hscif 108 + - renesas,rcar-gen3-hscif 109 + then: 110 + required: 111 + - resets 112 + 113 + examples: 114 + - | 115 + #include <dt-bindings/clock/r8a7795-cpg-mssr.h> 116 + #include <dt-bindings/interrupt-controller/arm-gic.h> 117 + #include <dt-bindings/power/r8a7795-sysc.h> 118 + aliases { 119 + serial1 = &hscif1; 120 + }; 121 + 122 + hscif1: serial@e6550000 { 123 + compatible = "renesas,hscif-r8a7795", "renesas,rcar-gen3-hscif", 124 + "renesas,hscif"; 125 + reg = <0xe6550000 96>; 126 + interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>; 127 + clocks = <&cpg CPG_MOD 519>, <&cpg CPG_CORE R8A7795_CLK_S3D1>, 128 + <&scif_clk>; 129 + clock-names = "fck", "brg_int", "scif_clk"; 130 + dmas = <&dmac1 0x33>, <&dmac1 0x32>, <&dmac2 0x33>, <&dmac2 0x32>; 131 + dma-names = "tx", "rx", "tx", "rx"; 132 + power-domains = <&sysc R8A7795_PD_ALWAYS_ON>; 133 + resets = <&cpg 519>; 134 + uart-has-rtscts; 135 + };
-150
Documentation/devicetree/bindings/serial/renesas,sci-serial.txt
··· 1 - * Renesas SH-Mobile Serial Communication Interface 2 - 3 - Required properties: 4 - 5 - - compatible: Must contain one or more of the following: 6 - 7 - - "renesas,scif-r7s72100" for R7S72100 (RZ/A1H) SCIF compatible UART. 8 - - "renesas,scif-r7s9210" for R7S9210 (RZ/A2) SCIF compatible UART. 9 - - "renesas,scifa-r8a73a4" for R8A73A4 (R-Mobile APE6) SCIFA compatible UART. 10 - - "renesas,scifb-r8a73a4" for R8A73A4 (R-Mobile APE6) SCIFB compatible UART. 11 - - "renesas,scifa-r8a7740" for R8A7740 (R-Mobile A1) SCIFA compatible UART. 12 - - "renesas,scifb-r8a7740" for R8A7740 (R-Mobile A1) SCIFB compatible UART. 13 - - "renesas,scif-r8a7743" for R8A7743 (RZ/G1M) SCIF compatible UART. 14 - - "renesas,scifa-r8a7743" for R8A7743 (RZ/G1M) SCIFA compatible UART. 15 - - "renesas,scifb-r8a7743" for R8A7743 (RZ/G1M) SCIFB compatible UART. 16 - - "renesas,hscif-r8a7743" for R8A7743 (RZ/G1M) HSCIF compatible UART. 17 - - "renesas,scif-r8a7744" for R8A7744 (RZ/G1N) SCIF compatible UART. 18 - - "renesas,scifa-r8a7744" for R8A7744 (RZ/G1N) SCIFA compatible UART. 19 - - "renesas,scifb-r8a7744" for R8A7744 (RZ/G1N) SCIFB compatible UART. 20 - - "renesas,hscif-r8a7744" for R8A7744 (RZ/G1N) HSCIF compatible UART. 21 - - "renesas,scif-r8a7745" for R8A7745 (RZ/G1E) SCIF compatible UART. 22 - - "renesas,scifa-r8a7745" for R8A7745 (RZ/G1E) SCIFA compatible UART. 23 - - "renesas,scifb-r8a7745" for R8A7745 (RZ/G1E) SCIFB compatible UART. 24 - - "renesas,hscif-r8a7745" for R8A7745 (RZ/G1E) HSCIF compatible UART. 25 - - "renesas,scif-r8a77470" for R8A77470 (RZ/G1C) SCIF compatible UART. 26 - - "renesas,hscif-r8a77470" for R8A77470 (RZ/G1C) HSCIF compatible UART. 27 - - "renesas,scif-r8a774a1" for R8A774A1 (RZ/G2M) SCIF compatible UART. 28 - - "renesas,hscif-r8a774a1" for R8A774A1 (RZ/G2M) HSCIF compatible UART. 29 - - "renesas,scif-r8a774b1" for R8A774B1 (RZ/G2N) SCIF compatible UART. 30 - - "renesas,hscif-r8a774b1" for R8A774B1 (RZ/G2N) HSCIF compatible UART. 31 - - "renesas,scif-r8a774c0" for R8A774C0 (RZ/G2E) SCIF compatible UART. 32 - - "renesas,hscif-r8a774c0" for R8A774C0 (RZ/G2E) HSCIF compatible UART. 33 - - "renesas,scif-r8a7778" for R8A7778 (R-Car M1) SCIF compatible UART. 34 - - "renesas,hscif-r8a7778" for R8A7778 (R-Car M1) HSCIF compatible UART. 35 - - "renesas,scif-r8a7779" for R8A7779 (R-Car H1) SCIF compatible UART. 36 - - "renesas,hscif-r8a7779" for R8A7779 (R-Car H1) HSCIF compatible UART. 37 - - "renesas,scif-r8a7790" for R8A7790 (R-Car H2) SCIF compatible UART. 38 - - "renesas,scifa-r8a7790" for R8A7790 (R-Car H2) SCIFA compatible UART. 39 - - "renesas,scifb-r8a7790" for R8A7790 (R-Car H2) SCIFB compatible UART. 40 - - "renesas,hscif-r8a7790" for R8A7790 (R-Car H2) HSCIF compatible UART. 41 - - "renesas,scif-r8a7791" for R8A7791 (R-Car M2-W) SCIF compatible UART. 42 - - "renesas,scifa-r8a7791" for R8A7791 (R-Car M2-W) SCIFA compatible UART. 43 - - "renesas,scifb-r8a7791" for R8A7791 (R-Car M2-W) SCIFB compatible UART. 44 - - "renesas,hscif-r8a7791" for R8A7791 (R-Car M2-W) HSCIF compatible UART. 45 - - "renesas,scif-r8a7792" for R8A7792 (R-Car V2H) SCIF compatible UART. 46 - - "renesas,hscif-r8a7792" for R8A7792 (R-Car V2H) HSCIF compatible UART. 47 - - "renesas,scif-r8a7793" for R8A7793 (R-Car M2-N) SCIF compatible UART. 48 - - "renesas,scifa-r8a7793" for R8A7793 (R-Car M2-N) SCIFA compatible UART. 49 - - "renesas,scifb-r8a7793" for R8A7793 (R-Car M2-N) SCIFB compatible UART. 50 - - "renesas,hscif-r8a7793" for R8A7793 (R-Car M2-N) HSCIF compatible UART. 51 - - "renesas,scif-r8a7794" for R8A7794 (R-Car E2) SCIF compatible UART. 52 - - "renesas,scifa-r8a7794" for R8A7794 (R-Car E2) SCIFA compatible UART. 53 - - "renesas,scifb-r8a7794" for R8A7794 (R-Car E2) SCIFB compatible UART. 54 - - "renesas,hscif-r8a7794" for R8A7794 (R-Car E2) HSCIF compatible UART. 55 - - "renesas,scif-r8a7795" for R8A7795 (R-Car H3) SCIF compatible UART. 56 - - "renesas,hscif-r8a7795" for R8A7795 (R-Car H3) HSCIF compatible UART. 57 - - "renesas,scif-r8a7796" for R8A77960 (R-Car M3-W) SCIF compatible UART. 58 - - "renesas,hscif-r8a7796" for R8A77960 (R-Car M3-W) HSCIF compatible UART. 59 - - "renesas,scif-r8a77961" for R8A77961 (R-Car M3-W+) SCIF compatible UART. 60 - - "renesas,hscif-r8a77961" for R8A77961 (R-Car M3-W+) HSCIF compatible UART. 61 - - "renesas,scif-r8a77965" for R8A77965 (R-Car M3-N) SCIF compatible UART. 62 - - "renesas,hscif-r8a77965" for R8A77965 (R-Car M3-N) HSCIF compatible UART. 63 - - "renesas,scif-r8a77970" for R8A77970 (R-Car V3M) SCIF compatible UART. 64 - - "renesas,hscif-r8a77970" for R8A77970 (R-Car V3M) HSCIF compatible UART. 65 - - "renesas,scif-r8a77980" for R8A77980 (R-Car V3H) SCIF compatible UART. 66 - - "renesas,hscif-r8a77980" for R8A77980 (R-Car V3H) HSCIF compatible UART. 67 - - "renesas,scif-r8a77990" for R8A77990 (R-Car E3) SCIF compatible UART. 68 - - "renesas,hscif-r8a77990" for R8A77990 (R-Car E3) HSCIF compatible UART. 69 - - "renesas,scif-r8a77995" for R8A77995 (R-Car D3) SCIF compatible UART. 70 - - "renesas,hscif-r8a77995" for R8A77995 (R-Car D3) HSCIF compatible UART. 71 - - "renesas,scifa-sh73a0" for SH73A0 (SH-Mobile AG5) SCIFA compatible UART. 72 - - "renesas,scifb-sh73a0" for SH73A0 (SH-Mobile AG5) SCIFB compatible UART. 73 - - "renesas,rcar-gen1-scif" for R-Car Gen1 SCIF compatible UART, 74 - - "renesas,rcar-gen2-scif" for R-Car Gen2 and RZ/G1 SCIF compatible UART, 75 - - "renesas,rcar-gen3-scif" for R-Car Gen3 and RZ/G2 SCIF compatible UART, 76 - - "renesas,rcar-gen2-scifa" for R-Car Gen2 and RZ/G1 SCIFA compatible UART, 77 - - "renesas,rcar-gen2-scifb" for R-Car Gen2 and RZ/G1 SCIFB compatible UART, 78 - - "renesas,rcar-gen1-hscif" for R-Car Gen1 HSCIF compatible UART, 79 - - "renesas,rcar-gen2-hscif" for R-Car Gen2 and RZ/G1 HSCIF compatible UART, 80 - - "renesas,rcar-gen3-hscif" for R-Car Gen3 and RZ/G2 HSCIF compatible UART, 81 - - "renesas,scif" for generic SCIF compatible UART. 82 - - "renesas,scifa" for generic SCIFA compatible UART. 83 - - "renesas,scifb" for generic SCIFB compatible UART. 84 - - "renesas,hscif" for generic HSCIF compatible UART. 85 - - "renesas,sci" for generic SCI compatible UART. 86 - 87 - When compatible with the generic version, nodes must list the 88 - SoC-specific version corresponding to the platform first, followed by the 89 - family-specific and/or generic versions. 90 - 91 - - reg: Base address and length of the I/O registers used by the UART. 92 - - interrupts: Must contain one or more interrupt-specifiers for the SCIx. 93 - If a single interrupt is expressed, then all events are 94 - multiplexed into this single interrupt. 95 - 96 - If multiple interrupts are provided by the hardware, the order 97 - in which the interrupts are listed must match order below. Note 98 - that some HW interrupt events may be muxed together resulting 99 - in duplicate entries. 100 - The interrupt order is as follows: 101 - 1. Error (ERI) 102 - 2. Receive buffer full (RXI) 103 - 3. Transmit buffer empty (TXI) 104 - 4. Break (BRI) 105 - 5. Data Ready (DRI) 106 - 6. Transmit End (TEI) 107 - 108 - - clocks: Must contain a phandle and clock-specifier pair for each entry 109 - in clock-names. 110 - - clock-names: Must contain "fck" for the SCIx UART functional clock. 111 - Apart from the divided functional clock, there may be other possible 112 - sources for the sampling clock, depending on SCIx variant. 113 - On (H)SCI(F) and some SCIFA, an additional clock may be specified: 114 - - "hsck" for the optional external clock input (on HSCIF), 115 - - "sck" for the optional external clock input (on other variants). 116 - On UARTs equipped with a Baud Rate Generator for External Clock (BRG) 117 - (some SCIF and HSCIF), additional clocks may be specified: 118 - - "brg_int" for the optional internal clock source for the frequency 119 - divider (typically the (AXI or SHwy) bus clock), 120 - - "scif_clk" for the optional external clock source for the frequency 121 - divider (SCIF_CLK). 122 - 123 - Note: Each enabled SCIx UART may have an optional "serialN" alias in the 124 - "aliases" node. 125 - 126 - Optional properties: 127 - - dmas: Must contain a list of two references to DMA specifiers, one for 128 - transmission, and one for reception. 129 - - dma-names: Must contain a list of two DMA names, "tx" and "rx". 130 - - {cts,dsr,dcd,rng,rts,dtr}-gpios: Specify GPIOs for modem lines, cfr. the 131 - generic serial DT bindings in serial.txt. 132 - - uart-has-rtscts: Indicates dedicated lines for RTS/CTS hardware flow 133 - control, cfr. the generic serial DT bindings in serial.txt. 134 - 135 - Example: 136 - aliases { 137 - serial0 = &scifa0; 138 - }; 139 - 140 - scifa0: serial@e6c40000 { 141 - compatible = "renesas,scifa-r8a7790", 142 - "renesas,rcar-gen2-scifa", "renesas,scifa"; 143 - reg = <0 0xe6c40000 0 64>; 144 - interrupt-parent = <&gic>; 145 - interrupts = <0 144 IRQ_TYPE_LEVEL_HIGH>; 146 - clocks = <&mstp2_clks R8A7790_CLK_SCIFA0>; 147 - clock-names = "fck"; 148 - dmas = <&dmac0 0x21>, <&dmac0 0x22>; 149 - dma-names = "tx", "rx"; 150 - };
+69
Documentation/devicetree/bindings/serial/renesas,sci.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/renesas,sci.yaml#" 5 + $schema: "http://devicetree.org/meta-schemas/core.yaml#" 6 + 7 + title: Renesas Serial Communication Interface 8 + 9 + maintainers: 10 + - Geert Uytterhoeven <geert+renesas@glider.be> 11 + 12 + allOf: 13 + - $ref: serial.yaml# 14 + 15 + properties: 16 + compatible: 17 + const: renesas,sci 18 + 19 + reg: 20 + maxItems: 1 21 + 22 + interrupts: 23 + items: 24 + - description: Error interrupt 25 + - description: Receive buffer full interrupt 26 + - description: Transmit buffer empty interrupt 27 + - description: Transmit end interrupt 28 + 29 + interrupt-names: 30 + items: 31 + - const: eri 32 + - const: rxi 33 + - const: txi 34 + - const: tei 35 + 36 + clocks: 37 + minItems: 1 38 + maxItems: 2 39 + 40 + clock-names: 41 + minItems: 1 42 + maxItems: 2 43 + items: 44 + enum: 45 + - fck # UART functional clock 46 + - sck # optional external clock input 47 + 48 + uart-has-rtscts: false 49 + 50 + required: 51 + - compatible 52 + - reg 53 + - interrupts 54 + - clocks 55 + - clock-names 56 + 57 + examples: 58 + - | 59 + aliases { 60 + serial0 = &sci0; 61 + }; 62 + 63 + sci0: serial@ffff78 { 64 + compatible = "renesas,sci"; 65 + reg = <0xffff78 8>; 66 + interrupts = <88 0>, <89 0>, <90 0>, <91 0>; 67 + clocks = <&fclk>; 68 + clock-names = "fck"; 69 + };
+172
Documentation/devicetree/bindings/serial/renesas,scif.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/renesas,scif.yaml#" 5 + $schema: "http://devicetree.org/meta-schemas/core.yaml#" 6 + 7 + title: Renesas Serial Communication Interface with FIFO (SCIF) 8 + 9 + maintainers: 10 + - Geert Uytterhoeven <geert+renesas@glider.be> 11 + 12 + allOf: 13 + - $ref: serial.yaml# 14 + 15 + properties: 16 + compatible: 17 + oneOf: 18 + - items: 19 + - enum: 20 + - renesas,scif-r7s72100 # RZ/A1H 21 + - const: renesas,scif # generic SCIF compatible UART 22 + 23 + - items: 24 + - enum: 25 + - renesas,scif-r7s9210 # RZ/A2 26 + 27 + - items: 28 + - enum: 29 + - renesas,scif-r8a7778 # R-Car M1 30 + - renesas,scif-r8a7779 # R-Car H1 31 + - const: renesas,rcar-gen1-scif # R-Car Gen1 32 + - const: renesas,scif # generic SCIF compatible UART 33 + 34 + - items: 35 + - enum: 36 + - renesas,scif-r8a7743 # RZ/G1M 37 + - renesas,scif-r8a7744 # RZ/G1N 38 + - renesas,scif-r8a7745 # RZ/G1E 39 + - renesas,scif-r8a77470 # RZ/G1C 40 + - renesas,scif-r8a7790 # R-Car H2 41 + - renesas,scif-r8a7791 # R-Car M2-W 42 + - renesas,scif-r8a7792 # R-Car V2H 43 + - renesas,scif-r8a7793 # R-Car M2-N 44 + - renesas,scif-r8a7794 # R-Car E2 45 + - const: renesas,rcar-gen2-scif # R-Car Gen2 and RZ/G1 46 + - const: renesas,scif # generic SCIF compatible UART 47 + 48 + - items: 49 + - enum: 50 + - renesas,scif-r8a774a1 # RZ/G2M 51 + - renesas,scif-r8a774b1 # RZ/G2N 52 + - renesas,scif-r8a774c0 # RZ/G2E 53 + - renesas,scif-r8a7795 # R-Car H3 54 + - renesas,scif-r8a7796 # R-Car M3-W 55 + - renesas,scif-r8a77961 # R-Car M3-W+ 56 + - renesas,scif-r8a77965 # R-Car M3-N 57 + - renesas,scif-r8a77970 # R-Car V3M 58 + - renesas,scif-r8a77980 # R-Car V3H 59 + - renesas,scif-r8a77990 # R-Car E3 60 + - renesas,scif-r8a77995 # R-Car D3 61 + - const: renesas,rcar-gen3-scif # R-Car Gen3 and RZ/G2 62 + - const: renesas,scif # generic SCIF compatible UART 63 + 64 + reg: 65 + maxItems: 1 66 + 67 + interrupts: 68 + oneOf: 69 + - items: 70 + - description: A combined interrupt 71 + - items: 72 + - description: Error interrupt 73 + - description: Receive buffer full interrupt 74 + - description: Transmit buffer empty interrupt 75 + - description: Transmit End interrupt 76 + - items: 77 + - description: Error interrupt 78 + - description: Receive buffer full interrupt 79 + - description: Transmit buffer empty interrupt 80 + - description: Break interrupt 81 + - description: Data Ready interrupt 82 + - description: Transmit End interrupt 83 + 84 + interrupt-names: 85 + oneOf: 86 + - items: 87 + - const: eri 88 + - const: rxi 89 + - const: txi 90 + - const: tei 91 + - items: 92 + - const: eri 93 + - const: rxi 94 + - const: txi 95 + - const: bri 96 + - const: dri 97 + - const: tei 98 + 99 + clocks: 100 + minItems: 1 101 + maxItems: 4 102 + 103 + clock-names: 104 + minItems: 1 105 + maxItems: 4 106 + items: 107 + enum: 108 + - fck # UART functional clock 109 + - sck # optional external clock input 110 + - brg_int # optional internal clock source for BRG frequency divider 111 + - scif_clk # optional external clock source for BRG frequency divider 112 + 113 + power-domains: 114 + maxItems: 1 115 + 116 + resets: 117 + maxItems: 1 118 + 119 + dmas: 120 + description: 121 + Must contain a list of pairs of references to DMA specifiers, one for 122 + transmission, and one for reception. 123 + 124 + dma-names: 125 + minItems: 2 126 + maxItems: 4 127 + items: 128 + enum: 129 + - tx 130 + - rx 131 + 132 + required: 133 + - compatible 134 + - reg 135 + - interrupts 136 + - clocks 137 + - clock-names 138 + - power-domains 139 + 140 + if: 141 + properties: 142 + compatible: 143 + contains: 144 + enum: 145 + - renesas,rcar-gen2-scif 146 + - renesas,rcar-gen3-scif 147 + then: 148 + required: 149 + - resets 150 + 151 + examples: 152 + - | 153 + #include <dt-bindings/clock/r8a7791-cpg-mssr.h> 154 + #include <dt-bindings/interrupt-controller/arm-gic.h> 155 + #include <dt-bindings/power/r8a7791-sysc.h> 156 + aliases { 157 + serial0 = &scif0; 158 + }; 159 + 160 + scif0: serial@e6e60000 { 161 + compatible = "renesas,scif-r8a7791", "renesas,rcar-gen2-scif", 162 + "renesas,scif"; 163 + reg = <0xe6e60000 64>; 164 + interrupts = <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>; 165 + clocks = <&cpg CPG_MOD 721>, <&cpg CPG_CORE R8A7791_CLK_ZS>, 166 + <&scif_clk>; 167 + clock-names = "fck", "brg_int", "scif_clk"; 168 + dmas = <&dmac0 0x29>, <&dmac0 0x2a>, <&dmac1 0x29>, <&dmac1 0x2a>; 169 + dma-names = "tx", "rx", "tx", "rx"; 170 + power-domains = <&sysc R8A7791_PD_ALWAYS_ON>; 171 + resets = <&cpg 721>; 172 + };
+107
Documentation/devicetree/bindings/serial/renesas,scifa.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/renesas,scifa.yaml#" 5 + $schema: "http://devicetree.org/meta-schemas/core.yaml#" 6 + 7 + title: Renesas Serial Communications Interface with FIFO A (SCIFA) 8 + 9 + maintainers: 10 + - Geert Uytterhoeven <geert+renesas@glider.be> 11 + 12 + allOf: 13 + - $ref: serial.yaml# 14 + 15 + properties: 16 + compatible: 17 + oneOf: 18 + - items: 19 + - enum: 20 + - renesas,scifa-r8a73a4 # R-Mobile APE6 21 + - renesas,scifa-r8a7740 # R-Mobile A1 22 + - renesas,scifa-sh73a0 # SH-Mobile AG5 23 + - const: renesas,scifa # generic SCIFA compatible UART 24 + 25 + - items: 26 + - enum: 27 + - renesas,scifa-r8a7743 # R8A7743 RZ/G1M 28 + - renesas,scifa-r8a7744 # R8A7744 RZ/G1N 29 + - renesas,scifa-r8a7745 # R8A7745 RZ/G1E 30 + - renesas,scifa-r8a7790 # R8A7790 R-Car H2 31 + - renesas,scifa-r8a7791 # R8A7791 R-Car M2-W 32 + - renesas,scifa-r8a7793 # R8A7793 R-Car M2-N 33 + - renesas,scifa-r8a7794 # R8A7794 R-Car E2 34 + - const: renesas,rcar-gen2-scifa # R-Car Gen2 and RZ/G1 35 + - const: renesas,scifa # generic SCIFA compatible UART 36 + 37 + reg: 38 + maxItems: 1 39 + 40 + interrupts: 41 + maxItems: 1 42 + 43 + clocks: 44 + maxItems: 1 45 + 46 + clock-names: 47 + enum: 48 + - fck # UART functional clock 49 + 50 + power-domains: 51 + maxItems: 1 52 + 53 + resets: 54 + maxItems: 1 55 + 56 + dmas: 57 + description: 58 + Must contain a list of pairs of references to DMA specifiers, one for 59 + transmission, and one for reception. 60 + 61 + dma-names: 62 + minItems: 2 63 + maxItems: 4 64 + items: 65 + enum: 66 + - tx 67 + - rx 68 + 69 + required: 70 + - compatible 71 + - reg 72 + - interrupts 73 + - clocks 74 + - clock-names 75 + - power-domains 76 + 77 + if: 78 + properties: 79 + compatible: 80 + contains: 81 + enum: 82 + - renesas,rcar-gen2-scifa 83 + then: 84 + required: 85 + - resets 86 + 87 + examples: 88 + - | 89 + #include <dt-bindings/clock/r8a7790-cpg-mssr.h> 90 + #include <dt-bindings/interrupt-controller/arm-gic.h> 91 + #include <dt-bindings/power/r8a7790-sysc.h> 92 + aliases { 93 + serial0 = &scifa0; 94 + }; 95 + 96 + scifa0: serial@e6c40000 { 97 + compatible = "renesas,scifa-r8a7790", "renesas,rcar-gen2-scifa", 98 + "renesas,scifa"; 99 + reg = <0xe6c40000 64>; 100 + interrupts = <GIC_SPI 144 IRQ_TYPE_LEVEL_HIGH>; 101 + clocks = <&cpg CPG_MOD 204>; 102 + clock-names = "fck"; 103 + power-domains = <&sysc R8A7790_PD_ALWAYS_ON>; 104 + resets = <&cpg 204>; 105 + dmas = <&dmac0 0x21>, <&dmac0 0x22>, <&dmac1 0x21>, <&dmac1 0x22>; 106 + dma-names = "tx", "rx", "tx", "rx"; 107 + };
+98
Documentation/devicetree/bindings/serial/renesas,scifb.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/renesas,scifb.yaml#" 5 + $schema: "http://devicetree.org/meta-schemas/core.yaml#" 6 + 7 + title: Renesas Serial Communications Interface with FIFO B (SCIFB) 8 + 9 + maintainers: 10 + - Geert Uytterhoeven <geert+renesas@glider.be> 11 + 12 + allOf: 13 + - $ref: serial.yaml# 14 + 15 + properties: 16 + compatible: 17 + oneOf: 18 + - items: 19 + - enum: 20 + - renesas,scifb-r8a73a4 # R-Mobile APE6 21 + - renesas,scifb-r8a7740 # R-Mobile A1 22 + - renesas,scifb-sh73a0 # SH-Mobile AG5 23 + - const: renesas,scifb # generic SCIFB compatible UART 24 + 25 + - items: 26 + - enum: 27 + - renesas,scifb-r8a7743 # RZ/G1M 28 + - renesas,scifb-r8a7744 # RZ/G1N 29 + - renesas,scifb-r8a7745 # RZ/G1E 30 + - renesas,scifb-r8a7790 # R-Car H2 31 + - renesas,scifb-r8a7791 # R-Car M2-W 32 + - renesas,scifb-r8a7793 # R-Car M2-N 33 + - renesas,scifb-r8a7794 # R-Car E2 34 + - const: renesas,rcar-gen2-scifb # R-Car Gen2 and RZ/G1 35 + - const: renesas,scifb # generic SCIFB compatible UART 36 + 37 + reg: 38 + maxItems: 1 39 + 40 + interrupts: 41 + maxItems: 1 42 + 43 + clocks: 44 + maxItems: 1 45 + 46 + clock-names: 47 + enum: 48 + - fck # UART functional clock 49 + 50 + power-domains: 51 + maxItems: 1 52 + 53 + resets: 54 + maxItems: 1 55 + 56 + dmas: 57 + description: 58 + Must contain a list of pairs of references to DMA specifiers, one for 59 + transmission, and one for reception. 60 + 61 + dma-names: 62 + minItems: 2 63 + maxItems: 4 64 + items: 65 + enum: 66 + - tx 67 + - rx 68 + 69 + required: 70 + - compatible 71 + - reg 72 + - interrupts 73 + - clocks 74 + - clock-names 75 + - power-domains 76 + 77 + if: 78 + properties: 79 + compatible: 80 + contains: 81 + enum: 82 + - renesas,rcar-gen2-scifb 83 + then: 84 + required: 85 + - resets 86 + 87 + examples: 88 + - | 89 + #include <dt-bindings/clock/r8a7740-clock.h> 90 + #include <dt-bindings/interrupt-controller/arm-gic.h> 91 + scifb: serial@e6c30000 { 92 + compatible = "renesas,scifb-r8a7740", "renesas,scifb"; 93 + reg = <0xe6c30000 0x100>; 94 + interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>; 95 + clocks = <&mstp2_clks R8A7740_CLK_SCIFB>; 96 + clock-names = "fck"; 97 + power-domains = <&pd_a3sp>; 98 + };
-56
Documentation/devicetree/bindings/serial/serial.txt
··· 1 - Generic Serial DT Bindings 2 - 3 - This document lists a set of generic properties for describing UARTs in a 4 - device tree. Whether these properties apply to a particular device depends on 5 - the DT bindings for the actual device. 6 - 7 - Optional properties: 8 - - cts-gpios: Must contain a GPIO specifier, referring to the GPIO pin to be 9 - used as the UART's CTS line. 10 - - dcd-gpios: Must contain a GPIO specifier, referring to the GPIO pin to be 11 - used as the UART's DCD line. 12 - - dsr-gpios: Must contain a GPIO specifier, referring to the GPIO pin to be 13 - used as the UART's DSR line. 14 - - dtr-gpios: Must contain a GPIO specifier, referring to the GPIO pin to be 15 - used as the UART's DTR line. 16 - - rng-gpios: Must contain a GPIO specifier, referring to the GPIO pin to be 17 - used as the UART's RNG line. 18 - - rts-gpios: Must contain a GPIO specifier, referring to the GPIO pin to be 19 - used as the UART's RTS line. 20 - 21 - - uart-has-rtscts: The presence of this property indicates that the 22 - UART has dedicated lines for RTS/CTS hardware flow control, and that 23 - they are available for use (wired and enabled by pinmux configuration). 24 - This depends on both the UART hardware and the board wiring. 25 - Note that this property is mutually-exclusive with "cts-gpios" and 26 - "rts-gpios" above, unless support is provided to switch between modes 27 - dynamically. 28 - 29 - 30 - Examples: 31 - 32 - uart1: serial@48022000 { 33 - compatible = "ti,am3352-uart", "ti,omap3-uart"; 34 - ti,hwmods = "uart2"; 35 - clock-frequency = <48000000>; 36 - reg = <0x48022000 0x2000>; 37 - interrupts = <73>; 38 - dmas = <&edma 28 0>, <&edma 29 0>; 39 - dma-names = "tx", "rx"; 40 - dtr-gpios = <&gpio2 22 GPIO_ACTIVE_LOW>; 41 - dsr-gpios = <&gpio2 23 GPIO_ACTIVE_LOW>; 42 - dcd-gpios = <&gpio2 24 GPIO_ACTIVE_LOW>; 43 - rng-gpios = <&gpio2 25 GPIO_ACTIVE_LOW>; 44 - cts-gpios = <&gpio0 12 GPIO_ACTIVE_LOW>; 45 - rts-gpios = <&gpio0 13 GPIO_ACTIVE_LOW>; 46 - }; 47 - 48 - scifa4: serial@e6c80000 { 49 - compatible = "renesas,scifa-sh73a0", "renesas,scifa"; 50 - reg = <0xe6c80000 0x100>; 51 - interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>; 52 - clocks = <&mstp2_clks SH73A0_CLK_SCIFA4>; 53 - clock-names = "fck"; 54 - power-domains = <&pd_a3sp>; 55 - uart-has-rtscts; 56 - };
+131
Documentation/devicetree/bindings/serial/serial.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/serial.yaml#" 5 + $schema: "http://devicetree.org/meta-schemas/core.yaml#" 6 + 7 + title: Serial Interface Generic DT Bindings 8 + 9 + maintainers: 10 + - Rob Herring <robh@kernel.org> 11 + - Greg Kroah-Hartman <gregkh@linuxfoundation.org> 12 + 13 + description: 14 + This document lists a set of generic properties for describing UARTs in a 15 + device tree. Whether these properties apply to a particular device depends 16 + on the DT bindings for the actual device. 17 + 18 + Each enabled UART may have an optional "serialN" alias in the "aliases" node, 19 + where N is the port number (non-negative decimal integer) as printed on the 20 + label next to the physical port. 21 + 22 + properties: 23 + $nodename: 24 + pattern: "^serial(@.*)?$" 25 + 26 + cts-gpios: 27 + maxItems: 1 28 + description: 29 + Must contain a GPIO specifier, referring to the GPIO pin to be used as 30 + the UART's CTS line. 31 + 32 + dcd-gpios: 33 + maxItems: 1 34 + description: 35 + Must contain a GPIO specifier, referring to the GPIO pin to be used as 36 + the UART's DCD line. 37 + 38 + dsr-gpios: 39 + maxItems: 1 40 + description: 41 + Must contain a GPIO specifier, referring to the GPIO pin to be used as 42 + the UART's DSR line. 43 + 44 + dtr-gpios: 45 + maxItems: 1 46 + description: 47 + Must contain a GPIO specifier, referring to the GPIO pin to be used as 48 + the UART's DTR line. 49 + 50 + rng-gpios: 51 + maxItems: 1 52 + description: 53 + Must contain a GPIO specifier, referring to the GPIO pin to be used as 54 + the UART's RNG line. 55 + 56 + rts-gpios: 57 + maxItems: 1 58 + description: 59 + Must contain a GPIO specifier, referring to the GPIO pin to be used as 60 + the UART's RTS line. 61 + 62 + uart-has-rtscts: 63 + $ref: /schemas/types.yaml#/definitions/flag 64 + description: 65 + The presence of this property indicates that the UART has dedicated lines 66 + for RTS/CTS hardware flow control, and that they are available for use 67 + (wired and enabled by pinmux configuration). This depends on both the 68 + UART hardware and the board wiring. 69 + 70 + if: 71 + required: 72 + - uart-has-rtscts 73 + then: 74 + properties: 75 + cts-gpios: false 76 + rts-gpios: false 77 + 78 + patternProperties: 79 + ".*": 80 + if: 81 + type: object 82 + then: 83 + description: 84 + Serial attached devices shall be a child node of the host UART device 85 + the slave device is attached to. It is expected that the attached 86 + device is the only child node of the UART device. The slave device node 87 + name shall reflect the generic type of device for the node. 88 + 89 + properties: 90 + compatible: 91 + description: 92 + Compatible of the device connected to the serial port. 93 + 94 + max-speed: 95 + $ref: /schemas/types.yaml#/definitions/uint32 96 + description: 97 + The maximum baud rate the device operates at. 98 + This should only be present if the maximum is less than the slave 99 + device can support. For example, a particular board has some 100 + signal quality issue or the host processor can't support higher 101 + baud rates. 102 + 103 + current-speed: 104 + $ref: /schemas/types.yaml#/definitions/uint32 105 + description: | 106 + The current baud rate the device operates at. 107 + This should only be present in case a driver has no chance to know 108 + the baud rate of the slave device. 109 + Examples: 110 + * device supports auto-baud 111 + * the rate is setup by a bootloader and there is no way to reset 112 + the device 113 + * device baud rate is configured by its firmware but there is no 114 + way to request the actual settings 115 + 116 + required: 117 + - compatible 118 + 119 + examples: 120 + - | 121 + serial@1234 { 122 + compatible = "ns16550a"; 123 + reg = <0x1234 0x20>; 124 + interrupts = <1>; 125 + 126 + bluetooth { 127 + compatible = "brcm,bcm43341-bt"; 128 + interrupt-parent = <&gpio>; 129 + interrupts = <10>; 130 + }; 131 + };
-45
Documentation/devicetree/bindings/serial/slave-device.txt
··· 1 - Serial Slave Device DT binding 2 - 3 - This documents the binding structure and common properties for serial 4 - attached devices. Common examples include Bluetooth, WiFi, NFC and GPS 5 - devices. 6 - 7 - Serial attached devices shall be a child node of the host UART device the 8 - slave device is attached to. It is expected that the attached device is 9 - the only child node of the UART device. The slave device node name shall 10 - reflect the generic type of device for the node. 11 - 12 - Required Properties: 13 - 14 - - compatible : A string reflecting the vendor and specific device the node 15 - represents. 16 - 17 - Optional Properties: 18 - 19 - - max-speed : The maximum baud rate the device operates at. This should 20 - only be present if the maximum is less than the slave device 21 - can support. For example, a particular board has some signal 22 - quality issue or the host processor can't support higher 23 - baud rates. 24 - - current-speed : The current baud rate the device operates at. This should 25 - only be present in case a driver has no chance to know 26 - the baud rate of the slave device. 27 - Examples: 28 - * device supports auto-baud 29 - * the rate is setup by a bootloader and there is no 30 - way to reset the device 31 - * device baud rate is configured by its firmware but 32 - there is no way to request the actual settings 33 - 34 - Example: 35 - 36 - serial@1234 { 37 - compatible = "ns16550a"; 38 - interrupts = <1>; 39 - 40 - bluetooth { 41 - compatible = "brcm,bcm43341-bt"; 42 - interrupt-parent = <&gpio>; 43 - interrupts = <10>; 44 - }; 45 - };
+1
Documentation/devicetree/bindings/serial/snps-dw-apb-uart.yaml
··· 27 27 - rockchip,rk3066-uart 28 28 - rockchip,rk3188-uart 29 29 - rockchip,rk3288-uart 30 + - rockchip,rk3308-uart 30 31 - rockchip,rk3328-uart 31 32 - rockchip,rk3368-uart 32 33 - rockchip,rk3399-uart
+46
Documentation/devicetree/bindings/serial/socionext,uniphier-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/socionext,uniphier-uart.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: UniPhier UART controller 8 + 9 + maintainers: 10 + - Masahiro Yamada <yamada.masahiro@socionext.com> 11 + 12 + properties: 13 + compatible: 14 + const: socionext,uniphier-uart 15 + 16 + reg: 17 + maxItems: 1 18 + 19 + interrupts: 20 + maxItems: 1 21 + 22 + clocks: 23 + minItems: 1 24 + 25 + auto-flow-control: 26 + description: enable automatic flow control support. 27 + $ref: /schemas/types.yaml#/definitions/flag 28 + 29 + required: 30 + - compatible 31 + - reg 32 + - interrupts 33 + - clocks 34 + 35 + examples: 36 + - | 37 + aliases { 38 + serial0 = &serial0; 39 + }; 40 + 41 + serial0: serial@54006800 { 42 + compatible = "socionext,uniphier-uart"; 43 + reg = <0x54006800 0x40>; 44 + interrupts = <0 33 4>; 45 + clocks = <&uart_clk>; 46 + };
-22
Documentation/devicetree/bindings/serial/uniphier-uart.txt
··· 1 - UniPhier UART controller 2 - 3 - Required properties: 4 - - compatible: should be "socionext,uniphier-uart". 5 - - reg: offset and length of the register set for the device. 6 - - interrupts: a single interrupt specifier. 7 - - clocks: phandle to the input clock. 8 - 9 - Optional properties: 10 - -auto-flow-control: enable automatic flow control support. 11 - 12 - Example: 13 - aliases { 14 - serial0 = &serial0; 15 - }; 16 - 17 - serial0: serial@54006800 { 18 - compatible = "socionext,uniphier-uart"; 19 - reg = <0x54006800 0x40>; 20 - interrupts = <0 33 4>; 21 - clocks = <&uart_clk>; 22 - };
+2
Documentation/devicetree/bindings/soc/amlogic/amlogic,canvas.yaml
··· 40 40 - compatible 41 41 - reg 42 42 43 + additionalProperties: false 44 + 43 45 examples: 44 46 - | 45 47 canvas: video-lut@48 {
+47
Documentation/devicetree/bindings/soc/imx/fsl,aips-bus.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/soc/imx/fsl,aips-bus.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: i.MX AHB to IP Bridge 8 + 9 + maintainers: 10 + - Peng Fan <peng.fan@nxp.com> 11 + 12 + description: | 13 + This particular peripheral is designed as the bridge between 14 + AHB bus and peripherals with the lower bandwidth IP Slave (IPS) 15 + buses. 16 + 17 + select: 18 + properties: 19 + compatible: 20 + contains: 21 + const: fsl,aips-bus 22 + required: 23 + - compatible 24 + 25 + properties: 26 + compatible: 27 + items: 28 + - const: fsl,aips-bus 29 + - const: simple-bus 30 + 31 + reg: 32 + maxItems: 1 33 + 34 + required: 35 + - compatible 36 + - reg 37 + 38 + examples: 39 + - | 40 + bus@30000000 { 41 + compatible = "fsl,aips-bus", "simple-bus"; 42 + reg = <0x30000000 0x400000>; 43 + #address-cells = <1>; 44 + #size-cells = <1>; 45 + ranges; 46 + }; 47 + ...
+2
Documentation/devicetree/bindings/sound/adi,adau7118.yaml
··· 59 59 - iovdd-supply 60 60 - dvdd-supply 61 61 62 + additionalProperties: false 63 + 62 64 examples: 63 65 - | 64 66 i2c {
+2
Documentation/devicetree/bindings/sound/qcom,wcd934x.yaml
··· 139 139 - "#address-cells" 140 140 - "#size-cells" 141 141 142 + additionalProperties: false 143 + 142 144 examples: 143 145 - | 144 146 codec@1,0{
+2
Documentation/devicetree/bindings/sound/renesas,fsi.yaml
··· 63 63 - reg 64 64 - interrupts 65 65 66 + additionalProperties: false 67 + 66 68 examples: 67 69 - | 68 70 sh_fsi2: sound@ec230000 {
+2
Documentation/devicetree/bindings/sound/samsung,odroid.yaml
··· 69 69 - cpu 70 70 - codec 71 71 72 + additionalProperties: false 73 + 72 74 examples: 73 75 - | 74 76 sound {
+2
Documentation/devicetree/bindings/sound/samsung-i2s.yaml
··· 115 115 - clocks 116 116 - clock-names 117 117 118 + additionalProperties: false 119 + 118 120 examples: 119 121 - | 120 122 #include <dt-bindings/clock/exynos-audss-clk.h>
-36
Documentation/devicetree/bindings/spi/qcom,spi-qcom-qspi.txt
··· 1 - Qualcomm Quad Serial Peripheral Interface (QSPI) 2 - 3 - The QSPI controller allows SPI protocol communication in single, dual, or quad 4 - wire transmission modes for read/write access to slaves such as NOR flash. 5 - 6 - Required properties: 7 - - compatible: An SoC specific identifier followed by "qcom,qspi-v1", such as 8 - "qcom,sdm845-qspi", "qcom,qspi-v1" 9 - - reg: Should contain the base register location and length. 10 - - interrupts: Interrupt number used by the controller. 11 - - clocks: Should contain the core and AHB clock. 12 - - clock-names: Should be "core" for core clock and "iface" for AHB clock. 13 - 14 - SPI slave nodes must be children of the SPI master node and can contain 15 - properties described in Documentation/devicetree/bindings/spi/spi-bus.txt 16 - 17 - Example: 18 - 19 - qspi: spi@88df000 { 20 - compatible = "qcom,sdm845-qspi", "qcom,qspi-v1"; 21 - reg = <0x88df000 0x600>; 22 - #address-cells = <1>; 23 - #size-cells = <0>; 24 - interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>; 25 - clock-names = "iface", "core"; 26 - clocks = <&gcc GCC_QSPI_CNOC_PERIPH_AHB_CLK>, 27 - <&gcc GCC_QSPI_CORE_CLK>; 28 - 29 - flash@0 { 30 - compatible = "jedec,spi-nor"; 31 - reg = <0>; 32 - spi-max-frequency = <25000000>; 33 - spi-tx-bus-width = <2>; 34 - spi-rx-bus-width = <2>; 35 - }; 36 - };
+88
Documentation/devicetree/bindings/spi/qcom,spi-qcom-qspi.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2 + 3 + %YAML 1.2 4 + --- 5 + $id: "http://devicetree.org/schemas/spi/qcom,spi-qcom-qspi.yaml#" 6 + $schema: "http://devicetree.org/meta-schemas/core.yaml#" 7 + 8 + title: Qualcomm Quad Serial Peripheral Interface (QSPI) 9 + 10 + maintainers: 11 + - Mukesh Savaliya <msavaliy@codeaurora.org> 12 + - Akash Asthana <akashast@codeaurora.org> 13 + 14 + description: 15 + The QSPI controller allows SPI protocol communication in single, dual, or quad 16 + wire transmission modes for read/write access to slaves such as NOR flash. 17 + 18 + allOf: 19 + - $ref: /spi/spi-controller.yaml# 20 + 21 + properties: 22 + compatible: 23 + items: 24 + - const: qcom,sdm845-qspi 25 + - const: qcom,qspi-v1 26 + 27 + reg: 28 + maxItems: 1 29 + 30 + interrupts: 31 + maxItems: 1 32 + 33 + clock-names: 34 + items: 35 + - const: iface 36 + - const: core 37 + 38 + clocks: 39 + items: 40 + - description: AHB clock 41 + - description: QSPI core clock 42 + 43 + interconnects: 44 + minItems: 1 45 + maxItems: 2 46 + 47 + interconnect-names: 48 + items: 49 + - const: qspi-config 50 + - const: qspi-memory 51 + 52 + required: 53 + - compatible 54 + - reg 55 + - interrupts 56 + - clock-names 57 + - clocks 58 + 59 + examples: 60 + - | 61 + #include <dt-bindings/clock/qcom,gcc-sdm845.h> 62 + #include <dt-bindings/interrupt-controller/arm-gic.h> 63 + 64 + soc: soc@0 { 65 + #address-cells = <2>; 66 + #size-cells = <2>; 67 + 68 + qspi: spi@88df000 { 69 + compatible = "qcom,sdm845-qspi", "qcom,qspi-v1"; 70 + reg = <0 0x88df000 0 0x600>; 71 + #address-cells = <1>; 72 + #size-cells = <0>; 73 + interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>; 74 + clock-names = "iface", "core"; 75 + clocks = <&gcc GCC_QSPI_CNOC_PERIPH_AHB_CLK>, 76 + <&gcc GCC_QSPI_CORE_CLK>; 77 + 78 + flash@0 { 79 + compatible = "jedec,spi-nor"; 80 + reg = <0>; 81 + spi-max-frequency = <25000000>; 82 + spi-tx-bus-width = <2>; 83 + spi-rx-bus-width = <2>; 84 + }; 85 + 86 + }; 87 + }; 88 + ...
+8 -6
Documentation/devicetree/bindings/sram/qcom,ocmem.yaml
··· 43 43 '#size-cells': 44 44 const: 1 45 45 46 + ranges: 47 + maxItems: 1 48 + 46 49 required: 47 50 - compatible 48 51 - reg ··· 54 51 - clock-names 55 52 - '#address-cells' 56 53 - '#size-cells' 54 + - ranges 55 + 56 + additionalProperties: false 57 57 58 58 patternProperties: 59 - "^.+-sram$": 59 + "-sram@[0-9a-f]+$": 60 60 type: object 61 61 description: A region of reserved memory. 62 62 ··· 67 61 reg: 68 62 maxItems: 1 69 63 70 - ranges: 71 - maxItems: 1 72 - 73 64 required: 74 65 - reg 75 - - ranges 76 66 77 67 examples: 78 68 - | ··· 90 88 91 89 #address-cells = <1>; 92 90 #size-cells = <1>; 91 + ranges = <0 0xfec00000 0x100000>; 93 92 94 93 gmu-sram@0 { 95 94 reg = <0x0 0x100000>; 96 - ranges = <0 0 0xfec00000 0x100000>; 97 95 }; 98 96 };
+4
Documentation/devicetree/bindings/thermal/amlogic,thermal.yaml
··· 32 32 description: phandle to the ao-secure syscon 33 33 $ref: '/schemas/types.yaml#/definitions/phandle' 34 34 35 + '#thermal-sensor-cells': 36 + const: 0 35 37 36 38 required: 37 39 - compatible ··· 41 39 - interrupts 42 40 - clocks 43 41 - amlogic,ao-secure 42 + 43 + additionalProperties: false 44 44 45 45 examples: 46 46 - |
+1 -1
Documentation/devicetree/bindings/thermal/armada-thermal.txt
··· 12 12 13 13 Note: these bindings are deprecated for AP806/CP110 and should instead 14 14 follow the rules described in: 15 - Documentation/devicetree/bindings/arm/marvell/ap806-system-controller.txt 15 + Documentation/devicetree/bindings/arm/marvell/ap80x-system-controller.txt 16 16 Documentation/devicetree/bindings/arm/marvell/cp110-system-controller.txt 17 17 18 18 - reg: Device's register space.
+22 -15
Documentation/devicetree/bindings/thermal/qcom-tsens.yaml
··· 47 47 - description: TM registers 48 48 - description: SROT registers 49 49 50 + interrupts: 51 + minItems: 1 52 + items: 53 + - description: Combined interrupt if upper or lower threshold crossed 54 + - description: Interrupt if critical threshold crossed 55 + 56 + interrupt-names: 57 + minItems: 1 58 + items: 59 + - const: uplow 60 + - const: critical 61 + 50 62 nvmem-cells: 51 63 minItems: 1 52 64 maxItems: 2 53 65 description: 54 66 Reference to an nvmem node for the calibration data 55 67 56 - nvmem-cells-names: 68 + nvmem-cell-names: 57 69 minItems: 1 58 70 maxItems: 2 59 71 items: 60 - - enum: 61 - - caldata 62 - - calsel 72 + - const: calib 73 + - const: calib_sel 63 74 64 75 "#qcom,sensors": 65 76 allOf: ··· 101 90 then: 102 91 properties: 103 92 interrupts: 104 - items: 105 - - description: Combined interrupt if upper or lower threshold crossed 93 + maxItems: 1 106 94 interrupt-names: 107 - items: 108 - - const: uplow 95 + maxItems: 1 109 96 110 97 else: 111 98 properties: 112 99 interrupts: 113 - items: 114 - - description: Combined interrupt if upper or lower threshold crossed 115 - - description: Interrupt if critical threshold crossed 100 + minItems: 2 116 101 interrupt-names: 117 - items: 118 - - const: uplow 119 - - const: critical 102 + minItems: 2 120 103 121 104 required: 122 105 - compatible ··· 119 114 - interrupts 120 115 - interrupt-names 121 116 - "#thermal-sensor-cells" 117 + 118 + additionalProperties: false 122 119 123 120 examples: 124 121 - | ··· 132 125 <0x4a8000 0x1000>; /* SROT */ 133 126 134 127 nvmem-cells = <&tsens_caldata>, <&tsens_calsel>; 135 - nvmem-cell-names = "caldata", "calsel"; 128 + nvmem-cell-names = "calib", "calib_sel"; 136 129 137 130 interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>; 138 131 interrupt-names = "uplow";
-78
Documentation/devicetree/bindings/thermal/rcar-thermal.txt
··· 1 - * Renesas R-Car Thermal 2 - 3 - Required properties: 4 - - compatible : "renesas,thermal-<soctype>", 5 - "renesas,rcar-gen2-thermal" (with thermal-zone) or 6 - "renesas,rcar-thermal" (without thermal-zone) as 7 - fallback except R-Car V3M/E3/D3 and RZ/G2E. 8 - Examples with soctypes are: 9 - - "renesas,thermal-r8a73a4" (R-Mobile APE6) 10 - - "renesas,thermal-r8a7743" (RZ/G1M) 11 - - "renesas,thermal-r8a7744" (RZ/G1N) 12 - - "renesas,thermal-r8a774c0" (RZ/G2E) 13 - - "renesas,thermal-r8a7779" (R-Car H1) 14 - - "renesas,thermal-r8a7790" (R-Car H2) 15 - - "renesas,thermal-r8a7791" (R-Car M2-W) 16 - - "renesas,thermal-r8a7792" (R-Car V2H) 17 - - "renesas,thermal-r8a7793" (R-Car M2-N) 18 - - "renesas,thermal-r8a77970" (R-Car V3M) 19 - - "renesas,thermal-r8a77990" (R-Car E3) 20 - - "renesas,thermal-r8a77995" (R-Car D3) 21 - - reg : Address range of the thermal registers. 22 - The 1st reg will be recognized as common register 23 - if it has "interrupts". 24 - 25 - Option properties: 26 - 27 - - interrupts : If present should contain 3 interrupts for 28 - R-Car V3M/E3/D3 and RZ/G2E or 1 interrupt otherwise. 29 - 30 - Example (non interrupt support): 31 - 32 - thermal@ffc48000 { 33 - compatible = "renesas,thermal-r8a7779", "renesas,rcar-thermal"; 34 - reg = <0xffc48000 0x38>; 35 - }; 36 - 37 - Example (interrupt support): 38 - 39 - thermal@e61f0000 { 40 - compatible = "renesas,thermal-r8a73a4", "renesas,rcar-thermal"; 41 - reg = <0xe61f0000 0x14 42 - 0xe61f0100 0x38 43 - 0xe61f0200 0x38 44 - 0xe61f0300 0x38>; 45 - interrupts = <0 69 IRQ_TYPE_LEVEL_HIGH>; 46 - }; 47 - 48 - Example (with thermal-zone): 49 - 50 - thermal-zones { 51 - cpu_thermal: cpu-thermal { 52 - polling-delay-passive = <1000>; 53 - polling-delay = <5000>; 54 - 55 - thermal-sensors = <&thermal>; 56 - 57 - trips { 58 - cpu-crit { 59 - temperature = <115000>; 60 - hysteresis = <0>; 61 - type = "critical"; 62 - }; 63 - }; 64 - cooling-maps { 65 - }; 66 - }; 67 - }; 68 - 69 - thermal: thermal@e61f0000 { 70 - compatible = "renesas,thermal-r8a7790", 71 - "renesas,rcar-gen2-thermal", 72 - "renesas,rcar-thermal"; 73 - reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>; 74 - interrupts = <0 69 IRQ_TYPE_LEVEL_HIGH>; 75 - clocks = <&mstp5_clks R8A7790_CLK_THERMAL>; 76 - power-domains = <&cpg_clocks>; 77 - #thermal-sensor-cells = <0>; 78 - };
+139
Documentation/devicetree/bindings/thermal/rcar-thermal.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0-only 2 + # Copyright (C) 2020 Renesas Electronics Corp. 3 + %YAML 1.2 4 + --- 5 + $id: http://devicetree.org/schemas/thermal/rcar-thermal.yaml# 6 + $schema: http://devicetree.org/meta-schemas/core.yaml# 7 + 8 + title: Renesas R-Car Thermal 9 + 10 + maintainers: 11 + - Niklas Söderlund <niklas.soderlund@ragnatech.se> 12 + 13 + properties: 14 + compatible: 15 + oneOf: 16 + - items: 17 + - enum: 18 + - renesas,thermal-r8a73a4 # R-Mobile APE6 19 + - renesas,thermal-r8a7779 # R-Car H1 20 + - const: renesas,rcar-thermal # Generic without thermal-zone 21 + - items: 22 + - enum: 23 + - renesas,thermal-r8a7743 # RZ/G1M 24 + - renesas,thermal-r8a7744 # RZ/G1N 25 + - const: renesas,rcar-gen2-thermal # Generic thermal-zone 26 + - items: 27 + - enum: 28 + - renesas,thermal-r8a7790 # R-Car H2 29 + - renesas,thermal-r8a7791 # R-Car M2-W 30 + - renesas,thermal-r8a7792 # R-Car V2H 31 + - renesas,thermal-r8a7793 # R-Car M2-N 32 + - const: renesas,rcar-gen2-thermal # Generic thermal-zone 33 + - const: renesas,rcar-thermal # Generic without thermal-zone 34 + - items: 35 + - enum: 36 + - renesas,thermal-r8a774c0 # RZ/G2E 37 + - renesas,thermal-r8a77970 # R-Car V3M 38 + - renesas,thermal-r8a77990 # R-Car E3 39 + - renesas,thermal-r8a77995 # R-Car D3 40 + reg: 41 + description: 42 + Address ranges of the thermal registers. If more then one range is given 43 + the first one must be the common registers followed by each sensor 44 + according the the datasheet. 45 + minItems: 1 46 + maxItems: 4 47 + 48 + interrupts: 49 + minItems: 1 50 + maxItems: 3 51 + 52 + clocks: 53 + maxItems: 1 54 + 55 + power-domains: 56 + maxItems: 1 57 + 58 + resets: 59 + maxItems: 1 60 + 61 + if: 62 + properties: 63 + compatible: 64 + contains: 65 + enum: 66 + - renesas,thermal-r8a73a4 # R-Mobile APE6 67 + - renesas,thermal-r8a7779 # R-Car H1 68 + then: 69 + required: 70 + - compatible 71 + - reg 72 + else: 73 + required: 74 + - compatible 75 + - reg 76 + - interrupts 77 + - clocks 78 + - power-domains 79 + - resets 80 + 81 + examples: 82 + # Example (non interrupt support) 83 + - | 84 + thermal@ffc48000 { 85 + compatible = "renesas,thermal-r8a7779", "renesas,rcar-thermal"; 86 + reg = <0xffc48000 0x38>; 87 + }; 88 + 89 + # Example (interrupt support) 90 + - | 91 + #include <dt-bindings/clock/r8a73a4-clock.h> 92 + #include <dt-bindings/interrupt-controller/arm-gic.h> 93 + #include <dt-bindings/interrupt-controller/irq.h> 94 + 95 + thermal@e61f0000 { 96 + compatible = "renesas,thermal-r8a73a4", "renesas,rcar-thermal"; 97 + reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>, 98 + <0 0xe61f0200 0 0x38>, <0 0xe61f0300 0 0x38>; 99 + interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>; 100 + clocks = <&mstp5_clks R8A73A4_CLK_THERMAL>; 101 + power-domains = <&pd_c5>; 102 + }; 103 + 104 + # Example (with thermal-zone) 105 + - | 106 + #include <dt-bindings/clock/r8a7790-cpg-mssr.h> 107 + #include <dt-bindings/interrupt-controller/arm-gic.h> 108 + #include <dt-bindings/power/r8a7790-sysc.h> 109 + 110 + thermal: thermal@e61f0000 { 111 + compatible = "renesas,thermal-r8a7790", 112 + "renesas,rcar-gen2-thermal", 113 + "renesas,rcar-thermal"; 114 + reg = <0 0xe61f0000 0 0x10>, <0 0xe61f0100 0 0x38>; 115 + interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>; 116 + clocks = <&cpg CPG_MOD 522>; 117 + power-domains = <&sysc R8A7790_PD_ALWAYS_ON>; 118 + resets = <&cpg 522>; 119 + #thermal-sensor-cells = <0>; 120 + }; 121 + 122 + thermal-zones { 123 + cpu_thermal: cpu-thermal { 124 + polling-delay-passive = <1000>; 125 + polling-delay = <5000>; 126 + 127 + thermal-sensors = <&thermal>; 128 + 129 + trips { 130 + cpu-crit { 131 + temperature = <115000>; 132 + hysteresis = <0>; 133 + type = "critical"; 134 + }; 135 + }; 136 + cooling-maps { 137 + }; 138 + }; 139 + };
+2
Documentation/devicetree/bindings/timer/arm,arch_timer.yaml
··· 82 82 required: 83 83 - compatible 84 84 85 + additionalProperties: false 86 + 85 87 oneOf: 86 88 - required: 87 89 - interrupts
+4
Documentation/devicetree/bindings/timer/arm,arch_timer_mmio.yaml
··· 32 32 '#size-cells': 33 33 const: 1 34 34 35 + ranges: true 36 + 35 37 clock-frequency: 36 38 description: The frequency of the main counter, in Hz. Should be present 37 39 only where necessary to work around broken firmware which does not configure ··· 94 92 - reg 95 93 - '#address-cells' 96 94 - '#size-cells' 95 + 96 + additionalProperties: false 97 97 98 98 examples: 99 99 - |
+2
Documentation/devicetree/bindings/timer/arm,global_timer.yaml
··· 35 35 - reg 36 36 - clocks 37 37 38 + additionalProperties: false 39 + 38 40 examples: 39 41 - | 40 42 timer@2c000600 {
+2
Documentation/devicetree/bindings/timer/intel,ixp4xx-timer.yaml
··· 32 32 - reg 33 33 - interrupts 34 34 35 + additionalProperties: false 36 + 35 37 examples: 36 38 - | 37 39 #include <dt-bindings/interrupt-controller/irq.h>
+2
Documentation/devicetree/bindings/timer/samsung,exynos4210-mct.yaml
··· 52 52 - interrupts 53 53 - reg 54 54 55 + additionalProperties: false 56 + 55 57 examples: 56 58 - | 57 59 // In this example, the IP contains two local timers, using separate
+2 -4
Documentation/devicetree/bindings/trivial-devices.yaml
··· 34 34 - adi,adt7461 35 35 # +/-1C TDM Extended Temp Range I.C 36 36 - adt7461 37 - # Three-Axis Digital Accelerometer 38 - - adi,adxl345 39 - # Three-Axis Digital Accelerometer (backward-compatibility value "adi,adxl345" must be listed too) 40 - - adi,adxl346 41 37 # AMS iAQ-Core VOC Sensor 42 38 - ams,iaq-core 43 39 # i2c serial eeprom (24cxx) ··· 362 366 required: 363 367 - compatible 364 368 - reg 369 + 370 + additionalProperties: false 365 371 366 372 ...
+11 -8
Documentation/devicetree/bindings/usb/dwc2.yaml
··· 32 32 - const: lantiq,arx100-usb 33 33 - const: lantiq,xrx200-usb 34 34 - items: 35 - - const: amlogic,meson8-usb 36 - - const: snps,dwc2 37 - - items: 38 - - const: amlogic,meson8b-usb 39 - - const: snps,dwc2 40 - - const: amlogic,meson-gxbb-usb 41 - - items: 42 - - const: amlogic,meson-g12a-usb 35 + - enum: 36 + - amlogic,meson8-usb 37 + - amlogic,meson8b-usb 38 + - amlogic,meson-gxbb-usb 39 + - amlogic,meson-g12a-usb 43 40 - const: snps,dwc2 44 41 - const: amcc,dwc-otg 45 42 - const: snps,dwc2 46 43 - const: st,stm32f4x9-fsotg 47 44 - const: st,stm32f4x9-hsotg 48 45 - const: st,stm32f7-hsotg 46 + - const: st,stm32mp15-fsotg 47 + - const: st,stm32mp15-hsotg 49 48 - const: samsung,s3c6400-hsotg 50 49 51 50 reg: ··· 89 90 90 91 vusb_a-supply: 91 92 description: phandle to voltage regulator of analog section. 93 + 94 + vusb33d-supply: 95 + description: reference to the VBUS and ID sensing comparators supply, in 96 + order to perform OTG operation, used on STM32MP15 SoCs. 92 97 93 98 dr_mode: 94 99 enum: [host, peripheral, otg]
+8 -1
Documentation/devicetree/bindings/usb/exynos-usb.txt
··· 78 78 - ranges: allows valid 1:1 translation between child's address space and 79 79 parent's address space 80 80 - clocks: Clock IDs array as required by the controller. 81 - - clock-names: names of clocks correseponding to IDs in the clock property 81 + - clock-names: Names of clocks corresponding to IDs in the clock property. 82 + Following clock names shall be provided for different 83 + compatibles: 84 + - samsung,exynos5250-dwusb3: "usbdrd30", 85 + - samsung,exynos5433-dwusb3: "aclk", "susp_clk", "pipe_pclk", 86 + "phyclk", 87 + - samsung,exynos7-dwusb3: "usbdrd30", "usbdrd30_susp_clk", 88 + "usbdrd30_axius_clk" 82 89 - vdd10-supply: 1.0V powr supply 83 90 - vdd33-supply: 3.0V/3.3V power supply 84 91
+1 -1
Documentation/devicetree/bindings/usb/fcs,fusb302.txt
··· 9 9 - connector : The "usb-c-connector" attached to the FUSB302 IC. The bindings 10 10 of the connector node are specified in: 11 11 12 - Documentation/devicetree/bindings/connector/usb-connector.txt 12 + Documentation/devicetree/bindings/connector/usb-connector.yaml 13 13 14 14 15 15 Example:
+1 -1
Documentation/devicetree/bindings/usb/generic.txt
··· 34 34 - usb-role-switch: boolean, indicates that the device is capable of assigning 35 35 the USB data role (USB host or USB device) for a given 36 36 USB connector, such as Type-C, Type-B(micro). 37 - see connector/usb-connector.txt. 37 + see connector/usb-connector.yaml. 38 38 - role-switch-default-mode: indicating if usb-role-switch is enabled, the 39 39 device default operation mode of controller while usb 40 40 role is USB_ROLE_NONE. Valid arguments are "host" and
+1 -1
Documentation/devicetree/bindings/usb/mediatek,mtu3.txt
··· 34 34 dual-role mode. 35 35 it's considered valid for compatibility reasons, not allowed for 36 36 new bindings, and put into a usb-connector node. 37 - see connector/usb-connector.txt. 37 + see connector/usb-connector.yaml. 38 38 - pinctrl-names : a pinctrl state named "default" is optional, and need be 39 39 defined if auto drd switch is enabled, that means the property dr_mode 40 40 is set as "otg", and meanwhile the property "mediatek,enable-manual-drd"
+1 -1
Documentation/devicetree/bindings/usb/mediatek,musb.txt
··· 23 23 MTCMOS 24 24 25 25 Required child nodes: 26 - usb connector node as defined in bindings/connector/usb-connector.txt 26 + usb connector node as defined in bindings/connector/usb-connector.yaml 27 27 Optional properties: 28 28 - id-gpios : input GPIO for USB ID pin. 29 29 - vbus-gpios : input GPIO for USB VBUS pin.
+1 -1
Documentation/devicetree/bindings/usb/richtek,rt1711h.txt
··· 9 9 Required sub-node: 10 10 - connector: The "usb-c-connector" attached to the tcpci chip, the bindings 11 11 of connector node are specified in 12 - Documentation/devicetree/bindings/connector/usb-connector.txt 12 + Documentation/devicetree/bindings/connector/usb-connector.yaml 13 13 14 14 Example : 15 15 rt1711h@4e {
+1 -1
Documentation/devicetree/bindings/usb/ti,hd3ss3220.txt
··· 9 9 - connector: The "usb-c-connector" attached to the hd3ss3220 chip. The 10 10 bindings of the connector node are specified in: 11 11 12 - Documentation/devicetree/bindings/connector/usb-connector.txt 12 + Documentation/devicetree/bindings/connector/usb-connector.yaml 13 13 14 14 Example: 15 15 hd3ss3220@47 {
+1 -1
Documentation/devicetree/bindings/usb/typec-tcpci.txt
··· 13 13 Required sub-node: 14 14 - connector: The "usb-c-connector" attached to the tcpci chip, the bindings 15 15 of connector node are specified in 16 - Documentation/devicetree/bindings/connector/usb-connector.txt 16 + Documentation/devicetree/bindings/connector/usb-connector.yaml 17 17 18 18 Example: 19 19
+2 -2
Documentation/devicetree/bindings/usb/usb-conn-gpio.txt
··· 8 8 - compatible : should include "gpio-usb-b-connector" and "usb-b-connector". 9 9 - id-gpios, vbus-gpios : input gpios, either one of them must be present, 10 10 and both can be present as well. 11 - see connector/usb-connector.txt 11 + see connector/usb-connector.yaml 12 12 13 13 Optional properties: 14 14 - vbus-supply : can be present if needed when supports dual role mode. 15 - see connector/usb-connector.txt 15 + see connector/usb-connector.yaml 16 16 17 17 - Sub-nodes: 18 18 - port : can be present.
+27
Documentation/devicetree/bindings/vendor-prefixes.yaml
··· 141 141 description: Shenzhen AZW Technology Co., Ltd. 142 142 "^bananapi,.*": 143 143 description: BIPAI KEJI LIMITED 144 + "^beacon,.*": 145 + description: Compass Electronics Group, LLC 144 146 "^bhf,.*": 145 147 description: Beckhoff Automation GmbH & Co. KG 146 148 "^bitmain,.*": ··· 237 235 description: DataImage, Inc. 238 236 "^davicom,.*": 239 237 description: DAVICOM Semiconductor, Inc. 238 + "^dell,.*": 239 + description: Dell Inc. 240 240 "^delta,.*": 241 241 description: Delta Electronics, Inc. 242 242 "^denx,.*": ··· 293 289 description: Elan Microelectronic Corp. 294 290 "^elgin,.*": 295 291 description: Elgin S/A. 292 + "^elida,.*": 293 + description: Shenzhen Elida Technology Co., Ltd. 296 294 "^embest,.*": 297 295 description: Shenzhen Embest Technology Co., Ltd. 298 296 "^emlid,.*": ··· 307 301 description: emtrion GmbH 308 302 "^endless,.*": 309 303 description: Endless Mobile, Inc. 304 + "^ene,.*": 305 + description: ENE Technology, Inc. 310 306 "^energymicro,.*": 311 307 description: Silicon Laboratories (formerly Energy Micro AS) 312 308 "^engicam,.*": ··· 487 479 description: Intersil 488 480 "^issi,.*": 489 481 description: Integrated Silicon Solutions Inc. 482 + "^ite,.*": 483 + description: ITE Tech, Inc. 490 484 "^itead,.*": 491 485 description: ITEAD Intelligent Systems Co.Ltd 492 486 "^iwave,.*": ··· 565 555 description: LinkSprite Technologies, Inc. 566 556 "^linksys,.*": 567 557 description: Belkin International, Inc. (Linksys) 558 + "^linutronix,.*": 559 + description: Linutronix GmbH 568 560 "^linux,.*": 569 561 description: Linux-specific binding 570 562 "^linx,.*": ··· 653 641 description: Monolithic Power Systems Inc. 654 642 "^mqmaker,.*": 655 643 description: mqmaker Inc. 644 + "^mrvl,.*": 645 + description: Marvell Technology Group Ltd. 646 + deprecated: true 656 647 "^mscc,.*": 657 648 description: Microsemi Corporation 658 649 "^msi,.*": ··· 756 741 description: OmniVision Technologies 757 742 "^oxsemi,.*": 758 743 description: Oxford Semiconductor, Ltd. 744 + "^ozzmaker,.*": 745 + description: OzzMaker 759 746 "^panasonic,.*": 760 747 description: Panasonic Corporation 761 748 "^parade,.*": ··· 792 775 description: Broadcom Corporation (formerly PLX Technology) 793 776 "^pni,.*": 794 777 description: PNI Sensor Corporation 778 + "^pocketbook,.*": 779 + description: PocketBook International SA 795 780 "^polaroid,.*": 796 781 description: Polaroid Corporation 797 782 "^portwell,.*": ··· 892 873 description: Small Form Factor Committee 893 874 "^sgd,.*": 894 875 description: Solomon Goldentek Display Corporation 876 + "^sgmicro,.*": 877 + description: SG Micro Corp 895 878 "^sgx,.*": 896 879 description: SGX Sensortech 897 880 "^sharp,.*": ··· 1017 996 "^toppoly,.*": 1018 997 description: TPO (deprecated, use tpo) 1019 998 deprecated: true 999 + "^topwise,.*": 1000 + description: Topwise Communication Co., Ltd. 1020 1001 "^toradex,.*": 1021 1002 description: Toradex AG 1022 1003 "^toshiba,.*": ··· 1089 1066 description: Vision Optical Technology Co., Ltd. 1090 1067 "^vxt,.*": 1091 1068 description: VXT Ltd 1069 + "^waveshare,.*": 1070 + description: Waveshare Electronics 1092 1071 "^wd,.*": 1093 1072 description: Western Digital Corp. 1094 1073 "^wetek,.*": ··· 1117 1092 description: X-Powers 1118 1093 "^xes,.*": 1119 1094 description: Extreme Engineering Solutions (X-ES) 1095 + "^xiaomi,.*": 1096 + description: Xiaomi Technology Co., Ltd. 1120 1097 "^xillybus,.*": 1121 1098 description: Xillybus Ltd. 1122 1099 "^xinpeng,.*":
-11
Documentation/devicetree/bindings/watchdog/st,stpmic1-wdt.txt
··· 1 - STMicroelectronics STPMIC1 Watchdog 2 - 3 - Required properties: 4 - 5 - - compatible : should be "st,stpmic1-wdt" 6 - 7 - Example: 8 - 9 - watchdog { 10 - compatible = "st,stpmic1-wdt"; 11 - };
+8 -10
MAINTAINERS
··· 2291 2291 L: linux-rockchip@lists.infradead.org 2292 2292 T: git git://git.kernel.org/pub/scm/linux/kernel/git/mmind/linux-rockchip.git 2293 2293 S: Maintained 2294 - F: Documentation/devicetree/bindings/i2c/i2c-rk3x.txt 2294 + F: Documentation/devicetree/bindings/i2c/i2c-rk3x.yaml 2295 2295 F: Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.yaml 2296 2296 F: Documentation/devicetree/bindings/spi/spi-rockchip.yaml 2297 2297 F: arch/arm/boot/dts/rk3* ··· 2564 2564 L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 2565 2565 T: git git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-uniphier.git 2566 2566 S: Maintained 2567 - F: Documentation/devicetree/bindings/arm/socionext/uniphier.txt 2568 - F: Documentation/devicetree/bindings/gpio/gpio-uniphier.txt 2569 - F: Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.txt 2567 + F: Documentation/devicetree/bindings/arm/socionext/uniphier.yaml 2568 + F: Documentation/devicetree/bindings/gpio/socionext,uniphier-gpio.yaml 2569 + F: Documentation/devicetree/bindings/pinctrl/socionext,uniphier-pinctrl.yaml 2570 2570 F: arch/arm/boot/dts/uniphier* 2571 2571 F: arch/arm/include/asm/hardware/cache-uniphier.h 2572 2572 F: arch/arm/mach-uniphier/ ··· 5780 5780 S: Maintained 5781 5781 F: drivers/gpu/drm/etnaviv/ 5782 5782 F: include/uapi/drm/etnaviv_drm.h 5783 - F: Documentation/devicetree/bindings/display/etnaviv/ 5783 + F: Documentation/devicetree/bindings/gpu/vivante,gc.yaml 5784 5784 5785 5785 DRM DRIVERS FOR ZTE ZX 5786 5786 M: Shawn Guo <shawnguo@kernel.org> ··· 10325 10325 M: Sriram Dash <sriram.dash@samsung.com> 10326 10326 L: linux-can@vger.kernel.org 10327 10327 S: Maintained 10328 - F: Documentation/devicetree/bindings/net/can/m_can.txt 10328 + F: Documentation/devicetree/bindings/net/can/bosch,m_can.yaml 10329 10329 F: drivers/net/can/m_can/m_can.c 10330 10330 F: drivers/net/can/m_can/m_can.h 10331 10331 F: drivers/net/can/m_can/m_can_platform.c ··· 10536 10536 T: git git://linuxtv.org/media_tree.git 10537 10537 S: Supported 10538 10538 F: Documentation/devicetree/bindings/media/renesas,csi2.yaml 10539 - F: Documentation/devicetree/bindings/media/renesas,vin.txt 10539 + F: Documentation/devicetree/bindings/media/renesas,vin.yaml 10540 10540 F: drivers/media/platform/rcar-vin/ 10541 10541 10542 10542 MEDIA DRIVERS FOR RENESAS - VSP1 ··· 12524 12524 12525 12525 OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS 12526 12526 M: Rob Herring <robh+dt@kernel.org> 12527 - M: Mark Rutland <mark.rutland@arm.com> 12528 12527 L: devicetree@vger.kernel.org 12529 12528 T: git git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git 12530 12529 Q: http://patchwork.ozlabs.org/project/devicetree-bindings/list/ ··· 15135 15136 M: Rob Herring <robh@kernel.org> 15136 15137 L: linux-serial@vger.kernel.org 15137 15138 S: Maintained 15138 - F: Documentation/devicetree/bindings/serial/slave-device.txt 15139 + F: Documentation/devicetree/bindings/serial/serial.yaml 15139 15140 F: drivers/tty/serdev/ 15140 15141 F: include/linux/serdev.h 15141 15142 ··· 16073 16074 F: include/linux/*/stm32-*tim* 16074 16075 F: Documentation/ABI/testing/*timer-stm32 16075 16076 F: Documentation/devicetree/bindings/*/*stm32-*timer* 16076 - F: Documentation/devicetree/bindings/pwm/pwm-stm32* 16077 16077 16078 16078 STMMAC ETHERNET DRIVER 16079 16079 M: Giuseppe Cavallaro <peppe.cavallaro@st.com>
+2
arch/arm/boot/dts/sun5i.dtsi
··· 186 186 compatible = "allwinner,sun5i-a13-mbus"; 187 187 reg = <0x01c01000 0x1000>; 188 188 clocks = <&ccu CLK_MBUS>; 189 + #address-cells = <1>; 190 + #size-cells = <1>; 189 191 dma-ranges = <0x00000000 0x40000000 0x20000000>; 190 192 #interconnect-cells = <1>; 191 193 };
+2
arch/arm/boot/dts/sun8i-r40.dtsi
··· 738 738 compatible = "allwinner,sun8i-r40-mbus"; 739 739 reg = <0x01c62000 0x1000>; 740 740 clocks = <&ccu 155>; 741 + #address-cells = <1>; 742 + #size-cells = <1>; 741 743 dma-ranges = <0x00000000 0x40000000 0x80000000>; 742 744 #interconnect-cells = <1>; 743 745 };
+2
arch/arm/boot/dts/sunxi-h3-h5.dtsi
··· 560 560 compatible = "allwinner,sun8i-h3-mbus"; 561 561 reg = <0x01c62000 0x1000>; 562 562 clocks = <&ccu CLK_MBUS>; 563 + #address-cells = <1>; 564 + #size-cells = <1>; 563 565 dma-ranges = <0x00000000 0x40000000 0xc0000000>; 564 566 #interconnect-cells = <1>; 565 567 };
+1 -6
arch/microblaze/pci/pci-common.c
··· 433 433 pr_debug("Parsing ranges property...\n"); 434 434 for_each_of_pci_range(&parser, &range) { 435 435 /* Read next ranges element */ 436 - pr_debug("pci_space: 0x%08x pci_addr:0x%016llx ", 437 - range.pci_space, range.pci_addr); 438 - pr_debug("cpu_addr:0x%016llx size:0x%016llx\n", 439 - range.cpu_addr, range.size); 440 436 441 437 /* If we failed translation or got a zero-sized region 442 438 * (some FW try to feed us with non sensical zero sized regions ··· 482 486 pr_info(" MEM 0x%016llx..0x%016llx -> 0x%016llx %s\n", 483 487 range.cpu_addr, range.cpu_addr + range.size - 1, 484 488 range.pci_addr, 485 - (range.pci_space & 0x40000000) ? 489 + (range.flags & IORESOURCE_PREFETCH) ? 486 490 "Prefetch" : ""); 487 491 488 492 /* We support only 3 memory ranges */ ··· 1117 1121 { 1118 1122 return pci_bus_find_capability(fake_pci_bus(hose, bus), devfn, cap); 1119 1123 } 1120 -
+1 -1
arch/powerpc/kernel/pci-common.c
··· 728 728 " MEM 0x%016llx..0x%016llx -> 0x%016llx %s\n", 729 729 range.cpu_addr, range.cpu_addr + range.size - 1, 730 730 range.pci_addr, 731 - (range.pci_space & 0x40000000) ? 731 + (range.flags & IORESOURCE_PREFETCH) ? 732 732 "Prefetch" : ""); 733 733 734 734 /* We support only 3 memory ranges */
+148 -129
drivers/of/address.c
··· 100 100 return IORESOURCE_MEM; 101 101 } 102 102 103 + static unsigned int of_bus_pci_get_flags(const __be32 *addr) 104 + { 105 + unsigned int flags = 0; 106 + u32 w = be32_to_cpup(addr); 107 + 108 + if (!IS_ENABLED(CONFIG_PCI)) 109 + return 0; 110 + 111 + switch((w >> 24) & 0x03) { 112 + case 0x01: 113 + flags |= IORESOURCE_IO; 114 + break; 115 + case 0x02: /* 32 bits */ 116 + case 0x03: /* 64 bits */ 117 + flags |= IORESOURCE_MEM; 118 + break; 119 + } 120 + if (w & 0x40000000) 121 + flags |= IORESOURCE_PREFETCH; 122 + return flags; 123 + } 124 + 103 125 #ifdef CONFIG_PCI 104 126 /* 105 127 * PCI bus specific translator ··· 145 123 *addrc = 3; 146 124 if (sizec) 147 125 *sizec = 2; 148 - } 149 - 150 - static unsigned int of_bus_pci_get_flags(const __be32 *addr) 151 - { 152 - unsigned int flags = 0; 153 - u32 w = be32_to_cpup(addr); 154 - 155 - switch((w >> 24) & 0x03) { 156 - case 0x01: 157 - flags |= IORESOURCE_IO; 158 - break; 159 - case 0x02: /* 32 bits */ 160 - case 0x03: /* 64 bits */ 161 - flags |= IORESOURCE_MEM; 162 - break; 163 - } 164 - if (w & 0x40000000) 165 - flags |= IORESOURCE_PREFETCH; 166 - return flags; 167 126 } 168 127 169 128 static u64 of_bus_pci_map(__be32 *addr, const __be32 *range, int na, int ns, ··· 236 233 return __of_address_to_resource(dev, addrp, size, flags, NULL, r); 237 234 } 238 235 EXPORT_SYMBOL_GPL(of_pci_address_to_resource); 239 - 240 - static int parser_init(struct of_pci_range_parser *parser, 241 - struct device_node *node, const char *name) 242 - { 243 - const int na = 3, ns = 2; 244 - int rlen; 245 - 246 - parser->node = node; 247 - parser->pna = of_n_addr_cells(node); 248 - parser->np = parser->pna + na + ns; 249 - parser->dma = !strcmp(name, "dma-ranges"); 250 - 251 - parser->range = of_get_property(node, name, &rlen); 252 - if (parser->range == NULL) 253 - return -ENOENT; 254 - 255 - parser->end = parser->range + rlen / sizeof(__be32); 256 - 257 - return 0; 258 - } 259 - 260 - int of_pci_range_parser_init(struct of_pci_range_parser *parser, 261 - struct device_node *node) 262 - { 263 - return parser_init(parser, node, "ranges"); 264 - } 265 - EXPORT_SYMBOL_GPL(of_pci_range_parser_init); 266 - 267 - int of_pci_dma_range_parser_init(struct of_pci_range_parser *parser, 268 - struct device_node *node) 269 - { 270 - return parser_init(parser, node, "dma-ranges"); 271 - } 272 - EXPORT_SYMBOL_GPL(of_pci_dma_range_parser_init); 273 - 274 - struct of_pci_range *of_pci_range_parser_one(struct of_pci_range_parser *parser, 275 - struct of_pci_range *range) 276 - { 277 - const int na = 3, ns = 2; 278 - 279 - if (!range) 280 - return NULL; 281 - 282 - if (!parser->range || parser->range + parser->np > parser->end) 283 - return NULL; 284 - 285 - range->pci_space = be32_to_cpup(parser->range); 286 - range->flags = of_bus_pci_get_flags(parser->range); 287 - range->pci_addr = of_read_number(parser->range + 1, ns); 288 - if (parser->dma) 289 - range->cpu_addr = of_translate_dma_address(parser->node, 290 - parser->range + na); 291 - else 292 - range->cpu_addr = of_translate_address(parser->node, 293 - parser->range + na); 294 - range->size = of_read_number(parser->range + parser->pna + na, ns); 295 - 296 - parser->range += parser->np; 297 - 298 - /* Now consume following elements while they are contiguous */ 299 - while (parser->range + parser->np <= parser->end) { 300 - u32 flags; 301 - u64 pci_addr, cpu_addr, size; 302 - 303 - flags = of_bus_pci_get_flags(parser->range); 304 - pci_addr = of_read_number(parser->range + 1, ns); 305 - if (parser->dma) 306 - cpu_addr = of_translate_dma_address(parser->node, 307 - parser->range + na); 308 - else 309 - cpu_addr = of_translate_address(parser->node, 310 - parser->range + na); 311 - size = of_read_number(parser->range + parser->pna + na, ns); 312 - 313 - if (flags != range->flags) 314 - break; 315 - if (pci_addr != range->pci_addr + range->size || 316 - cpu_addr != range->cpu_addr + range->size) 317 - break; 318 - 319 - range->size += size; 320 - parser->range += parser->np; 321 - } 322 - 323 - return range; 324 - } 325 - EXPORT_SYMBOL_GPL(of_pci_range_parser_one); 326 236 327 237 /* 328 238 * of_pci_range_to_resource - Create a resource from an of_pci_range ··· 691 775 } 692 776 EXPORT_SYMBOL(of_get_address); 693 777 778 + static int parser_init(struct of_pci_range_parser *parser, 779 + struct device_node *node, const char *name) 780 + { 781 + int rlen; 782 + 783 + parser->node = node; 784 + parser->pna = of_n_addr_cells(node); 785 + parser->na = of_bus_n_addr_cells(node); 786 + parser->ns = of_bus_n_size_cells(node); 787 + parser->dma = !strcmp(name, "dma-ranges"); 788 + 789 + parser->range = of_get_property(node, name, &rlen); 790 + if (parser->range == NULL) 791 + return -ENOENT; 792 + 793 + parser->end = parser->range + rlen / sizeof(__be32); 794 + 795 + return 0; 796 + } 797 + 798 + int of_pci_range_parser_init(struct of_pci_range_parser *parser, 799 + struct device_node *node) 800 + { 801 + return parser_init(parser, node, "ranges"); 802 + } 803 + EXPORT_SYMBOL_GPL(of_pci_range_parser_init); 804 + 805 + int of_pci_dma_range_parser_init(struct of_pci_range_parser *parser, 806 + struct device_node *node) 807 + { 808 + return parser_init(parser, node, "dma-ranges"); 809 + } 810 + EXPORT_SYMBOL_GPL(of_pci_dma_range_parser_init); 811 + #define of_dma_range_parser_init of_pci_dma_range_parser_init 812 + 813 + struct of_pci_range *of_pci_range_parser_one(struct of_pci_range_parser *parser, 814 + struct of_pci_range *range) 815 + { 816 + int na = parser->na; 817 + int ns = parser->ns; 818 + int np = parser->pna + na + ns; 819 + 820 + if (!range) 821 + return NULL; 822 + 823 + if (!parser->range || parser->range + np > parser->end) 824 + return NULL; 825 + 826 + if (parser->na == 3) 827 + range->flags = of_bus_pci_get_flags(parser->range); 828 + else 829 + range->flags = 0; 830 + 831 + range->pci_addr = of_read_number(parser->range, na); 832 + 833 + if (parser->dma) 834 + range->cpu_addr = of_translate_dma_address(parser->node, 835 + parser->range + na); 836 + else 837 + range->cpu_addr = of_translate_address(parser->node, 838 + parser->range + na); 839 + range->size = of_read_number(parser->range + parser->pna + na, ns); 840 + 841 + parser->range += np; 842 + 843 + /* Now consume following elements while they are contiguous */ 844 + while (parser->range + np <= parser->end) { 845 + u32 flags = 0; 846 + u64 pci_addr, cpu_addr, size; 847 + 848 + if (parser->na == 3) 849 + flags = of_bus_pci_get_flags(parser->range); 850 + pci_addr = of_read_number(parser->range, na); 851 + if (parser->dma) 852 + cpu_addr = of_translate_dma_address(parser->node, 853 + parser->range + na); 854 + else 855 + cpu_addr = of_translate_address(parser->node, 856 + parser->range + na); 857 + size = of_read_number(parser->range + parser->pna + na, ns); 858 + 859 + if (flags != range->flags) 860 + break; 861 + if (pci_addr != range->pci_addr + range->size || 862 + cpu_addr != range->cpu_addr + range->size) 863 + break; 864 + 865 + range->size += size; 866 + parser->range += np; 867 + } 868 + 869 + return range; 870 + } 871 + EXPORT_SYMBOL_GPL(of_pci_range_parser_one); 872 + 694 873 static u64 of_translate_ioport(struct device_node *dev, const __be32 *in_addr, 695 874 u64 size) 696 875 { ··· 939 928 { 940 929 struct device_node *node = of_node_get(np); 941 930 const __be32 *ranges = NULL; 942 - int len, naddr, nsize, pna; 931 + int len; 943 932 int ret = 0; 944 933 bool found_dma_ranges = false; 945 - u64 dmaaddr; 934 + struct of_range_parser parser; 935 + struct of_range range; 936 + u64 dma_start = U64_MAX, dma_end = 0, dma_offset = 0; 946 937 947 938 while (node) { 948 939 ranges = of_get_property(node, "dma-ranges", &len); ··· 969 956 goto out; 970 957 } 971 958 972 - naddr = of_bus_n_addr_cells(node); 973 - nsize = of_bus_n_size_cells(node); 974 - pna = of_n_addr_cells(node); 975 - if ((len / sizeof(__be32)) % (pna + naddr + nsize)) { 959 + of_dma_range_parser_init(&parser, node); 960 + 961 + for_each_of_range(&parser, &range) { 962 + pr_debug("dma_addr(%llx) cpu_addr(%llx) size(%llx)\n", 963 + range.bus_addr, range.cpu_addr, range.size); 964 + 965 + if (dma_offset && range.cpu_addr - range.bus_addr != dma_offset) { 966 + pr_warn("Can't handle multiple dma-ranges with different offsets on node(%pOF)\n", node); 967 + /* Don't error out as we'd break some existing DTs */ 968 + continue; 969 + } 970 + dma_offset = range.cpu_addr - range.bus_addr; 971 + 972 + /* Take lower and upper limits */ 973 + if (range.bus_addr < dma_start) 974 + dma_start = range.bus_addr; 975 + if (range.bus_addr + range.size > dma_end) 976 + dma_end = range.bus_addr + range.size; 977 + } 978 + 979 + if (dma_start >= dma_end) { 976 980 ret = -EINVAL; 981 + pr_debug("Invalid DMA ranges configuration on node(%pOF)\n", 982 + node); 977 983 goto out; 978 984 } 979 985 980 - /* dma-ranges format: 981 - * DMA addr : naddr cells 982 - * CPU addr : pna cells 983 - * size : nsize cells 984 - */ 985 - dmaaddr = of_read_number(ranges, naddr); 986 - *paddr = of_translate_dma_address(node, ranges + naddr); 987 - if (*paddr == OF_BAD_ADDR) { 988 - pr_err("translation of DMA address(%llx) to CPU address failed node(%pOF)\n", 989 - dmaaddr, np); 990 - ret = -EINVAL; 991 - goto out; 992 - } 993 - *dma_addr = dmaaddr; 986 + *dma_addr = dma_start; 987 + *size = dma_end - dma_start; 988 + *paddr = dma_start + dma_offset; 994 989 995 - *size = of_read_number(ranges + naddr + pna, nsize); 996 - 997 - pr_debug("dma_addr(%llx) cpu_addr(%llx) size(%llx)\n", 990 + pr_debug("final: dma_addr(%llx) cpu_addr(%llx) size(%llx)\n", 998 991 *dma_addr, *paddr, *size); 999 992 1000 993 out:
+1 -1
drivers/of/of_private.h
··· 24 24 const char *alias; 25 25 struct device_node *np; 26 26 int id; 27 - char stem[0]; 27 + char stem[]; 28 28 }; 29 29 30 30 #if defined(CONFIG_SPARC)
+1 -1
drivers/of/of_reserved_mem.c
··· 22 22 #include <linux/slab.h> 23 23 #include <linux/memblock.h> 24 24 25 - #define MAX_RESERVED_REGIONS 32 25 + #define MAX_RESERVED_REGIONS 64 26 26 static struct reserved_mem reserved_mem[MAX_RESERVED_REGIONS]; 27 27 static int reserved_mem_count; 28 28
+4
drivers/of/property.c
··· 1204 1204 DEFINE_SIMPLE_PROP(io_channels, "io-channel", "#io-channel-cells") 1205 1205 DEFINE_SIMPLE_PROP(interrupt_parent, "interrupt-parent", NULL) 1206 1206 DEFINE_SIMPLE_PROP(dmas, "dmas", "#dma-cells") 1207 + DEFINE_SIMPLE_PROP(power_domains, "power-domains", "#power-domain-cells") 1208 + DEFINE_SIMPLE_PROP(hwlocks, "hwlocks", "#hwlock-cells") 1207 1209 DEFINE_SUFFIX_PROP(regulators, "-supply", NULL) 1208 1210 DEFINE_SUFFIX_PROP(gpio, "-gpio", "#gpio-cells") 1209 1211 DEFINE_SUFFIX_PROP(gpios, "-gpios", "#gpio-cells") ··· 1228 1226 { .parse_prop = parse_io_channels, }, 1229 1227 { .parse_prop = parse_interrupt_parent, }, 1230 1228 { .parse_prop = parse_dmas, }, 1229 + { .parse_prop = parse_power_domains, }, 1230 + { .parse_prop = parse_hwlocks, }, 1231 1231 { .parse_prop = parse_regulators, }, 1232 1232 { .parse_prop = parse_gpio, }, 1233 1233 { .parse_prop = parse_gpios, },
+4 -1
drivers/of/resolver.c
··· 321 321 322 322 err = of_property_read_string(tree_symbols, 323 323 prop->name, &refpath); 324 - if (err) 324 + if (err) { 325 + pr_err("node label '%s' not found in live devicetree symbols table\n", 326 + prop->name); 325 327 goto out; 328 + } 326 329 327 330 refnode = of_find_node_by_path(refpath); 328 331 if (!refnode) {
+7 -1
drivers/of/unittest-data/Makefile
··· 21 21 overlay_bad_add_dup_prop.dtb.o \ 22 22 overlay_bad_phandle.dtb.o \ 23 23 overlay_bad_symbol.dtb.o \ 24 - overlay_base.dtb.o 24 + overlay_base.dtb.o \ 25 + overlay_gpio_01.dtb.o \ 26 + overlay_gpio_02a.dtb.o \ 27 + overlay_gpio_02b.dtb.o \ 28 + overlay_gpio_03.dtb.o \ 29 + overlay_gpio_04a.dtb.o \ 30 + overlay_gpio_04b.dtb.o 25 31 26 32 # enable creation of __symbols__ node 27 33 DTC_FLAGS_overlay += -@
+23
drivers/of/unittest-data/overlay_gpio_01.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /dts-v1/; 3 + /plugin/; 4 + 5 + &unittest_test_bus { 6 + #address-cells = <1>; 7 + #size-cells = <0>; 8 + gpio@0 { 9 + compatible = "unittest-gpio"; 10 + reg = <0>; 11 + gpio-controller; 12 + #gpio-cells = <2>; 13 + ngpios = <2>; 14 + gpio-line-names = "line-A", "line-B"; 15 + 16 + line-b { 17 + gpio-hog; 18 + gpios = <2 0>; 19 + input; 20 + line-name = "line-B-input"; 21 + }; 22 + }; 23 + };
+16
drivers/of/unittest-data/overlay_gpio_02a.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /dts-v1/; 3 + /plugin/; 4 + 5 + &unittest_test_bus { 6 + #address-cells = <1>; 7 + #size-cells = <0>; 8 + gpio@2 { 9 + compatible = "unittest-gpio"; 10 + reg = <2>; 11 + gpio-controller; 12 + #gpio-cells = <2>; 13 + ngpios = <2>; 14 + gpio-line-names = "line-A", "line-B"; 15 + }; 16 + };
+16
drivers/of/unittest-data/overlay_gpio_02b.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /dts-v1/; 3 + /plugin/; 4 + 5 + &unittest_test_bus { 6 + #address-cells = <1>; 7 + #size-cells = <0>; 8 + gpio@2 { 9 + line-a { 10 + gpio-hog; 11 + gpios = <1 0>; 12 + input; 13 + line-name = "line-A-input"; 14 + }; 15 + }; 16 + };
+23
drivers/of/unittest-data/overlay_gpio_03.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /dts-v1/; 3 + /plugin/; 4 + 5 + &unittest_test_bus { 6 + #address-cells = <1>; 7 + #size-cells = <0>; 8 + gpio@3 { 9 + compatible = "unittest-gpio"; 10 + reg = <3>; 11 + gpio-controller; 12 + #gpio-cells = <2>; 13 + ngpios = <2>; 14 + gpio-line-names = "line-A", "line-B", "line-C", "line-D"; 15 + 16 + line-d { 17 + gpio-hog; 18 + gpios = <4 0>; 19 + input; 20 + line-name = "line-D-input"; 21 + }; 22 + }; 23 + };
+16
drivers/of/unittest-data/overlay_gpio_04a.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /dts-v1/; 3 + /plugin/; 4 + 5 + &unittest_test_bus { 6 + #address-cells = <1>; 7 + #size-cells = <0>; 8 + gpio@4 { 9 + compatible = "unittest-gpio"; 10 + reg = <4>; 11 + gpio-controller; 12 + #gpio-cells = <2>; 13 + ngpios = <2>; 14 + gpio-line-names = "line-A", "line-B", "line-C", "line-D"; 15 + }; 16 + };
+16
drivers/of/unittest-data/overlay_gpio_04b.dts
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /dts-v1/; 3 + /plugin/; 4 + 5 + &unittest_test_bus { 6 + #address-cells = <1>; 7 + #size-cells = <0>; 8 + gpio@4 { 9 + line-c { 10 + gpio-hog; 11 + gpios = <3 0>; 12 + input; 13 + line-name = "line-C-input"; 14 + }; 15 + }; 16 + };
+633 -38
drivers/of/unittest.c
··· 24 24 25 25 #include <linux/i2c.h> 26 26 #include <linux/i2c-mux.h> 27 + #include <linux/gpio/driver.h> 27 28 28 29 #include <linux/bitops.h> 29 30 ··· 46 45 } \ 47 46 failed; \ 48 47 }) 48 + 49 + /* 50 + * Expected message may have a message level other than KERN_INFO. 51 + * Print the expected message only if the current loglevel will allow 52 + * the actual message to print. 53 + * 54 + * Do not use EXPECT_BEGIN() or EXPECT_END() for messages generated by 55 + * pr_debug(). 56 + */ 57 + #define EXPECT_BEGIN(level, fmt, ...) \ 58 + printk(level pr_fmt("EXPECT \\ : ") fmt, ##__VA_ARGS__) 59 + 60 + #define EXPECT_END(level, fmt, ...) \ 61 + printk(level pr_fmt("EXPECT / : ") fmt, ##__VA_ARGS__) 49 62 50 63 static void __init of_unittest_find_node_by_name(void) 51 64 { ··· 459 444 460 445 /* Check for missing cells property */ 461 446 memset(&args, 0, sizeof(args)); 447 + 448 + EXPECT_BEGIN(KERN_INFO, 449 + "OF: /testcase-data/phandle-tests/consumer-a: could not get #phandle-cells-missing for /testcase-data/phandle-tests/provider1"); 450 + 462 451 rc = of_parse_phandle_with_args(np, "phandle-list", 463 452 "#phandle-cells-missing", 0, &args); 453 + 454 + EXPECT_END(KERN_INFO, 455 + "OF: /testcase-data/phandle-tests/consumer-a: could not get #phandle-cells-missing for /testcase-data/phandle-tests/provider1"); 456 + 464 457 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); 458 + 459 + EXPECT_BEGIN(KERN_INFO, 460 + "OF: /testcase-data/phandle-tests/consumer-a: could not get #phandle-cells-missing for /testcase-data/phandle-tests/provider1"); 461 + 465 462 rc = of_count_phandle_with_args(np, "phandle-list", 466 463 "#phandle-cells-missing"); 464 + 465 + EXPECT_END(KERN_INFO, 466 + "OF: /testcase-data/phandle-tests/consumer-a: could not get #phandle-cells-missing for /testcase-data/phandle-tests/provider1"); 467 + 467 468 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); 468 469 469 470 /* Check for bad phandle in list */ 470 471 memset(&args, 0, sizeof(args)); 472 + 473 + EXPECT_BEGIN(KERN_INFO, 474 + "OF: /testcase-data/phandle-tests/consumer-a: could not find phandle"); 475 + 471 476 rc = of_parse_phandle_with_args(np, "phandle-list-bad-phandle", 472 477 "#phandle-cells", 0, &args); 478 + 479 + EXPECT_END(KERN_INFO, 480 + "OF: /testcase-data/phandle-tests/consumer-a: could not find phandle"); 481 + 473 482 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); 483 + 484 + EXPECT_BEGIN(KERN_INFO, 485 + "OF: /testcase-data/phandle-tests/consumer-a: could not find phandle"); 486 + 474 487 rc = of_count_phandle_with_args(np, "phandle-list-bad-phandle", 475 488 "#phandle-cells"); 489 + 490 + EXPECT_END(KERN_INFO, 491 + "OF: /testcase-data/phandle-tests/consumer-a: could not find phandle"); 492 + 476 493 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); 477 494 478 495 /* Check for incorrectly formed argument list */ 479 496 memset(&args, 0, sizeof(args)); 497 + 498 + EXPECT_BEGIN(KERN_INFO, 499 + "OF: /testcase-data/phandle-tests/consumer-a: #phandle-cells = 3 found -1"); 500 + 480 501 rc = of_parse_phandle_with_args(np, "phandle-list-bad-args", 481 502 "#phandle-cells", 1, &args); 503 + 504 + EXPECT_END(KERN_INFO, 505 + "OF: /testcase-data/phandle-tests/consumer-a: #phandle-cells = 3 found -1"); 506 + 482 507 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); 508 + 509 + EXPECT_BEGIN(KERN_INFO, 510 + "OF: /testcase-data/phandle-tests/consumer-a: #phandle-cells = 3 found -1"); 511 + 483 512 rc = of_count_phandle_with_args(np, "phandle-list-bad-args", 484 513 "#phandle-cells"); 514 + 515 + EXPECT_END(KERN_INFO, 516 + "OF: /testcase-data/phandle-tests/consumer-a: #phandle-cells = 3 found -1"); 517 + 485 518 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); 486 519 } 487 520 ··· 640 577 641 578 /* Check for missing cells,map,mask property */ 642 579 memset(&args, 0, sizeof(args)); 580 + 581 + EXPECT_BEGIN(KERN_INFO, 582 + "OF: /testcase-data/phandle-tests/consumer-b: could not get #phandle-missing-cells for /testcase-data/phandle-tests/provider1"); 583 + 643 584 rc = of_parse_phandle_with_args_map(np, "phandle-list", 644 585 "phandle-missing", 0, &args); 586 + EXPECT_END(KERN_INFO, 587 + "OF: /testcase-data/phandle-tests/consumer-b: could not get #phandle-missing-cells for /testcase-data/phandle-tests/provider1"); 588 + 645 589 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); 646 590 647 591 /* Check for bad phandle in list */ 648 592 memset(&args, 0, sizeof(args)); 593 + 594 + EXPECT_BEGIN(KERN_INFO, 595 + "OF: /testcase-data/phandle-tests/consumer-b: could not find phandle"); 596 + 649 597 rc = of_parse_phandle_with_args_map(np, "phandle-list-bad-phandle", 650 598 "phandle", 0, &args); 599 + EXPECT_END(KERN_INFO, 600 + "OF: /testcase-data/phandle-tests/consumer-b: could not find phandle"); 601 + 651 602 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); 652 603 653 604 /* Check for incorrectly formed argument list */ 654 605 memset(&args, 0, sizeof(args)); 606 + 607 + EXPECT_BEGIN(KERN_INFO, 608 + "OF: /testcase-data/phandle-tests/consumer-b: #phandle-cells = 2 found -1"); 609 + 655 610 rc = of_parse_phandle_with_args_map(np, "phandle-list-bad-args", 656 611 "phandle", 1, &args); 612 + EXPECT_END(KERN_INFO, 613 + "OF: /testcase-data/phandle-tests/consumer-b: #phandle-cells = 2 found -1"); 614 + 657 615 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); 658 616 } 659 617 ··· 1205 1121 np = of_find_node_by_path("/testcase-data/testcase-device2"); 1206 1122 pdev = of_find_device_by_node(np); 1207 1123 unittest(pdev, "device 2 creation failed\n"); 1124 + 1125 + EXPECT_BEGIN(KERN_INFO, 1126 + "platform testcase-data:testcase-device2: IRQ index 0 not found"); 1127 + 1208 1128 irq = platform_get_irq(pdev, 0); 1129 + 1130 + EXPECT_END(KERN_INFO, 1131 + "platform testcase-data:testcase-device2: IRQ index 0 not found"); 1132 + 1209 1133 unittest(irq < 0 && irq != -EPROBE_DEFER, 1210 1134 "device parsing error failed - %d\n", irq); 1211 1135 } ··· 1417 1325 return 0; 1418 1326 } 1419 1327 1328 + EXPECT_BEGIN(KERN_INFO, 1329 + "Duplicate name in testcase-data, renamed to \"duplicate-name#1\""); 1330 + 1420 1331 /* attach the sub-tree to live tree */ 1421 1332 np = unittest_data_node->child; 1422 1333 while (np) { ··· 1429 1334 attach_node_and_children(np); 1430 1335 np = next; 1431 1336 } 1337 + 1338 + EXPECT_END(KERN_INFO, 1339 + "Duplicate name in testcase-data, renamed to \"duplicate-name#1\""); 1432 1340 1433 1341 of_overlay_mutex_unlock(); 1434 1342 ··· 1507 1409 platform_device_put(pdev); 1508 1410 return pdev != NULL; 1509 1411 } 1412 + 1413 + #ifdef CONFIG_OF_GPIO 1414 + 1415 + struct unittest_gpio_dev { 1416 + struct gpio_chip chip; 1417 + }; 1418 + 1419 + static int unittest_gpio_chip_request_count; 1420 + static int unittest_gpio_probe_count; 1421 + static int unittest_gpio_probe_pass_count; 1422 + 1423 + static int unittest_gpio_chip_request(struct gpio_chip *chip, unsigned int offset) 1424 + { 1425 + unittest_gpio_chip_request_count++; 1426 + 1427 + pr_debug("%s(): %s %d %d\n", __func__, chip->label, offset, 1428 + unittest_gpio_chip_request_count); 1429 + return 0; 1430 + } 1431 + 1432 + static int unittest_gpio_probe(struct platform_device *pdev) 1433 + { 1434 + struct unittest_gpio_dev *devptr; 1435 + int ret; 1436 + 1437 + unittest_gpio_probe_count++; 1438 + 1439 + devptr = kzalloc(sizeof(*devptr), GFP_KERNEL); 1440 + if (!devptr) 1441 + return -ENOMEM; 1442 + 1443 + platform_set_drvdata(pdev, devptr); 1444 + 1445 + devptr->chip.of_node = pdev->dev.of_node; 1446 + devptr->chip.label = "of-unittest-gpio"; 1447 + devptr->chip.base = -1; /* dynamic allocation */ 1448 + devptr->chip.ngpio = 5; 1449 + devptr->chip.request = unittest_gpio_chip_request; 1450 + 1451 + ret = gpiochip_add_data(&devptr->chip, NULL); 1452 + 1453 + unittest(!ret, 1454 + "gpiochip_add_data() for node @%pOF failed, ret = %d\n", devptr->chip.of_node, ret); 1455 + 1456 + if (!ret) 1457 + unittest_gpio_probe_pass_count++; 1458 + return ret; 1459 + } 1460 + 1461 + static int unittest_gpio_remove(struct platform_device *pdev) 1462 + { 1463 + struct unittest_gpio_dev *gdev = platform_get_drvdata(pdev); 1464 + struct device *dev = &pdev->dev; 1465 + struct device_node *np = pdev->dev.of_node; 1466 + 1467 + dev_dbg(dev, "%s for node @%pOF\n", __func__, np); 1468 + 1469 + if (!gdev) 1470 + return -EINVAL; 1471 + 1472 + if (gdev->chip.base != -1) 1473 + gpiochip_remove(&gdev->chip); 1474 + 1475 + platform_set_drvdata(pdev, NULL); 1476 + kfree(gdev); 1477 + 1478 + return 0; 1479 + } 1480 + 1481 + static const struct of_device_id unittest_gpio_id[] = { 1482 + { .compatible = "unittest-gpio", }, 1483 + {} 1484 + }; 1485 + 1486 + static struct platform_driver unittest_gpio_driver = { 1487 + .probe = unittest_gpio_probe, 1488 + .remove = unittest_gpio_remove, 1489 + .driver = { 1490 + .name = "unittest-gpio", 1491 + .of_match_table = of_match_ptr(unittest_gpio_id), 1492 + }, 1493 + }; 1494 + 1495 + static void __init of_unittest_overlay_gpio(void) 1496 + { 1497 + int chip_request_count; 1498 + int probe_pass_count; 1499 + int ret; 1500 + 1501 + /* 1502 + * tests: apply overlays before registering driver 1503 + * Similar to installing a driver as a module, the 1504 + * driver is registered after applying the overlays. 1505 + * 1506 + * The overlays are applied by overlay_data_apply() 1507 + * instead of of_unittest_apply_overlay() so that they 1508 + * will not be tracked. Thus they will not be removed 1509 + * by of_unittest_destroy_tracked_overlays(). 1510 + * 1511 + * - apply overlay_gpio_01 1512 + * - apply overlay_gpio_02a 1513 + * - apply overlay_gpio_02b 1514 + * - register driver 1515 + * 1516 + * register driver will result in 1517 + * - probe and processing gpio hog for overlay_gpio_01 1518 + * - probe for overlay_gpio_02a 1519 + * - processing gpio for overlay_gpio_02b 1520 + */ 1521 + 1522 + probe_pass_count = unittest_gpio_probe_pass_count; 1523 + chip_request_count = unittest_gpio_chip_request_count; 1524 + 1525 + /* 1526 + * overlay_gpio_01 contains gpio node and child gpio hog node 1527 + * overlay_gpio_02a contains gpio node 1528 + * overlay_gpio_02b contains child gpio hog node 1529 + */ 1530 + 1531 + unittest(overlay_data_apply("overlay_gpio_01", NULL), 1532 + "Adding overlay 'overlay_gpio_01' failed\n"); 1533 + 1534 + unittest(overlay_data_apply("overlay_gpio_02a", NULL), 1535 + "Adding overlay 'overlay_gpio_02a' failed\n"); 1536 + 1537 + unittest(overlay_data_apply("overlay_gpio_02b", NULL), 1538 + "Adding overlay 'overlay_gpio_02b' failed\n"); 1539 + 1540 + /* 1541 + * messages are the result of the probes, after the 1542 + * driver is registered 1543 + */ 1544 + 1545 + EXPECT_BEGIN(KERN_INFO, 1546 + "GPIO line <<int>> (line-B-input) hogged as input\n"); 1547 + 1548 + EXPECT_BEGIN(KERN_INFO, 1549 + "GPIO line <<int>> (line-A-input) hogged as input\n"); 1550 + 1551 + ret = platform_driver_register(&unittest_gpio_driver); 1552 + if (unittest(ret == 0, "could not register unittest gpio driver\n")) 1553 + return; 1554 + 1555 + EXPECT_END(KERN_INFO, 1556 + "GPIO line <<int>> (line-A-input) hogged as input\n"); 1557 + EXPECT_END(KERN_INFO, 1558 + "GPIO line <<int>> (line-B-input) hogged as input\n"); 1559 + 1560 + unittest(probe_pass_count + 2 == unittest_gpio_probe_pass_count, 1561 + "unittest_gpio_probe() failed or not called\n"); 1562 + 1563 + unittest(chip_request_count + 2 == unittest_gpio_chip_request_count, 1564 + "unittest_gpio_chip_request() called %d times (expected 1 time)\n", 1565 + unittest_gpio_chip_request_count - chip_request_count); 1566 + 1567 + /* 1568 + * tests: apply overlays after registering driver 1569 + * 1570 + * Similar to a driver built-in to the kernel, the 1571 + * driver is registered before applying the overlays. 1572 + * 1573 + * overlay_gpio_03 contains gpio node and child gpio hog node 1574 + * 1575 + * - apply overlay_gpio_03 1576 + * 1577 + * apply overlay will result in 1578 + * - probe and processing gpio hog. 1579 + */ 1580 + 1581 + probe_pass_count = unittest_gpio_probe_pass_count; 1582 + chip_request_count = unittest_gpio_chip_request_count; 1583 + 1584 + EXPECT_BEGIN(KERN_INFO, 1585 + "GPIO line <<int>> (line-D-input) hogged as input\n"); 1586 + 1587 + /* overlay_gpio_03 contains gpio node and child gpio hog node */ 1588 + 1589 + unittest(overlay_data_apply("overlay_gpio_03", NULL), 1590 + "Adding overlay 'overlay_gpio_03' failed\n"); 1591 + 1592 + EXPECT_END(KERN_INFO, 1593 + "GPIO line <<int>> (line-D-input) hogged as input\n"); 1594 + 1595 + unittest(probe_pass_count + 1 == unittest_gpio_probe_pass_count, 1596 + "unittest_gpio_probe() failed or not called\n"); 1597 + 1598 + unittest(chip_request_count + 1 == unittest_gpio_chip_request_count, 1599 + "unittest_gpio_chip_request() called %d times (expected 1 time)\n", 1600 + unittest_gpio_chip_request_count - chip_request_count); 1601 + 1602 + /* 1603 + * overlay_gpio_04a contains gpio node 1604 + * 1605 + * - apply overlay_gpio_04a 1606 + * 1607 + * apply the overlay will result in 1608 + * - probe for overlay_gpio_04a 1609 + */ 1610 + 1611 + probe_pass_count = unittest_gpio_probe_pass_count; 1612 + chip_request_count = unittest_gpio_chip_request_count; 1613 + 1614 + /* overlay_gpio_04a contains gpio node */ 1615 + 1616 + unittest(overlay_data_apply("overlay_gpio_04a", NULL), 1617 + "Adding overlay 'overlay_gpio_04a' failed\n"); 1618 + 1619 + unittest(probe_pass_count + 1 == unittest_gpio_probe_pass_count, 1620 + "unittest_gpio_probe() failed or not called\n"); 1621 + 1622 + /* 1623 + * overlay_gpio_04b contains child gpio hog node 1624 + * 1625 + * - apply overlay_gpio_04b 1626 + * 1627 + * apply the overlay will result in 1628 + * - processing gpio for overlay_gpio_04b 1629 + */ 1630 + 1631 + EXPECT_BEGIN(KERN_INFO, 1632 + "GPIO line <<int>> (line-C-input) hogged as input\n"); 1633 + 1634 + /* overlay_gpio_04b contains child gpio hog node */ 1635 + 1636 + unittest(overlay_data_apply("overlay_gpio_04b", NULL), 1637 + "Adding overlay 'overlay_gpio_04b' failed\n"); 1638 + 1639 + EXPECT_END(KERN_INFO, 1640 + "GPIO line <<int>> (line-C-input) hogged as input\n"); 1641 + 1642 + unittest(chip_request_count + 1 == unittest_gpio_chip_request_count, 1643 + "unittest_gpio_chip_request() called %d times (expected 1 time)\n", 1644 + unittest_gpio_chip_request_count - chip_request_count); 1645 + } 1646 + 1647 + #else 1648 + 1649 + static void __init of_unittest_overlay_gpio(void) 1650 + { 1651 + /* skip tests */ 1652 + } 1653 + 1654 + #endif 1510 1655 1511 1656 #if IS_BUILTIN(CONFIG_I2C) 1512 1657 ··· 1852 1511 1853 1512 static const char *bus_path = "/testcase-data/overlay-node/test-bus"; 1854 1513 1855 - /* it is guaranteed that overlay ids are assigned in sequence */ 1514 + /* FIXME: it is NOT guaranteed that overlay ids are assigned in sequence */ 1515 + 1856 1516 #define MAX_UNITTEST_OVERLAYS 256 1857 1517 static unsigned long overlay_id_bits[BITS_TO_LONGS(MAX_UNITTEST_OVERLAYS)]; 1858 1518 static int overlay_first_id = -1; 1519 + 1520 + static long of_unittest_overlay_tracked(int id) 1521 + { 1522 + if (WARN_ON(id >= MAX_UNITTEST_OVERLAYS)) 1523 + return 0; 1524 + return overlay_id_bits[BIT_WORD(id)] & BIT_MASK(id); 1525 + } 1859 1526 1860 1527 static void of_unittest_track_overlay(int id) 1861 1528 { ··· 1871 1522 overlay_first_id = id; 1872 1523 id -= overlay_first_id; 1873 1524 1874 - /* we shouldn't need that many */ 1875 - BUG_ON(id >= MAX_UNITTEST_OVERLAYS); 1525 + if (WARN_ON(id >= MAX_UNITTEST_OVERLAYS)) 1526 + return; 1876 1527 overlay_id_bits[BIT_WORD(id)] |= BIT_MASK(id); 1877 1528 } 1878 1529 ··· 1881 1532 if (overlay_first_id < 0) 1882 1533 return; 1883 1534 id -= overlay_first_id; 1884 - BUG_ON(id >= MAX_UNITTEST_OVERLAYS); 1535 + if (WARN_ON(id >= MAX_UNITTEST_OVERLAYS)) 1536 + return; 1885 1537 overlay_id_bits[BIT_WORD(id)] &= ~BIT_MASK(id); 1886 1538 } 1887 1539 ··· 1898 1548 defers = 0; 1899 1549 /* remove in reverse order */ 1900 1550 for (id = MAX_UNITTEST_OVERLAYS - 1; id >= 0; id--) { 1901 - if (!(overlay_id_bits[BIT_WORD(id)] & BIT_MASK(id))) 1551 + if (!of_unittest_overlay_tracked(id)) 1902 1552 continue; 1903 1553 1904 1554 ovcs_id = id + overlay_first_id; ··· 1915 1565 continue; 1916 1566 } 1917 1567 1918 - overlay_id_bits[BIT_WORD(id)] &= ~BIT_MASK(id); 1568 + of_unittest_untrack_overlay(id); 1919 1569 } 1920 1570 } while (defers > 0); 1921 1571 } ··· 1976 1626 int unittest_nr, int before, int after, 1977 1627 enum overlay_type ovtype) 1978 1628 { 1979 - int ret, ovcs_id; 1629 + int ret, ovcs_id, save_id; 1980 1630 1981 1631 /* unittest device must be in before state */ 1982 1632 if (of_unittest_device_exists(unittest_nr, ovtype) != before) { ··· 2004 1654 return -EINVAL; 2005 1655 } 2006 1656 1657 + save_id = ovcs_id; 2007 1658 ret = of_overlay_remove(&ovcs_id); 2008 1659 if (ret != 0) { 2009 1660 unittest(0, "%s failed to be destroyed @\"%s\"\n", ··· 2012 1661 unittest_path(unittest_nr, ovtype)); 2013 1662 return ret; 2014 1663 } 1664 + of_unittest_untrack_overlay(save_id); 2015 1665 2016 1666 /* unittest device must be again in before state */ 2017 1667 if (of_unittest_device_exists(unittest_nr, PDEV_OVERLAY) != before) { ··· 2029 1677 /* test activation of device */ 2030 1678 static void __init of_unittest_overlay_0(void) 2031 1679 { 1680 + int ret; 1681 + 1682 + EXPECT_BEGIN(KERN_INFO, 1683 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest0/status"); 1684 + 2032 1685 /* device should enable */ 2033 - if (of_unittest_apply_overlay_check(0, 0, 0, 1, PDEV_OVERLAY)) 1686 + ret = of_unittest_apply_overlay_check(0, 0, 0, 1, PDEV_OVERLAY); 1687 + 1688 + EXPECT_END(KERN_INFO, 1689 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest0/status"); 1690 + 1691 + if (ret) 2034 1692 return; 2035 1693 2036 1694 unittest(1, "overlay test %d passed\n", 0); ··· 2049 1687 /* test deactivation of device */ 2050 1688 static void __init of_unittest_overlay_1(void) 2051 1689 { 1690 + int ret; 1691 + 1692 + EXPECT_BEGIN(KERN_INFO, 1693 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest1/status"); 1694 + 2052 1695 /* device should disable */ 2053 - if (of_unittest_apply_overlay_check(1, 1, 1, 0, PDEV_OVERLAY)) 1696 + ret = of_unittest_apply_overlay_check(1, 1, 1, 0, PDEV_OVERLAY); 1697 + 1698 + EXPECT_END(KERN_INFO, 1699 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest1/status"); 1700 + 1701 + if (ret) 2054 1702 return; 2055 1703 2056 1704 unittest(1, "overlay test %d passed\n", 1); 1705 + 2057 1706 } 2058 1707 2059 1708 /* test activation of device */ 2060 1709 static void __init of_unittest_overlay_2(void) 2061 1710 { 2062 - /* device should enable */ 2063 - if (of_unittest_apply_overlay_check(2, 2, 0, 1, PDEV_OVERLAY)) 2064 - return; 1711 + int ret; 2065 1712 1713 + EXPECT_BEGIN(KERN_INFO, 1714 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest2/status"); 1715 + 1716 + /* device should enable */ 1717 + ret = of_unittest_apply_overlay_check(2, 2, 0, 1, PDEV_OVERLAY); 1718 + 1719 + EXPECT_END(KERN_INFO, 1720 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest2/status"); 1721 + 1722 + if (ret) 1723 + return; 2066 1724 unittest(1, "overlay test %d passed\n", 2); 2067 1725 } 2068 1726 2069 1727 /* test deactivation of device */ 2070 1728 static void __init of_unittest_overlay_3(void) 2071 1729 { 1730 + int ret; 1731 + 1732 + EXPECT_BEGIN(KERN_INFO, 1733 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest3/status"); 1734 + 2072 1735 /* device should disable */ 2073 - if (of_unittest_apply_overlay_check(3, 3, 1, 0, PDEV_OVERLAY)) 1736 + ret = of_unittest_apply_overlay_check(3, 3, 1, 0, PDEV_OVERLAY); 1737 + 1738 + EXPECT_END(KERN_INFO, 1739 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest3/status"); 1740 + 1741 + if (ret) 2074 1742 return; 2075 1743 2076 1744 unittest(1, "overlay test %d passed\n", 3); ··· 2119 1727 /* test overlay apply/revert sequence */ 2120 1728 static void __init of_unittest_overlay_5(void) 2121 1729 { 1730 + int ret; 1731 + 1732 + EXPECT_BEGIN(KERN_INFO, 1733 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest5/status"); 1734 + 2122 1735 /* device should disable */ 2123 - if (of_unittest_apply_revert_overlay_check(5, 5, 0, 1, PDEV_OVERLAY)) 1736 + ret = of_unittest_apply_revert_overlay_check(5, 5, 0, 1, PDEV_OVERLAY); 1737 + 1738 + EXPECT_END(KERN_INFO, 1739 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest5/status"); 1740 + 1741 + if (ret) 2124 1742 return; 2125 1743 2126 1744 unittest(1, "overlay test %d passed\n", 5); ··· 2143 1741 int overlay_nr = 6, unittest_nr = 6; 2144 1742 int before = 0, after = 1; 2145 1743 const char *overlay_name; 1744 + 1745 + int ret; 2146 1746 2147 1747 /* unittest device must be in before state */ 2148 1748 for (i = 0; i < 2; i++) { ··· 2160 1756 } 2161 1757 2162 1758 /* apply the overlays */ 2163 - for (i = 0; i < 2; i++) { 2164 1759 2165 - overlay_name = overlay_name_from_nr(overlay_nr + i); 1760 + EXPECT_BEGIN(KERN_INFO, 1761 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest6/status"); 2166 1762 2167 - if (!overlay_data_apply(overlay_name, &ovcs_id)) { 2168 - unittest(0, "could not apply overlay \"%s\"\n", 2169 - overlay_name); 1763 + overlay_name = overlay_name_from_nr(overlay_nr + 0); 1764 + 1765 + ret = overlay_data_apply(overlay_name, &ovcs_id); 1766 + 1767 + if (!ret) { 1768 + unittest(0, "could not apply overlay \"%s\"\n", overlay_name); 2170 1769 return; 2171 - } 2172 - ov_id[i] = ovcs_id; 2173 - of_unittest_track_overlay(ov_id[i]); 2174 1770 } 1771 + ov_id[0] = ovcs_id; 1772 + of_unittest_track_overlay(ov_id[0]); 1773 + 1774 + EXPECT_END(KERN_INFO, 1775 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest6/status"); 1776 + 1777 + EXPECT_BEGIN(KERN_INFO, 1778 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest7/status"); 1779 + 1780 + overlay_name = overlay_name_from_nr(overlay_nr + 1); 1781 + 1782 + ret = overlay_data_apply(overlay_name, &ovcs_id); 1783 + 1784 + if (!ret) { 1785 + unittest(0, "could not apply overlay \"%s\"\n", overlay_name); 1786 + return; 1787 + } 1788 + ov_id[1] = ovcs_id; 1789 + of_unittest_track_overlay(ov_id[1]); 1790 + 1791 + EXPECT_END(KERN_INFO, 1792 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest7/status"); 1793 + 2175 1794 2176 1795 for (i = 0; i < 2; i++) { 2177 1796 /* unittest device must be in after state */ ··· 2235 1808 } 2236 1809 2237 1810 unittest(1, "overlay test %d passed\n", 6); 1811 + 2238 1812 } 2239 1813 2240 1814 /* test overlay application in sequence */ ··· 2244 1816 int i, ov_id[2], ovcs_id; 2245 1817 int overlay_nr = 8, unittest_nr = 8; 2246 1818 const char *overlay_name; 1819 + int ret; 2247 1820 2248 1821 /* we don't care about device state in this test */ 2249 1822 1823 + EXPECT_BEGIN(KERN_INFO, 1824 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest8/status"); 1825 + 1826 + overlay_name = overlay_name_from_nr(overlay_nr + 0); 1827 + 1828 + ret = overlay_data_apply(overlay_name, &ovcs_id); 1829 + if (!ret) 1830 + unittest(0, "could not apply overlay \"%s\"\n", overlay_name); 1831 + 1832 + EXPECT_END(KERN_INFO, 1833 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest8/status"); 1834 + 1835 + if (!ret) 1836 + return; 1837 + 1838 + ov_id[0] = ovcs_id; 1839 + of_unittest_track_overlay(ov_id[0]); 1840 + 1841 + overlay_name = overlay_name_from_nr(overlay_nr + 1); 1842 + 1843 + EXPECT_BEGIN(KERN_INFO, 1844 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest8/property-foo"); 1845 + 2250 1846 /* apply the overlays */ 2251 - for (i = 0; i < 2; i++) { 1847 + ret = overlay_data_apply(overlay_name, &ovcs_id); 2252 1848 2253 - overlay_name = overlay_name_from_nr(overlay_nr + i); 1849 + EXPECT_END(KERN_INFO, 1850 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest8/property-foo"); 2254 1851 2255 - if (!overlay_data_apply(overlay_name, &ovcs_id)) { 2256 - unittest(0, "could not apply overlay \"%s\"\n", 2257 - overlay_name); 2258 - return; 2259 - } 2260 - ov_id[i] = ovcs_id; 2261 - of_unittest_track_overlay(ov_id[i]); 1852 + if (!ret) { 1853 + unittest(0, "could not apply overlay \"%s\"\n", overlay_name); 1854 + return; 2262 1855 } 1856 + 1857 + ov_id[1] = ovcs_id; 1858 + of_unittest_track_overlay(ov_id[1]); 2263 1859 2264 1860 /* now try to remove first overlay (it should fail) */ 2265 1861 ovcs_id = ov_id[0]; 2266 - if (!of_overlay_remove(&ovcs_id)) { 1862 + 1863 + EXPECT_BEGIN(KERN_INFO, 1864 + "OF: overlay: node_overlaps_later_cs: #6 overlaps with #7 @/testcase-data/overlay-node/test-bus/test-unittest8"); 1865 + 1866 + EXPECT_BEGIN(KERN_INFO, 1867 + "OF: overlay: overlay #6 is not topmost"); 1868 + 1869 + ret = of_overlay_remove(&ovcs_id); 1870 + 1871 + EXPECT_END(KERN_INFO, 1872 + "OF: overlay: overlay #6 is not topmost"); 1873 + 1874 + EXPECT_END(KERN_INFO, 1875 + "OF: overlay: node_overlaps_later_cs: #6 overlaps with #7 @/testcase-data/overlay-node/test-bus/test-unittest8"); 1876 + 1877 + if (!ret) { 2267 1878 unittest(0, "%s was destroyed @\"%s\"\n", 2268 1879 overlay_name_from_nr(overlay_nr + 0), 2269 1880 unittest_path(unittest_nr, ··· 2334 1867 2335 1868 /* device should disable */ 2336 1869 ret = of_unittest_apply_overlay_check(10, 10, 0, 1, PDEV_OVERLAY); 1870 + 2337 1871 if (unittest(ret == 0, 2338 1872 "overlay test %d failed; overlay application\n", 10)) 2339 1873 return; ··· 2358 1890 /* device should disable */ 2359 1891 ret = of_unittest_apply_revert_overlay_check(11, 11, 0, 1, 2360 1892 PDEV_OVERLAY); 1893 + 2361 1894 unittest(ret == 0, "overlay test %d failed; overlay apply\n", 11); 2362 1895 } 2363 1896 ··· 2589 2120 return ret; 2590 2121 2591 2122 ret = platform_driver_register(&unittest_i2c_bus_driver); 2123 + 2592 2124 if (unittest(ret == 0, 2593 2125 "could not register unittest i2c bus driver\n")) 2594 2126 return ret; 2595 2127 2596 2128 #if IS_BUILTIN(CONFIG_I2C_MUX) 2129 + 2130 + EXPECT_BEGIN(KERN_INFO, 2131 + "i2c i2c-1: Added multiplexed i2c bus 2"); 2132 + 2597 2133 ret = i2c_add_driver(&unittest_i2c_mux_driver); 2134 + 2135 + EXPECT_END(KERN_INFO, 2136 + "i2c i2c-1: Added multiplexed i2c bus 2"); 2137 + 2598 2138 if (unittest(ret == 0, 2599 2139 "could not register unittest i2c mux driver\n")) 2600 2140 return ret; ··· 2623 2145 2624 2146 static void __init of_unittest_overlay_i2c_12(void) 2625 2147 { 2148 + int ret; 2149 + 2626 2150 /* device should enable */ 2627 - if (of_unittest_apply_overlay_check(12, 12, 0, 1, I2C_OVERLAY)) 2151 + EXPECT_BEGIN(KERN_INFO, 2152 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/i2c-test-bus/test-unittest12/status"); 2153 + 2154 + ret = of_unittest_apply_overlay_check(12, 12, 0, 1, I2C_OVERLAY); 2155 + 2156 + EXPECT_END(KERN_INFO, 2157 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/i2c-test-bus/test-unittest12/status"); 2158 + 2159 + if (ret) 2628 2160 return; 2629 2161 2630 2162 unittest(1, "overlay test %d passed\n", 12); ··· 2643 2155 /* test deactivation of device */ 2644 2156 static void __init of_unittest_overlay_i2c_13(void) 2645 2157 { 2158 + int ret; 2159 + 2160 + EXPECT_BEGIN(KERN_INFO, 2161 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/i2c-test-bus/test-unittest13/status"); 2162 + 2646 2163 /* device should disable */ 2647 - if (of_unittest_apply_overlay_check(13, 13, 1, 0, I2C_OVERLAY)) 2164 + ret = of_unittest_apply_overlay_check(13, 13, 1, 0, I2C_OVERLAY); 2165 + 2166 + EXPECT_END(KERN_INFO, 2167 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/i2c-test-bus/test-unittest13/status"); 2168 + 2169 + if (ret) 2648 2170 return; 2649 2171 2650 2172 unittest(1, "overlay test %d passed\n", 13); ··· 2667 2169 2668 2170 static void __init of_unittest_overlay_i2c_15(void) 2669 2171 { 2172 + int ret; 2173 + 2670 2174 /* device should enable */ 2671 - if (of_unittest_apply_overlay_check(15, 15, 0, 1, I2C_OVERLAY)) 2175 + EXPECT_BEGIN(KERN_INFO, 2176 + "i2c i2c-1: Added multiplexed i2c bus 3"); 2177 + 2178 + ret = of_unittest_apply_overlay_check(15, 15, 0, 1, I2C_OVERLAY); 2179 + 2180 + EXPECT_END(KERN_INFO, 2181 + "i2c i2c-1: Added multiplexed i2c bus 3"); 2182 + 2183 + if (ret) 2672 2184 return; 2673 2185 2674 2186 unittest(1, "overlay test %d passed\n", 15); ··· 2750 2242 of_unittest_overlay_i2c_cleanup(); 2751 2243 #endif 2752 2244 2245 + of_unittest_overlay_gpio(); 2246 + 2753 2247 of_unittest_destroy_tracked_overlays(); 2754 2248 2755 2249 out: ··· 2805 2295 OVERLAY_INFO_EXTERN(overlay_12); 2806 2296 OVERLAY_INFO_EXTERN(overlay_13); 2807 2297 OVERLAY_INFO_EXTERN(overlay_15); 2298 + OVERLAY_INFO_EXTERN(overlay_gpio_01); 2299 + OVERLAY_INFO_EXTERN(overlay_gpio_02a); 2300 + OVERLAY_INFO_EXTERN(overlay_gpio_02b); 2301 + OVERLAY_INFO_EXTERN(overlay_gpio_03); 2302 + OVERLAY_INFO_EXTERN(overlay_gpio_04a); 2303 + OVERLAY_INFO_EXTERN(overlay_gpio_04b); 2808 2304 OVERLAY_INFO_EXTERN(overlay_bad_add_dup_node); 2809 2305 OVERLAY_INFO_EXTERN(overlay_bad_add_dup_prop); 2810 2306 OVERLAY_INFO_EXTERN(overlay_bad_phandle); ··· 2835 2319 OVERLAY_INFO(overlay_12, 0), 2836 2320 OVERLAY_INFO(overlay_13, 0), 2837 2321 OVERLAY_INFO(overlay_15, 0), 2322 + OVERLAY_INFO(overlay_gpio_01, 0), 2323 + OVERLAY_INFO(overlay_gpio_02a, 0), 2324 + OVERLAY_INFO(overlay_gpio_02b, 0), 2325 + OVERLAY_INFO(overlay_gpio_03, 0), 2326 + OVERLAY_INFO(overlay_gpio_04a, 0), 2327 + OVERLAY_INFO(overlay_gpio_04b, 0), 2838 2328 OVERLAY_INFO(overlay_bad_add_dup_node, -EINVAL), 2839 2329 OVERLAY_INFO(overlay_bad_add_dup_prop, -EINVAL), 2840 2330 OVERLAY_INFO(overlay_bad_phandle, -EINVAL), ··· 2992 2470 struct device_node *overlay_base_symbols; 2993 2471 struct device_node **pprev; 2994 2472 struct property *prop; 2473 + int ret; 2995 2474 2996 2475 if (!overlay_base_root) { 2997 2476 unittest(0, "overlay_base_root not initialized\n"); ··· 3107 2584 3108 2585 /* now do the normal overlay usage test */ 3109 2586 3110 - unittest(overlay_data_apply("overlay", NULL), 3111 - "Adding overlay 'overlay' failed\n"); 2587 + EXPECT_BEGIN(KERN_ERR, 2588 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/substation@100/status"); 2589 + EXPECT_BEGIN(KERN_ERR, 2590 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/fairway-1/status"); 2591 + EXPECT_BEGIN(KERN_ERR, 2592 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/fairway-1/ride@100/track@30/incline-up"); 2593 + EXPECT_BEGIN(KERN_ERR, 2594 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/fairway-1/ride@100/track@40/incline-up"); 2595 + EXPECT_BEGIN(KERN_ERR, 2596 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/lights@40000/status"); 2597 + EXPECT_BEGIN(KERN_ERR, 2598 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/lights@40000/color"); 2599 + EXPECT_BEGIN(KERN_ERR, 2600 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/lights@40000/rate"); 2601 + EXPECT_BEGIN(KERN_ERR, 2602 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/hvac_2"); 2603 + EXPECT_BEGIN(KERN_ERR, 2604 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/ride_200"); 2605 + EXPECT_BEGIN(KERN_ERR, 2606 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/ride_200_left"); 2607 + EXPECT_BEGIN(KERN_ERR, 2608 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/ride_200_right"); 2609 + 2610 + ret = overlay_data_apply("overlay", NULL); 2611 + 2612 + EXPECT_END(KERN_ERR, 2613 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/ride_200_right"); 2614 + EXPECT_END(KERN_ERR, 2615 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/ride_200_left"); 2616 + EXPECT_END(KERN_ERR, 2617 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/ride_200"); 2618 + EXPECT_END(KERN_ERR, 2619 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /__symbols__/hvac_2"); 2620 + EXPECT_END(KERN_ERR, 2621 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/lights@40000/rate"); 2622 + EXPECT_END(KERN_ERR, 2623 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/lights@40000/color"); 2624 + EXPECT_END(KERN_ERR, 2625 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/lights@40000/status"); 2626 + EXPECT_END(KERN_ERR, 2627 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/fairway-1/ride@100/track@40/incline-up"); 2628 + EXPECT_END(KERN_ERR, 2629 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/fairway-1/ride@100/track@30/incline-up"); 2630 + EXPECT_END(KERN_ERR, 2631 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/fairway-1/status"); 2632 + EXPECT_END(KERN_ERR, 2633 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/substation@100/status"); 2634 + 2635 + unittest(ret, "Adding overlay 'overlay' failed\n"); 2636 + 2637 + EXPECT_BEGIN(KERN_ERR, 2638 + "OF: overlay: ERROR: multiple fragments add and/or delete node /testcase-data-2/substation@100/motor-1/controller"); 2639 + EXPECT_BEGIN(KERN_ERR, 2640 + "OF: overlay: ERROR: multiple fragments add, update, and/or delete property /testcase-data-2/substation@100/motor-1/controller/name"); 3112 2641 3113 2642 unittest(overlay_data_apply("overlay_bad_add_dup_node", NULL), 3114 2643 "Adding overlay 'overlay_bad_add_dup_node' failed\n"); 3115 2644 2645 + EXPECT_END(KERN_ERR, 2646 + "OF: overlay: ERROR: multiple fragments add, update, and/or delete property /testcase-data-2/substation@100/motor-1/controller/name"); 2647 + EXPECT_END(KERN_ERR, 2648 + "OF: overlay: ERROR: multiple fragments add and/or delete node /testcase-data-2/substation@100/motor-1/controller"); 2649 + 2650 + EXPECT_BEGIN(KERN_ERR, 2651 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/substation@100/motor-1/rpm_avail"); 2652 + EXPECT_BEGIN(KERN_ERR, 2653 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/substation@100/motor-1/rpm_avail"); 2654 + EXPECT_BEGIN(KERN_ERR, 2655 + "OF: overlay: ERROR: multiple fragments add, update, and/or delete property /testcase-data-2/substation@100/motor-1/rpm_avail"); 2656 + 3116 2657 unittest(overlay_data_apply("overlay_bad_add_dup_prop", NULL), 3117 2658 "Adding overlay 'overlay_bad_add_dup_prop' failed\n"); 2659 + 2660 + EXPECT_END(KERN_ERR, 2661 + "OF: overlay: ERROR: multiple fragments add, update, and/or delete property /testcase-data-2/substation@100/motor-1/rpm_avail"); 2662 + EXPECT_END(KERN_ERR, 2663 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/substation@100/motor-1/rpm_avail"); 2664 + EXPECT_END(KERN_ERR, 2665 + "OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/substation@100/motor-1/rpm_avail"); 3118 2666 3119 2667 unittest(overlay_data_apply("overlay_bad_phandle", NULL), 3120 2668 "Adding overlay 'overlay_bad_phandle' failed\n"); ··· 3210 2616 struct device_node *np; 3211 2617 int res; 3212 2618 2619 + pr_info("start of unittest - you will see error messages\n"); 2620 + 3213 2621 /* adding data for unittest */ 3214 2622 3215 2623 if (IS_ENABLED(CONFIG_UML)) ··· 3230 2634 } 3231 2635 of_node_put(np); 3232 2636 3233 - pr_info("start of unittest - you will see error messages\n"); 3234 2637 of_unittest_check_tree_linkage(); 3235 2638 of_unittest_check_phandles(); 3236 2639 of_unittest_find_node_by_name();
+9 -4
include/linux/of_address.h
··· 10 10 struct device_node *node; 11 11 const __be32 *range; 12 12 const __be32 *end; 13 - int np; 13 + int na; 14 + int ns; 14 15 int pna; 15 16 bool dma; 16 17 }; 18 + #define of_range_parser of_pci_range_parser 17 19 18 20 struct of_pci_range { 19 - u32 pci_space; 20 - u64 pci_addr; 21 + union { 22 + u64 pci_addr; 23 + u64 bus_addr; 24 + }; 21 25 u64 cpu_addr; 22 26 u64 size; 23 27 u32 flags; 24 28 }; 29 + #define of_range of_pci_range 25 30 26 31 #define for_each_of_pci_range(parser, range) \ 27 32 for (; of_pci_range_parser_one(parser, range);) 33 + #define for_each_of_range for_each_of_pci_range 28 34 29 35 /* Translate a DMA address from device space to CPU space */ 30 36 extern u64 of_translate_dma_address(struct device_node *dev, ··· 149 143 #endif /* CONFIG_OF_ADDRESS && CONFIG_PCI */ 150 144 151 145 #endif /* __OF_ADDRESS_H */ 152 -
-23
scripts/dtc/Makefile.dtc
··· 1 - # SPDX-License-Identifier: GPL-2.0-or-later 2 - # Makefile.dtc 3 - # 4 - # This is not a complete Makefile of itself. Instead, it is designed to 5 - # be easily embeddable into other systems of Makefiles. 6 - # 7 - DTC_SRCS = \ 8 - checks.c \ 9 - data.c \ 10 - dtc.c \ 11 - flattree.c \ 12 - fstree.c \ 13 - livetree.c \ 14 - srcpos.c \ 15 - treesource.c \ 16 - util.c 17 - 18 - ifneq ($(NO_YAML),1) 19 - DTC_SRCS += yamltree.c 20 - endif 21 - 22 - DTC_GEN_SRCS = dtc-lexer.lex.c dtc-parser.tab.c 23 - DTC_OBJS = $(DTC_SRCS:%.c=%.o) $(DTC_GEN_SRCS:%.c=%.o)
+14 -11
scripts/dtc/checks.c
··· 352 352 FAIL(c, dti, node, "node has a reg or ranges property, but no unit name"); 353 353 } else { 354 354 if (unitname[0]) 355 - FAIL(c, dti, node, "node has a unit name, but no reg property"); 355 + FAIL(c, dti, node, "node has a unit name, but no reg or ranges property"); 356 356 } 357 357 } 358 358 WARNING(unit_address_vs_reg, check_unit_address_vs_reg, NULL); ··· 765 765 { 766 766 struct property *prop; 767 767 int c_addr_cells, p_addr_cells, c_size_cells, p_size_cells, entrylen; 768 + const char *ranges = c->data; 768 769 769 - prop = get_property(node, "ranges"); 770 + prop = get_property(node, ranges); 770 771 if (!prop) 771 772 return; 772 773 773 774 if (!node->parent) { 774 - FAIL_PROP(c, dti, node, prop, "Root node has a \"ranges\" property"); 775 + FAIL_PROP(c, dti, node, prop, "Root node has a \"%s\" property", 776 + ranges); 775 777 return; 776 778 } 777 779 ··· 785 783 786 784 if (prop->val.len == 0) { 787 785 if (p_addr_cells != c_addr_cells) 788 - FAIL_PROP(c, dti, node, prop, "empty \"ranges\" property but its " 786 + FAIL_PROP(c, dti, node, prop, "empty \"%s\" property but its " 789 787 "#address-cells (%d) differs from %s (%d)", 790 - c_addr_cells, node->parent->fullpath, 788 + ranges, c_addr_cells, node->parent->fullpath, 791 789 p_addr_cells); 792 790 if (p_size_cells != c_size_cells) 793 - FAIL_PROP(c, dti, node, prop, "empty \"ranges\" property but its " 791 + FAIL_PROP(c, dti, node, prop, "empty \"%s\" property but its " 794 792 "#size-cells (%d) differs from %s (%d)", 795 - c_size_cells, node->parent->fullpath, 793 + ranges, c_size_cells, node->parent->fullpath, 796 794 p_size_cells); 797 795 } else if ((prop->val.len % entrylen) != 0) { 798 - FAIL_PROP(c, dti, node, prop, "\"ranges\" property has invalid length (%d bytes) " 796 + FAIL_PROP(c, dti, node, prop, "\"%s\" property has invalid length (%d bytes) " 799 797 "(parent #address-cells == %d, child #address-cells == %d, " 800 - "#size-cells == %d)", prop->val.len, 798 + "#size-cells == %d)", ranges, prop->val.len, 801 799 p_addr_cells, c_addr_cells, c_size_cells); 802 800 } 803 801 } 804 - WARNING(ranges_format, check_ranges_format, NULL, &addr_size_cells); 802 + WARNING(ranges_format, check_ranges_format, "ranges", &addr_size_cells); 803 + WARNING(dma_ranges_format, check_ranges_format, "dma-ranges", &addr_size_cells); 805 804 806 805 static const struct bus_type pci_bus = { 807 806 .name = "PCI", ··· 1783 1780 &property_name_chars_strict, 1784 1781 &node_name_chars_strict, 1785 1782 1786 - &addr_size_cells, &reg_format, &ranges_format, 1783 + &addr_size_cells, &reg_format, &ranges_format, &dma_ranges_format, 1787 1784 1788 1785 &unit_address_vs_reg, 1789 1786 &unit_address_format,
-18
scripts/dtc/libfdt/Makefile.libfdt
··· 1 - # SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) 2 - # Makefile.libfdt 3 - # 4 - # This is not a complete Makefile of itself. Instead, it is designed to 5 - # be easily embeddable into other systems of Makefiles. 6 - # 7 - LIBFDT_soname = libfdt.$(SHAREDLIB_EXT).1 8 - LIBFDT_INCLUDES = fdt.h libfdt.h libfdt_env.h 9 - LIBFDT_VERSION = version.lds 10 - LIBFDT_SRCS = fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c fdt_empty_tree.c \ 11 - fdt_addresses.c fdt_overlay.c 12 - LIBFDT_OBJS = $(LIBFDT_SRCS:%.c=%.o) 13 - LIBFDT_LIB = libfdt-$(DTC_VERSION).$(SHAREDLIB_EXT) 14 - 15 - libfdt_clean: 16 - @$(VECHO) CLEAN "(libfdt)" 17 - rm -f $(STD_CLEANFILES:%=$(LIBFDT_dir)/%) 18 - rm -f $(LIBFDT_dir)/$(LIBFDT_soname)
+64 -39
scripts/dtc/libfdt/fdt.c
··· 19 19 { 20 20 uint32_t totalsize = fdt_totalsize(fdt); 21 21 22 + if (can_assume(VALID_DTB)) 23 + return totalsize; 24 + 22 25 if (fdt_magic(fdt) == FDT_MAGIC) { 23 26 /* Complete tree */ 24 - if (fdt_version(fdt) < FDT_FIRST_SUPPORTED_VERSION) 25 - return -FDT_ERR_BADVERSION; 26 - if (fdt_last_comp_version(fdt) > FDT_LAST_SUPPORTED_VERSION) 27 - return -FDT_ERR_BADVERSION; 27 + if (!can_assume(LATEST)) { 28 + if (fdt_version(fdt) < FDT_FIRST_SUPPORTED_VERSION) 29 + return -FDT_ERR_BADVERSION; 30 + if (fdt_last_comp_version(fdt) > 31 + FDT_LAST_SUPPORTED_VERSION) 32 + return -FDT_ERR_BADVERSION; 33 + } 28 34 } else if (fdt_magic(fdt) == FDT_SW_MAGIC) { 29 35 /* Unfinished sequential-write blob */ 30 - if (fdt_size_dt_struct(fdt) == 0) 36 + if (!can_assume(VALID_INPUT) && fdt_size_dt_struct(fdt) == 0) 31 37 return -FDT_ERR_BADSTATE; 32 38 } else { 33 39 return -FDT_ERR_BADMAGIC; ··· 76 70 return FDT_V17_SIZE; 77 71 } 78 72 73 + size_t fdt_header_size(const void *fdt) 74 + { 75 + return can_assume(LATEST) ? FDT_V17_SIZE : 76 + fdt_header_size_(fdt_version(fdt)); 77 + } 78 + 79 79 int fdt_check_header(const void *fdt) 80 80 { 81 81 size_t hdrsize; 82 82 83 83 if (fdt_magic(fdt) != FDT_MAGIC) 84 84 return -FDT_ERR_BADMAGIC; 85 + if (!can_assume(LATEST)) { 86 + if ((fdt_version(fdt) < FDT_FIRST_SUPPORTED_VERSION) 87 + || (fdt_last_comp_version(fdt) > 88 + FDT_LAST_SUPPORTED_VERSION)) 89 + return -FDT_ERR_BADVERSION; 90 + if (fdt_version(fdt) < fdt_last_comp_version(fdt)) 91 + return -FDT_ERR_BADVERSION; 92 + } 85 93 hdrsize = fdt_header_size(fdt); 86 - if ((fdt_version(fdt) < FDT_FIRST_SUPPORTED_VERSION) 87 - || (fdt_last_comp_version(fdt) > FDT_LAST_SUPPORTED_VERSION)) 88 - return -FDT_ERR_BADVERSION; 89 - if (fdt_version(fdt) < fdt_last_comp_version(fdt)) 90 - return -FDT_ERR_BADVERSION; 94 + if (!can_assume(VALID_DTB)) { 91 95 92 - if ((fdt_totalsize(fdt) < hdrsize) 93 - || (fdt_totalsize(fdt) > INT_MAX)) 94 - return -FDT_ERR_TRUNCATED; 95 - 96 - /* Bounds check memrsv block */ 97 - if (!check_off_(hdrsize, fdt_totalsize(fdt), fdt_off_mem_rsvmap(fdt))) 98 - return -FDT_ERR_TRUNCATED; 99 - 100 - /* Bounds check structure block */ 101 - if (fdt_version(fdt) < 17) { 102 - if (!check_off_(hdrsize, fdt_totalsize(fdt), 103 - fdt_off_dt_struct(fdt))) 96 + if ((fdt_totalsize(fdt) < hdrsize) 97 + || (fdt_totalsize(fdt) > INT_MAX)) 104 98 return -FDT_ERR_TRUNCATED; 105 - } else { 106 - if (!check_block_(hdrsize, fdt_totalsize(fdt), 107 - fdt_off_dt_struct(fdt), 108 - fdt_size_dt_struct(fdt))) 99 + 100 + /* Bounds check memrsv block */ 101 + if (!check_off_(hdrsize, fdt_totalsize(fdt), 102 + fdt_off_mem_rsvmap(fdt))) 109 103 return -FDT_ERR_TRUNCATED; 110 104 } 111 105 112 - /* Bounds check strings block */ 113 - if (!check_block_(hdrsize, fdt_totalsize(fdt), 114 - fdt_off_dt_strings(fdt), fdt_size_dt_strings(fdt))) 115 - return -FDT_ERR_TRUNCATED; 106 + if (!can_assume(VALID_DTB)) { 107 + /* Bounds check structure block */ 108 + if (!can_assume(LATEST) && fdt_version(fdt) < 17) { 109 + if (!check_off_(hdrsize, fdt_totalsize(fdt), 110 + fdt_off_dt_struct(fdt))) 111 + return -FDT_ERR_TRUNCATED; 112 + } else { 113 + if (!check_block_(hdrsize, fdt_totalsize(fdt), 114 + fdt_off_dt_struct(fdt), 115 + fdt_size_dt_struct(fdt))) 116 + return -FDT_ERR_TRUNCATED; 117 + } 118 + 119 + /* Bounds check strings block */ 120 + if (!check_block_(hdrsize, fdt_totalsize(fdt), 121 + fdt_off_dt_strings(fdt), 122 + fdt_size_dt_strings(fdt))) 123 + return -FDT_ERR_TRUNCATED; 124 + } 116 125 117 126 return 0; 118 127 } ··· 136 115 { 137 116 unsigned absoffset = offset + fdt_off_dt_struct(fdt); 138 117 139 - if ((absoffset < offset) 140 - || ((absoffset + len) < absoffset) 141 - || (absoffset + len) > fdt_totalsize(fdt)) 142 - return NULL; 118 + if (!can_assume(VALID_INPUT)) 119 + if ((absoffset < offset) 120 + || ((absoffset + len) < absoffset) 121 + || (absoffset + len) > fdt_totalsize(fdt)) 122 + return NULL; 143 123 144 - if (fdt_version(fdt) >= 0x11) 124 + if (can_assume(LATEST) || fdt_version(fdt) >= 0x11) 145 125 if (((offset + len) < offset) 146 126 || ((offset + len) > fdt_size_dt_struct(fdt))) 147 127 return NULL; ··· 159 137 160 138 *nextoffset = -FDT_ERR_TRUNCATED; 161 139 tagp = fdt_offset_ptr(fdt, offset, FDT_TAGSIZE); 162 - if (!tagp) 140 + if (!can_assume(VALID_DTB) && !tagp) 163 141 return FDT_END; /* premature end */ 164 142 tag = fdt32_to_cpu(*tagp); 165 143 offset += FDT_TAGSIZE; ··· 171 149 do { 172 150 p = fdt_offset_ptr(fdt, offset++, 1); 173 151 } while (p && (*p != '\0')); 174 - if (!p) 152 + if (!can_assume(VALID_DTB) && !p) 175 153 return FDT_END; /* premature end */ 176 154 break; 177 155 178 156 case FDT_PROP: 179 157 lenp = fdt_offset_ptr(fdt, offset, sizeof(*lenp)); 180 - if (!lenp) 158 + if (!can_assume(VALID_DTB) && !lenp) 181 159 return FDT_END; /* premature end */ 182 160 /* skip-name offset, length and value */ 183 161 offset += sizeof(struct fdt_property) - FDT_TAGSIZE 184 162 + fdt32_to_cpu(*lenp); 185 - if (fdt_version(fdt) < 0x10 && fdt32_to_cpu(*lenp) >= 8 && 163 + if (!can_assume(LATEST) && 164 + fdt_version(fdt) < 0x10 && fdt32_to_cpu(*lenp) >= 8 && 186 165 ((offset - fdt32_to_cpu(*lenp)) % 8) != 0) 187 166 offset += 4; 188 167 break; ··· 206 183 207 184 int fdt_check_node_offset_(const void *fdt, int offset) 208 185 { 186 + if (can_assume(VALID_INPUT)) 187 + return offset; 209 188 if ((offset < 0) || (offset % FDT_TAGSIZE) 210 189 || (fdt_next_tag(fdt, offset, &offset) != FDT_BEGIN_NODE)) 211 190 return -FDT_ERR_BADOFFSET;
+51 -92
scripts/dtc/libfdt/fdt_ro.c
··· 33 33 34 34 const char *fdt_get_string(const void *fdt, int stroffset, int *lenp) 35 35 { 36 - int32_t totalsize = fdt_ro_probe_(fdt); 37 - uint32_t absoffset = stroffset + fdt_off_dt_strings(fdt); 36 + int32_t totalsize; 37 + uint32_t absoffset; 38 38 size_t len; 39 39 int err; 40 40 const char *s, *n; 41 41 42 + if (can_assume(VALID_INPUT)) { 43 + s = (const char *)fdt + fdt_off_dt_strings(fdt) + stroffset; 44 + 45 + if (lenp) 46 + *lenp = strlen(s); 47 + return s; 48 + } 49 + totalsize = fdt_ro_probe_(fdt); 42 50 err = totalsize; 43 51 if (totalsize < 0) 44 52 goto fail; 45 53 46 54 err = -FDT_ERR_BADOFFSET; 55 + absoffset = stroffset + fdt_off_dt_strings(fdt); 47 56 if (absoffset >= totalsize) 48 57 goto fail; 49 58 len = totalsize - absoffset; ··· 60 51 if (fdt_magic(fdt) == FDT_MAGIC) { 61 52 if (stroffset < 0) 62 53 goto fail; 63 - if (fdt_version(fdt) >= 17) { 54 + if (can_assume(LATEST) || fdt_version(fdt) >= 17) { 64 55 if (stroffset >= fdt_size_dt_strings(fdt)) 65 56 goto fail; 66 57 if ((fdt_size_dt_strings(fdt) - stroffset) < len) ··· 160 151 int offset = n * sizeof(struct fdt_reserve_entry); 161 152 int absoffset = fdt_off_mem_rsvmap(fdt) + offset; 162 153 163 - if (absoffset < fdt_off_mem_rsvmap(fdt)) 164 - return NULL; 165 - if (absoffset > fdt_totalsize(fdt) - sizeof(struct fdt_reserve_entry)) 166 - return NULL; 154 + if (!can_assume(VALID_INPUT)) { 155 + if (absoffset < fdt_off_mem_rsvmap(fdt)) 156 + return NULL; 157 + if (absoffset > fdt_totalsize(fdt) - 158 + sizeof(struct fdt_reserve_entry)) 159 + return NULL; 160 + } 167 161 return fdt_mem_rsv_(fdt, n); 168 162 } 169 163 ··· 176 164 177 165 FDT_RO_PROBE(fdt); 178 166 re = fdt_mem_rsv(fdt, n); 179 - if (!re) 167 + if (!can_assume(VALID_INPUT) && !re) 180 168 return -FDT_ERR_BADOFFSET; 181 169 182 170 *address = fdt64_ld(&re->address); ··· 307 295 308 296 nameptr = nh->name; 309 297 310 - if (fdt_version(fdt) < 0x10) { 298 + if (!can_assume(LATEST) && fdt_version(fdt) < 0x10) { 311 299 /* 312 300 * For old FDT versions, match the naming conventions of V16: 313 301 * give only the leaf name (after all /). The actual tree ··· 358 346 int err; 359 347 const struct fdt_property *prop; 360 348 361 - if ((err = fdt_check_prop_offset_(fdt, offset)) < 0) { 349 + if (!can_assume(VALID_INPUT) && 350 + (err = fdt_check_prop_offset_(fdt, offset)) < 0) { 362 351 if (lenp) 363 352 *lenp = err; 364 353 return NULL; ··· 380 367 /* Prior to version 16, properties may need realignment 381 368 * and this API does not work. fdt_getprop_*() will, however. */ 382 369 383 - if (fdt_version(fdt) < 0x10) { 370 + if (!can_assume(LATEST) && fdt_version(fdt) < 0x10) { 384 371 if (lenp) 385 372 *lenp = -FDT_ERR_BADVERSION; 386 373 return NULL; ··· 401 388 (offset = fdt_next_property_offset(fdt, offset))) { 402 389 const struct fdt_property *prop; 403 390 404 - if (!(prop = fdt_get_property_by_offset_(fdt, offset, lenp))) { 391 + prop = fdt_get_property_by_offset_(fdt, offset, lenp); 392 + if (!can_assume(LIBFDT_FLAWLESS) && !prop) { 405 393 offset = -FDT_ERR_INTERNAL; 406 394 break; 407 395 } ··· 427 413 { 428 414 /* Prior to version 16, properties may need realignment 429 415 * and this API does not work. fdt_getprop_*() will, however. */ 430 - if (fdt_version(fdt) < 0x10) { 416 + if (!can_assume(LATEST) && fdt_version(fdt) < 0x10) { 431 417 if (lenp) 432 418 *lenp = -FDT_ERR_BADVERSION; 433 419 return NULL; ··· 458 444 return NULL; 459 445 460 446 /* Handle realignment */ 461 - if (fdt_version(fdt) < 0x10 && (poffset + sizeof(*prop)) % 8 && 462 - fdt32_ld(&prop->len) >= 8) 447 + if (!can_assume(LATEST) && fdt_version(fdt) < 0x10 && 448 + (poffset + sizeof(*prop)) % 8 && fdt32_ld(&prop->len) >= 8) 463 449 return prop->data + 4; 464 450 return prop->data; 465 451 } ··· 475 461 if (namep) { 476 462 const char *name; 477 463 int namelen; 478 - name = fdt_get_string(fdt, fdt32_ld(&prop->nameoff), 479 - &namelen); 480 - if (!name) { 481 - if (lenp) 482 - *lenp = namelen; 483 - return NULL; 464 + 465 + if (!can_assume(VALID_INPUT)) { 466 + name = fdt_get_string(fdt, fdt32_ld(&prop->nameoff), 467 + &namelen); 468 + if (!name) { 469 + if (lenp) 470 + *lenp = namelen; 471 + return NULL; 472 + } 473 + *namep = name; 474 + } else { 475 + *namep = fdt_string(fdt, fdt32_ld(&prop->nameoff)); 484 476 } 485 - *namep = name; 486 477 } 487 478 488 479 /* Handle realignment */ 489 - if (fdt_version(fdt) < 0x10 && (offset + sizeof(*prop)) % 8 && 490 - fdt32_ld(&prop->len) >= 8) 480 + if (!can_assume(LATEST) && fdt_version(fdt) < 0x10 && 481 + (offset + sizeof(*prop)) % 8 && fdt32_ld(&prop->len) >= 8) 491 482 return prop->data + 4; 492 483 return prop->data; 493 484 } ··· 617 598 } 618 599 } 619 600 620 - if ((offset == -FDT_ERR_NOTFOUND) || (offset >= 0)) 621 - return -FDT_ERR_BADOFFSET; 622 - else if (offset == -FDT_ERR_BADOFFSET) 623 - return -FDT_ERR_BADSTRUCTURE; 601 + if (!can_assume(VALID_INPUT)) { 602 + if ((offset == -FDT_ERR_NOTFOUND) || (offset >= 0)) 603 + return -FDT_ERR_BADOFFSET; 604 + else if (offset == -FDT_ERR_BADOFFSET) 605 + return -FDT_ERR_BADSTRUCTURE; 606 + } 624 607 625 608 return offset; /* error from fdt_next_node() */ 626 609 } ··· 634 613 635 614 err = fdt_supernode_atdepth_offset(fdt, nodeoffset, 0, &nodedepth); 636 615 if (err) 637 - return (err < 0) ? err : -FDT_ERR_INTERNAL; 616 + return (can_assume(LIBFDT_FLAWLESS) || err < 0) ? err : 617 + -FDT_ERR_INTERNAL; 638 618 return nodedepth; 639 619 } 640 620 ··· 854 832 } 855 833 856 834 return offset; /* error from fdt_next_node() */ 857 - } 858 - 859 - int fdt_check_full(const void *fdt, size_t bufsize) 860 - { 861 - int err; 862 - int num_memrsv; 863 - int offset, nextoffset = 0; 864 - uint32_t tag; 865 - unsigned depth = 0; 866 - const void *prop; 867 - const char *propname; 868 - 869 - if (bufsize < FDT_V1_SIZE) 870 - return -FDT_ERR_TRUNCATED; 871 - err = fdt_check_header(fdt); 872 - if (err != 0) 873 - return err; 874 - if (bufsize < fdt_totalsize(fdt)) 875 - return -FDT_ERR_TRUNCATED; 876 - 877 - num_memrsv = fdt_num_mem_rsv(fdt); 878 - if (num_memrsv < 0) 879 - return num_memrsv; 880 - 881 - while (1) { 882 - offset = nextoffset; 883 - tag = fdt_next_tag(fdt, offset, &nextoffset); 884 - 885 - if (nextoffset < 0) 886 - return nextoffset; 887 - 888 - switch (tag) { 889 - case FDT_NOP: 890 - break; 891 - 892 - case FDT_END: 893 - if (depth != 0) 894 - return -FDT_ERR_BADSTRUCTURE; 895 - return 0; 896 - 897 - case FDT_BEGIN_NODE: 898 - depth++; 899 - if (depth > INT_MAX) 900 - return -FDT_ERR_BADSTRUCTURE; 901 - break; 902 - 903 - case FDT_END_NODE: 904 - if (depth == 0) 905 - return -FDT_ERR_BADSTRUCTURE; 906 - depth--; 907 - break; 908 - 909 - case FDT_PROP: 910 - prop = fdt_getprop_by_offset(fdt, offset, &propname, 911 - &err); 912 - if (!prop) 913 - return err; 914 - break; 915 - 916 - default: 917 - return -FDT_ERR_INTERNAL; 918 - } 919 - } 920 835 }
+29 -13
scripts/dtc/libfdt/fdt_rw.c
··· 24 24 25 25 static int fdt_rw_probe_(void *fdt) 26 26 { 27 + if (can_assume(VALID_DTB)) 28 + return 0; 27 29 FDT_RO_PROBE(fdt); 28 30 29 - if (fdt_version(fdt) < 17) 31 + if (!can_assume(LATEST) && fdt_version(fdt) < 17) 30 32 return -FDT_ERR_BADVERSION; 31 33 if (fdt_blocks_misordered_(fdt, sizeof(struct fdt_reserve_entry), 32 34 fdt_size_dt_struct(fdt))) 33 35 return -FDT_ERR_BADLAYOUT; 34 - if (fdt_version(fdt) > 17) 36 + if (!can_assume(LATEST) && fdt_version(fdt) > 17) 35 37 fdt_set_version(fdt, 17); 36 38 37 39 return 0; ··· 46 44 return err_; \ 47 45 } 48 46 49 - static inline int fdt_data_size_(void *fdt) 47 + static inline unsigned int fdt_data_size_(void *fdt) 50 48 { 51 49 return fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt); 52 50 } ··· 54 52 static int fdt_splice_(void *fdt, void *splicepoint, int oldlen, int newlen) 55 53 { 56 54 char *p = splicepoint; 57 - char *end = (char *)fdt + fdt_data_size_(fdt); 55 + unsigned int dsize = fdt_data_size_(fdt); 56 + size_t soff = p - (char *)fdt; 58 57 59 - if (((p + oldlen) < p) || ((p + oldlen) > end)) 58 + if ((oldlen < 0) || (soff + oldlen < soff) || (soff + oldlen > dsize)) 60 59 return -FDT_ERR_BADOFFSET; 61 - if ((p < (char *)fdt) || ((end - oldlen + newlen) < (char *)fdt)) 60 + if ((p < (char *)fdt) || (dsize + newlen < oldlen)) 62 61 return -FDT_ERR_BADOFFSET; 63 - if ((end - oldlen + newlen) > ((char *)fdt + fdt_totalsize(fdt))) 62 + if (dsize - oldlen + newlen > fdt_totalsize(fdt)) 64 63 return -FDT_ERR_NOSPACE; 65 - memmove(p + newlen, p + oldlen, end - p - oldlen); 64 + memmove(p + newlen, p + oldlen, ((char *)fdt + dsize) - (p + oldlen)); 66 65 return 0; 67 66 } 68 67 ··· 115 112 return 0; 116 113 } 117 114 115 + /** 116 + * fdt_find_add_string_() - Find or allocate a string 117 + * 118 + * @fdt: pointer to the device tree to check/adjust 119 + * @s: string to find/add 120 + * @allocated: Set to 0 if the string was found, 1 if not found and so 121 + * allocated. Ignored if can_assume(NO_ROLLBACK) 122 + * @return offset of string in the string table (whether found or added) 123 + */ 118 124 static int fdt_find_add_string_(void *fdt, const char *s, int *allocated) 119 125 { 120 126 char *strtab = (char *)fdt + fdt_off_dt_strings(fdt); ··· 132 120 int len = strlen(s) + 1; 133 121 int err; 134 122 135 - *allocated = 0; 123 + if (!can_assume(NO_ROLLBACK)) 124 + *allocated = 0; 136 125 137 126 p = fdt_find_string_(strtab, fdt_size_dt_strings(fdt), s); 138 127 if (p) ··· 145 132 if (err) 146 133 return err; 147 134 148 - *allocated = 1; 135 + if (!can_assume(NO_ROLLBACK)) 136 + *allocated = 1; 149 137 150 138 memcpy(new, s, len); 151 139 return (new - strtab); ··· 220 206 221 207 err = fdt_splice_struct_(fdt, *prop, 0, proplen); 222 208 if (err) { 223 - if (allocated) 209 + /* Delete the string if we failed to add it */ 210 + if (!can_assume(NO_ROLLBACK) && allocated) 224 211 fdt_del_last_string_(fdt, name); 225 212 return err; 226 213 } ··· 426 411 mem_rsv_size = (fdt_num_mem_rsv(fdt)+1) 427 412 * sizeof(struct fdt_reserve_entry); 428 413 429 - if (fdt_version(fdt) >= 17) { 414 + if (can_assume(LATEST) || fdt_version(fdt) >= 17) { 430 415 struct_size = fdt_size_dt_struct(fdt); 431 416 } else { 432 417 struct_size = 0; ··· 436 421 return struct_size; 437 422 } 438 423 439 - if (!fdt_blocks_misordered_(fdt, mem_rsv_size, struct_size)) { 424 + if (can_assume(LIBFDT_ORDER) | 425 + !fdt_blocks_misordered_(fdt, mem_rsv_size, struct_size)) { 440 426 /* no further work necessary */ 441 427 err = fdt_move(fdt, buf, bufsize); 442 428 if (err)
+12 -7
scripts/dtc/libfdt/fdt_sw.c
··· 12 12 13 13 static int fdt_sw_probe_(void *fdt) 14 14 { 15 - if (fdt_magic(fdt) == FDT_MAGIC) 16 - return -FDT_ERR_BADSTATE; 17 - else if (fdt_magic(fdt) != FDT_SW_MAGIC) 18 - return -FDT_ERR_BADMAGIC; 15 + if (!can_assume(VALID_INPUT)) { 16 + if (fdt_magic(fdt) == FDT_MAGIC) 17 + return -FDT_ERR_BADSTATE; 18 + else if (fdt_magic(fdt) != FDT_SW_MAGIC) 19 + return -FDT_ERR_BADMAGIC; 20 + } 21 + 19 22 return 0; 20 23 } 21 24 ··· 41 38 if (err) 42 39 return err; 43 40 44 - if (fdt_off_dt_strings(fdt) != 0) 41 + if (!can_assume(VALID_INPUT) && fdt_off_dt_strings(fdt) != 0) 45 42 return -FDT_ERR_BADSTATE; 46 43 return 0; 47 44 } ··· 67 64 if (err) 68 65 return err; 69 66 70 - if (fdt_off_dt_strings(fdt) != fdt_totalsize(fdt)) 67 + if (!can_assume(VALID_INPUT) && 68 + fdt_off_dt_strings(fdt) != fdt_totalsize(fdt)) 71 69 return -FDT_ERR_BADSTATE; 72 70 return 0; 73 71 } ··· 155 151 headsize = fdt_off_dt_struct(fdt) + fdt_size_dt_struct(fdt); 156 152 tailsize = fdt_size_dt_strings(fdt); 157 153 158 - if ((headsize + tailsize) > fdt_totalsize(fdt)) 154 + if (!can_assume(VALID_DTB) && 155 + headsize + tailsize > fdt_totalsize(fdt)) 159 156 return -FDT_ERR_INTERNAL; 160 157 161 158 if ((headsize + tailsize) > bufsize)
+5 -4
scripts/dtc/libfdt/libfdt.h
··· 266 266 * fdt_header_size - return the size of the tree's header 267 267 * @fdt: pointer to a flattened device tree 268 268 */ 269 + size_t fdt_header_size(const void *fdt); 270 + 271 + /** 272 + * fdt_header_size_ - internal function which takes a version number 273 + */ 269 274 size_t fdt_header_size_(uint32_t version); 270 - static inline size_t fdt_header_size(const void *fdt) 271 - { 272 - return fdt_header_size_(fdt_version(fdt)); 273 - } 274 275 275 276 /** 276 277 * fdt_check_header - sanity check a device tree header
+122
scripts/dtc/libfdt/libfdt_internal.h
··· 48 48 49 49 #define FDT_SW_MAGIC (~FDT_MAGIC) 50 50 51 + /**********************************************************************/ 52 + /* Checking controls */ 53 + /**********************************************************************/ 54 + 55 + #ifndef FDT_ASSUME_MASK 56 + #define FDT_ASSUME_MASK 0 57 + #endif 58 + 59 + /* 60 + * Defines assumptions which can be enabled. Each of these can be enabled 61 + * individually. For maximum safety, don't enable any assumptions! 62 + * 63 + * For minimal code size and no safety, use ASSUME_PERFECT at your own risk. 64 + * You should have another method of validating the device tree, such as a 65 + * signature or hash check before using libfdt. 66 + * 67 + * For situations where security is not a concern it may be safe to enable 68 + * ASSUME_SANE. 69 + */ 70 + enum { 71 + /* 72 + * This does essentially no checks. Only the latest device-tree 73 + * version is correctly handled. Inconsistencies or errors in the device 74 + * tree may cause undefined behaviour or crashes. Invalid parameters 75 + * passed to libfdt may do the same. 76 + * 77 + * If an error occurs when modifying the tree it may leave the tree in 78 + * an intermediate (but valid) state. As an example, adding a property 79 + * where there is insufficient space may result in the property name 80 + * being added to the string table even though the property itself is 81 + * not added to the struct section. 82 + * 83 + * Only use this if you have a fully validated device tree with 84 + * the latest supported version and wish to minimise code size. 85 + */ 86 + ASSUME_PERFECT = 0xff, 87 + 88 + /* 89 + * This assumes that the device tree is sane. i.e. header metadata 90 + * and basic hierarchy are correct. 91 + * 92 + * With this assumption enabled, normal device trees produced by libfdt 93 + * and the compiler should be handled safely. Malicious device trees and 94 + * complete garbage may cause libfdt to behave badly or crash. Truncated 95 + * device trees (e.g. those only partially loaded) can also cause 96 + * problems. 97 + * 98 + * Note: Only checks that relate exclusively to the device tree itself 99 + * (not the parameters passed to libfdt) are disabled by this 100 + * assumption. This includes checking headers, tags and the like. 101 + */ 102 + ASSUME_VALID_DTB = 1 << 0, 103 + 104 + /* 105 + * This builds on ASSUME_VALID_DTB and further assumes that libfdt 106 + * functions are called with valid parameters, i.e. not trigger 107 + * FDT_ERR_BADOFFSET or offsets that are out of bounds. It disables any 108 + * extensive checking of parameters and the device tree, making various 109 + * assumptions about correctness. 110 + * 111 + * It doesn't make sense to enable this assumption unless 112 + * ASSUME_VALID_DTB is also enabled. 113 + */ 114 + ASSUME_VALID_INPUT = 1 << 1, 115 + 116 + /* 117 + * This disables checks for device-tree version and removes all code 118 + * which handles older versions. 119 + * 120 + * Only enable this if you know you have a device tree with the latest 121 + * version. 122 + */ 123 + ASSUME_LATEST = 1 << 2, 124 + 125 + /* 126 + * This assumes that it is OK for a failed addition to the device tree, 127 + * due to lack of space or some other problem, to skip any rollback 128 + * steps (such as dropping the property name from the string table). 129 + * This is safe to enable in most circumstances, even though it may 130 + * leave the tree in a sub-optimal state. 131 + */ 132 + ASSUME_NO_ROLLBACK = 1 << 3, 133 + 134 + /* 135 + * This assumes that the device tree components appear in a 'convenient' 136 + * order, i.e. the memory reservation block first, then the structure 137 + * block and finally the string block. 138 + * 139 + * This order is not specified by the device-tree specification, 140 + * but is expected by libfdt. The device-tree compiler always created 141 + * device trees with this order. 142 + * 143 + * This assumption disables a check in fdt_open_into() and removes the 144 + * ability to fix the problem there. This is safe if you know that the 145 + * device tree is correctly ordered. See fdt_blocks_misordered_(). 146 + */ 147 + ASSUME_LIBFDT_ORDER = 1 << 4, 148 + 149 + /* 150 + * This assumes that libfdt itself does not have any internal bugs. It 151 + * drops certain checks that should never be needed unless libfdt has an 152 + * undiscovered bug. 153 + * 154 + * This can generally be considered safe to enable. 155 + */ 156 + ASSUME_LIBFDT_FLAWLESS = 1 << 5, 157 + }; 158 + 159 + /** 160 + * can_assume_() - check if a particular assumption is enabled 161 + * 162 + * @mask: Mask to check (ASSUME_...) 163 + * @return true if that assumption is enabled, else false 164 + */ 165 + static inline bool can_assume_(int mask) 166 + { 167 + return FDT_ASSUME_MASK & mask; 168 + } 169 + 170 + /** helper macros for checking assumptions */ 171 + #define can_assume(_assume) can_assume_(ASSUME_ ## _assume) 172 + 51 173 #endif /* LIBFDT_INTERNAL_H */
+2 -2
scripts/dtc/update-dtc-source.sh
··· 32 32 DTC_LINUX_PATH=`pwd`/scripts/dtc 33 33 34 34 DTC_SOURCE="checks.c data.c dtc.c dtc.h flattree.c fstree.c livetree.c srcpos.c \ 35 - srcpos.h treesource.c util.c util.h version_gen.h yamltree.c Makefile.dtc \ 35 + srcpos.h treesource.c util.c util.h version_gen.h yamltree.c \ 36 36 dtc-lexer.l dtc-parser.y" 37 - LIBFDT_SOURCE="Makefile.libfdt fdt.c fdt.h fdt_addresses.c fdt_empty_tree.c \ 37 + LIBFDT_SOURCE="fdt.c fdt.h fdt_addresses.c fdt_empty_tree.c \ 38 38 fdt_overlay.c fdt_ro.c fdt_rw.c fdt_strerror.c fdt_sw.c \ 39 39 fdt_wip.c libfdt.h libfdt_env.h libfdt_internal.h" 40 40
+1 -1
scripts/dtc/version_gen.h
··· 1 - #define DTC_VERSION "DTC 1.5.0-gc40aeb60" 1 + #define DTC_VERSION "DTC 1.6.0-g87a656ae"