162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/remoteproc/st,stm32-rproc.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: STMicroelectronics STM32 remote processor controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cidescription:
1062306a36Sopenharmony_ci  This document defines the binding for the remoteproc component that loads and
1162306a36Sopenharmony_ci  boots firmwares on the ST32MP family chipset.
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cimaintainers:
1462306a36Sopenharmony_ci  - Fabien Dessenne <fabien.dessenne@foss.st.com>
1562306a36Sopenharmony_ci  - Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciproperties:
1862306a36Sopenharmony_ci  compatible:
1962306a36Sopenharmony_ci    const: st,stm32mp1-m4
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci  reg:
2262306a36Sopenharmony_ci    description:
2362306a36Sopenharmony_ci      Address ranges of the RETRAM and MCU SRAM memories used by the remote
2462306a36Sopenharmony_ci      processor.
2562306a36Sopenharmony_ci    maxItems: 3
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci  resets:
2862306a36Sopenharmony_ci    minItems: 1
2962306a36Sopenharmony_ci    maxItems: 2
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci  reset-names:
3262306a36Sopenharmony_ci    items:
3362306a36Sopenharmony_ci      - const: mcu_rst
3462306a36Sopenharmony_ci      - const: hold_boot
3562306a36Sopenharmony_ci    minItems: 1
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci  st,syscfg-holdboot:
3862306a36Sopenharmony_ci    description: remote processor reset hold boot
3962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle-array
4062306a36Sopenharmony_ci    items:
4162306a36Sopenharmony_ci      - items:
4262306a36Sopenharmony_ci          - description: Phandle of syscon block
4362306a36Sopenharmony_ci          - description: The offset of the hold boot setting register
4462306a36Sopenharmony_ci          - description: The field mask of the hold boot
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci  st,syscfg-tz:
4762306a36Sopenharmony_ci    deprecated: true
4862306a36Sopenharmony_ci    description:
4962306a36Sopenharmony_ci      Reference to the system configuration which holds the RCC trust zone mode
5062306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle-array
5162306a36Sopenharmony_ci    items:
5262306a36Sopenharmony_ci      - items:
5362306a36Sopenharmony_ci          - description: Phandle of syscon block
5462306a36Sopenharmony_ci          - description: The offset of the trust zone setting register
5562306a36Sopenharmony_ci          - description: The field mask of the trust zone state
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci  interrupts:
5862306a36Sopenharmony_ci    description: Should contain the WWDG1 watchdog reset interrupt
5962306a36Sopenharmony_ci    maxItems: 1
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci  wakeup-source: true
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci  mboxes:
6462306a36Sopenharmony_ci    description:
6562306a36Sopenharmony_ci      This property is required only if the rpmsg/virtio functionality is used.
6662306a36Sopenharmony_ci    items:
6762306a36Sopenharmony_ci      - description: |
6862306a36Sopenharmony_ci          A channel (a) used to communicate through virtqueues with the
6962306a36Sopenharmony_ci          remote proc.
7062306a36Sopenharmony_ci          Bi-directional channel:
7162306a36Sopenharmony_ci            - from local to remote = send message
7262306a36Sopenharmony_ci            - from remote to local = send message ack
7362306a36Sopenharmony_ci      - description: |
7462306a36Sopenharmony_ci          A channel (b) working the opposite direction of channel (a)
7562306a36Sopenharmony_ci      - description: |
7662306a36Sopenharmony_ci          A channel (c) used by the local proc to notify the remote proc that it
7762306a36Sopenharmony_ci          is about to be shut down.
7862306a36Sopenharmony_ci          Unidirectional channel:
7962306a36Sopenharmony_ci            - from local to remote, where ACK from the remote means that it is
8062306a36Sopenharmony_ci              ready for shutdown
8162306a36Sopenharmony_ci      - description: |
8262306a36Sopenharmony_ci          A channel (d) used by the local proc to notify the remote proc that it
8362306a36Sopenharmony_ci          has to stop interprocessor communication.
8462306a36Sopenharmony_ci          Unidirectional channel:
8562306a36Sopenharmony_ci            - from local to remote, where ACK from the remote means that communication
8662306a36Sopenharmony_ci              as been stopped on the remote side.
8762306a36Sopenharmony_ci    minItems: 1
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci  mbox-names:
9062306a36Sopenharmony_ci    items:
9162306a36Sopenharmony_ci      - const: vq0
9262306a36Sopenharmony_ci      - const: vq1
9362306a36Sopenharmony_ci      - const: shutdown
9462306a36Sopenharmony_ci      - const: detach
9562306a36Sopenharmony_ci    minItems: 1
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci  memory-region:
9862306a36Sopenharmony_ci    description:
9962306a36Sopenharmony_ci      List of phandles to the reserved memory regions associated with the
10062306a36Sopenharmony_ci      remoteproc device. This is variable and describes the memories shared with
10162306a36Sopenharmony_ci      the remote processor (e.g. remoteproc firmware and carveouts, rpmsg
10262306a36Sopenharmony_ci      vrings, ...).
10362306a36Sopenharmony_ci      (see ../reserved-memory/reserved-memory.txt)
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci  st,syscfg-pdds:
10662306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle-array
10762306a36Sopenharmony_ci    description: |
10862306a36Sopenharmony_ci      Reference to the system configuration which holds the remote
10962306a36Sopenharmony_ci    items:
11062306a36Sopenharmony_ci      - items:
11162306a36Sopenharmony_ci          - description: Phandle of syscon block
11262306a36Sopenharmony_ci          - description: The offset of the power setting register
11362306a36Sopenharmony_ci          - description: The field mask of the PDDS selection
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci  st,syscfg-m4-state:
11662306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle-array
11762306a36Sopenharmony_ci    description: |
11862306a36Sopenharmony_ci      Reference to the tamp register which exposes the Cortex-M4 state.
11962306a36Sopenharmony_ci    items:
12062306a36Sopenharmony_ci      - items:
12162306a36Sopenharmony_ci          - description: Phandle of syscon block with the tamp register
12262306a36Sopenharmony_ci          - description: The offset of the tamp register
12362306a36Sopenharmony_ci          - description: The field mask of the Cortex-M4 state
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci  st,syscfg-rsc-tbl:
12662306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle-array
12762306a36Sopenharmony_ci    description: |
12862306a36Sopenharmony_ci      Reference to the tamp register which references the Cortex-M4
12962306a36Sopenharmony_ci      resource table address.
13062306a36Sopenharmony_ci    items:
13162306a36Sopenharmony_ci      - items:
13262306a36Sopenharmony_ci          - description: Phandle of syscon block with the tamp register
13362306a36Sopenharmony_ci          - description: The offset of the tamp register
13462306a36Sopenharmony_ci          - description: The field mask of the Cortex-M4 resource table address
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci  st,auto-boot:
13762306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/flag
13862306a36Sopenharmony_ci    description:
13962306a36Sopenharmony_ci      If defined, when remoteproc is probed, it loads the default firmware and
14062306a36Sopenharmony_ci      starts the remote processor.
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_cirequired:
14362306a36Sopenharmony_ci  - compatible
14462306a36Sopenharmony_ci  - reg
14562306a36Sopenharmony_ci  - resets
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ciallOf:
14862306a36Sopenharmony_ci  - if:
14962306a36Sopenharmony_ci      properties:
15062306a36Sopenharmony_ci        reset-names:
15162306a36Sopenharmony_ci          not:
15262306a36Sopenharmony_ci            contains:
15362306a36Sopenharmony_ci              const: hold_boot
15462306a36Sopenharmony_ci    then:
15562306a36Sopenharmony_ci      required:
15662306a36Sopenharmony_ci        - st,syscfg-holdboot
15762306a36Sopenharmony_ci    else:
15862306a36Sopenharmony_ci      properties:
15962306a36Sopenharmony_ci        st,syscfg-holdboot: false
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ciadditionalProperties: false
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ciexamples:
16462306a36Sopenharmony_ci  - |
16562306a36Sopenharmony_ci    #include <dt-bindings/reset/stm32mp1-resets.h>
16662306a36Sopenharmony_ci    m4@10000000 {
16762306a36Sopenharmony_ci      compatible = "st,stm32mp1-m4";
16862306a36Sopenharmony_ci      reg = <0x10000000 0x40000>,
16962306a36Sopenharmony_ci            <0x30000000 0x40000>,
17062306a36Sopenharmony_ci            <0x38000000 0x10000>;
17162306a36Sopenharmony_ci      resets = <&rcc MCU_R>;
17262306a36Sopenharmony_ci      reset-names = "mcu_rst";
17362306a36Sopenharmony_ci      /* Hold boot managed using system config*/
17462306a36Sopenharmony_ci      st,syscfg-holdboot = <&rcc 0x10C 0x1>;
17562306a36Sopenharmony_ci      st,syscfg-rsc-tbl = <&tamp 0x144 0xFFFFFFFF>;
17662306a36Sopenharmony_ci      st,syscfg-m4-state = <&tamp 0x148 0xFFFFFFFF>;
17762306a36Sopenharmony_ci    };
17862306a36Sopenharmony_ci  - |
17962306a36Sopenharmony_ci    #include <dt-bindings/reset/stm32mp1-resets.h>
18062306a36Sopenharmony_ci    m4@10000000 {
18162306a36Sopenharmony_ci      compatible = "st,stm32mp1-m4";
18262306a36Sopenharmony_ci      reg = <0x10000000 0x40000>,
18362306a36Sopenharmony_ci            <0x30000000 0x40000>,
18462306a36Sopenharmony_ci            <0x38000000 0x10000>;
18562306a36Sopenharmony_ci      /* Hold boot managed using SCMI reset controller */
18662306a36Sopenharmony_ci      resets = <&scmi MCU_R>, <&scmi MCU_HOLD_BOOT_R>;
18762306a36Sopenharmony_ci      reset-names = "mcu_rst", "hold_boot";
18862306a36Sopenharmony_ci      st,syscfg-rsc-tbl = <&tamp 0x144 0xFFFFFFFF>;
18962306a36Sopenharmony_ci      st,syscfg-m4-state = <&tamp 0x148 0xFFFFFFFF>;
19062306a36Sopenharmony_ci    };
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ci...
193