fsl,mu-msi.yaml 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
  2. %YAML 1.2
  3. ---
  4. $id: http://devicetree.org/schemas/interrupt-controller/fsl,mu-msi.yaml#
  5. $schema: http://devicetree.org/meta-schemas/core.yaml#
  6. title: Freescale/NXP i.MX Messaging Unit (MU) work as msi controller
  7. maintainers:
  8. - Frank Li <Frank.Li@nxp.com>
  9. description: |
  10. The Messaging Unit module enables two processors within the SoC to
  11. communicate and coordinate by passing messages (e.g. data, status
  12. and control) through the MU interface. The MU also provides the ability
  13. for one processor (A side) to signal the other processor (B side) using
  14. interrupts.
  15. Because the MU manages the messaging between processors, the MU uses
  16. different clocks (from each side of the different peripheral buses).
  17. Therefore, the MU must synchronize the accesses from one side to the
  18. other. The MU accomplishes synchronization using two sets of matching
  19. registers (Processor A-side, Processor B-side).
  20. MU can work as msi interrupt controller to do doorbell
  21. allOf:
  22. - $ref: /schemas/interrupt-controller/msi-controller.yaml#
  23. properties:
  24. compatible:
  25. enum:
  26. - fsl,imx6sx-mu-msi
  27. - fsl,imx7ulp-mu-msi
  28. - fsl,imx8ulp-mu-msi
  29. - fsl,imx8ulp-mu-msi-s4
  30. reg:
  31. items:
  32. - description: a side register base address
  33. - description: b side register base address
  34. reg-names:
  35. items:
  36. - const: processor-a-side
  37. - const: processor-b-side
  38. interrupts:
  39. description: a side interrupt number.
  40. maxItems: 1
  41. clocks:
  42. maxItems: 1
  43. power-domains:
  44. items:
  45. - description: a side power domain
  46. - description: b side power domain
  47. power-domain-names:
  48. items:
  49. - const: processor-a-side
  50. - const: processor-b-side
  51. interrupt-controller: true
  52. msi-controller: true
  53. "#msi-cells":
  54. const: 0
  55. required:
  56. - compatible
  57. - reg
  58. - interrupts
  59. - interrupt-controller
  60. - msi-controller
  61. - "#msi-cells"
  62. additionalProperties: false
  63. examples:
  64. - |
  65. #include <dt-bindings/interrupt-controller/arm-gic.h>
  66. #include <dt-bindings/firmware/imx/rsrc.h>
  67. msi-controller@5d270000 {
  68. compatible = "fsl,imx6sx-mu-msi";
  69. msi-controller;
  70. #msi-cells = <0>;
  71. interrupt-controller;
  72. reg = <0x5d270000 0x10000>, /* A side */
  73. <0x5d300000 0x10000>; /* B side */
  74. reg-names = "processor-a-side", "processor-b-side";
  75. interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>;
  76. power-domains = <&pd IMX_SC_R_MU_12A>,
  77. <&pd IMX_SC_R_MU_12B>;
  78. power-domain-names = "processor-a-side", "processor-b-side";
  79. };