| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/access-controllers/access-controllers.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Generic Domain Access Controllers |
| |
| maintainers: |
| - Oleksii Moisieiev <oleksii_moisieiev@epam.com> |
| |
| description: |+ |
| Common access controllers properties |
| |
| Access controllers are in charge of stating which of the hardware blocks under |
| their responsibility (their domain) can be accesssed by which compartment. A |
| compartment can be a cluster of CPUs (or coprocessors), a range of addresses |
| or a group of hardware blocks. An access controller's domain is the set of |
| resources covered by the access controller. |
| |
| This device tree binding can be used to bind devices to their access |
| controller provided by access-controllers property. In this case, the device |
| is a consumer and the access controller is the provider. |
| |
| An access controller can be represented 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 '#access-controller-cells' |
| property in the access controller node. |
| |
| Access controllers are typically used to set/read the permissions of a |
| hardware block and grant access to it. Any of which depends on the access |
| controller. The capabilities of each access controller are defined by the |
| binding of the access controller device. |
| |
| Each node can be a consumer for the several access controllers. |
| |
| # always select the core schema |
| select: true |
| |
| properties: |
| "#access-controller-cells": |
| description: |
| Number of cells in an access-controllers specifier; |
| Can be any value as specified by device tree binding documentation |
| of a particular provider. The node is an access controller. |
| |
| access-controller-names: |
| $ref: /schemas/types.yaml#/definitions/string-array |
| description: |
| A list of access-controllers names, sorted in the same order as |
| access-controllers entries. Consumer drivers will use |
| access-controller-names to match with existing access-controllers entries. |
| |
| access-controllers: |
| $ref: /schemas/types.yaml#/definitions/phandle-array |
| description: |
| A list of access controller specifiers, as defined by the |
| bindings of the access-controllers provider. |
| |
| additionalProperties: true |
| |
| examples: |
| - | |
| clock_controller: access-controllers@50000 { |
| reg = <0x50000 0x400>; |
| #access-controller-cells = <2>; |
| }; |
| |
| bus_controller: bus@60000 { |
| reg = <0x60000 0x10000>; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| ranges; |
| #access-controller-cells = <3>; |
| |
| uart4: serial@60100 { |
| reg = <0x60100 0x400>; |
| clocks = <&clk_serial>; |
| access-controllers = <&clock_controller 1 2>, |
| <&bus_controller 1 3 5>; |
| access-controller-names = "clock", "bus"; |
| }; |
| }; |