[PATCH 07/11] dt-bindings: arm: convert vexpress-config to DT schema
Rob Herring
robh at kernel.org
Wed Apr 27 12:37:04 PDT 2022
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 at arm.com>
> ---
> .../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 at arm.com>
> +
> +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 at 10000000 {
> - compatible = "arm,vexpress-sysreg";
> - reg = <0x10000000 0x1000>;
> -
> - v2m_led_gpios: sys_led at 8 {
> - compatible = "arm,vexpress-sysreg,sys_led";
> - gpio-controller;
> - #gpio-cells = <2>;
> - };
> -
> - v2m_mmc_gpios: sys_mci at 48 {
> - compatible = "arm,vexpress-sysreg,sys_mci";
> - gpio-controller;
> - #gpio-cells = <2>;
> - };
> -
> - v2m_flash_gpios: sys_flash at 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 at 0 {
> - compatible = "arm,vexpress-osc";
> - arm,vexpress-sysreg,func = <1 0>;
> - };
> -
> - energy at 0 {
> - compatible = "arm,vexpress-energy";
> - arm,vexpress-sysreg,func = <13 0>, <13 1>;
> - };
> - };
> --
> 2.25.1
>
>
More information about the linux-arm-kernel
mailing list