On Wed, Apr 27, 2022 at 12:25:24PM +0100, Andre Przywara wrote: > The Arm Versatile Express system features a bridge device that provides > access to various smaller devices like clocks, reset gates and various > sensors. > > Extract the second half of the informal vexpress-sysreg.txt binding and > make it proper DT schema compliant. This makes the old .txt binding > redundant, so remove it. > > This describes both the actual parent configuration bridge, as well as > all the possible children devices. > > Signed-off-by: Andre Przywara <andre.przywara@xxxxxxx> > --- > .../bindings/arm/vexpress-config.yaml | 274 ++++++++++++++++++ > .../bindings/arm/vexpress-sysreg.txt | 103 ------- > 2 files changed, 274 insertions(+), 103 deletions(-) > create mode 100644 Documentation/devicetree/bindings/arm/vexpress-config.yaml > delete mode 100644 Documentation/devicetree/bindings/arm/vexpress-sysreg.txt > > diff --git a/Documentation/devicetree/bindings/arm/vexpress-config.yaml b/Documentation/devicetree/bindings/arm/vexpress-config.yaml > new file mode 100644 > index 0000000000000..6471b3fe13a46 > --- /dev/null > +++ b/Documentation/devicetree/bindings/arm/vexpress-config.yaml > @@ -0,0 +1,274 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/arm/vexpress-config.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: ARM Versatile Express configuration bus bindings > + > +maintainers: > + - Andre Przywara <andre.przywara@xxxxxxx> > + > +description: |+ > + This is a system control register block, acting as a bridge to the > + platform's configuration bus via "system control" interface, addressing > + devices with site number, position in the board stack, config controller, > + function and device numbers - see motherboard's TRM for more details. > + > +properties: > + compatible: > + const: arm,vexpress,config-bus > + > + arm,vexpress,config-bridge: > + $ref: /schemas/types.yaml#/definitions/phandle > + description: > + Phandle to the sysreg node. > + > + muxfpga: > + type: object additionalProperties: false > + properties: > + compatible: > + const: arm,vexpress-muxfpga > + > + arm,vexpress-sysreg,func: > + description: FPGA specifier > + $ref: /schemas/types.yaml#/definitions/uint32-array > + items: > + - const: 7 > + - description: device number > + > + required: > + - compatible > + - arm,vexpress-sysreg,func > + > + shutdown: > + type: object additionalProperties: false > + properties: > + compatible: > + const: arm,vexpress-shutdown > + > + arm,vexpress-sysreg,func: > + description: shutdown identifier > + $ref: /schemas/types.yaml#/definitions/uint32-array > + items: > + - const: 8 > + - description: device number > + > + required: > + - compatible > + - arm,vexpress-sysreg,func > + > + reboot: > + type: object additionalProperties: false > + properties: > + compatible: > + const: arm,vexpress-reboot > + > + arm,vexpress-sysreg,func: > + description: reboot identifier > + $ref: /schemas/types.yaml#/definitions/uint32-array > + items: > + - const: 9 > + - description: device number > + > + required: > + - compatible > + - arm,vexpress-sysreg,func > + > + dvimode: > + type: object additionalProperties: false > + properties: > + compatible: > + const: arm,vexpress-dvimode > + > + arm,vexpress-sysreg,func: > + description: DVI mode identifier > + $ref: /schemas/types.yaml#/definitions/uint32-array > + items: > + - const: 11 > + - description: device number > + > + required: > + - compatible > + - arm,vexpress-sysreg,func > + > +additionalProperties: false > + > +required: > + - compatible > + - arm,vexpress,config-bridge > + > +patternProperties: > + '^.*clk[0-9]*$': You can drop '^.*' additionalProperties: false > + type: object > + description: > + clocks > + > + properties: > + compatible: > + const: arm,vexpress-osc > + > + arm,vexpress-sysreg,func: > + description: clock specifier > + $ref: /schemas/types.yaml#/definitions/uint32-array > + items: > + - const: 1 > + - description: clock number > + > + freq-range: > + $ref: /schemas/types.yaml#/definitions/uint32-array > + items: > + - description: minimal clock frequency > + - description: maximum clock frequency > + > + "#clock-cells": > + const: 0 > + > + clock-output-names: > + maxItems: 1 > + > + required: > + - compatible > + - arm,vexpress-sysreg,func > + - "#clock-cells" > + > + "^volt-.+$": > + $ref: /schemas/regulator/regulator.yaml# unevaluatedProperties: false > + properties: > + compatible: > + const: arm,vexpress-volt > + > + arm,vexpress-sysreg,func: > + description: regulator specifier > + $ref: /schemas/types.yaml#/definitions/uint32-array > + items: > + - const: 2 > + - description: device number > + > + label: > + maxItems: 1 > + > + required: > + - compatible > + - arm,vexpress-sysreg,func > + > + "^amp-.+$": > + type: object additionalProperties: false > + properties: > + compatible: > + const: arm,vexpress-amp > + > + arm,vexpress-sysreg,func: > + description: current sensor identifier > + $ref: /schemas/types.yaml#/definitions/uint32-array > + items: > + - const: 3 > + - description: device number > + > + label: > + maxItems: 1 > + > + required: > + - compatible > + - arm,vexpress-sysreg,func > + > + "^temp-.+$": > + type: object additionalProperties: false > + properties: > + compatible: > + const: arm,vexpress-temp > + > + arm,vexpress-sysreg,func: > + description: temperature sensor identifier > + $ref: /schemas/types.yaml#/definitions/uint32-array > + items: > + - const: 4 > + - description: device number > + > + label: > + maxItems: 1 > + > + required: > + - compatible > + - arm,vexpress-sysreg,func > + > + "^reset[0-9]*$": > + type: object additionalProperties: false > + properties: > + compatible: > + const: arm,vexpress-reset > + > + arm,vexpress-sysreg,func: > + description: reset specifier > + $ref: /schemas/types.yaml#/definitions/uint32-array > + items: > + - const: 5 > + - description: reset device number > + > + required: > + - compatible > + - arm,vexpress-sysreg,func > + > + "^power-.+$": > + type: object additionalProperties: false > + properties: > + compatible: > + const: arm,vexpress-power > + > + arm,vexpress-sysreg,func: > + description: power sensor identifier > + $ref: /schemas/types.yaml#/definitions/uint32-array > + items: > + - const: 12 > + - description: device number > + > + label: > + maxItems: 1 > + > + required: > + - compatible > + - arm,vexpress-sysreg,func > + > + "^energy(-.+)?$": > + type: object additionalProperties: false > + properties: > + compatible: > + const: arm,vexpress-energy > + > + arm,vexpress-sysreg,func: > + description: energy sensor identifier > + $ref: /schemas/types.yaml#/definitions/uint32-array > + oneOf: > + - items: > + - const: 13 > + - description: device number > + - items: > + - const: 13 > + - description: device number > + - const: 13 > + - description: second device number > + > + label: > + maxItems: 1 > + > + required: > + - compatible > + - arm,vexpress-sysreg,func > + > +examples: > + - | > + mcc { > + compatible = "arm,vexpress,config-bus"; > + arm,vexpress,config-bridge = <&v2m_sysreg>; > + > + clk0 { > + compatible = "arm,vexpress-osc"; > + arm,vexpress-sysreg,func = <1 0>; > + #clock-cells = <0>; > + }; > + > + energy { > + compatible = "arm,vexpress-energy"; > + arm,vexpress-sysreg,func = <13 0>, <13 1>; > + }; > + }; > diff --git a/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt b/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt > deleted file mode 100644 > index 50095802fb4ac..0000000000000 > --- a/Documentation/devicetree/bindings/arm/vexpress-sysreg.txt > +++ /dev/null > @@ -1,103 +0,0 @@ > -ARM Versatile Express system registers > --------------------------------------- > - > -This is a system control registers block, providing multiple low level > -platform functions like board detection and identification, software > -interrupt generation, MMC and NOR Flash control etc. > - > -Required node properties: > -- compatible value : = "arm,vexpress,sysreg"; > -- reg : physical base address and the size of the registers window > - > -Deprecated properties, replaced by GPIO subnodes (see below): > -- gpio-controller : specifies that the node is a GPIO controller > -- #gpio-cells : size of the GPIO specifier, should be 2: > - - first cell is the pseudo-GPIO line number: > - 0 - MMC CARDIN > - 1 - MMC WPROT > - 2 - NOR FLASH WPn > - - second cell can take standard GPIO flags (currently ignored). > - > -Control registers providing pseudo-GPIO lines must be represented > -by subnodes, each of them requiring the following properties: > -- compatible value : one of > - "arm,vexpress-sysreg,sys_led" > - "arm,vexpress-sysreg,sys_mci" > - "arm,vexpress-sysreg,sys_flash" > -- gpio-controller : makes the node a GPIO controller > -- #gpio-cells : size of the GPIO specifier, must be 2: > - - first cell is the function number: > - - for sys_led : 0..7 = LED 0..7 > - - for sys_mci : 0 = MMC CARDIN, 1 = MMC WPROT > - - for sys_flash : 0 = NOR FLASH WPn > - - second cell can take standard GPIO flags (currently ignored). > - > -Example: > - v2m_sysreg: sysreg@10000000 { > - compatible = "arm,vexpress-sysreg"; > - reg = <0x10000000 0x1000>; > - > - v2m_led_gpios: sys_led@8 { > - compatible = "arm,vexpress-sysreg,sys_led"; > - gpio-controller; > - #gpio-cells = <2>; > - }; > - > - v2m_mmc_gpios: sys_mci@48 { > - compatible = "arm,vexpress-sysreg,sys_mci"; > - gpio-controller; > - #gpio-cells = <2>; > - }; > - > - v2m_flash_gpios: sys_flash@4c { > - compatible = "arm,vexpress-sysreg,sys_flash"; > - gpio-controller; > - #gpio-cells = <2>; > - }; > - }; > - > -This block also can also act a bridge to the platform's configuration > -bus via "system control" interface, addressing devices with site number, > -position in the board stack, config controller, function and device > -numbers - see motherboard's TRM for more details. All configuration > -controller accessible via this interface must reference the sysreg > -node via "arm,vexpress,config-bridge" phandle and define appropriate > -topology properties - see main vexpress node documentation for more > -details. Each child of such node describes one function and must > -define the following properties: > -- compatible value : must be one of (corresponding to the TRM): > - "arm,vexpress-amp" > - "arm,vexpress-dvimode" > - "arm,vexpress-energy" > - "arm,vexpress-muxfpga" > - "arm,vexpress-osc" > - "arm,vexpress-power" > - "arm,vexpress-reboot" > - "arm,vexpress-reset" > - "arm,vexpress-scc" > - "arm,vexpress-shutdown" > - "arm,vexpress-temp" > - "arm,vexpress-volt" > -- arm,vexpress-sysreg,func : must contain a set of two cells long groups: > - - first cell of each group defines the function number > - (eg. 1 for clock generator, 2 for voltage regulators etc.) > - - second cell of each group defines device number (eg. osc 0, > - osc 1 etc.) > - - some functions (eg. energy meter, with its 64 bit long counter) > - are using more than one function/device number pair > - > -Example: > - mcc { > - compatible = "arm,vexpress,config-bus"; > - arm,vexpress,config-bridge = <&v2m_sysreg>; > - > - osc@0 { > - compatible = "arm,vexpress-osc"; > - arm,vexpress-sysreg,func = <1 0>; > - }; > - > - energy@0 { > - compatible = "arm,vexpress-energy"; > - arm,vexpress-sysreg,func = <13 0>, <13 1>; > - }; > - }; > -- > 2.25.1 > >