access-controllers.yaml 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
  2. %YAML 1.2
  3. ---
  4. $id: http://devicetree.org/schemas/access-controllers/access-controllers.yaml#
  5. $schema: http://devicetree.org/meta-schemas/core.yaml#
  6. title: Generic Domain Access Controllers
  7. maintainers:
  8. - Oleksii Moisieiev <oleksii_moisieiev@epam.com>
  9. description: |+
  10. Common access controllers properties
  11. Access controllers are in charge of stating which of the hardware blocks under
  12. their responsibility (their domain) can be accesssed by which compartment. A
  13. compartment can be a cluster of CPUs (or coprocessors), a range of addresses
  14. or a group of hardware blocks. An access controller's domain is the set of
  15. resources covered by the access controller.
  16. This device tree binding can be used to bind devices to their access
  17. controller provided by access-controllers property. In this case, the device
  18. is a consumer and the access controller is the provider.
  19. An access controller can be represented by any node in the device tree and
  20. can provide one or more configuration parameters, needed to control parameters
  21. of the consumer device. A consumer node can refer to the provider by phandle
  22. and a set of phandle arguments, specified by '#access-controller-cells'
  23. property in the access controller node.
  24. Access controllers are typically used to set/read the permissions of a
  25. hardware block and grant access to it. Any of which depends on the access
  26. controller. The capabilities of each access controller are defined by the
  27. binding of the access controller device.
  28. Each node can be a consumer for the several access controllers.
  29. # always select the core schema
  30. select: true
  31. properties:
  32. "#access-controller-cells":
  33. description:
  34. Number of cells in an access-controllers specifier;
  35. Can be any value as specified by device tree binding documentation
  36. of a particular provider. The node is an access controller.
  37. access-controller-names:
  38. $ref: /schemas/types.yaml#/definitions/string-array
  39. description:
  40. A list of access-controllers names, sorted in the same order as
  41. access-controllers entries. Consumer drivers will use
  42. access-controller-names to match with existing access-controllers entries.
  43. access-controllers:
  44. $ref: /schemas/types.yaml#/definitions/phandle-array
  45. description:
  46. A list of access controller specifiers, as defined by the
  47. bindings of the access-controllers provider.
  48. additionalProperties: true
  49. examples:
  50. - |
  51. clock_controller: access-controllers@50000 {
  52. reg = <0x50000 0x400>;
  53. #access-controller-cells = <2>;
  54. };
  55. bus_controller: bus@60000 {
  56. reg = <0x60000 0x10000>;
  57. #address-cells = <1>;
  58. #size-cells = <1>;
  59. ranges;
  60. #access-controller-cells = <3>;
  61. uart4: serial@60100 {
  62. reg = <0x60100 0x400>;
  63. clocks = <&clk_serial>;
  64. access-controllers = <&clock_controller 1 2>,
  65. <&bus_controller 1 3 5>;
  66. access-controller-names = "clock", "bus";
  67. };
  68. };