ti,sci-intr.yaml 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
  2. %YAML 1.2
  3. ---
  4. $id: http://devicetree.org/schemas/interrupt-controller/ti,sci-intr.yaml#
  5. $schema: http://devicetree.org/meta-schemas/core.yaml#
  6. title: Texas Instruments K3 Interrupt Router
  7. maintainers:
  8. - Lokesh Vutla <lokeshvutla@ti.com>
  9. allOf:
  10. - $ref: /schemas/arm/keystone/ti,k3-sci-common.yaml#
  11. description: |
  12. The Interrupt Router (INTR) module provides a mechanism to mux M
  13. interrupt inputs to N interrupt outputs, where all M inputs are selectable
  14. to be driven per N output. An Interrupt Router can either handle edge
  15. triggered or level triggered interrupts and that is fixed in hardware.
  16. Interrupt Router
  17. +----------------------+
  18. | Inputs Outputs |
  19. +-------+ | +------+ +-----+ |
  20. | GPIO |----------->| | irq0 | | 0 | | Host IRQ
  21. +-------+ | +------+ +-----+ | controller
  22. | . . | +-------+
  23. +-------+ | . . |----->| IRQ |
  24. | INTA |----------->| . . | +-------+
  25. +-------+ | . +-----+ |
  26. | +------+ | N | |
  27. | | irqM | +-----+ |
  28. | +------+ |
  29. | |
  30. +----------------------+
  31. There is one register per output (MUXCNTL_N) that controls the selection.
  32. Configuration of these MUXCNTL_N registers is done by a system controller
  33. (like the Device Memory and Security Controller on K3 AM654 SoC). System
  34. controller will keep track of the used and unused registers within the Router.
  35. Driver should request the system controller to get the range of GIC IRQs
  36. assigned to the requesting hosts. It is the drivers responsibility to keep
  37. track of Host IRQs.
  38. Communication between the host processor running an OS and the system
  39. controller happens through a protocol called TI System Control Interface
  40. (TISCI protocol).
  41. properties:
  42. compatible:
  43. const: ti,sci-intr
  44. ti,intr-trigger-type:
  45. $ref: /schemas/types.yaml#/definitions/uint32
  46. enum: [1, 4]
  47. description: |
  48. Should be one of the following.
  49. 1 = If intr supports edge triggered interrupts.
  50. 4 = If intr supports level triggered interrupts.
  51. reg:
  52. maxItems: 1
  53. interrupt-controller: true
  54. '#interrupt-cells':
  55. const: 1
  56. description: |
  57. The 1st cell should contain interrupt router input hw number.
  58. ti,interrupt-ranges:
  59. $ref: /schemas/types.yaml#/definitions/uint32-matrix
  60. description: |
  61. Interrupt ranges that converts the INTR output hw irq numbers
  62. to parents's input interrupt numbers.
  63. items:
  64. items:
  65. - description: |
  66. "output_irq" specifies the base for intr output irq
  67. - description: |
  68. "parent's input irq" specifies the base for parent irq
  69. - description: |
  70. "limit" specifies the limit for translation
  71. required:
  72. - compatible
  73. - ti,intr-trigger-type
  74. - interrupt-controller
  75. - '#interrupt-cells'
  76. - ti,sci
  77. - ti,sci-dev-id
  78. - ti,interrupt-ranges
  79. unevaluatedProperties: false
  80. examples:
  81. - |
  82. main_gpio_intr: interrupt-controller0 {
  83. compatible = "ti,sci-intr";
  84. ti,intr-trigger-type = <1>;
  85. interrupt-controller;
  86. interrupt-parent = <&gic500>;
  87. #interrupt-cells = <1>;
  88. ti,sci = <&dmsc>;
  89. ti,sci-dev-id = <131>;
  90. ti,interrupt-ranges = <0 360 32>;
  91. };