fsl,scu.yaml 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
  2. %YAML 1.2
  3. ---
  4. $id: http://devicetree.org/schemas/firmware/fsl,scu.yaml#
  5. $schema: http://devicetree.org/meta-schemas/core.yaml#
  6. title: NXP i.MX System Controller Firmware (SCFW)
  7. maintainers:
  8. - Dong Aisheng <aisheng.dong@nxp.com>
  9. description:
  10. The System Controller Firmware (SCFW) is a low-level system function
  11. which runs on a dedicated Cortex-M core to provide power, clock, and
  12. resource management. It exists on some i.MX8 processors. e.g. i.MX8QM
  13. (QM, QP), and i.MX8QX (QXP, DX).
  14. The AP communicates with the SC using a multi-ported MU module found
  15. in the LSIO subsystem. The current definition of this MU module provides
  16. 5 remote AP connections to the SC to support up to 5 execution environments
  17. (TZ, HV, standard Linux, etc.). The SC side of this MU module interfaces
  18. with the LSIO DSC IP bus. The SC firmware will communicate with this MU
  19. using the MSI bus.
  20. properties:
  21. compatible:
  22. const: fsl,imx-scu
  23. clock-controller:
  24. description:
  25. Clock controller node that provides the clocks controlled by the SCU
  26. $ref: /schemas/clock/fsl,scu-clk.yaml
  27. gpio:
  28. description:
  29. Control the GPIO PINs on SCU domain over the firmware APIs
  30. $ref: /schemas/gpio/fsl,imx8qxp-sc-gpio.yaml
  31. ocotp:
  32. description:
  33. OCOTP controller node provided by the SCU
  34. $ref: /schemas/nvmem/fsl,scu-ocotp.yaml
  35. keys:
  36. description:
  37. Keys provided by the SCU
  38. $ref: /schemas/input/fsl,scu-key.yaml
  39. reset-controller:
  40. type: object
  41. properties:
  42. compatible:
  43. const: fsl,imx-scu-reset
  44. '#reset-cells':
  45. const: 1
  46. required:
  47. - compatible
  48. - '#reset-cells'
  49. additionalProperties: false
  50. mboxes:
  51. description:
  52. A list of phandles of TX MU channels followed by a list of phandles of
  53. RX MU channels. The list may include at the end one more optional MU
  54. channel for general interrupt. The number of expected tx and rx
  55. channels is 1 TX and 1 RX channels if MU instance is "fsl,imx8-mu-scu"
  56. compatible, 4 TX and 4 RX channels otherwise. All MU channels must be
  57. within the same MU instance. Cross instances are not allowed. The MU
  58. instance can only be one of LSIO MU0~M4 for imx8qxp and imx8qm. Users
  59. need to ensure that one is used that does not conflict with other
  60. execution environments such as ATF.
  61. oneOf:
  62. - items:
  63. - description: TX0 MU channel
  64. - description: RX0 MU channel
  65. - items:
  66. - description: TX0 MU channel
  67. - description: RX0 MU channel
  68. - description: optional MU channel for general interrupt
  69. - deprecated: true
  70. items:
  71. - description: TX0 MU channel
  72. - description: TX1 MU channel
  73. - description: TX2 MU channel
  74. - description: TX3 MU channel
  75. - description: RX0 MU channel
  76. - description: RX1 MU channel
  77. - description: RX2 MU channel
  78. - description: RX3 MU channel
  79. - deprecated: true
  80. items:
  81. - description: TX0 MU channel
  82. - description: TX1 MU channel
  83. - description: TX2 MU channel
  84. - description: TX3 MU channel
  85. - description: RX0 MU channel
  86. - description: RX1 MU channel
  87. - description: RX2 MU channel
  88. - description: RX3 MU channel
  89. - description: optional MU channel for general interrupt
  90. mbox-names:
  91. oneOf:
  92. - items:
  93. - const: tx0
  94. - const: rx0
  95. - items:
  96. - const: tx0
  97. - const: rx0
  98. - const: gip3
  99. - deprecated: true
  100. items:
  101. - const: tx0
  102. - const: tx1
  103. - const: tx2
  104. - const: tx3
  105. - const: rx0
  106. - const: rx1
  107. - const: rx2
  108. - const: rx3
  109. - deprecated: true
  110. items:
  111. - const: tx0
  112. - const: tx1
  113. - const: tx2
  114. - const: tx3
  115. - const: rx0
  116. - const: rx1
  117. - const: rx2
  118. - const: rx3
  119. - const: gip3
  120. pinctrl:
  121. description:
  122. Pin controller provided by the SCU
  123. $ref: /schemas/pinctrl/fsl,scu-pinctrl.yaml
  124. power-controller:
  125. description:
  126. Power domains controller node that provides the power domains
  127. controlled by the SCU
  128. $ref: /schemas/power/fsl,scu-pd.yaml
  129. rtc:
  130. description:
  131. RTC controller provided by the SCU
  132. $ref: /schemas/rtc/fsl,scu-rtc.yaml
  133. thermal-sensor:
  134. description:
  135. Thermal sensor provided by the SCU
  136. $ref: /schemas/thermal/fsl,scu-thermal.yaml
  137. watchdog:
  138. description:
  139. Watchdog controller provided by the SCU
  140. $ref: /schemas/watchdog/fsl,scu-wdt.yaml
  141. required:
  142. - compatible
  143. - mbox-names
  144. - mboxes
  145. additionalProperties: false
  146. examples:
  147. - |
  148. #include <dt-bindings/firmware/imx/rsrc.h>
  149. #include <dt-bindings/input/input.h>
  150. #include <dt-bindings/pinctrl/pads-imx8qxp.h>
  151. firmware {
  152. system-controller {
  153. compatible = "fsl,imx-scu";
  154. mbox-names = "tx0", "rx0", "gip3";
  155. mboxes = <&lsio_mu1 0 0
  156. &lsio_mu1 1 0
  157. &lsio_mu1 3 3>;
  158. clock-controller {
  159. compatible = "fsl,imx8qxp-clk", "fsl,scu-clk";
  160. #clock-cells = <2>;
  161. };
  162. pinctrl {
  163. compatible = "fsl,imx8qxp-iomuxc";
  164. pinctrl_lpuart0: lpuart0grp {
  165. fsl,pins = <
  166. IMX8QXP_UART0_RX_ADMA_UART0_RX 0x06000020
  167. IMX8QXP_UART0_TX_ADMA_UART0_TX 0x06000020
  168. >;
  169. };
  170. };
  171. ocotp {
  172. compatible = "fsl,imx8qxp-scu-ocotp";
  173. #address-cells = <1>;
  174. #size-cells = <1>;
  175. fec_mac0: mac@2c4 {
  176. reg = <0x2c4 6>;
  177. };
  178. };
  179. power-controller {
  180. compatible = "fsl,imx8qxp-scu-pd", "fsl,scu-pd";
  181. #power-domain-cells = <1>;
  182. };
  183. rtc {
  184. compatible = "fsl,imx8qxp-sc-rtc";
  185. };
  186. keys {
  187. compatible = "fsl,imx8qxp-sc-key", "fsl,imx-sc-key";
  188. linux,keycodes = <KEY_POWER>;
  189. };
  190. watchdog {
  191. compatible = "fsl,imx8qxp-sc-wdt", "fsl,imx-sc-wdt";
  192. timeout-sec = <60>;
  193. };
  194. thermal-sensor {
  195. compatible = "fsl,imx8qxp-sc-thermal", "fsl,imx-sc-thermal";
  196. #thermal-sensor-cells = <1>;
  197. };
  198. };
  199. };