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

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

Pull devicetree updates from Rob Herring:

- Convert FPGA bridge, all TPMs (finally), and Rockchip HDMI bindings
to schemas

- Improvements in Samsung GPU schemas

- A few more cases of dropping unneeded quotes in schemas

- Merge QCom idle-states txt binding into common idle-states schema

- Add X1E80100, SM8650, SM8650, and SDX75 SoCs to QCom Power Domain
Controller

- Add NXP i.mx8dl to SCU PD

- Add synaptics r63353 panel controller

- Clarify the wording around the use of 'wakeup-source' property

- Add a DTS coding style doc

- Add smi vendor prefix

- Fix DT_SCHEMA_FILES incorrect matching of paths outside the kernel
tree

- Disable sysfb (e.g. EFI FB) when simple-framebuffer node is present

- Fix double free in of_parse_phandle_with_args_map()

- A couple of kerneldoc fixes

* tag 'devicetree-for-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (37 commits)
of: unittest: Fix of_count_phandle_with_args() expected value message
dt-bindings: fpga: altera: Convert bridge bindings to yaml
dt-bindings: fpga: Convert bridge binding to yaml
dt-bindings: vendor-prefixes: Add smi
dt-bindings: power: Clarify wording for wakeup-source property
of: Fix double free in of_parse_phandle_with_args_map
dt-bindings: ignore paths outside kernel for DT_SCHEMA_FILES
drivers: of: Fixed kernel doc warning
dt-bindings: tpm: Document Microsoft fTPM bindings
dt-bindings: tpm: Convert IBM vTPM bindings to DT schema
dt-bindings: tpm: Convert Google Cr50 bindings to DT schema
dt-bindings: tpm: Consolidate TCG TIS bindings
dt-bindings: display: rockchip,inno-hdmi: Document RK3128 compatible
dt-bindings: arm: Add remote etm dt-binding
dt-bindings: mmc: sdhci-pxa: Fix 'regs' typo
media: dt-bindings: samsung,s5p-mfc: Fix iommu properties schemas
dt-bindings: display: panel: Add synaptics r63353 panel controller
dt-bindings: arm: merge qcom,idle-state with idle-state
dt-bindings: drm: rockchip: convert inno_hdmi-rockchip.txt to yaml
dt-bindings: cache: qcom,llcc: correct QDU1000 reg entries
...

