[PATCH v4 1/2] dt-bindings: Document common device controller bindings

Oleksii Moisieiev
2022-07-07T10:57:17Z

Introducing of the common device controller bindings for the controller
provider and consumer devices. Those bindings are intended to allow
divided system on chip into muliple domains, that can be used to
configure hardware permissions.

Signed-off-by: Oleksii Moisieiev <oleksii_moisieiev@epam.com>
---
.../bindings/domains/domain-controller.yaml | 80 +++++++++++++++++++
1 file changed, 80 insertions(+)
create mode 100644 Documentation/devicetree/bindings/domains/domain-controller.yaml

diff --git a/Documentation/devicetree/bindings/domains/domain-controller.yaml b/Documentation/devicetree/bindings/domains/domain-controller.yaml
new file mode 100644
index 000000000000..377fdf0c21fa
--- /dev/null
+++ b/Documentation/devicetree/bindings/domains/domain-controller.yaml
@@ -0,0 +1,80 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/domains/domain-controller.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Generic Domain Controller bindings
+
+maintainers:
+ - Oleksii Moisieiev <oleksii_moisieiev@epam.com>
+
+description: |+
+ Common Domains Controller bindings properties
+
+ Domain controllers allow to divided system on chip into multiple domains
+ that can be used to select by who hardware blocks could be accessed.
+ A domain could be a cluster of CPUs (or coprocessors), a range of addresses
+ or a group of hardware blocks.
+
+ This device tree bindings can be used to bind domain consumer devices with
+ their domains provided by domain controllers. Domain controller provider can
+ be represened by any node in the device tree and can provide one or more
+ configuration parameters, needed to control parameters of the consumer
+ device. A consumer node can refer to the provider by phandle and a set of
+ phandle arguments, specified by '#domain-cells' property in the device
+ controller provider node.
+
+ Device controllers are typically used to set the permissions of the hardware
+ block. The contents of the domain configuration properties are defined by the
+ binding for the individual domain controller device.
+
+ Each node can be a consumer for the several providers. The first
+ configuration 'domain-0' or the one named 'default' is applied before probing
+ the device itself.
+
+# always select the core schema
+select: true
+
+properties:
+ '#domain-cells':
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: Number of cells in a domain controller specifier;
+ Can be any value as specified by device tree binding documentation
+ of a particular provider.
+
+ domain-names:
+ $ref: '/schemas/types.yaml#/definitions/string-array'
+ maxItems: 9
+ description:
+ A list of domain name string, sorted in the same order as domain-X
+ properties. Consumer drivers will use domain-names to match with
+ existing domain specifiers.
+
+patternProperties:
+ "domain-[0-9]":
+ $ref: "/schemas/types.yaml#/definitions/phandle-array"
+ description:
+ A list of domain controller specifiers, as defined by the bindings of
+ the domain controller provider.
+
+additionalProperties: true
+
+examples:
+ - |
+ ctrl0: ctrl@100 {
+ reg = <0x100 0x10>;
+ #domain-cells = <2>;
+ };
+
+ ctrl1: ctrl@110 {
+ reg = <0x110 0x10>;
+ #domain-cells = <3>;
+ };
+
+ foo@0 {
+ reg = <0x0 0x1>;
+ domains-names = "default", "unbind";
+ domain-0 = <&ctrl0 1 2>, <&ctrl1 3 4 5>;
+ domain-1 = <&ctrl0 6 7>, <&ctrl1 8 9 0>;
+ };
--
2.27.0