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