162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/firmware/fsl,scu.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: NXP i.MX System Controller Firmware (SCFW)
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Dong Aisheng <aisheng.dong@nxp.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription:
1362306a36Sopenharmony_ci  The System Controller Firmware (SCFW) is a low-level system function
1462306a36Sopenharmony_ci  which runs on a dedicated Cortex-M core to provide power, clock, and
1562306a36Sopenharmony_ci  resource management. It exists on some i.MX8 processors. e.g. i.MX8QM
1662306a36Sopenharmony_ci  (QM, QP), and i.MX8QX (QXP, DX).
1762306a36Sopenharmony_ci  The AP communicates with the SC using a multi-ported MU module found
1862306a36Sopenharmony_ci  in the LSIO subsystem. The current definition of this MU module provides
1962306a36Sopenharmony_ci  5 remote AP connections to the SC to support up to 5 execution environments
2062306a36Sopenharmony_ci  (TZ, HV, standard Linux, etc.). The SC side of this MU module interfaces
2162306a36Sopenharmony_ci  with the LSIO DSC IP bus. The SC firmware will communicate with this MU
2262306a36Sopenharmony_ci  using the MSI bus.
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciproperties:
2562306a36Sopenharmony_ci  compatible:
2662306a36Sopenharmony_ci    const: fsl,imx-scu
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci  clock-controller:
2962306a36Sopenharmony_ci    description:
3062306a36Sopenharmony_ci      Clock controller node that provides the clocks controlled by the SCU
3162306a36Sopenharmony_ci    $ref: /schemas/clock/fsl,scu-clk.yaml
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci  gpio:
3462306a36Sopenharmony_ci    description:
3562306a36Sopenharmony_ci      Control the GPIO PINs on SCU domain over the firmware APIs
3662306a36Sopenharmony_ci    $ref: /schemas/gpio/fsl,imx8qxp-sc-gpio.yaml
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci  ocotp:
3962306a36Sopenharmony_ci    description:
4062306a36Sopenharmony_ci      OCOTP controller node provided by the SCU
4162306a36Sopenharmony_ci    $ref: /schemas/nvmem/fsl,scu-ocotp.yaml
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci  keys:
4462306a36Sopenharmony_ci    description:
4562306a36Sopenharmony_ci      Keys provided by the SCU
4662306a36Sopenharmony_ci    $ref: /schemas/input/fsl,scu-key.yaml
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci  mboxes:
4962306a36Sopenharmony_ci    description:
5062306a36Sopenharmony_ci      A list of phandles of TX MU channels followed by a list of phandles of
5162306a36Sopenharmony_ci      RX MU channels. The list may include at the end one more optional MU
5262306a36Sopenharmony_ci      channel for general interrupt. The number of expected tx and rx
5362306a36Sopenharmony_ci      channels is 1 TX and 1 RX channels if MU instance is "fsl,imx8-mu-scu"
5462306a36Sopenharmony_ci      compatible, 4 TX and 4 RX channels otherwise. All MU channels must be
5562306a36Sopenharmony_ci      within the same MU instance. Cross instances are not allowed. The MU
5662306a36Sopenharmony_ci      instance can only be one of LSIO MU0~M4 for imx8qxp and imx8qm. Users
5762306a36Sopenharmony_ci      need to ensure that one is used that does not conflict with other
5862306a36Sopenharmony_ci      execution environments such as ATF.
5962306a36Sopenharmony_ci    oneOf:
6062306a36Sopenharmony_ci      - items:
6162306a36Sopenharmony_ci          - description: TX0 MU channel
6262306a36Sopenharmony_ci          - description: RX0 MU channel
6362306a36Sopenharmony_ci      - items:
6462306a36Sopenharmony_ci          - description: TX0 MU channel
6562306a36Sopenharmony_ci          - description: RX0 MU channel
6662306a36Sopenharmony_ci          - description: optional MU channel for general interrupt
6762306a36Sopenharmony_ci      - items:
6862306a36Sopenharmony_ci          - description: TX0 MU channel
6962306a36Sopenharmony_ci          - description: TX1 MU channel
7062306a36Sopenharmony_ci          - description: TX2 MU channel
7162306a36Sopenharmony_ci          - description: TX3 MU channel
7262306a36Sopenharmony_ci          - description: RX0 MU channel
7362306a36Sopenharmony_ci          - description: RX1 MU channel
7462306a36Sopenharmony_ci          - description: RX2 MU channel
7562306a36Sopenharmony_ci          - description: RX3 MU channel
7662306a36Sopenharmony_ci      - items:
7762306a36Sopenharmony_ci          - description: TX0 MU channel
7862306a36Sopenharmony_ci          - description: TX1 MU channel
7962306a36Sopenharmony_ci          - description: TX2 MU channel
8062306a36Sopenharmony_ci          - description: TX3 MU channel
8162306a36Sopenharmony_ci          - description: RX0 MU channel
8262306a36Sopenharmony_ci          - description: RX1 MU channel
8362306a36Sopenharmony_ci          - description: RX2 MU channel
8462306a36Sopenharmony_ci          - description: RX3 MU channel
8562306a36Sopenharmony_ci          - description: optional MU channel for general interrupt
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci  mbox-names:
8862306a36Sopenharmony_ci    oneOf:
8962306a36Sopenharmony_ci      - items:
9062306a36Sopenharmony_ci          - const: tx0
9162306a36Sopenharmony_ci          - const: rx0
9262306a36Sopenharmony_ci      - items:
9362306a36Sopenharmony_ci          - const: tx0
9462306a36Sopenharmony_ci          - const: rx0
9562306a36Sopenharmony_ci          - const: gip3
9662306a36Sopenharmony_ci      - items:
9762306a36Sopenharmony_ci          - const: tx0
9862306a36Sopenharmony_ci          - const: tx1
9962306a36Sopenharmony_ci          - const: tx2
10062306a36Sopenharmony_ci          - const: tx3
10162306a36Sopenharmony_ci          - const: rx0
10262306a36Sopenharmony_ci          - const: rx1
10362306a36Sopenharmony_ci          - const: rx2
10462306a36Sopenharmony_ci          - const: rx3
10562306a36Sopenharmony_ci      - items:
10662306a36Sopenharmony_ci          - const: tx0
10762306a36Sopenharmony_ci          - const: tx1
10862306a36Sopenharmony_ci          - const: tx2
10962306a36Sopenharmony_ci          - const: tx3
11062306a36Sopenharmony_ci          - const: rx0
11162306a36Sopenharmony_ci          - const: rx1
11262306a36Sopenharmony_ci          - const: rx2
11362306a36Sopenharmony_ci          - const: rx3
11462306a36Sopenharmony_ci          - const: gip3
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci  pinctrl:
11762306a36Sopenharmony_ci    description:
11862306a36Sopenharmony_ci      Pin controller provided by the SCU
11962306a36Sopenharmony_ci    $ref: /schemas/pinctrl/fsl,scu-pinctrl.yaml
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci  power-controller:
12262306a36Sopenharmony_ci    description:
12362306a36Sopenharmony_ci      Power domains controller node that provides the power domains
12462306a36Sopenharmony_ci      controlled by the SCU
12562306a36Sopenharmony_ci    $ref: /schemas/power/fsl,scu-pd.yaml
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ci  rtc:
12862306a36Sopenharmony_ci    description:
12962306a36Sopenharmony_ci      RTC controller provided by the SCU
13062306a36Sopenharmony_ci    $ref: /schemas/rtc/fsl,scu-rtc.yaml
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci  thermal-sensor:
13362306a36Sopenharmony_ci    description:
13462306a36Sopenharmony_ci      Thermal sensor provided by the SCU
13562306a36Sopenharmony_ci    $ref: /schemas/thermal/fsl,scu-thermal.yaml
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci  watchdog:
13862306a36Sopenharmony_ci    description:
13962306a36Sopenharmony_ci      Watchdog controller provided by the SCU
14062306a36Sopenharmony_ci    $ref: /schemas/watchdog/fsl,scu-wdt.yaml
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_cirequired:
14362306a36Sopenharmony_ci  - compatible
14462306a36Sopenharmony_ci  - mbox-names
14562306a36Sopenharmony_ci  - mboxes
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ciadditionalProperties: false
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ciexamples:
15062306a36Sopenharmony_ci  - |
15162306a36Sopenharmony_ci    #include <dt-bindings/firmware/imx/rsrc.h>
15262306a36Sopenharmony_ci    #include <dt-bindings/input/input.h>
15362306a36Sopenharmony_ci    #include <dt-bindings/pinctrl/pads-imx8qxp.h>
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci    firmware {
15662306a36Sopenharmony_ci        system-controller {
15762306a36Sopenharmony_ci            compatible = "fsl,imx-scu";
15862306a36Sopenharmony_ci            mbox-names = "tx0", "tx1", "tx2", "tx3",
15962306a36Sopenharmony_ci                         "rx0", "rx1", "rx2", "rx3",
16062306a36Sopenharmony_ci                         "gip3";
16162306a36Sopenharmony_ci            mboxes = <&lsio_mu1 0 0 &lsio_mu1 0 1 &lsio_mu1 0 2 &lsio_mu1 0 3
16262306a36Sopenharmony_ci                      &lsio_mu1 1 0 &lsio_mu1 1 1 &lsio_mu1 1 2 &lsio_mu1 1 3
16362306a36Sopenharmony_ci                      &lsio_mu1 3 3>;
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci            clock-controller {
16662306a36Sopenharmony_ci                compatible = "fsl,imx8qxp-clk", "fsl,scu-clk";
16762306a36Sopenharmony_ci                #clock-cells = <2>;
16862306a36Sopenharmony_ci            };
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ci            pinctrl {
17162306a36Sopenharmony_ci                compatible = "fsl,imx8qxp-iomuxc";
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ci                pinctrl_lpuart0: lpuart0grp {
17462306a36Sopenharmony_ci                    fsl,pins = <
17562306a36Sopenharmony_ci                        IMX8QXP_UART0_RX_ADMA_UART0_RX   0x06000020
17662306a36Sopenharmony_ci                        IMX8QXP_UART0_TX_ADMA_UART0_TX   0x06000020
17762306a36Sopenharmony_ci                    >;
17862306a36Sopenharmony_ci                };
17962306a36Sopenharmony_ci            };
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ci            ocotp {
18262306a36Sopenharmony_ci                compatible = "fsl,imx8qxp-scu-ocotp";
18362306a36Sopenharmony_ci                #address-cells = <1>;
18462306a36Sopenharmony_ci                #size-cells = <1>;
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ci                fec_mac0: mac@2c4 {
18762306a36Sopenharmony_ci                    reg = <0x2c4 6>;
18862306a36Sopenharmony_ci                };
18962306a36Sopenharmony_ci            };
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci            power-controller {
19262306a36Sopenharmony_ci                compatible = "fsl,imx8qxp-scu-pd", "fsl,scu-pd";
19362306a36Sopenharmony_ci                #power-domain-cells = <1>;
19462306a36Sopenharmony_ci            };
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ci            rtc {
19762306a36Sopenharmony_ci                compatible = "fsl,imx8qxp-sc-rtc";
19862306a36Sopenharmony_ci            };
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ci            keys {
20162306a36Sopenharmony_ci                compatible = "fsl,imx8qxp-sc-key", "fsl,imx-sc-key";
20262306a36Sopenharmony_ci                linux,keycodes = <KEY_POWER>;
20362306a36Sopenharmony_ci            };
20462306a36Sopenharmony_ci
20562306a36Sopenharmony_ci            watchdog {
20662306a36Sopenharmony_ci                compatible = "fsl,imx8qxp-sc-wdt", "fsl,imx-sc-wdt";
20762306a36Sopenharmony_ci                timeout-sec = <60>;
20862306a36Sopenharmony_ci            };
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ci            thermal-sensor {
21162306a36Sopenharmony_ci                compatible = "fsl,imx8qxp-sc-thermal", "fsl,imx-sc-thermal";
21262306a36Sopenharmony_ci                #thermal-sensor-cells = <1>;
21362306a36Sopenharmony_ci            };
21462306a36Sopenharmony_ci        };
21562306a36Sopenharmony_ci    };
216