On Wed, Jul 30, 2025 at 03:57:09AM +0000, Junhui Liu wrote: > On 29/07/2025 16:31, Inochi Amaoto wrote: > > On Mon, Jul 28, 2025 at 07:03:23PM +0800, Junhui Liu wrote: > >> Add C906L remote processor for CV1800B SoC, which is an asymmetric > >> processor typically running RTOS. > >> > >> Signed-off-by: Junhui Liu <[email protected]> > >> --- > >> .../bindings/remoteproc/sophgo,cv1800b-c906l.yaml | 79 > >> ++++++++++++++++++++++ > >> 1 file changed, 79 insertions(+) > >> > >> diff --git > >> a/Documentation/devicetree/bindings/remoteproc/sophgo,cv1800b-c906l.yaml > >> b/Documentation/devicetree/bindings/remoteproc/sophgo,cv1800b-c906l.yaml > >> new file mode 100644 > >> index > >> 0000000000000000000000000000000000000000..2061c2fd6ba343c09b1a91700ea4a695d2b57f81 > >> --- /dev/null > >> +++ > >> b/Documentation/devicetree/bindings/remoteproc/sophgo,cv1800b-c906l.yaml > >> @@ -0,0 +1,79 @@ > >> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > >> +%YAML 1.2 > >> +--- > >> +$id: http://devicetree.org/schemas/remoteproc/sophgo,cv1800b-c906l.yaml# > >> +$schema: http://devicetree.org/meta-schemas/core.yaml# > >> + > >> +title: Sophgo C906L remote processor controller for CV1800B SoC > >> + > >> +maintainers: > >> + - Junhui Liu <[email protected]> > >> + > >> +description: > >> + Document the bindings for the C906L remoteproc component that loads and > >> boots > >> + firmwares on the CV1800B SoC. > >> + > >> +properties: > >> + compatible: > >> + const: sophgo,cv1800b-c906l > >> + > >> + firmware-name: > >> + maxItems: 1 > >> + > >> + mbox-names: > >> + items: > >> + - const: tx > >> + - const: rx > >> + > >> + mboxes: > >> + description: > >> + This property is required only if the rpmsg/virtio functionality is > >> used. > >> + (see mailbox/sophgo,cv1800b-mailbox.yaml) > >> + items: > >> + - description: mailbox channel to send data to C906L > >> + - description: mailbox channel to receive data from C906L > >> + > >> + memory-region: > >> + description: > >> + List of phandles to reserved memory regions used by the remote > >> processor. > >> + The first region is required and provides the firmware region for > >> the > >> + remote processor. The following regions (vdev buffer, vrings) are > >> optional > >> + and are only required if rpmsg/virtio functionality is used. > >> + minItems: 1 > >> + items: > >> + - description: firmware region > >> + - description: vdev buffer > >> + - description: vring0 > >> + - description: vring1 > >> + additionalItems: true > >> + > > > > Why not allocating these region dynamicly? I do not think firware is > > always avaible before staring. Allowing dynamic firmware give us max > > flexiblity. > > I'm afraid it's not easy to do this. > > For firmware region, the RTOS firmware usually needs a physical address > to link to, and I have researched and tested two RTOS (RT-Thread and > Zephyr) on the C906L, both of them do not support position-independent > execution or runtime relocation. Therefore, a reserved memory region is > needed to provide a fixed physical address for the RTOS firmware.
I think it is simple and possible to add PIE support for these RTOS. As the memory of CV18XX is limited, I do not want to see some reserved regions. This may hurt users who do not need this. > (In fact, there is already a reserved memory region for the C906L in > cv1800b-milkv-duo.dts) This is just preserved for vendor zsbl and I have a plan to remove it. Always let linux take care of all memory. It is good to support all firmware implementation for CV18XX. I think it is always good to use remoteproc like this: https://www.kernel.org/doc/html/latest/staging/remoteproc.html > > For virtio-related regions, the RTOS firmware also needs to know the > shared memory regions for communications at compile time. > I think you should investigate this and check if there is something you missed. I haven't see any reserved region in remoteproc binding mentions virtio. Regards, Inochi

