[PATCH v2 1/2] dt-bindings: remoteproc: add Microchip IPC remoteproc

Valentina Fernandez posted 2 patches 1 week, 3 days ago
[PATCH v2 1/2] dt-bindings: remoteproc: add Microchip IPC remoteproc
Posted by Valentina Fernandez 1 week, 3 days ago
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 <valentina.fernandezalanis@microchip.com>
---
 .../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 <valentina.fernandezalanis@microchip.com>
+
+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:
+        - 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
Re: [PATCH v2 1/2] dt-bindings: remoteproc: add Microchip IPC remoteproc
Posted by Krzysztof Kozlowski 6 days, 15 hours ago
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 <valentina.fernandezalanis@microchip.com>
> ---
>  .../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 <valentina.fernandezalanis@microchip.com>
> +
> +properties:
> +  compatible:
> +    const: microchip,ipc-sbi-remoteproc

This should be SoC specific compatible.

Best regards,
Krzysztof
Re: [PATCH v2 1/2] dt-bindings: remoteproc: add Microchip IPC remoteproc
Posted by Valentina.FernandezAlanis@microchip.com 9 hours ago
On 25/11/2025 09:46, Krzysztof Kozlowski wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>
> 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 <valentina.fernandezalanis@microchip.com>
>> ---
>>   .../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 <valentina.fernandezalanis@microchip.com>
>> +
>> +properties:
>> +  compatible:
>> +    const: microchip,ipc-sbi-remoteproc
> This should be SoC specific compatible.
There was some discussion on this in v1: 
https://lore.kernel.org/all/20241015-distrust-chatty-9e723e670fef@spud/

The compatible is intentionally generic, representing a “generic” SBI ecall
interface to a set of remote processors, with the platform abstracted 
via SBI
ecalls. The IPC/IHC (named differently depending on whether it is RTL 
for the
FPGA fabric or a hardened version) is intended for Asymmetric 
Multiprocessing,
where a set of cores can run other firmware, such as Zephyr.

Unlike platforms with a fixed DSP, the configuration here is variable 
even for
a single SoC. For example, which memory regions are used for the
remote cluster or which mailbox channel is selected.

Because the configuration can vary even on the same SoC, adding a 
SOC-specific
compatible string provides no additional clarity, as it does not 
correspond to
a unique configuration. That said, if SOC-specific compatible strings are
needed, I can add them.

Thanks,
Valentina
>
> Best regards,
> Krzysztof
>

Re: [PATCH v2 1/2] dt-bindings: remoteproc: add Microchip IPC remoteproc
Posted by Krzysztof Kozlowski 9 hours ago
On 01/12/2025 17:04, Valentina.FernandezAlanis@microchip.com wrote:
> On 25/11/2025 09:46, Krzysztof Kozlowski wrote:
>> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>>
>> 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 <valentina.fernandezalanis@microchip.com>
>>> ---
>>>   .../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 <valentina.fernandezalanis@microchip.com>
>>> +
>>> +properties:
>>> +  compatible:
>>> +    const: microchip,ipc-sbi-remoteproc
>> This should be SoC specific compatible.
> There was some discussion on this in v1: 
> https://lore.kernel.org/all/20241015-distrust-chatty-9e723e670fef@spud/


I don't find anything from that explained in commit msg or device
description, so next time you send you will get exactly the same comment.

Best regards,
Krzysztof
Re: [PATCH v2 1/2] dt-bindings: remoteproc: add Microchip IPC remoteproc
Posted by Conor Dooley 1 week, 3 days ago
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 <valentina.fernandezalanis@microchip.com>
> ---
>  .../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 <valentina.fernandezalanis@microchip.com>
> +
> +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?

> +        - 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
> 
Re: [PATCH v2 1/2] dt-bindings: remoteproc: add Microchip IPC remoteproc
Posted by Valentina.FernandezAlanis@microchip.com 9 hours ago
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 <valentina.fernandezalanis@microchip.com>
>> ---
>>   .../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 <valentina.fernandezalanis@microchip.com>
>> +
>> +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
>>