Documentation / devicetree / bindings / remoteproc / st,stm32-rproc.yaml


Based on kernel version 6.8. Page generated on 2024-03-11 21:26 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/remoteproc/st,stm32-rproc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: STMicroelectronics STM32 remote processor controller

description:
  This document defines the binding for the remoteproc component that loads and
  boots firmwares on the ST32MP family chipset.

maintainers:
  - Fabien Dessenne <fabien.dessenne@foss.st.com>
  - Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>

properties:
  compatible:
    const: st,stm32mp1-m4

  reg:
    description:
      Address ranges of the RETRAM and MCU SRAM memories used by the remote
      processor.
    maxItems: 3

  resets:
    minItems: 1
    maxItems: 2

  reset-names:
    items:
      - const: mcu_rst
      - const: hold_boot
    minItems: 1

  st,syscfg-holdboot:
    description: remote processor reset hold boot
    $ref: /schemas/types.yaml#/definitions/phandle-array
    items:
      - items:
          - description: Phandle of syscon block
          - description: The offset of the hold boot setting register
          - description: The field mask of the hold boot

  st,syscfg-tz:
    deprecated: true
    description:
      Reference to the system configuration which holds the RCC trust zone mode
    $ref: /schemas/types.yaml#/definitions/phandle-array
    items:
      - items:
          - description: Phandle of syscon block
          - description: The offset of the trust zone setting register
          - description: The field mask of the trust zone state

  interrupts:
    description: Should contain the WWDG1 watchdog reset interrupt
    maxItems: 1

  wakeup-source: true

  mboxes:
    description:
      This property is required only if the rpmsg/virtio functionality is used.
    items:
      - description: |
          A channel (a) used to communicate through virtqueues with the
          remote proc.
          Bi-directional channel:
            - from local to remote = send message
            - from remote to local = send message ack
      - description: |
          A channel (b) working the opposite direction of channel (a)
      - description: |
          A channel (c) used by the local proc to notify the remote proc that it
          is about to be shut down.
          Unidirectional channel:
            - from local to remote, where ACK from the remote means that it is
              ready for shutdown
      - description: |
          A channel (d) used by the local proc to notify the remote proc that it
          has to stop interprocessor communication.
          Unidirectional channel:
            - from local to remote, where ACK from the remote means that communication
              as been stopped on the remote side.
    minItems: 1

  mbox-names:
    items:
      - const: vq0
      - const: vq1
      - const: shutdown
      - const: detach
    minItems: 1

  memory-region:
    description:
      List of phandles to the reserved memory regions associated with the
      remoteproc device. This is variable and describes the memories shared with
      the remote processor (e.g. remoteproc firmware and carveouts, rpmsg
      vrings, ...).
      (see ../reserved-memory/reserved-memory.txt)

  st,syscfg-pdds:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    description: |
      Reference to the system configuration which holds the remote
    items:
      - items:
          - description: Phandle of syscon block
          - description: The offset of the power setting register
          - description: The field mask of the PDDS selection

  st,syscfg-m4-state:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    description: |
      Reference to the tamp register which exposes the Cortex-M4 state.
    items:
      - items:
          - description: Phandle of syscon block with the tamp register
          - description: The offset of the tamp register
          - description: The field mask of the Cortex-M4 state

  st,syscfg-rsc-tbl:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    description: |
      Reference to the tamp register which references the Cortex-M4
      resource table address.
    items:
      - items:
          - description: Phandle of syscon block with the tamp register
          - description: The offset of the tamp register
          - description: The field mask of the Cortex-M4 resource table address

  st,auto-boot:
    $ref: /schemas/types.yaml#/definitions/flag
    description:
      If defined, when remoteproc is probed, it loads the default firmware and
      starts the remote processor.

required:
  - compatible
  - reg
  - resets

allOf:
  - if:
      properties:
        reset-names:
          not:
            contains:
              const: hold_boot
    then:
      required:
        - st,syscfg-holdboot
    else:
      properties:
        st,syscfg-holdboot: false

additionalProperties: false

examples:
  - |
    #include <dt-bindings/reset/stm32mp1-resets.h>
    m4@10000000 {
      compatible = "st,stm32mp1-m4";
      reg = <0x10000000 0x40000>,
            <0x30000000 0x40000>,
            <0x38000000 0x10000>;
      resets = <&rcc MCU_R>;
      reset-names = "mcu_rst";
      /* Hold boot managed using system config*/
      st,syscfg-holdboot = <&rcc 0x10C 0x1>;
      st,syscfg-rsc-tbl = <&tamp 0x144 0xFFFFFFFF>;
      st,syscfg-m4-state = <&tamp 0x148 0xFFFFFFFF>;
    };
  - |
    #include <dt-bindings/reset/stm32mp1-resets.h>
    m4@10000000 {
      compatible = "st,stm32mp1-m4";
      reg = <0x10000000 0x40000>,
            <0x30000000 0x40000>,
            <0x38000000 0x10000>;
      /* Hold boot managed using SCMI reset controller */
      resets = <&scmi MCU_R>, <&scmi MCU_HOLD_BOOT_R>;
      reset-names = "mcu_rst", "hold_boot";
      st,syscfg-rsc-tbl = <&tamp 0x144 0xFFFFFFFF>;
      st,syscfg-m4-state = <&tamp 0x148 0xFFFFFFFF>;
    };

...