Re: [PATCH 1/4] dt-bindings: remoteproc: imx_rproc: Add "rpmsg" subnode support

From: Shenwei Wang
Date: Sat Aug 30 2025 - 13:44:25 EST




> -----Original Message-----
> From: Rob Herring <robh@xxxxxxxxxx>
> Sent: Friday, August 29, 2025 10:07 AM
> To: Shenwei Wang <shenwei.wang@xxxxxxx>
> Cc: Bjorn Andersson <andersson@xxxxxxxxxx>; Mathieu Poirier
> <mathieu.poirier@xxxxxxxxxx>; Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>; Conor
> Dooley <conor+dt@xxxxxxxxxx>; Shawn Guo <shawnguo@xxxxxxxxxx>; Sascha
> Hauer <s.hauer@xxxxxxxxxxxxxx>; Linus Walleij <linus.walleij@xxxxxxxxxx>;
> Bartosz Golaszewski <brgl@xxxxxxxx>; Pengutronix Kernel Team
> <kernel@xxxxxxxxxxxxxx>; Fabio Estevam <festevam@xxxxxxxxx>; Peng Fan
> <peng.fan@xxxxxxx>; linux-remoteproc@xxxxxxxxxxxxxxx;
> devicetree@xxxxxxxxxxxxxxx; imx@xxxxxxxxxxxxxxx; linux-arm-
> kernel@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; dl-linux-imx <linux-
> imx@xxxxxxx>
> Subject: [EXT] Re: [PATCH 1/4] dt-bindings: remoteproc: imx_rproc: Add "rpmsg"
> subnode support
> > > >
> > > > All remote devices associated with a given channel are defined as
> > > > child nodes under the corresponding channel node.
> > >
> > > How is each channel addressed? Are they really grouped by type first
> > > (i2c, gpio,
> > > etc.) then an address within the group? Or is there some flat channel
> numbering?
> > > If the latter, then the addresses in the DT shoulc match the channel number.
> > >
> >
> > Yes, the channels are grouped by type and identified by unique channel
> > names assigned by the remote processor.
> >
> > The RPMSG bus dynamically assigns addresses to each channel at
> > runtime. Because these addresses are not static, they cannot be pre-defined in
> the dts.
>
> But you did define addresses. How do you know which channel 'gpio@1'
> corresponds to if RPMSG dynamically assigns addresses?
>

The remote devices within the rpmsg channels use pre-defined addresses specified in
the DTS. For example, the gpio@0 and gpio@1 nodes represent devices inside the
rpmsg-io-channel, each assigned a unique address within that channel.

The rpmsg-io-channel itself does not have a fixed address, as its address is dynamically
allocated by the RPMSG bus. Therefore, we only use the unique channel name here.

rpmsg {
rpmsg-io-channel {
gpio@0 {
compatible = "fsl,imx-rpmsg-gpio";
reg = <0>;
};

gpio@1 {
compatible = "fsl,imx-rpmsg-gpio";
reg = <1>;
};

...
};
...
};

Thanks,
Shenwei

> Rob