+1426 -598
+1 -1
Documentation/devicetree/bindings/Makefile
··· 28 28 find_all_cmd = find $(srctree)/$(src) \( -name '*.yaml' ! \ 29 29 -name 'processed-schema*' \) 30 30 31 - find_cmd = $(find_all_cmd) | grep -F -e "$(subst :," -e ",$(DT_SCHEMA_FILES))" 31 + find_cmd = $(find_all_cmd) | sed 's|^$(srctree)/$(src)/||' | grep -F -e "$(subst :," -e ",$(DT_SCHEMA_FILES))" | sed 's|^|$(srctree)/$(src)/|' 32 32 CHK_DT_DOCS := $(shell $(find_cmd)) 33 33 34 34 quiet_cmd_yamllint = LINT $(src)
+1 -1
Documentation/devicetree/bindings/arm/calxeda/l2ecc.yaml
··· 16 16 17 17 properties: 18 18 compatible: 19 - const: "calxeda,hb-sregs-l2-ecc" 19 + const: calxeda,hb-sregs-l2-ecc 20 20 21 21 reg: 22 22 maxItems: 1
-84
Documentation/devicetree/bindings/arm/msm/qcom,idle-state.txt
··· 1 - QCOM Idle States for cpuidle driver 2 - 3 - ARM provides idle-state node to define the cpuidle states, as defined in [1]. 4 - cpuidle-qcom is the cpuidle driver for Qualcomm SoCs and uses these idle 5 - states. Idle states have different enter/exit latency and residency values. 6 - The idle states supported by the QCOM SoC are defined as - 7 - 8 - * Standby 9 - * Retention 10 - * Standalone Power Collapse (Standalone PC or SPC) 11 - * Power Collapse (PC) 12 - 13 - Standby: Standby does a little more in addition to architectural clock gating. 14 - When the WFI instruction is executed the ARM core would gate its internal 15 - clocks. In addition to gating the clocks, QCOM cpus use this instruction as a 16 - trigger to execute the SPM state machine. The SPM state machine waits for the 17 - interrupt to trigger the core back in to active. This triggers the cache 18 - hierarchy to enter standby states, when all cpus are idle. An interrupt brings 19 - the SPM state machine out of its wait, the next step is to ensure that the 20 - cache hierarchy is also out of standby, and then the cpu is allowed to resume 21 - execution. This state is defined as a generic ARM WFI state by the ARM cpuidle 22 - driver and is not defined in the DT. The SPM state machine should be 23 - configured to execute this state by default and after executing every other 24 - state below. 25 - 26 - Retention: Retention is a low power state where the core is clock gated and 27 - the memory and the registers associated with the core are retained. The 28 - voltage may be reduced to the minimum value needed to keep the processor 29 - registers active. The SPM should be configured to execute the retention 30 - sequence and would wait for interrupt, before restoring the cpu to execution 31 - state. Retention may have a slightly higher latency than Standby. 32 - 33 - Standalone PC: A cpu can power down and warmboot if there is a sufficient time 34 - between the time it enters idle and the next known wake up. SPC mode is used 35 - to indicate a core entering a power down state without consulting any other 36 - cpu or the system resources. This helps save power only on that core. The SPM 37 - sequence for this idle state is programmed to power down the supply to the 38 - core, wait for the interrupt, restore power to the core, and ensure the 39 - system state including cache hierarchy is ready before allowing core to 40 - resume. Applying power and resetting the core causes the core to warmboot 41 - back into Elevation Level (EL) which trampolines the control back to the 42 - kernel. Entering a power down state for the cpu, needs to be done by trapping 43 - into a EL. Failing to do so, would result in a crash enforced by the warm boot 44 - code in the EL for the SoC. On SoCs with write-back L1 cache, the cache has to 45 - be flushed in s/w, before powering down the core. 46 - 47 - Power Collapse: This state is similar to the SPC mode, but distinguishes 48 - itself in that the cpu acknowledges and permits the SoC to enter deeper sleep 49 - modes. In a hierarchical power domain SoC, this means L2 and other caches can 50 - be flushed, system bus, clocks - lowered, and SoC main XO clock gated and 51 - voltages reduced, provided all cpus enter this state. Since the span of low 52 - power modes possible at this state is vast, the exit latency and the residency 53 - of this low power mode would be considered high even though at a cpu level, 54 - this essentially is cpu power down. The SPM in this state also may handshake 55 - with the Resource power manager (RPM) processor in the SoC to indicate a 56 - complete application processor subsystem shut down. 57 - 58 - The idle-state for QCOM SoCs are distinguished by the compatible property of 59 - the idle-states device node. 60 - 61 - The devicetree representation of the idle state should be - 62 - 63 - Required properties: 64 - 65 - - compatible: Must be one of - 66 - "qcom,idle-state-ret", 67 - "qcom,idle-state-spc", 68 - "qcom,idle-state-pc", 69 - and "arm,idle-state". 70 - 71 - Other required and optional properties are specified in [1]. 72 - 73 - Example: 74 - 75 - idle-states { 76 - CPU_SPC: spc { 77 - compatible = "qcom,idle-state-spc", "arm,idle-state"; 78 - entry-latency-us = <150>; 79 - exit-latency-us = <200>; 80 - min-residency-us = <2000>; 81 - }; 82 - }; 83 - 84 - [1]. Documentation/devicetree/bindings/cpu/idle-states.yaml
+51
Documentation/devicetree/bindings/arm/qcom,coresight-remote-etm.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/qcom,coresight-remote-etm.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Qualcomm Coresight Remote ETM(Embedded Trace Macrocell) 8 + 9 + maintainers: 10 + - Jinlong Mao <quic_jinlmao@quicinc.com> 11 + - Tao Zhang <quic_taozha@quicinc.com> 12 + 13 + description: 14 + Support for ETM trace collection on remote processor using coresight 15 + framework. Enabling this will allow turning on ETM tracing on remote 16 + processor like modem processor via sysfs and collecting the trace 17 + via coresight TMC sinks. 18 + 19 + properties: 20 + compatible: 21 + const: qcom,coresight-remote-etm 22 + 23 + out-ports: 24 + $ref: /schemas/graph.yaml#/properties/ports 25 + additionalProperties: false 26 + 27 + properties: 28 + port: 29 + description: Output connection to the CoreSight Trace bus. 30 + $ref: /schemas/graph.yaml#/properties/port 31 + 32 + required: 33 + - compatible 34 + - out-ports 35 + 36 + additionalProperties: false 37 + 38 + examples: 39 + - | 40 + etm { 41 + compatible = "qcom,coresight-remote-etm"; 42 + 43 + out-ports { 44 + port { 45 + modem_etm0_out_funnel_modem: endpoint { 46 + remote-endpoint = <&funnel_modem_in_modem_etm0>; 47 + }; 48 + }; 49 + }; 50 + }; 51 + ...
+1 -1
Documentation/devicetree/bindings/auxdisplay/hit,hd44780.yaml
··· 113 113 hd44780 { 114 114 compatible = "hit,hd44780"; 115 115 display-height-chars = <2>; 116 - display-width-chars = <16>; 116 + display-width-chars = <16>; 117 117 data-gpios = <&pcf8574 4 0>, 118 118 <&pcf8574 5 0>, 119 119 <&pcf8574 6 0>,
+1 -1
Documentation/devicetree/bindings/cache/qcom,llcc.yaml
··· 66 66 compatible: 67 67 contains: 68 68 enum: 69 + - qcom,qdu1000-llcc 69 70 - qcom,sc7180-llcc 70 71 - qcom,sm6350-llcc 71 72 then: ··· 104 103 compatible: 105 104 contains: 106 105 enum: 107 - - qcom,qdu1000-llcc 108 106 - qcom,sc8180x-llcc 109 107 - qcom,sc8280xp-llcc 110 108 - qcom,x1e80100-llcc
+1 -1
Documentation/devicetree/bindings/clock/baikal,bt1-ccu-pll.yaml
··· 125 125 clk25m: clock-oscillator-25m { 126 126 compatible = "fixed-clock"; 127 127 #clock-cells = <0>; 128 - clock-frequency = <25000000>; 128 + clock-frequency = <25000000>; 129 129 clock-output-names = "clk25m"; 130 130 }; 131 131 ...
+77 -4
Documentation/devicetree/bindings/cpu/idle-states.yaml
··· 243 243 just supports idle_standby, an idle-states node is not required. 244 244 245 245 =========================================== 246 - 6 - References 246 + 6 - Qualcomm specific STATES 247 + =========================================== 248 + 249 + Idle states have different enter/exit latency and residency values. 250 + The idle states supported by the QCOM SoC are defined as - 251 + 252 + * Standby 253 + * Retention 254 + * Standalone Power Collapse (Standalone PC or SPC) 255 + * Power Collapse (PC) 256 + 257 + Standby: Standby does a little more in addition to architectural clock gating. 258 + When the WFI instruction is executed the ARM core would gate its internal 259 + clocks. In addition to gating the clocks, QCOM cpus use this instruction as a 260 + trigger to execute the SPM state machine. The SPM state machine waits for the 261 + interrupt to trigger the core back in to active. This triggers the cache 262 + hierarchy to enter standby states, when all cpus are idle. An interrupt brings 263 + the SPM state machine out of its wait, the next step is to ensure that the 264 + cache hierarchy is also out of standby, and then the cpu is allowed to resume 265 + execution. This state is defined as a generic ARM WFI state by the ARM cpuidle 266 + driver and is not defined in the DT. The SPM state machine should be 267 + configured to execute this state by default and after executing every other 268 + state below. 269 + 270 + Retention: Retention is a low power state where the core is clock gated and 271 + the memory and the registers associated with the core are retained. The 272 + voltage may be reduced to the minimum value needed to keep the processor 273 + registers active. The SPM should be configured to execute the retention 274 + sequence and would wait for interrupt, before restoring the cpu to execution 275 + state. Retention may have a slightly higher latency than Standby. 276 + 277 + Standalone PC: A cpu can power down and warmboot if there is a sufficient time 278 + between the time it enters idle and the next known wake up. SPC mode is used 279 + to indicate a core entering a power down state without consulting any other 280 + cpu or the system resources. This helps save power only on that core. The SPM 281 + sequence for this idle state is programmed to power down the supply to the 282 + core, wait for the interrupt, restore power to the core, and ensure the 283 + system state including cache hierarchy is ready before allowing core to 284 + resume. Applying power and resetting the core causes the core to warmboot 285 + back into Elevation Level (EL) which trampolines the control back to the 286 + kernel. Entering a power down state for the cpu, needs to be done by trapping 287 + into a EL. Failing to do so, would result in a crash enforced by the warm boot 288 + code in the EL for the SoC. On SoCs with write-back L1 cache, the cache has to 289 + be flushed in s/w, before powering down the core. 290 + 291 + Power Collapse: This state is similar to the SPC mode, but distinguishes 292 + itself in that the cpu acknowledges and permits the SoC to enter deeper sleep 293 + modes. In a hierarchical power domain SoC, this means L2 and other caches can 294 + be flushed, system bus, clocks - lowered, and SoC main XO clock gated and 295 + voltages reduced, provided all cpus enter this state. Since the span of low 296 + power modes possible at this state is vast, the exit latency and the residency 297 + of this low power mode would be considered high even though at a cpu level, 298 + this essentially is cpu power down. The SPM in this state also may handshake 299 + with the Resource power manager (RPM) processor in the SoC to indicate a 300 + complete application processor subsystem shut down. 301 + 302 + =========================================== 303 + 7 - References 247 304 =========================================== 248 305 249 306 [1] ARM Linux Kernel documentation - CPUs bindings ··· 358 301 359 302 properties: 360 303 compatible: 361 - enum: 362 - - arm,idle-state 363 - - riscv,idle-state 304 + oneOf: 305 + - items: 306 + - enum: 307 + - qcom,idle-state-ret 308 + - qcom,idle-state-spc 309 + - qcom,idle-state-pc 310 + - const: arm,idle-state 311 + - enum: 312 + - arm,idle-state 313 + - riscv,idle-state 364 314 365 315 arm,psci-suspend-param: 366 316 $ref: /schemas/types.yaml#/definitions/uint32 ··· 916 852 }; 917 853 }; 918 854 855 + // Example 4 - Qualcomm SPC 856 + idle-states { 857 + cpu_spc: cpu-spc { 858 + compatible = "qcom,idle-state-spc", "arm,idle-state"; 859 + entry-latency-us = <150>; 860 + exit-latency-us = <200>; 861 + min-residency-us = <2000>; 862 + }; 863 + }; 919 864 ...
+61
Documentation/devicetree/bindings/display/panel/synaptics,r63353.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/display/panel/synaptics,r63353.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Synaptics R63353 based MIPI-DSI panels 8 + 9 + maintainers: 10 + - Michael Trimarchi <michael@amarulasolutions.com> 11 + 12 + allOf: 13 + - $ref: panel-common.yaml# 14 + 15 + properties: 16 + compatible: 17 + items: 18 + - enum: 19 + - sharp,ls068b3sx02 20 + - const: syna,r63353 21 + 22 + avdd-supply: true 23 + dvdd-supply: true 24 + reg: true 25 + 26 + required: 27 + - compatible 28 + - avdd-supply 29 + - dvdd-supply 30 + - reg 31 + - reset-gpios 32 + - port 33 + - backlight 34 + 35 + unevaluatedProperties: false 36 + 37 + examples: 38 + - | 39 + #include <dt-bindings/gpio/gpio.h> 40 + 41 + dsi { 42 + #address-cells = <1>; 43 + #size-cells = <0>; 44 + 45 + panel@0 { 46 + compatible = "sharp,ls068b3sx02", "syna,r63353"; 47 + reg = <0>; 48 + avdd-supply = <&avdd_display>; 49 + dvdd-supply = <&dvdd_display>; 50 + reset-gpios = <&r_pio 0 5 GPIO_ACTIVE_LOW>; /* PL05 */ 51 + backlight = <&backlight>; 52 + 53 + port { 54 + panel_in: endpoint { 55 + remote-endpoint = <&mipi_dsi_out>; 56 + }; 57 + }; 58 + }; 59 + }; 60 + 61 + ...
-49
Documentation/devicetree/bindings/display/rockchip/inno_hdmi-rockchip.txt
··· 1 - Rockchip specific extensions to the Innosilicon HDMI 2 - ================================ 3 - 4 - Required properties: 5 - - compatible: 6 - "rockchip,rk3036-inno-hdmi"; 7 - - reg: 8 - Physical base address and length of the controller's registers. 9 - - clocks, clock-names: 10 - Phandle to hdmi controller clock, name should be "pclk" 11 - - interrupts: 12 - HDMI interrupt number 13 - - ports: 14 - Contain one port node with endpoint definitions as defined in 15 - Documentation/devicetree/bindings/graph.txt. 16 - - pinctrl-0, pinctrl-name: 17 - Switch the iomux of HPD/CEC pins to HDMI function. 18 - 19 - Example: 20 - hdmi: hdmi@20034000 { 21 - compatible = "rockchip,rk3036-inno-hdmi"; 22 - reg = <0x20034000 0x4000>; 23 - interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>; 24 - clocks = <&cru PCLK_HDMI>; 25 - clock-names = "pclk"; 26 - pinctrl-names = "default"; 27 - pinctrl-0 = <&hdmi_ctl>; 28 - 29 - hdmi_in: port { 30 - #address-cells = <1>; 31 - #size-cells = <0>; 32 - hdmi_in_lcdc: endpoint@0 { 33 - reg = <0>; 34 - remote-endpoint = <&lcdc_out_hdmi>; 35 - }; 36 - }; 37 - }; 38 - 39 - &pinctrl { 40 - hdmi { 41 - hdmi_ctl: hdmi-ctl { 42 - rockchip,pins = <1 8 RK_FUNC_1 &pcfg_pull_none>, 43 - <1 9 RK_FUNC_1 &pcfg_pull_none>, 44 - <1 10 RK_FUNC_1 &pcfg_pull_none>, 45 - <1 11 RK_FUNC_1 &pcfg_pull_none>; 46 - }; 47 - }; 48 - 49 - };
+139
Documentation/devicetree/bindings/display/rockchip/rockchip,inno-hdmi.yaml
··· 1 + # SPDX-License-Identifier: GPL-2.0 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/display/rockchip/rockchip,inno-hdmi.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Rockchip Innosilicon HDMI controller 8 + 9 + maintainers: 10 + - Sandy Huang <hjc@rock-chips.com> 11 + - Heiko Stuebner <heiko@sntech.de> 12 + 13 + properties: 14 + compatible: 15 + enum: 16 + - rockchip,rk3036-inno-hdmi 17 + - rockchip,rk3128-inno-hdmi 18 + 19 + reg: 20 + maxItems: 1 21 + 22 + interrupts: 23 + maxItems: 1 24 + 25 + clocks: 26 + minItems: 1 27 + items: 28 + - description: The HDMI controller main clock 29 + - description: The HDMI PHY reference clock 30 + 31 + clock-names: 32 + minItems: 1 33 + items: 34 + - const: pclk 35 + - const: ref 36 + 37 + power-domains: 38 + maxItems: 1 39 + 40 + ports: 41 + $ref: /schemas/graph.yaml#/properties/ports 42 + 43 + properties: 44 + port@0: 45 + $ref: /schemas/graph.yaml#/properties/port 46 + description: 47 + Port node with one endpoint connected to a vop node. 48 + 49 + port@1: 50 + $ref: /schemas/graph.yaml#/properties/port 51 + description: 52 + Port node with one endpoint connected to a hdmi-connector node. 53 + 54 + required: 55 + - port@0 56 + - port@1 57 + 58 + required: 59 + - compatible 60 + - reg 61 + - interrupts 62 + - clocks 63 + - clock-names 64 + - pinctrl-0 65 + - pinctrl-names 66 + - ports 67 + 68 + allOf: 69 + - if: 70 + properties: 71 + compatible: 72 + contains: 73 + const: rockchip,rk3036-inno-hdmi 74 + 75 + then: 76 + properties: 77 + power-domains: false 78 + 79 + - if: 80 + properties: 81 + compatible: 82 + contains: 83 + const: rockchip,rk3128-inno-hdmi 84 + 85 + then: 86 + properties: 87 + clocks: 88 + minItems: 2 89 + clock-names: 90 + minItems: 2 91 + required: 92 + - power-domains 93 + 94 + additionalProperties: false 95 + 96 + examples: 97 + - | 98 + #include <dt-bindings/clock/rk3036-cru.h> 99 + #include <dt-bindings/interrupt-controller/arm-gic.h> 100 + #include <dt-bindings/pinctrl/rockchip.h> 101 + hdmi: hdmi@20034000 { 102 + compatible = "rockchip,rk3036-inno-hdmi"; 103 + reg = <0x20034000 0x4000>; 104 + interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>; 105 + clocks = <&cru PCLK_HDMI>; 106 + clock-names = "pclk"; 107 + pinctrl-names = "default"; 108 + pinctrl-0 = <&hdmi_ctl>; 109 + 110 + ports { 111 + #address-cells = <1>; 112 + #size-cells = <0>; 113 + 114 + hdmi_in: port@0 { 115 + reg = <0>; 116 + hdmi_in_vop: endpoint { 117 + remote-endpoint = <&vop_out_hdmi>; 118 + }; 119 + }; 120 + 121 + hdmi_out: port@1 { 122 + reg = <1>; 123 + hdmi_out_con: endpoint { 124 + remote-endpoint = <&hdmi_con_in>; 125 + }; 126 + }; 127 + }; 128 + }; 129 + 130 + pinctrl { 131 + hdmi { 132 + hdmi_ctl: hdmi-ctl { 133 + rockchip,pins = <1 RK_PB0 1 &pcfg_pull_none>, 134 + <1 RK_PB1 1 &pcfg_pull_none>, 135 + <1 RK_PB2 1 &pcfg_pull_none>, 136 + <1 RK_PB3 1 &pcfg_pull_none>; 137 + }; 138 + }; 139 + };
+196
Documentation/devicetree/bindings/dts-coding-style.rst
··· 1 + .. SPDX-License-Identifier: GPL-2.0 2 + 3 + ===================================== 4 + Devicetree Sources (DTS) Coding Style 5 + ===================================== 6 + 7 + When writing Devicetree Sources (DTS) please observe below guidelines. They 8 + should be considered complementary to any rules expressed already in 9 + the Devicetree Specification and the dtc compiler (including W=1 and W=2 10 + builds). 11 + 12 + Individual architectures and subarchitectures can define additional rules, 13 + making the coding style stricter. 14 + 15 + Naming and Valid Characters 16 + --------------------------- 17 + 18 + The Devicetree Specification allows a broad range of characters in node 19 + and property names, but this coding style narrows the range down to achieve 20 + better code readability. 21 + 22 + 1. Node and property names can use only the following characters: 23 + 24 + * Lowercase characters: [a-z] 25 + * Digits: [0-9] 26 + * Dash: - 27 + 28 + 2. Labels can use only the following characters: 29 + 30 + * Lowercase characters: [a-z] 31 + * Digits: [0-9] 32 + * Underscore: _ 33 + 34 + 3. Unless a bus defines differently, unit addresses shall use lowercase 35 + hexadecimal digits, without leading zeros (padding). 36 + 37 + 4. Hex values in properties, e.g. "reg", shall use lowercase hex. The address 38 + part can be padded with leading zeros. 39 + 40 + Example:: 41 + 42 + gpi_dma2: dma-controller@a00000 { 43 + compatible = "qcom,sm8550-gpi-dma", "qcom,sm6350-gpi-dma"; 44 + reg = <0x0 0x00a00000 0x0 0x60000>; 45 + } 46 + 47 + Order of Nodes 48 + -------------- 49 + 50 + 1. Nodes on any bus, thus using unit addresses for children, shall be 51 + ordered by unit address in ascending order. 52 + Alternatively for some subarchitectures, nodes of the same type can be 53 + grouped together, e.g. all I2C controllers one after another even if this 54 + breaks unit address ordering. 55 + 56 + 2. Nodes without unit addresses shall be ordered alpha-numerically by the node 57 + name. For a few node types, they can be ordered by the main property, e.g. 58 + pin configuration states ordered by value of "pins" property. 59 + 60 + 3. When extending nodes in the board DTS via &label, the entries shall be 61 + ordered either alpha-numerically or by keeping the order from DTSI, where 62 + the choice depends on the subarchitecture. 63 + 64 + The above-described ordering rules are easy to enforce during review, reduce 65 + chances of conflicts for simultaneous additions of new nodes to a file and help 66 + in navigating through the DTS source. 67 + 68 + Example:: 69 + 70 + /* SoC DTSI */ 71 + 72 + / { 73 + cpus { 74 + /* ... */ 75 + }; 76 + 77 + psci { 78 + /* ... */ 79 + }; 80 + 81 + soc@0 { 82 + dma: dma-controller@10000 { 83 + /* ... */ 84 + }; 85 + 86 + clk: clock-controller@80000 { 87 + /* ... */ 88 + }; 89 + }; 90 + }; 91 + 92 + /* Board DTS - alphabetical order */ 93 + 94 + &clk { 95 + /* ... */ 96 + }; 97 + 98 + &dma { 99 + /* ... */ 100 + }; 101 + 102 + /* Board DTS - alternative order, keep as DTSI */ 103 + 104 + &dma { 105 + /* ... */ 106 + }; 107 + 108 + &clk { 109 + /* ... */ 110 + }; 111 + 112 + Order of Properties in Device Node 113 + ---------------------------------- 114 + 115 + The following order of properties in device nodes is preferred: 116 + 117 + 1. "compatible" 118 + 2. "reg" 119 + 3. "ranges" 120 + 4. Standard/common properties (defined by common bindings, e.g. without 121 + vendor-prefixes) 122 + 5. Vendor-specific properties 123 + 6. "status" (if applicable) 124 + 7. Child nodes, where each node is preceded with a blank line 125 + 126 + The "status" property is by default "okay", thus it can be omitted. 127 + 128 + The above-described ordering follows this approach: 129 + 130 + 1. Most important properties start the node: compatible then bus addressing to 131 + match unit address. 132 + 2. Each node will have common properties in similar place. 133 + 3. Status is the last information to annotate that device node is or is not 134 + finished (board resources are needed). 135 + 136 + Example:: 137 + 138 + /* SoC DTSI */ 139 + 140 + device_node: device-class@6789abc { 141 + compatible = "vendor,device"; 142 + reg = <0x0 0x06789abc 0x0 0xa123>; 143 + ranges = <0x0 0x0 0x06789abc 0x1000>; 144 + #dma-cells = <1>; 145 + clocks = <&clock_controller 0>, <&clock_controller 1>; 146 + clock-names = "bus", "host"; 147 + vendor,custom-property = <2>; 148 + status = "disabled"; 149 + 150 + child_node: child-class@100 { 151 + reg = <0x100 0x200>; 152 + /* ... */ 153 + }; 154 + }; 155 + 156 + /* Board DTS */ 157 + 158 + &device_node { 159 + vdd-supply = <&board_vreg1>; 160 + status = "okay"; 161 + } 162 + 163 + Indentation 164 + ----------- 165 + 166 + 1. Use indentation according to Documentation/process/coding-style.rst. 167 + 2. Each entry in arrays with multiple cells, e.g. "reg" with two IO addresses, 168 + shall be enclosed in <>. 169 + 3. For arrays spanning across lines, it is preferred to align the continued 170 + entries with opening < from the first line. 171 + 172 + Example:: 173 + 174 + thermal-sensor@c271000 { 175 + compatible = "qcom,sm8550-tsens", "qcom,tsens-v2"; 176 + reg = <0x0 0x0c271000 0x0 0x1000>, 177 + <0x0 0x0c222000 0x0 0x1000>; 178 + }; 179 + 180 + Organizing DTSI and DTS 181 + ----------------------- 182 + 183 + The DTSI and DTS files shall be organized in a way representing the common, 184 + reusable parts of hardware. Typically, this means organizing DTSI and DTS files 185 + into several files: 186 + 187 + 1. DTSI with contents of the entire SoC, without nodes for hardware not present 188 + on the SoC. 189 + 2. If applicable: DTSI with common or re-usable parts of the hardware, e.g. 190 + entire System-on-Module. 191 + 3. DTS representing the board. 192 + 193 + Hardware components that are present on the board shall be placed in the 194 + board DTS, not in the SoC or SoM DTSI. A partial exception is a common 195 + external reference SoC input clock, which could be coded as a fixed-clock in 196 + the SoC DTSI with its frequency provided by each board DTS.
-13
Documentation/devicetree/bindings/fpga/altera-fpga2sdram-bridge.txt
··· 1 - Altera FPGA To SDRAM Bridge Driver 2 - 3 - Required properties: 4 - - compatible : Should contain "altr,socfpga-fpga2sdram-bridge" 5 - 6 - See Documentation/devicetree/bindings/fpga/fpga-bridge.txt for generic bindings. 7 - 8 - Example: 9 - fpga_bridge3: fpga-bridge@ffc25080 { 10 - compatible = "altr,socfpga-fpga2sdram-bridge"; 11 - reg = <0xffc25080 0x4>; 12 - bridge-enable = <0>; 13 - };
-20
Documentation/devicetree/bindings/fpga/altera-freeze-bridge.txt
··· 1 - Altera Freeze Bridge Controller Driver 2 - 3 - The Altera Freeze Bridge Controller manages one or more freeze bridges. 4 - The controller can freeze/disable the bridges which prevents signal 5 - changes from passing through the bridge. The controller can also 6 - unfreeze/enable the bridges which allows traffic to pass through the 7 - bridge normally. 8 - 9 - Required properties: 10 - - compatible : Should contain "altr,freeze-bridge-controller" 11 - - regs : base address and size for freeze bridge module 12 - 13 - See Documentation/devicetree/bindings/fpga/fpga-bridge.txt for generic bindings. 14 - 15 - Example: 16 - freeze-controller@100000450 { 17 - compatible = "altr,freeze-bridge-controller"; 18 - regs = <0x1000 0x10>; 19 - bridge-enable = <0>; 20 - };
-36
Documentation/devicetree/bindings/fpga/altera-hps2fpga-bridge.txt
··· 1 - Altera FPGA/HPS Bridge Driver 2 - 3 - Required properties: 4 - - regs : base address and size for AXI bridge module 5 - - compatible : Should contain one of: 6 - "altr,socfpga-lwhps2fpga-bridge", 7 - "altr,socfpga-hps2fpga-bridge", or 8 - "altr,socfpga-fpga2hps-bridge" 9 - - resets : Phandle and reset specifier for this bridge's reset 10 - - clocks : Clocks used by this module. 11 - 12 - See Documentation/devicetree/bindings/fpga/fpga-bridge.txt for generic bindings. 13 - 14 - Example: 15 - fpga_bridge0: fpga-bridge@ff400000 { 16 - compatible = "altr,socfpga-lwhps2fpga-bridge"; 17 - reg = <0xff400000 0x100000>; 18 - resets = <&rst LWHPS2FPGA_RESET>; 19 - clocks = <&l4_main_clk>; 20 - bridge-enable = <0>; 21 - }; 22 - 23 - fpga_bridge1: fpga-bridge@ff500000 { 24 - compatible = "altr,socfpga-hps2fpga-bridge"; 25 - reg = <0xff500000 0x10000>; 26 - resets = <&rst HPS2FPGA_RESET>; 27 - clocks = <&l4_main_clk>; 28 - bridge-enable = <1>; 29 - }; 30 - 31 - fpga_bridge2: fpga-bridge@ff600000 { 32 - compatible = "altr,socfpga-fpga2hps-bridge"; 33 - reg = <0xff600000 0x100000>; 34 - resets = <&rst FPGA2HPS_RESET>; 35 - clocks = <&l4_main_clk>; 36 - };
+41
Documentation/devicetree/bindings/fpga/altr,freeze-bridge-controller.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/fpga/altr,freeze-bridge-controller.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Altera Freeze Bridge Controller 8 + 9 + description: 10 + The Altera Freeze Bridge Controller manages one or more freeze bridges. 11 + The controller can freeze/disable the bridges which prevents signal 12 + changes from passing through the bridge. The controller can also 13 + unfreeze/enable the bridges which allows traffic to pass through the bridge 14 + normally. 15 + 16 + maintainers: 17 + - Xu Yilun <yilun.xu@intel.com> 18 + 19 + allOf: 20 + - $ref: fpga-bridge.yaml# 21 + 22 + properties: 23 + compatible: 24 + const: altr,freeze-bridge-controller 25 + 26 + reg: 27 + maxItems: 1 28 + 29 + required: 30 + - compatible 31 + - reg 32 + 33 + unevaluatedProperties: false 34 + 35 + examples: 36 + - | 37 + fpga-bridge@100000450 { 38 + compatible = "altr,freeze-bridge-controller"; 39 + reg = <0x1000 0x10>; 40 + bridge-enable = <0>; 41 + };
+33
Documentation/devicetree/bindings/fpga/altr,socfpga-fpga2sdram-bridge.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/fpga/altr,socfpga-fpga2sdram-bridge.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Altera FPGA To SDRAM Bridge 8 + 9 + maintainers: 10 + - Xu Yilun <yilun.xu@intel.com> 11 + 12 + allOf: 13 + - $ref: fpga-bridge.yaml# 14 + 15 + properties: 16 + compatible: 17 + const: altr,socfpga-fpga2sdram-bridge 18 + 19 + reg: 20 + maxItems: 1 21 + 22 + required: 23 + - compatible 24 + 25 + unevaluatedProperties: false 26 + 27 + examples: 28 + - | 29 + fpga-bridge@ffc25080 { 30 + compatible = "altr,socfpga-fpga2sdram-bridge"; 31 + reg = <0xffc25080 0x4>; 32 + bridge-enable = <0>; 33 + };
+49
Documentation/devicetree/bindings/fpga/altr,socfpga-hps2fpga-bridge.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/fpga/altr,socfpga-hps2fpga-bridge.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Altera FPGA/HPS Bridge 8 + 9 + maintainers: 10 + - Xu Yilun <yilun.xu@intel.com> 11 + 12 + allOf: 13 + - $ref: fpga-bridge.yaml# 14 + 15 + properties: 16 + compatible: 17 + enum: 18 + - altr,socfpga-lwhps2fpga-bridge 19 + - altr,socfpga-hps2fpga-bridge 20 + - altr,socfpga-fpga2hps-bridge 21 + 22 + reg: 23 + maxItems: 1 24 + 25 + resets: 26 + maxItems: 1 27 + 28 + clocks: 29 + maxItems: 1 30 + 31 + required: 32 + - compatible 33 + - reg 34 + - clocks 35 + - resets 36 + 37 + unevaluatedProperties: false 38 + 39 + examples: 40 + - | 41 + #include <dt-bindings/reset/altr,rst-mgr.h> 42 + 43 + fpga-bridge@ff400000 { 44 + compatible = "altr,socfpga-lwhps2fpga-bridge"; 45 + reg = <0xff400000 0x100000>; 46 + bridge-enable = <0>; 47 + clocks = <&l4_main_clk>; 48 + resets = <&rst LWHPS2FPGA_RESET>; 49 + };
-13
Documentation/devicetree/bindings/fpga/fpga-bridge.txt
··· 1 - FPGA Bridge Device Tree Binding 2 - 3 - Optional properties: 4 - - bridge-enable : 0 if driver should disable bridge at startup 5 - 1 if driver should enable bridge at startup 6 - Default is to leave bridge in current state. 7 - 8 - Example: 9 - fpga_bridge3: fpga-bridge@ffc25080 { 10 - compatible = "altr,socfpga-fpga2sdram-bridge"; 11 - reg = <0xffc25080 0x4>; 12 - bridge-enable = <0>; 13 - };
+30
Documentation/devicetree/bindings/fpga/fpga-bridge.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/fpga/fpga-bridge.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: FPGA Bridge 8 + 9 + maintainers: 10 + - Michal Simek <michal.simek@amd.com> 11 + 12 + properties: 13 + $nodename: 14 + pattern: "^fpga-bridge(@.*|-([0-9]|[1-9][0-9]+))?$" 15 + 16 + bridge-enable: 17 + description: | 18 + 0 if driver should disable bridge at startup 19 + 1 if driver should enable bridge at startup 20 + Default is to leave bridge in current state. 21 + $ref: /schemas/types.yaml#/definitions/uint32 22 + enum: [ 0, 1 ] 23 + 24 + additionalProperties: true 25 + 26 + examples: 27 + - | 28 + fpga-bridge { 29 + bridge-enable = <0>; 30 + };
+4 -1
Documentation/devicetree/bindings/fpga/xlnx,pr-decoupler.yaml
··· 9 9 maintainers: 10 10 - Nava kishore Manne <nava.kishore.manne@amd.com> 11 11 12 + allOf: 13 + - $ref: fpga-bridge.yaml# 14 + 12 15 description: | 13 16 The Xilinx LogiCORE Partial Reconfig(PR) Decoupler manages one or more 14 17 decouplers/fpga bridges. The controller can decouple/disable the bridges ··· 54 51 - clocks 55 52 - clock-names 56 53 57 - additionalProperties: false 54 + unevaluatedProperties: false 58 55 59 56 examples: 60 57 - |
+38 -27
Documentation/devicetree/bindings/gpu/samsung-g2d.yaml
··· 22 22 interrupts: 23 23 maxItems: 1 24 24 25 - clocks: {} 26 - clock-names: {} 27 - iommus: {} 28 - power-domains: {} 25 + clocks: 26 + minItems: 1 27 + maxItems: 2 29 28 30 - if: 31 - properties: 32 - compatible: 33 - contains: 34 - const: samsung,exynos5250-g2d 29 + clock-names: 30 + minItems: 1 31 + maxItems: 2 35 32 36 - then: 37 - properties: 38 - clocks: 39 - items: 40 - - description: fimg2d clock 41 - clock-names: 42 - items: 43 - - const: fimg2d 33 + iommus: 34 + minItems: 1 35 + maxItems: 2 44 36 45 - else: 46 - properties: 47 - clocks: 48 - items: 49 - - description: sclk_fimg2d clock 50 - - description: fimg2d clock 51 - clock-names: 52 - items: 53 - - const: sclk_fimg2d 54 - - const: fimg2d 37 + power-domains: 38 + maxItems: 1 55 39 56 40 required: 57 41 - compatible ··· 43 59 - interrupts 44 60 - clocks 45 61 - clock-names 62 + 63 + allOf: 64 + - if: 65 + properties: 66 + compatible: 67 + contains: 68 + const: samsung,exynos5250-g2d 69 + 70 + then: 71 + properties: 72 + clocks: 73 + items: 74 + - description: fimg2d clock 75 + clock-names: 76 + items: 77 + - const: fimg2d 78 + 79 + else: 80 + properties: 81 + clocks: 82 + items: 83 + - description: sclk_fimg2d clock 84 + - description: fimg2d clock 85 + clock-names: 86 + items: 87 + - const: sclk_fimg2d 88 + - const: fimg2d 46 89 47 90 additionalProperties: false 48 91
+5 -4
Documentation/devicetree/bindings/gpu/samsung-rotator.yaml
··· 12 12 properties: 13 13 compatible: 14 14 enum: 15 - - "samsung,s5pv210-rotator" 16 - - "samsung,exynos4210-rotator" 17 - - "samsung,exynos4212-rotator" 18 - - "samsung,exynos5250-rotator" 15 + - samsung,s5pv210-rotator 16 + - samsung,exynos4210-rotator 17 + - samsung,exynos4212-rotator 18 + - samsung,exynos5250-rotator 19 + 19 20 reg: 20 21 maxItems: 1 21 22
+44 -31
Documentation/devicetree/bindings/gpu/samsung-scaler.yaml
··· 21 21 interrupts: 22 22 maxItems: 1 23 23 24 - clocks: {} 25 - clock-names: {} 26 - iommus: {} 27 - power-domains: {} 24 + clocks: 25 + minItems: 1 26 + maxItems: 3 28 27 29 - if: 30 - properties: 31 - compatible: 32 - contains: 33 - const: samsung,exynos5420-scaler 28 + clock-names: 29 + minItems: 1 30 + maxItems: 3 34 31 35 - then: 36 - properties: 37 - clocks: 38 - items: 39 - - description: mscl clock 32 + iommus: 33 + minItems: 1 34 + maxItems: 2 40 35 41 - clock-names: 42 - items: 43 - - const: mscl 44 - 45 - else: 46 - properties: 47 - clocks: 48 - items: 49 - - description: pclk clock 50 - - description: aclk clock 51 - - description: aclk_xiu clock 52 - 53 - clock-names: 54 - items: 55 - - const: pclk 56 - - const: aclk 57 - - const: aclk_xiu 36 + power-domains: 37 + maxItems: 1 58 38 59 39 required: 60 40 - compatible ··· 42 62 - interrupts 43 63 - clocks 44 64 - clock-names 65 + 66 + allOf: 67 + - if: 68 + properties: 69 + compatible: 70 + contains: 71 + const: samsung,exynos5420-scaler 72 + 73 + then: 74 + properties: 75 + clocks: 76 + items: 77 + - description: mscl clock 78 + clock-names: 79 + items: 80 + - const: mscl 81 + iommus: 82 + minItems: 2 83 + 84 + else: 85 + properties: 86 + clocks: 87 + items: 88 + - description: pclk clock 89 + - description: aclk clock 90 + - description: aclk_xiu clock 91 + clock-names: 92 + items: 93 + - const: pclk 94 + - const: aclk 95 + - const: aclk_xiu 96 + iommus: 97 + maxItems: 1 45 98 46 99 additionalProperties: false 47 100
+3 -3
Documentation/devicetree/bindings/iio/adc/adi,ad7780.yaml
··· 80 80 compatible = "adi,ad7780"; 81 81 reg = <0>; 82 82 83 - avdd-supply = <&vdd_supply>; 84 - powerdown-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>; 85 - adi,gain-gpios = <&gpio1 5 GPIO_ACTIVE_LOW>; 83 + avdd-supply = <&vdd_supply>; 84 + powerdown-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>; 85 + adi,gain-gpios = <&gpio1 5 GPIO_ACTIVE_LOW>; 86 86 adi,filter-gpios = <&gpio2 15 GPIO_ACTIVE_LOW>; 87 87 }; 88 88 };
+1 -1
Documentation/devicetree/bindings/iio/adc/qcom,spmi-iadc.yaml
··· 58 58 reg = <0x3600>; 59 59 interrupts = <0x0 0x36 0x0 IRQ_TYPE_EDGE_RISING>; 60 60 qcom,external-resistor-micro-ohms = <10000>; 61 - #io-channel-cells = <1>; 61 + #io-channel-cells = <1>; 62 62 }; 63 63 }; 64 64 ...
+1 -1
Documentation/devicetree/bindings/iio/adc/qcom,spmi-rradc.yaml
··· 46 46 pmic_rradc: adc@4500 { 47 47 compatible = "qcom,pmi8998-rradc"; 48 48 reg = <0x4500>; 49 - #io-channel-cells = <1>; 49 + #io-channel-cells = <1>; 50 50 }; 51 51 };
+1
Documentation/devicetree/bindings/index.rst
··· 4 4 :maxdepth: 1 5 5 6 6 ABI 7 + dts-coding-style 7 8 writing-bindings 8 9 writing-schema 9 10 submitting-patches
+4
Documentation/devicetree/bindings/interrupt-controller/qcom,pdc.yaml
··· 35 35 - qcom,sdm845-pdc 36 36 - qcom,sdx55-pdc 37 37 - qcom,sdx65-pdc 38 + - qcom,sdx75-pdc 38 39 - qcom,sm4450-pdc 39 40 - qcom,sm6350-pdc 40 41 - qcom,sm8150-pdc 41 42 - qcom,sm8250-pdc 42 43 - qcom,sm8350-pdc 43 44 - qcom,sm8450-pdc 45 + - qcom,sm8550-pdc 46 + - qcom,sm8650-pdc 47 + - qcom,x1e80100-pdc 44 48 - const: qcom,pdc 45 49 46 50 reg:
+2 -2
Documentation/devicetree/bindings/interrupt-controller/st,stih407-irq-syscfg.yaml
··· 55 55 - | 56 56 #include <dt-bindings/interrupt-controller/irq-st.h> 57 57 irq-syscfg { 58 - compatible = "st,stih407-irq-syscfg"; 59 - st,syscfg = <&syscfg_cpu>; 58 + compatible = "st,stih407-irq-syscfg"; 59 + st,syscfg = <&syscfg_cpu>; 60 60 st,irq-device = <ST_IRQ_SYSCFG_PMU_0>, 61 61 <ST_IRQ_SYSCFG_PMU_1>; 62 62 st,fiq-device = <ST_IRQ_SYSCFG_DISABLED>,
+13 -20
Documentation/devicetree/bindings/media/samsung,s5p-mfc.yaml
··· 50 50 51 51 iommu-names: 52 52 minItems: 1 53 - maxItems: 2 53 + items: 54 + - const: left 55 + - const: right 54 56 55 57 power-domains: 56 58 maxItems: 1 ··· 87 85 - const: sclk_mfc 88 86 iommus: 89 87 maxItems: 1 90 - iommus-names: false 88 + iommu-names: false 91 89 92 90 - if: 93 91 properties: ··· 105 103 - const: aclk 106 104 - const: aclk_xiu 107 105 iommus: 108 - maxItems: 2 109 - iommus-names: 110 - items: 111 - - const: left 112 - - const: right 106 + minItems: 2 107 + iommu-names: 108 + minItems: 2 113 109 114 110 - if: 115 111 properties: ··· 124 124 - const: mfc 125 125 - const: sclk_mfc 126 126 iommus: 127 - maxItems: 2 128 - iommus-names: 129 - items: 130 - - const: left 131 - - const: right 127 + minItems: 2 128 + iommu-names: 129 + minItems: 2 132 130 133 131 - if: 134 132 properties: ··· 143 145 items: 144 146 - const: mfc 145 147 iommus: 146 - maxItems: 2 147 - iommus-names: 148 - items: 149 - - const: left 150 - - const: right 148 + minItems: 2 149 + iommu-names: 150 + minItems: 2 151 151 152 152 - if: 153 153 properties: ··· 156 160 then: 157 161 properties: 158 162 clocks: 159 - minItems: 1 160 - maxItems: 2 161 - iommus: 162 163 minItems: 1 163 164 maxItems: 2 164 165
+1 -1
Documentation/devicetree/bindings/misc/fsl,dpaa2-console.yaml
··· 12 12 13 13 properties: 14 14 compatible: 15 - const: "fsl,dpaa2-console" 15 + const: fsl,dpaa2-console 16 16 17 17 reg: 18 18 maxItems: 1
+1 -1
Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
··· 203 203 bus-width = <4>; 204 204 cap-sd-highspeed; 205 205 cap-mmc-highspeed; 206 - cd-gpios = <&gpio2 31 0x4>; 206 + cd-gpios = <&gpio2 31 0x4>; 207 207 st,sig-dir-dat0; 208 208 st,sig-dir-dat2; 209 209 st,sig-dir-cmd;
+2 -2
Documentation/devicetree/bindings/mmc/sdhci-pxa.yaml
··· 18 18 const: marvell,armada-380-sdhci 19 19 then: 20 20 properties: 21 - regs: 21 + reg: 22 22 minItems: 3 23 23 reg-names: 24 24 minItems: 3 ··· 26 26 - reg-names 27 27 else: 28 28 properties: 29 - regs: 29 + reg: 30 30 maxItems: 1 31 31 reg-names: 32 32 maxItems: 1
+1 -1
Documentation/devicetree/bindings/net/sff,sfp.yaml
··· 120 120 pinctrl-names = "default"; 121 121 pinctrl-0 = <&cps_sfpp0_pins>; 122 122 tx-disable-gpios = <&cps_gpio1 29 GPIO_ACTIVE_HIGH>; 123 - tx-fault-gpios = <&cps_gpio1 26 GPIO_ACTIVE_HIGH>; 123 + tx-fault-gpios = <&cps_gpio1 26 GPIO_ACTIVE_HIGH>; 124 124 }; 125 125 126 126 mdio {
+1 -1
Documentation/devicetree/bindings/pci/toshiba,visconti-pcie.yaml
··· 83 83 <0x0 0x28050000 0x0 0x00010000>, 84 84 <0x0 0x24200000 0x0 0x00002000>, 85 85 <0x0 0x24162000 0x0 0x00001000>; 86 - reg-names = "dbi", "config", "ulreg", "smu", "mpu"; 86 + reg-names = "dbi", "config", "ulreg", "smu", "mpu"; 87 87 device_type = "pci"; 88 88 bus-range = <0x00 0xff>; 89 89 num-lanes = <2>;
+3 -3
Documentation/devicetree/bindings/pinctrl/renesas,rzg2l-pinctrl.yaml
··· 185 185 sd1_mux { 186 186 pinmux = <RZG2L_PORT_PINMUX(19, 0, 1)>, /* CD */ 187 187 <RZG2L_PORT_PINMUX(19, 1, 1)>; /* WP */ 188 - power-source = <3300>; 188 + power-source = <3300>; 189 189 }; 190 190 191 191 sd1_data { 192 192 pins = "SD1_DATA0", "SD1_DATA1", "SD1_DATA2", "SD1_DATA3"; 193 - power-source = <3300>; 193 + power-source = <3300>; 194 194 }; 195 195 196 196 sd1_ctrl { 197 197 pins = "SD1_CLK", "SD1_CMD"; 198 - power-source = <3300>; 198 + power-source = <3300>; 199 199 }; 200 200 }; 201 201 };
+1
Documentation/devicetree/bindings/power/fsl,scu-pd.yaml
··· 20 20 compatible: 21 21 items: 22 22 - enum: 23 + - fsl,imx8dl-scu-pd 23 24 - fsl,imx8qm-scu-pd 24 25 - fsl,imx8qxp-scu-pd 25 26 - const: fsl,scu-pd
+4 -4
Documentation/devicetree/bindings/power/supply/richtek,rt9455.yaml
··· 79 79 interrupt-parent = <&gpio1>; 80 80 interrupts = <0 IRQ_TYPE_LEVEL_LOW>; 81 81 82 - richtek,output-charge-current = <500000>; 83 - richtek,end-of-charge-percentage = <10>; 84 - richtek,battery-regulation-voltage = <4200000>; 85 - richtek,boost-output-voltage = <5050000>; 82 + richtek,output-charge-current = <500000>; 83 + richtek,end-of-charge-percentage = <10>; 84 + richtek,battery-regulation-voltage = <4200000>; 85 + richtek,boost-output-voltage = <5050000>; 86 86 87 87 richtek,min-input-voltage-regulation = <4500000>; 88 88 richtek,avg-input-current-regulation = <500000>;
+11 -7
Documentation/devicetree/bindings/power/wakeup-source.txt
··· 3 3 4 4 Any device nodes 5 5 ---------------- 6 - Nodes that describe devices which has wakeup capability must contain an 6 + Nodes that describe devices which have wakeup capability may contain a 7 7 "wakeup-source" boolean property. 8 8 9 - Also, if device is marked as a wakeup source, then all the primary 10 - interrupt(s) can be used as wakeup interrupt(s). 9 + If the device is marked as a wakeup-source, interrupt wake capability depends 10 + on the device specific "interrupt-names" property. If no interrupts are labeled 11 + as wake capable, then it is up to the device to determine which interrupts can 12 + wake the system. 11 13 12 - However if the devices have dedicated interrupt as the wakeup source 13 - then they need to specify/identify the same using device specific 14 - interrupt name. In such cases only that interrupt can be used as wakeup 15 - interrupt. 14 + However if a device has a dedicated interrupt as the wakeup source, then it 15 + needs to specify/identify it using a device specific interrupt name. In such 16 + cases only that interrupt can be used as a wakeup interrupt. 17 + 18 + While various legacy interrupt names exist, new devices should use "wakeup" as 19 + the canonical interrupt name. 16 20 17 21 List of legacy properties and respective binding document 18 22 ---------------------------------------------------------
+2 -2
Documentation/devicetree/bindings/regulator/mps,mp5416.yaml
··· 62 62 regulator-name = "buck1"; 63 63 regulator-min-microvolt = <600000>; 64 64 regulator-max-microvolt = <2187500>; 65 - regulator-min-microamp = <3800000>; 66 - regulator-max-microamp = <6800000>; 65 + regulator-min-microamp = <3800000>; 66 + regulator-max-microamp = <6800000>; 67 67 regulator-boot-on; 68 68 }; 69 69
+2 -2
Documentation/devicetree/bindings/regulator/mps,mpq7920.yaml
··· 98 98 regulator-name = "buck1"; 99 99 regulator-min-microvolt = <400000>; 100 100 regulator-max-microvolt = <3587500>; 101 - regulator-min-microamp = <460000>; 102 - regulator-max-microamp = <7600000>; 101 + regulator-min-microamp = <460000>; 102 + regulator-max-microamp = <7600000>; 103 103 regulator-boot-on; 104 104 mps,buck-ovp-disable; 105 105 mps,buck-phase-delay = /bits/ 8 <2>;
+4 -4
Documentation/devicetree/bindings/remoteproc/fsl,imx-rproc.yaml
··· 113 113 }; 114 114 115 115 imx7d-cm4 { 116 - compatible = "fsl,imx7d-cm4"; 117 - memory-region = <&m4_reserved_sysmem1>, <&m4_reserved_sysmem2>; 118 - syscon = <&src>; 119 - clocks = <&clks IMX7D_ARM_M4_ROOT_CLK>; 116 + compatible = "fsl,imx7d-cm4"; 117 + memory-region = <&m4_reserved_sysmem1>, <&m4_reserved_sysmem2>; 118 + syscon = <&src>; 119 + clocks = <&clks IMX7D_ARM_M4_ROOT_CLK>; 120 120 }; 121 121 122 122 - |
-19
Documentation/devicetree/bindings/security/tpm/google,cr50.txt
··· 1 - * H1 Secure Microcontroller with Cr50 Firmware on SPI Bus. 2 - 3 - H1 Secure Microcontroller running Cr50 firmware provides several 4 - functions, including TPM-like functionality. It communicates over 5 - SPI using the FIFO protocol described in the PTP Spec, section 6. 6 - 7 - Required properties: 8 - - compatible: Should be "google,cr50". 9 - - spi-max-frequency: Maximum SPI frequency. 10 - 11 - Example: 12 - 13 - &spi0 { 14 - tpm@0 { 15 - compatible = "google,cr50"; 16 - reg = <0>; 17 - spi-max-frequency = <800000>; 18 - }; 19 - };
-41
Documentation/devicetree/bindings/security/tpm/ibmvtpm.txt
··· 1 - * Device Tree Bindings for IBM Virtual Trusted Platform Module(vtpm) 2 - 3 - Required properties: 4 - 5 - - compatible : property name that conveys the platform architecture 6 - identifiers, as 'IBM,vtpm' 7 - - device_type : specifies type of virtual device 8 - - interrupts : property specifying the interrupt source number and 9 - sense code associated with this virtual I/O Adapters 10 - - ibm,my-drc-index : integer index for the connector between the device 11 - and its parent - present only if Dynamic 12 - Reconfiguration(DR) Connector is enabled 13 - - ibm,#dma-address-cells: specifies the number of cells that are used to 14 - encode the physical address field of dma-window 15 - properties 16 - - ibm,#dma-size-cells : specifies the number of cells that are used to 17 - encode the size field of dma-window properties 18 - - ibm,my-dma-window : specifies DMA window associated with this virtual 19 - IOA 20 - - ibm,loc-code : specifies the unique and persistent location code 21 - associated with this virtual I/O Adapters 22 - - linux,sml-base : 64-bit base address of the reserved memory allocated 23 - for the firmware event log 24 - - linux,sml-size : size of the memory allocated for the firmware event log 25 - 26 - Example (IBM Virtual Trusted Platform Module) 27 - --------------------------------------------- 28 - 29 - vtpm@30000003 { 30 - ibm,#dma-size-cells = <0x2>; 31 - compatible = "IBM,vtpm"; 32 - device_type = "IBM,vtpm"; 33 - ibm,my-drc-index = <0x30000003>; 34 - ibm,#dma-address-cells = <0x2>; 35 - linux,sml-base = <0xc60e 0x0>; 36 - interrupts = <0xa0003 0x0>; 37 - ibm,my-dma-window = <0x10000003 0x0 0x0 0x0 0x10000000>; 38 - ibm,loc-code = "U8286.41A.10082DV-V3-C3"; 39 - reg = <0x30000003>; 40 - linux,sml-size = <0xbce10200>; 41 - };
-34
Documentation/devicetree/bindings/security/tpm/st33zp24-i2c.txt
··· 1 - * STMicroelectronics SAS. ST33ZP24 TPM SoC 2 - 3 - Required properties: 4 - - compatible: Should be "st,st33zp24-i2c". 5 - - clock-frequency: I²C work frequency. 6 - - reg: address on the bus 7 - 8 - Optional ST33ZP24 Properties: 9 - - interrupts: GPIO interrupt to which the chip is connected 10 - - lpcpd-gpios: Output GPIO pin used for ST33ZP24 power management D1/D2 state. 11 - If set, power must be present when the platform is going into sleep/hibernate mode. 12 - 13 - Optional SoC Specific Properties: 14 - - pinctrl-names: Contains only one value - "default". 15 - - pintctrl-0: Specifies the pin control groups used for this controller. 16 - 17 - Example (for ARM-based BeagleBoard xM with ST33ZP24 on I2C2): 18 - 19 - &i2c2 { 20 - 21 - 22 - st33zp24: st33zp24@13 { 23 - 24 - compatible = "st,st33zp24-i2c"; 25 - 26 - reg = <0x13>; 27 - clock-frequency = <400000>; 28 - 29 - interrupt-parent = <&gpio5>; 30 - interrupts = <7 IRQ_TYPE_LEVEL_HIGH>; 31 - 32 - lpcpd-gpios = <&gpio5 15 GPIO_ACTIVE_HIGH>; 33 - }; 34 - };
-32
Documentation/devicetree/bindings/security/tpm/st33zp24-spi.txt
··· 1 - * STMicroelectronics SAS. ST33ZP24 TPM SoC 2 - 3 - Required properties: 4 - - compatible: Should be "st,st33zp24-spi". 5 - - spi-max-frequency: Maximum SPI frequency (<= 10000000). 6 - 7 - Optional ST33ZP24 Properties: 8 - - interrupts: GPIO interrupt to which the chip is connected 9 - - lpcpd-gpios: Output GPIO pin used for ST33ZP24 power management D1/D2 state. 10 - If set, power must be present when the platform is going into sleep/hibernate mode. 11 - 12 - Optional SoC Specific Properties: 13 - - pinctrl-names: Contains only one value - "default". 14 - - pintctrl-0: Specifies the pin control groups used for this controller. 15 - 16 - Example (for ARM-based BeagleBoard xM with ST33ZP24 on SPI4): 17 - 18 - &mcspi4 { 19 - 20 - 21 - st33zp24@0 { 22 - 23 - compatible = "st,st33zp24-spi"; 24 - 25 - spi-max-frequency = <10000000>; 26 - 27 - interrupt-parent = <&gpio5>; 28 - interrupts = <7 IRQ_TYPE_LEVEL_HIGH>; 29 - 30 - lpcpd-gpios = <&gpio5 15 GPIO_ACTIVE_HIGH>; 31 - }; 32 - };
-26
Documentation/devicetree/bindings/security/tpm/tpm-i2c.txt
··· 1 - * Device Tree Bindings for I2C based Trusted Platform Module(TPM) 2 - 3 - Required properties: 4 - 5 - - compatible : 'manufacturer,model', eg. nuvoton,npct650 6 - - label : human readable string describing the device, eg. "tpm" 7 - - linux,sml-base : 64-bit base address of the reserved memory allocated for 8 - the firmware event log 9 - - linux,sml-size : size of the memory allocated for the firmware event log 10 - 11 - Optional properties: 12 - 13 - - powered-while-suspended: present when the TPM is left powered on between 14 - suspend and resume (makes the suspend/resume 15 - callbacks do nothing). 16 - 17 - Example (for OpenPower Systems with Nuvoton TPM 2.0 on I2C) 18 - ---------------------------------------------------------- 19 - 20 - tpm@57 { 21 - reg = <0x57>; 22 - label = "tpm"; 23 - compatible = "nuvoton,npct650", "nuvoton,npct601"; 24 - linux,sml-base = <0x7f 0xfd450000>; 25 - linux,sml-size = <0x10000>; 26 - };
-25
Documentation/devicetree/bindings/security/tpm/tpm_tis_mmio.txt
··· 1 - Trusted Computing Group MMIO Trusted Platform Module 2 - 3 - The TCG defines multi vendor standard for accessing a TPM chip, this 4 - is the standard protocol defined to access the TPM via MMIO. Typically 5 - this interface will be implemented over Intel's LPC bus. 6 - 7 - Refer to the 'TCG PC Client Specific TPM Interface Specification (TIS)' TCG 8 - publication for the specification. 9 - 10 - Required properties: 11 - 12 - - compatible: should contain a string below for the chip, followed by 13 - "tcg,tpm-tis-mmio". Valid chip strings are: 14 - * "atmel,at97sc3204" 15 - - reg: The location of the MMIO registers, should be at least 0x5000 bytes 16 - - interrupts: An optional interrupt indicating command completion. 17 - 18 - Example: 19 - 20 - tpm_tis@90000 { 21 - compatible = "atmel,at97sc3204", "tcg,tpm-tis-mmio"; 22 - reg = <0x90000 0x5000>; 23 - interrupt-parent = <&EIC0>; 24 - interrupts = <1 2>; 25 - };
-23
Documentation/devicetree/bindings/security/tpm/tpm_tis_spi.txt
··· 1 - Required properties: 2 - - compatible: should be one of the following 3 - "st,st33htpm-spi" 4 - "infineon,slb9670" 5 - "tcg,tpm_tis-spi" 6 - - spi-max-frequency: Maximum SPI frequency (depends on TPMs). 7 - 8 - Optional SoC Specific Properties: 9 - - pinctrl-names: Contains only one value - "default". 10 - - pintctrl-0: Specifies the pin control groups used for this controller. 11 - 12 - Example (for ARM-based BeagleBoard xM with TPM_TIS on SPI4): 13 - 14 - &mcspi4 { 15 - 16 - 17 - tpm_tis@0 { 18 - 19 - compatible = "tcg,tpm_tis-spi"; 20 - 21 - spi-max-frequency = <10000000>; 22 - }; 23 - };
+65
Documentation/devicetree/bindings/tpm/google,cr50.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/tpm/google,cr50.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Google Security Chip H1 (running Cr50 firmware) 8 + 9 + maintainers: 10 + - Andrey Pronin <apronin@chromium.org> 11 + 12 + description: | 13 + Google has designed a family of security chips called "Titan". 14 + One member is the H1 built into Chromebooks and running Cr50 firmware: 15 + https://www.osfc.io/2018/talks/google-secure-microcontroller-and-ccd-closed-case-debugging/ 16 + 17 + The chip provides several functions, including TPM 2.0 like functionality. 18 + It communicates over SPI or I²C using the FIFO protocol described in the 19 + TCG PC Client Platform TPM Profile Specification for TPM 2.0 (PTP), sec 6: 20 + https://trustedcomputinggroup.org/resource/pc-client-platform-tpm-profile-ptp-specification/ 21 + 22 + properties: 23 + compatible: 24 + const: google,cr50 25 + 26 + allOf: 27 + - $ref: tpm-common.yaml# 28 + 29 + anyOf: 30 + - $ref: /schemas/spi/spi-peripheral-props.yaml# 31 + - $ref: tcg,tpm-tis-i2c.yaml#/properties/reg 32 + 33 + required: 34 + - compatible 35 + - reg 36 + 37 + unevaluatedProperties: false 38 + 39 + examples: 40 + - | 41 + spi { 42 + #address-cells = <1>; 43 + #size-cells = <0>; 44 + 45 + tpm@0 { 46 + reg = <0>; 47 + compatible = "google,cr50"; 48 + spi-max-frequency = <800000>; 49 + }; 50 + }; 51 + 52 + - | 53 + #include <dt-bindings/interrupt-controller/irq.h> 54 + i2c { 55 + #address-cells = <1>; 56 + #size-cells = <0>; 57 + 58 + tpm@50 { 59 + compatible = "google,cr50"; 60 + reg = <0x50>; 61 + interrupts-extended = <&pio 88 IRQ_TYPE_EDGE_FALLING>; 62 + pinctrl-names = "default"; 63 + pinctrl-0 = <&cr50_int>; 64 + }; 65 + };
+104
Documentation/devicetree/bindings/tpm/ibm,vtpm.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/tpm/ibm,vtpm.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: IBM Virtual Trusted Platform Module (vTPM) 8 + 9 + maintainers: 10 + - Nayna Jain <nayna@linux.ibm.com> 11 + 12 + description: | 13 + Virtual TPM is used on IBM POWER7+ and POWER8 systems running POWERVM. 14 + It is supported through the adjunct partition with firmware release 740 15 + or higher. With vTPM support, each lpar is able to have its own vTPM 16 + without the physical TPM hardware. The TPM functionality is provided by 17 + communicating with the vTPM adjunct partition through Hypervisor calls 18 + (Hcalls) and Command/Response Queue (CRQ) commands. 19 + 20 + properties: 21 + compatible: 22 + enum: 23 + - IBM,vtpm 24 + - IBM,vtpm20 25 + 26 + device_type: 27 + description: 28 + type of virtual device 29 + enum: 30 + - IBM,vtpm 31 + - IBM,vtpm20 32 + 33 + reg: 34 + maxItems: 1 35 + 36 + 'ibm,#dma-address-cells': 37 + description: 38 + number of cells that are used to encode the physical address field of 39 + dma-window properties 40 + $ref: /schemas/types.yaml#/definitions/uint32-array 41 + 42 + 'ibm,#dma-size-cells': 43 + description: 44 + number of cells that are used to encode the size field of 45 + dma-window properties 46 + $ref: /schemas/types.yaml#/definitions/uint32-array 47 + 48 + ibm,my-dma-window: 49 + description: 50 + DMA window associated with this virtual I/O Adapter 51 + $ref: /schemas/types.yaml#/definitions/uint32-array 52 + minItems: 5 53 + maxItems: 5 54 + 55 + ibm,my-drc-index: 56 + description: 57 + integer index for the connector between the device and its parent; 58 + present only if Dynamic Reconfiguration (DR) Connector is enabled 59 + $ref: /schemas/types.yaml#/definitions/uint32 60 + 61 + ibm,loc-code: 62 + description: 63 + unique and persistent location code associated with this virtual 64 + I/O Adapter 65 + $ref: /schemas/types.yaml#/definitions/string 66 + 67 + required: 68 + - compatible 69 + - device_type 70 + - reg 71 + - interrupts 72 + - ibm,#dma-address-cells 73 + - ibm,#dma-size-cells 74 + - ibm,my-dma-window 75 + - ibm,my-drc-index 76 + - ibm,loc-code 77 + - linux,sml-base 78 + - linux,sml-size 79 + 80 + allOf: 81 + - $ref: tpm-common.yaml# 82 + 83 + unevaluatedProperties: false 84 + 85 + examples: 86 + - | 87 + soc { 88 + #address-cells = <1>; 89 + #size-cells = <0>; 90 + 91 + tpm@30000003 { 92 + compatible = "IBM,vtpm"; 93 + device_type = "IBM,vtpm"; 94 + reg = <0x30000003>; 95 + interrupts = <0xa0003 0x0>; 96 + ibm,#dma-address-cells = <0x2>; 97 + ibm,#dma-size-cells = <0x2>; 98 + ibm,my-dma-window = <0x10000003 0x0 0x0 0x0 0x10000000>; 99 + ibm,my-drc-index = <0x30000003>; 100 + ibm,loc-code = "U8286.41A.10082DV-V3-C3"; 101 + linux,sml-base = <0xc60e 0x0>; 102 + linux,sml-size = <0xbce10200>; 103 + }; 104 + };
+47
Documentation/devicetree/bindings/tpm/microsoft,ftpm.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/tpm/microsoft,ftpm.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Microsoft firmware-based Trusted Platform Module (fTPM) 8 + 9 + maintainers: 10 + - Thirupathaiah Annapureddy <thiruan@microsoft.com> 11 + - Sasha Levin <sashal@kernel.org> 12 + 13 + description: | 14 + Commodity CPU architectures, such as ARM and Intel CPUs, have started to 15 + offer trusted computing features in their CPUs aimed at displacing dedicated 16 + trusted hardware. Unfortunately, these CPU architectures raise serious 17 + challenges to building trusted systems because they omit providing secure 18 + resources outside the CPU perimeter. 19 + 20 + Microsoft's firmware-based TPM 2.0 (fTPM) leverages ARM TrustZone to overcome 21 + these challenges and provide software with security guarantees similar to 22 + those of dedicated trusted hardware. 23 + 24 + https://www.microsoft.com/en-us/research/publication/ftpm-software-implementation-tpm-chip/ 25 + https://github.com/Microsoft/ms-tpm-20-ref/tree/main/Samples/ARM32-FirmwareTPM 26 + 27 + properties: 28 + compatible: 29 + const: microsoft,ftpm 30 + 31 + required: 32 + - compatible 33 + - linux,sml-base 34 + - linux,sml-size 35 + 36 + allOf: 37 + - $ref: tpm-common.yaml# 38 + 39 + unevaluatedProperties: false 40 + 41 + examples: 42 + - | 43 + tpm { 44 + compatible = "microsoft,ftpm"; 45 + linux,sml-base = <0x0 0xc0000000>; 46 + linux,sml-size = <0x10000>; 47 + };
+90
Documentation/devicetree/bindings/tpm/tcg,tpm-tis-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/tpm/tcg,tpm-tis-i2c.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: I²C-attached Trusted Platform Module conforming to TCG TIS specification 8 + 9 + maintainers: 10 + - Lukas Wunner <lukas@wunner.de> 11 + 12 + description: | 13 + The Trusted Computing Group (TCG) has defined a multi-vendor standard 14 + for accessing a TPM chip. It can be transported over various buses, 15 + one of them being I²C. The standard is named: 16 + TCG PC Client Specific TPM Interface Specification (TIS) 17 + https://trustedcomputinggroup.org/resource/pc-client-work-group-pc-client-specific-tpm-interface-specification-tis/ 18 + 19 + The I²C interface was not originally part of the standard, but added 20 + in 2017 with a separate document: 21 + TCG PC Client Platform TPM Profile Specification for TPM 2.0 (PTP) 22 + https://trustedcomputinggroup.org/resource/pc-client-platform-tpm-profile-ptp-specification/ 23 + 24 + Recent TPM 2.0 chips conform to this generic interface, others use a 25 + vendor-specific I²C interface. 26 + 27 + properties: 28 + compatible: 29 + oneOf: 30 + - description: Generic TPM 2.0 chips conforming to TCG PTP interface 31 + items: 32 + - enum: 33 + - infineon,slb9673 34 + - nuvoton,npct75x 35 + - const: tcg,tpm-tis-i2c 36 + 37 + - description: TPM 1.2 and 2.0 chips with vendor-specific I²C interface 38 + items: 39 + - enum: 40 + - atmel,at97sc3204t # TPM 1.2 41 + - infineon,slb9635tt # TPM 1.2 (maximum 100 kHz) 42 + - infineon,slb9645tt # TPM 1.2 (maximum 400 kHz) 43 + - infineon,tpm_i2c_infineon # TPM 1.2 44 + - nuvoton,npct501 # TPM 1.2 45 + - nuvoton,npct601 # TPM 2.0 46 + - st,st33zp24-i2c # TPM 2.0 47 + - winbond,wpct301 # TPM 1.2 48 + 49 + reg: 50 + description: address of TPM on the I²C bus 51 + 52 + allOf: 53 + - $ref: tpm-common.yaml# 54 + 55 + required: 56 + - compatible 57 + - reg 58 + 59 + unevaluatedProperties: false 60 + 61 + examples: 62 + - | 63 + i2c { 64 + #address-cells = <1>; 65 + #size-cells = <0>; 66 + 67 + tpm@57 { 68 + label = "tpm"; 69 + compatible = "nuvoton,npct601"; 70 + reg = <0x57>; 71 + linux,sml-base = <0x7f 0xfd450000>; 72 + linux,sml-size = <0x10000>; 73 + }; 74 + }; 75 + 76 + - | 77 + #include <dt-bindings/gpio/gpio.h> 78 + #include <dt-bindings/interrupt-controller/irq.h> 79 + i2c { 80 + #address-cells = <1>; 81 + #size-cells = <0>; 82 + 83 + tpm@13 { 84 + reg = <0x13>; 85 + compatible = "st,st33zp24-i2c"; 86 + interrupt-parent = <&gpio5>; 87 + interrupts = <7 IRQ_TYPE_LEVEL_HIGH>; 88 + lpcpd-gpios = <&gpio5 15 GPIO_ACTIVE_HIGH>; 89 + }; 90 + };
+49
Documentation/devicetree/bindings/tpm/tcg,tpm-tis-mmio.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/tpm/tcg,tpm-tis-mmio.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: MMIO-accessed Trusted Platform Module conforming to TCG TIS specification 8 + 9 + maintainers: 10 + - Lukas Wunner <lukas@wunner.de> 11 + 12 + description: | 13 + The Trusted Computing Group (TCG) has defined a multi-vendor standard 14 + for accessing a TPM chip. It can be transported over various buses, 15 + one of them being LPC (via MMIO). The standard is named: 16 + TCG PC Client Specific TPM Interface Specification (TIS) 17 + https://trustedcomputinggroup.org/resource/pc-client-work-group-pc-client-specific-tpm-interface-specification-tis/ 18 + 19 + properties: 20 + compatible: 21 + items: 22 + - enum: 23 + - at97sc3201 24 + - atmel,at97sc3204 25 + - socionext,synquacer-tpm-mmio 26 + - const: tcg,tpm-tis-mmio 27 + 28 + reg: 29 + description: 30 + location and length of the MMIO registers, length should be 31 + at least 0x5000 bytes 32 + 33 + allOf: 34 + - $ref: tpm-common.yaml# 35 + 36 + required: 37 + - compatible 38 + - reg 39 + 40 + unevaluatedProperties: false 41 + 42 + examples: 43 + - | 44 + tpm@90000 { 45 + compatible = "atmel,at97sc3204", "tcg,tpm-tis-mmio"; 46 + reg = <0x90000 0x5000>; 47 + interrupt-parent = <&EIC0>; 48 + interrupts = <1 2>; 49 + };
+75
Documentation/devicetree/bindings/tpm/tcg,tpm_tis-spi.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/tpm/tcg,tpm_tis-spi.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: SPI-attached Trusted Platform Module conforming to TCG TIS specification 8 + 9 + maintainers: 10 + - Lukas Wunner <lukas@wunner.de> 11 + 12 + description: | 13 + The Trusted Computing Group (TCG) has defined a multi-vendor standard 14 + for accessing a TPM chip. It can be transported over various buses, 15 + one of them being SPI. The standard is named: 16 + TCG PC Client Specific TPM Interface Specification (TIS) 17 + https://trustedcomputinggroup.org/resource/pc-client-work-group-pc-client-specific-tpm-interface-specification-tis/ 18 + 19 + properties: 20 + compatible: 21 + items: 22 + - enum: 23 + - infineon,slb9670 24 + - st,st33htpm-spi 25 + - st,st33zp24-spi 26 + - const: tcg,tpm_tis-spi 27 + 28 + allOf: 29 + - $ref: tpm-common.yaml# 30 + - $ref: /schemas/spi/spi-peripheral-props.yaml# 31 + - if: 32 + properties: 33 + compatible: 34 + contains: 35 + const: st,st33zp24-spi 36 + then: 37 + properties: 38 + spi-max-frequency: 39 + maximum: 10000000 40 + 41 + required: 42 + - compatible 43 + - reg 44 + 45 + unevaluatedProperties: false 46 + 47 + examples: 48 + - | 49 + spi { 50 + #address-cells = <1>; 51 + #size-cells = <0>; 52 + 53 + tpm@0 { 54 + reg = <0>; 55 + compatible = "infineon,slb9670", "tcg,tpm_tis-spi"; 56 + spi-max-frequency = <10000000>; 57 + }; 58 + }; 59 + 60 + - | 61 + #include <dt-bindings/gpio/gpio.h> 62 + #include <dt-bindings/interrupt-controller/irq.h> 63 + spi { 64 + #address-cells = <1>; 65 + #size-cells = <0>; 66 + 67 + tpm@0 { 68 + reg = <0>; 69 + compatible = "st,st33zp24-spi", "tcg,tpm_tis-spi"; 70 + spi-max-frequency = <10000000>; 71 + interrupt-parent = <&gpio5>; 72 + interrupts = <7 IRQ_TYPE_LEVEL_HIGH>; 73 + lpcpd-gpios = <&gpio5 15 GPIO_ACTIVE_HIGH>; 74 + }; 75 + };
+87
Documentation/devicetree/bindings/tpm/tpm-common.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/tpm/tpm-common.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: Trusted Platform Module common properties 8 + 9 + maintainers: 10 + - Lukas Wunner <lukas@wunner.de> 11 + 12 + properties: 13 + $nodename: 14 + pattern: '^tpm(@[0-9a-f]+)?$' 15 + 16 + interrupts: 17 + description: indicates command completion 18 + maxItems: 1 19 + 20 + label: 21 + description: human readable string describing the device, e.g. "tpm" 22 + 23 + linux,sml-base: 24 + description: 25 + base address of reserved memory allocated for firmware event log 26 + $ref: /schemas/types.yaml#/definitions/uint64 27 + 28 + linux,sml-size: 29 + description: 30 + size of reserved memory allocated for firmware event log 31 + $ref: /schemas/types.yaml#/definitions/uint32 32 + 33 + memory-region: 34 + description: reserved memory allocated for firmware event log 35 + maxItems: 1 36 + 37 + powered-while-suspended: 38 + description: 39 + present when the TPM is left powered on between suspend and resume 40 + (makes the suspend/resume callbacks do nothing) 41 + type: boolean 42 + 43 + resets: 44 + description: Reset controller to reset the TPM 45 + $ref: /schemas/types.yaml#/definitions/phandle 46 + 47 + reset-gpios: 48 + description: Output GPIO pin to reset the TPM 49 + maxItems: 1 50 + 51 + # must always have both linux,sml-base and linux,sml-size 52 + dependentRequired: 53 + linux,sml-base: ['linux,sml-size'] 54 + linux,sml-size: ['linux,sml-base'] 55 + 56 + # must only have either memory-region or linux,sml-base 57 + # as well as either resets or reset-gpios 58 + dependentSchemas: 59 + memory-region: 60 + properties: 61 + linux,sml-base: false 62 + linux,sml-base: 63 + properties: 64 + memory-region: false 65 + resets: 66 + properties: 67 + reset-gpios: false 68 + reset-gpios: 69 + properties: 70 + resets: false 71 + 72 + allOf: 73 + - if: 74 + properties: 75 + compatible: 76 + contains: 77 + pattern: '^st,st33zp24' 78 + then: 79 + properties: 80 + lpcpd-gpios: 81 + description: 82 + Output GPIO pin used for ST33ZP24 power management of D1/D2 state. 83 + If set, power must be present when the platform is going into 84 + sleep/hibernate mode. 85 + maxItems: 1 86 + 87 + additionalProperties: true
-16
Documentation/devicetree/bindings/trivial-devices.yaml
··· 49 49 - ams,iaq-core 50 50 # i2c serial eeprom (24cxx) 51 51 - at,24c08 52 - # i2c trusted platform module (TPM) 53 - - atmel,at97sc3204t 54 52 # ATSHA204 - i2c h/w symmetric crypto module 55 53 - atmel,atsha204 56 54 # ATSHA204A - i2c h/w symmetric crypto module ··· 149 151 - infineon,ir38263 150 152 # Infineon IRPS5401 Voltage Regulator (PMIC) 151 153 - infineon,irps5401 152 - # Infineon SLB9635 (Soft-) I2C TPM (old protocol, max 100khz) 153 - - infineon,slb9635tt 154 - # Infineon SLB9645 I2C TPM (new protocol, max 400khz) 155 - - infineon,slb9645tt 156 - # Infineon SLB9673 I2C TPM 2.0 157 - - infineon,slb9673 158 154 # Infineon TLV493D-A1B6 I2C 3D Magnetic Sensor 159 155 - infineon,tlv493d-a1b6 160 156 # Infineon Multi-phase Digital VR Controller xdpe11280 ··· 299 307 - national,lm85 300 308 # I2C ±0.33°C Accurate, 12-Bit + Sign Temperature Sensor and Thermal Window Comparator 301 309 - national,lm92 302 - # i2c trusted platform module (TPM) 303 - - nuvoton,npct501 304 - # i2c trusted platform module (TPM2) 305 - - nuvoton,npct601 306 310 # Nuvoton Temperature Sensor 307 311 - nuvoton,w83773g 308 312 # OKI ML86V7667 video decoder ··· 343 355 - silabs,si7020 344 356 # Skyworks SKY81452: Six-Channel White LED Driver with Touch Panel Bias Supply 345 357 - skyworks,sky81452 346 - # Socionext SynQuacer TPM MMIO module 347 - - socionext,synquacer-tpm-mmio 348 358 # SparkFun Qwiic Joystick (COM-15168) with i2c interface 349 359 - sparkfun,qwiic-joystick 350 360 # i2c serial eeprom (24cxx) ··· 397 411 - winbond,w83793 398 412 # Vicor Corporation Digital Supervisor 399 413 - vicor,pli1209bc 400 - # i2c trusted platform module (TPM) 401 - - winbond,wpct301 402 414 403 415 required: 404 416 - compatible
+2
Documentation/devicetree/bindings/vendor-prefixes.yaml
··· 1295 1295 description: Skyworks Solutions, Inc. 1296 1296 "^smartlabs,.*": 1297 1297 description: SmartLabs LLC 1298 + "^smi,.*": 1299 + description: Silicon Motion Technology Corporation 1298 1300 "^smsc,.*": 1299 1301 description: Standard Microsystems Corporation 1300 1302 "^snps,.*":
+1
drivers/of/base.c
··· 1464 1464 out_args->np = new; 1465 1465 of_node_put(cur); 1466 1466 cur = new; 1467 + new = NULL; 1467 1468 } 1468 1469 put: 1469 1470 of_node_put(cur);
+1 -1
drivers/of/overlay.c
··· 964 964 return ret; 965 965 } 966 966 967 - /* 967 + /** 968 968 * of_overlay_fdt_apply() - Create and apply an overlay changeset 969 969 * @overlay_fdt: pointer to overlay FDT 970 970 * @overlay_fdt_size: number of bytes in @overlay_fdt
+18 -4
drivers/of/platform.c
··· 20 20 #include <linux/of_irq.h> 21 21 #include <linux/of_platform.h> 22 22 #include <linux/platform_device.h> 23 + #include <linux/sysfb.h> 23 24 24 25 #include "of_private.h" 25 26 ··· 622 621 } 623 622 624 623 node = of_get_compatible_child(of_chosen, "simple-framebuffer"); 625 - of_platform_device_create(node, NULL, NULL); 626 - of_node_put(node); 624 + if (node) { 625 + /* 626 + * Since a "simple-framebuffer" device is already added 627 + * here, disable the Generic System Framebuffers (sysfb) 628 + * to prevent it from registering another device for the 629 + * system framebuffer later (e.g: using the screen_info 630 + * data that may had been filled as well). 631 + * 632 + * This can happen for example on DT systems that do EFI 633 + * booting and may provide a GOP handle to the EFI stub. 634 + */ 635 + sysfb_disable(); 636 + of_platform_device_create(node, NULL, NULL); 637 + of_node_put(node); 638 + } 627 639 628 640 /* Populate everything else. */ 629 641 of_platform_default_populate(NULL, NULL, NULL); ··· 682 668 * @parent: device which children will be removed 683 669 * 684 670 * Complementary to of_platform_populate(), this function removes children 685 - * of the given device (and, recurrently, their children) that have been 671 + * of the given device (and, recursively, their children) that have been 686 672 * created from their respective device tree nodes (and only those, 687 673 * leaving others - eg. manually created - unharmed). 688 674 */ ··· 751 737 * @dev: device that requested to depopulate from device tree data 752 738 * 753 739 * Complementary to devm_of_platform_populate(), this function removes children 754 - * of the given device (and, recurrently, their children) that have been 740 + * of the given device (and, recursively, their children) that have been 755 741 * created from their respective device tree nodes (and only those, 756 742 * leaving others - eg. manually created - unharmed). 757 743 */
+4 -3
drivers/of/property.c
··· 441 441 const char **out_string) 442 442 { 443 443 const struct property *prop = of_find_property(np, propname, NULL); 444 + 444 445 if (!prop) 445 446 return -EINVAL; 446 447 if (!prop->length) ··· 1218 1217 * 1219 1218 * @parse_prop: function name 1220 1219 * parse_prop() finds the node corresponding to a supplier phandle 1221 - * @parse_prop.np: Pointer to device node holding supplier phandle property 1222 - * @parse_prop.prop_name: Name of property holding a phandle value 1223 - * @parse_prop.index: For properties holding a list of phandles, this is the 1220 + * parse_prop.np: Pointer to device node holding supplier phandle property 1221 + * parse_prop.prop_name: Name of property holding a phandle value 1222 + * parse_prop.index: For properties holding a list of phandles, this is the 1224 1223 * index into the list 1225 1224 * @optional: Describes whether a supplier is mandatory or not 1226 1225 * @node_not_dev: The consumer node containing the property is never converted
+9 -1
drivers/of/unittest-data/tests-phandle.dtsi
··· 40 40 phandle-map-pass-thru = <0x0 0xf0>; 41 41 }; 42 42 43 + provider5: provider5 { 44 + #phandle-cells = <2>; 45 + phandle-map = <2 7 &provider4 2 3>; 46 + phandle-map-mask = <0xff 0xf>; 47 + phandle-map-pass-thru = <0x0 0xf0>; 48 + }; 49 + 43 50 consumer-a { 44 51 phandle-list = <&provider1 1>, 45 52 <&provider2 2 0>, ··· 73 66 <&provider4 4 0x100>, 74 67 <&provider4 0 0x61>, 75 68 <&provider0>, 76 - <&provider4 19 0x20>; 69 + <&provider4 19 0x20>, 70 + <&provider5 2 7>; 77 71 phandle-list-bad-phandle = <12345678 0 0>; 78 72 phandle-list-bad-args = <&provider2 1 0>, 79 73 <&provider4 0>;
+43 -31
drivers/of/unittest.c
··· 456 456 457 457 unittest(passed, "index %i - data error on node %pOF rc=%i\n", 458 458 i, args.np, rc); 459 + 460 + if (rc == 0) 461 + of_node_put(args.np); 459 462 } 460 463 461 464 /* Check for missing list property */ ··· 548 545 549 546 static void __init of_unittest_parse_phandle_with_args_map(void) 550 547 { 551 - struct device_node *np, *p0, *p1, *p2, *p3; 548 + struct device_node *np, *p[6] = {}; 552 549 struct of_phandle_args args; 550 + unsigned int prefs[6]; 553 551 int i, rc; 554 552 555 553 np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-b"); ··· 559 555 return; 560 556 } 561 557 562 - p0 = of_find_node_by_path("/testcase-data/phandle-tests/provider0"); 563 - if (!p0) { 564 - pr_err("missing testcase data\n"); 565 - return; 566 - } 567 - 568 - p1 = of_find_node_by_path("/testcase-data/phandle-tests/provider1"); 569 - if (!p1) { 570 - pr_err("missing testcase data\n"); 571 - return; 572 - } 573 - 574 - p2 = of_find_node_by_path("/testcase-data/phandle-tests/provider2"); 575 - if (!p2) { 576 - pr_err("missing testcase data\n"); 577 - return; 578 - } 579 - 580 - p3 = of_find_node_by_path("/testcase-data/phandle-tests/provider3"); 581 - if (!p3) { 582 - pr_err("missing testcase data\n"); 583 - return; 558 + p[0] = of_find_node_by_path("/testcase-data/phandle-tests/provider0"); 559 + p[1] = of_find_node_by_path("/testcase-data/phandle-tests/provider1"); 560 + p[2] = of_find_node_by_path("/testcase-data/phandle-tests/provider2"); 561 + p[3] = of_find_node_by_path("/testcase-data/phandle-tests/provider3"); 562 + p[4] = of_find_node_by_path("/testcase-data/phandle-tests/provider4"); 563 + p[5] = of_find_node_by_path("/testcase-data/phandle-tests/provider5"); 564 + for (i = 0; i < ARRAY_SIZE(p); ++i) { 565 + if (!p[i]) { 566 + pr_err("missing testcase data\n"); 567 + return; 568 + } 569 + prefs[i] = kref_read(&p[i]->kobj.kref); 584 570 } 585 571 586 572 rc = of_count_phandle_with_args(np, "phandle-list", "#phandle-cells"); 587 - unittest(rc == 7, "of_count_phandle_with_args() returned %i, expected 7\n", rc); 573 + unittest(rc == 8, "of_count_phandle_with_args() returned %i, expected 8\n", rc); 588 574 589 - for (i = 0; i < 8; i++) { 575 + for (i = 0; i < 9; i++) { 590 576 bool passed = true; 591 577 592 578 memset(&args, 0, sizeof(args)); ··· 587 593 switch (i) { 588 594 case 0: 589 595 passed &= !rc; 590 - passed &= (args.np == p1); 596 + passed &= (args.np == p[1]); 591 597 passed &= (args.args_count == 1); 592 598 passed &= (args.args[0] == 1); 593 599 break; 594 600 case 1: 595 601 passed &= !rc; 596 - passed &= (args.np == p3); 602 + passed &= (args.np == p[3]); 597 603 passed &= (args.args_count == 3); 598 604 passed &= (args.args[0] == 2); 599 605 passed &= (args.args[1] == 5); ··· 604 610 break; 605 611 case 3: 606 612 passed &= !rc; 607 - passed &= (args.np == p0); 613 + passed &= (args.np == p[0]); 608 614 passed &= (args.args_count == 0); 609 615 break; 610 616 case 4: 611 617 passed &= !rc; 612 - passed &= (args.np == p1); 618 + passed &= (args.np == p[1]); 613 619 passed &= (args.args_count == 1); 614 620 passed &= (args.args[0] == 3); 615 621 break; 616 622 case 5: 617 623 passed &= !rc; 618 - passed &= (args.np == p0); 624 + passed &= (args.np == p[0]); 619 625 passed &= (args.args_count == 0); 620 626 break; 621 627 case 6: 622 628 passed &= !rc; 623 - passed &= (args.np == p2); 629 + passed &= (args.np == p[2]); 624 630 passed &= (args.args_count == 2); 625 631 passed &= (args.args[0] == 15); 626 632 passed &= (args.args[1] == 0x20); 627 633 break; 628 634 case 7: 635 + passed &= !rc; 636 + passed &= (args.np == p[3]); 637 + passed &= (args.args_count == 3); 638 + passed &= (args.args[0] == 2); 639 + passed &= (args.args[1] == 5); 640 + passed &= (args.args[2] == 3); 641 + break; 642 + case 8: 629 643 passed &= (rc == -ENOENT); 630 644 break; 631 645 default: ··· 642 640 643 641 unittest(passed, "index %i - data error on node %s rc=%i\n", 644 642 i, args.np->full_name, rc); 643 + 644 + if (rc == 0) 645 + of_node_put(args.np); 645 646 } 646 647 647 648 /* Check for missing list property */ ··· 691 686 "OF: /testcase-data/phandle-tests/consumer-b: #phandle-cells = 2 found 1"); 692 687 693 688 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); 689 + 690 + for (i = 0; i < ARRAY_SIZE(p); ++i) { 691 + unittest(prefs[i] == kref_read(&p[i]->kobj.kref), 692 + "provider%d: expected:%d got:%d\n", 693 + i, prefs[i], kref_read(&p[i]->kobj.kref)); 694 + of_node_put(p[i]); 695 + } 694 696 } 695 697 696 698 static void __init of_unittest_property_string(void)