Commit cc57d7da authored by Maxime Ripard's avatar Maxime Ripard Committed by Rob Herring
Browse files

dt-bindings: Add syscon YAML description



The syscon binding is a pretty loose one, with everyone having a bunch of
vendor specific compatibles.

In order to start the effort to describe them using YAML, let's create a
binding that tolerates additional, not listed, compatibles.

Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent a2f12f80
Loading
Loading
Loading
Loading
+0 −32
Original line number Diff line number Diff line
* System Controller Registers R/W driver

System controller node represents a register region containing a set
of miscellaneous registers. The registers are not cohesive enough to
represent as any specific type of device. The typical use-case is for
some other node's driver, or platform-specific code, to acquire a
reference to the syscon node (e.g. by phandle, node path, or search
using a specific compatible value), interrogate the node (or associated
OS driver) to determine the location of the registers, and access the
registers directly.

Required properties:
- compatible: Should contain "syscon".
- reg: the register region can be accessed from syscon

Optional property:
- reg-io-width: the size (in bytes) of the IO accesses that should be
  performed on the device.
- hwlocks: reference to a phandle of a hardware spinlock provider node.

Examples:
gpr: iomuxc-gpr@20e0000 {
	compatible = "fsl,imx6q-iomuxc-gpr", "syscon";
	reg = <0x020e0000 0x38>;
	hwlocks = <&hwlock1 1>;
};

hwlock1: hwspinlock@40500000 {
	...
	reg = <0x40500000 0x1000>;
	#hwlock-cells = <1>;
};
+84 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/mfd/syscon.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: System Controller Registers R/W Device Tree Bindings

description: |
  System controller node represents a register region containing a set
  of miscellaneous registers. The registers are not cohesive enough to
  represent as any specific type of device. The typical use-case is
  for some other node's driver, or platform-specific code, to acquire
  a reference to the syscon node (e.g. by phandle, node path, or
  search using a specific compatible value), interrogate the node (or
  associated OS driver) to determine the location of the registers,
  and access the registers directly.

maintainers:
  - Lee Jones <lee.jones@linaro.org>

select:
  properties:
    compatible:
      contains:
        enum:
          - syscon

  required:
    - compatible

properties:
  compatible:
    anyOf:
      - items:
        - enum:
          - allwinner,sun8i-a83t-system-controller
          - allwinner,sun8i-h3-system-controller
          - allwinner,sun8i-v3s-system-controller
          - allwinner,sun50i-a64-system-controller

        - const: syscon

      - contains:
          const: syscon
        additionalItems: true

  reg:
    maxItems: 1

  reg-io-width:
    description: |
      The size (in bytes) of the IO accesses that should be performed
      on the device.
    allOf:
      - $ref: /schemas/types.yaml#/definitions/uint32
      - enum: [ 1, 2, 4, 8 ]

  hwlocks:
    maxItems: 1
    description:
      Reference to a phandle of a hardware spinlock provider node.

required:
  - compatible
  - reg

unevaluatedProperties: false

examples:
  - |
    syscon: syscon@1c00000 {
        compatible = "allwinner,sun8i-h3-system-controller", "syscon";
        reg = <0x01c00000 0x1000>;
    };

  - |
    gpr: iomuxc-gpr@20e0000 {
        compatible = "fsl,imx6q-iomuxc-gpr", "syscon";
        reg = <0x020e0000 0x38>;
        hwlocks = <&hwlock1 1>;
    };

...
+0 −20
Original line number Diff line number Diff line
* Allwinner sun8i system controller

This file describes the bindings for the system controller present in
Allwinner SoC H3, A83T and A64.
The principal function of this syscon is to control EMAC PHY choice and
config.

Required properties for the system controller:
- reg: address and length of the register for the device.
- compatible: should be "syscon" and one of the following string:
		"allwinner,sun8i-h3-system-controller"
		"allwinner,sun8i-v3s-system-controller"
		"allwinner,sun50i-a64-system-controller"
		"allwinner,sun8i-a83t-system-controller"

Example:
syscon: syscon@1c00000 {
	compatible = "allwinner,sun8i-h3-system-controller", "syscon";
	reg = <0x01c00000 0x1000>;
};