> -----Original Message-----
> From: Mathieu Poirier <[email protected]>
> Sent: Tuesday, February 24, 2026 4:47 PM
> To: Shenwei Wang <[email protected]>
> Cc: Andrew Lunn <[email protected]>; Arnaud POULIQUEN
> <[email protected]>; Linus Walleij <[email protected]>; Bartosz
> Golaszewski <[email protected]>; Jonathan Corbet <[email protected]>; Rob Herring
> <[email protected]>; Krzysztof Kozlowski <[email protected]>; Conor Dooley
> <[email protected]>; Bjorn Andersson <[email protected]>; Frank Li
> <[email protected]>; Sascha Hauer <[email protected]>; Shuah Khan
> <[email protected]>; [email protected]; linux-
> [email protected]; [email protected]; Pengutronix Kernel Team
> <[email protected]>; Fabio Estevam <[email protected]>; Peng Fan
> <[email protected]>; [email protected]; linux-
> [email protected]; [email protected]; linux-arm-
> [email protected]; dl-linux-imx <[email protected]>; Bartosz
> Golaszewski <[email protected]>
> Subject: [EXT] Re: [PATCH v8 3/4] gpio: rpmsg: add generic rpmsg GPIO driver
> > > -----Original Message-----
> > > From: Andrew Lunn <[email protected]>
> > > Sent: Tuesday, February 24, 2026 4:23 PM
> > > To: Shenwei Wang <[email protected]>
> > > Cc: Arnaud POULIQUEN <[email protected]>; Linus Walleij
> > > <[email protected]>; Bartosz Golaszewski <[email protected]>; Jonathan
> > > Corbet <[email protected]>; Rob Herring <[email protected]>; Krzysztof
> > > Kozlowski <[email protected]>; Conor Dooley <[email protected]>;
> > > Bjorn Andersson <[email protected]>; Mathieu Poirier
> > > <[email protected]>; Frank Li <[email protected]>; Sascha
> > > Hauer <[email protected]>; Shuah Khan
> > > <[email protected]>; [email protected]; linux-
> > > [email protected]; [email protected]; Pengutronix
> > > Kernel Team <[email protected]>; Fabio Estevam
> > > <[email protected]>; Peng Fan <[email protected]>;
> > > [email protected]; linux- [email protected];
> > > [email protected]; linux-arm- [email protected];
> > > dl-linux-imx <[email protected]>; Bartosz Golaszewski
> > > <[email protected]>
> > > Subject: Re: [EXT] Re: [PATCH v8 3/4] gpio: rpmsg: add generic rpmsg
> > > GPIO driver
> > >
> > > Caution: This is an external email. Please take care when clicking
> > > links or opening attachments. When in doubt, report the message using the
> 'Report this email'
> > > button
> > >
> > >
> > > > > > + remote_cm33{
> > > > > > +     rpmsg {
> > > > > > +        rpmsg-io-channel {
> > > > > > +          #address-cells = <1>;
> > > > > > +          #size-cells = <0>;
> > > > > > +
> > > > > > +          gpio@0 {
> > > > > > +            compatible = "rpmsg-gpio";
> > > > > > +            reg = <0>;
> > > > > > +            gpio-controller;
> > > > > > +            #gpio-cells = <2>;
> > > > > > +            #interrupt-cells = <2>;
> > > > > > +            interrupt-controller;
> > > > > > +          };
> > > > > > +          gpio@1 {
> > > > > > +            compatible = "rpmsg-gpio";
> > > > > > +            reg = <1>;
> > > > > > +            gpio-controller;
> > > > > > +            #gpio-cells = <2>;
> > > > > > +            #interrupt-cells = <2>;
> > > > > > +            interrupt-controller;
> > > > > > +          };
> > >
> > > > Then how would you distinguish gpio@0 from gpio@1 on the CM33
> > > > RPMSG bus
> > > in the example above?
> > > > They are running on the same transport.
> > >
> > > Doesn't reg indicate the channel number? gpio@0 is on rpmsg channel
> > > 0. gpio@1 is on channel 1? The reg value gets filled into struct
> > > rpmsg_channel_info when the endpoints are created?
> >
> > There is only a single RPMSG channel for the CM33 remoteproc in this
> > example-its name is "rpmsg-io-channel". As I mentioned above, both gpio@0
> and gpio@1 run over this same transport.
> > The transport here is the RPMSG channel, so multiple GPIO controllers share
> that channel.
> >
> 
> That is one of my main problem with this proposal - multiplexing several GPIO
> controllers over the same RPMSG channel adds complexity.

Multiplexing multiple GPIO controllers over a single RPMSG channel does not 
inherently 
add complexity. Even if we implement a “one GPIO controller per RPMSG channel” 
model, 
the core logic in the driver remains essentially the same.

In fact, the current implementation already supports your preferred “one RPMSG 
channel 
per GPIO controller” approach through simple DTS configuration. For example:

+ remote_cm33{
+     rpmsg {
+        channel0 {    
+          gpio@0 {
+            compatible = "rpmsg-gpio";
+            reg = <0>;
+            gpio-controller;
+            #gpio-cells = <2>;
+            #interrupt-cells = <2>;
+            interrupt-controller;
+          };
+       };
+
+        channel1 {
+          gpio@1 {
+            compatible = "rpmsg-gpio";
+            reg = <1>;
+            gpio-controller;
+            #gpio-cells = <2>;
+            #interrupt-cells = <2>;
+            interrupt-controller;
+          };
+        };
+      };
+};
+

> RPMSG can already handle multiplexing via channels, use one RPMSG channel
> per GPIO controller.
> 
> > Thanks,
> > Shenwei
> >
> > >
> > >    Andrew
> >

Reply via email to