On 21/11/2025 18:28, Conor Dooley wrote:
> On Fri, Nov 21, 2025 at 02:21:56PM +0000, Valentina Fernandez wrote:
>> Microchip family of RISC-V SoCs typically have one or more application
>> clusters. These clusters can be configured to run in an Asymmetric
>> Multi Processing (AMP) mode.
>>
>> Add a dt-binding for these application clusters.
>>
>> Signed-off-by: Valentina Fernandez <[email protected]>
>> ---
>> .../microchip,ipc-sbi-remoteproc.yaml | 95 +++++++++++++++++++
>> 1 file changed, 95 insertions(+)
>> create mode 100644
>> Documentation/devicetree/bindings/remoteproc/microchip,ipc-sbi-remoteproc.yaml
>>
>> diff --git
>> a/Documentation/devicetree/bindings/remoteproc/microchip,ipc-sbi-remoteproc.yaml
>>
>> b/Documentation/devicetree/bindings/remoteproc/microchip,ipc-sbi-remoteproc.yaml
>> new file mode 100644
>> index 000000000000..348902f9a202
>> --- /dev/null
>> +++
>> b/Documentation/devicetree/bindings/remoteproc/microchip,ipc-sbi-remoteproc.yaml
>> @@ -0,0 +1,95 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id:
>> http://devicetree.org/schemas/remoteproc/microchip,ipc-sbi-remoteproc.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Microchip IPC Remote Processor
>> +
>> +description:
>> + Microchip family of RISC-V SoCs typically have one or more
>> + clusters. These clusters can be configured to run in an Asymmetric
>> + Multi Processing (AMP) mode where clusters are split in independent
>> + software contexts.
>> +
>> +maintainers:
>> + - Valentina Fernandez <[email protected]>
>> +
>> +properties:
>> + compatible:
>> + const: microchip,ipc-sbi-remoteproc
>> +
>> + mboxes:
>> + description:
>> + Microchip IPC mailbox specifier. To be used for communication with
>> + a remote cluster. The specifier format is as per the bindings,
>> + Documentation/devicetree/bindings/mailbox/microchip,sbi-ipc.yaml
>> + maxItems: 1
>> +
>> + memory-region:
>> + minItems: 1
>> + maxItems: 5
>> + description:
>> + List of phandles to the reserved memory regions associated wih the
>> remoteproc
>> + device. This is variable and describes the memories shared with the
>> remote cluster
>> + (e.g. firmware, resource table, rpmsg vrings, etc.)
>> + items:
>> + anyOf:
> Is this genuinely any of these, with no restrictions?
> Can you have rsc-table and firmware?
Yes, it is possible to include both rsc-table and firmware. This
typically occurs
when early boot is used, followed by remoteproc start/stop to launch
additional firmware.
However, there are a few restrictions worth adding. For example, vring0 and
vring1 memory regions make no sense without a buffer region, and at least
one of rsc-table or firmware must be present. I can include these rules
in v3.
Thanks,
Valentina
>> + - description: region used for the resource table when firmware is
>> started by the bootloader
>> + - description: region used for the remote cluster firmware image
>> section
>> + - description: virtio device (vdev) buffer
>> + - description: virtqueue for sending messages to the remote cluster
>> (vring0)
>> + - description: virtqueue for receiving messages from the remote
>> cluster (vring1)
>> +
>> + memory-region-names:
>> + minItems: 1
>> + maxItems: 5
>> + items:
>> + anyOf:
>> + - const: rsc-table
>> + - const: firmware
>> + - const: buffer
>> + - const: vring0
>> + - const: vring1
>> +
>> +required:
>> + - compatible
>> + - mboxes
>> + - memory-region
>> + - memory-region-names
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> + - |
>> + // Early boot mode example - firmware started by bootloader
>> + soc {
>> + #address-cells = <2>;
>> + #size-cells = <2>;
>> +
>> + remoteproc {
>> + compatible = "microchip,ipc-sbi-remoteproc";
>> + mboxes= <&ihc 8>;
>> + memory-region = <&rsctable>, <&vdev0buffer>,
>> + <&vdev0vring0>, <&vdev0vring1>;
>> + memory-region-names = "rsc-table", "buffer",
>> + "vring0", "vring1";
>> + };
>> + };
>> +
>> + - |
>> + // Late boot mode example - firmware started by Linux (remoteproc)
>> + soc {
>> + #address-cells = <2>;
>> + #size-cells = <2>;
>> +
>> + remoteproc {
>> + compatible = "microchip,ipc-sbi-remoteproc";
>> + mboxes= <&ihc 8>;
>> + memory-region = <&cluster_firmware>, <&vdev0buffer>,
>> + <&vdev0vring0>, <&vdev0vring1>;
>> + memory-region-names = "firmware", "buffer",
>> + "vring0", "vring1";
>> + };
>> + };
>> +...
>> --
>> 2.34.1
>>