Re: [PATCH v8 3/4] gpio: rpmsg: add generic rpmsg GPIO driver

From: Shenwei Wang

Date: Tue Feb 24 2026 - 17:47:47 EST




> -----Original Message-----
> From: Andrew Lunn <andrew@xxxxxxx>
> Sent: Tuesday, February 24, 2026 4:15 PM
> To: Shenwei Wang <shenwei.wang@xxxxxxx>
> Cc: Mathieu Poirier <mathieu.poirier@xxxxxxxxxx>; Bjorn Andersson
> <andersson@xxxxxxxxxx>; Arnaud POULIQUEN
> <arnaud.pouliquen@xxxxxxxxxxx>; Linus Walleij <linusw@xxxxxxxxxx>; Bartosz
> Golaszewski <brgl@xxxxxxxxxx>; Jonathan Corbet <corbet@xxxxxxx>; Rob Herring
> <robh@xxxxxxxxxx>; Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>; Conor Dooley
> <conor+dt@xxxxxxxxxx>; Frank Li <frank.li@xxxxxxx>; Sascha Hauer
> <s.hauer@xxxxxxxxxxxxxx>; Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx>; linux-
> gpio@xxxxxxxxxxxxxxx; linux-doc@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> Pengutronix Kernel Team <kernel@xxxxxxxxxxxxxx>; Fabio Estevam
> <festevam@xxxxxxxxx>; Peng Fan <peng.fan@xxxxxxx>;
> devicetree@xxxxxxxxxxxxxxx; linux-remoteproc@xxxxxxxxxxxxxxx;
> imx@xxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; dl-linux-imx <linux-
> imx@xxxxxxx>; Bartosz Golaszewski <brgl@xxxxxxxx>
> Subject: [EXT] Re: [PATCH v8 3/4] gpio: rpmsg: add generic rpmsg GPIO driver
> > Please explain how you would design your generic rpmsg-gpio driver
> > which is derived From gpio-virtio?
>
> We have already seen the virtio commands are pretty much identical to what i
> suggested.
>
> You could just replace virtqueue_add_sgs() with rpmsg_sendto() and reimplement
> virtio_gpio_request_vq() to be the callback registered with rpmsg_create_ept().
> The rest of basic GPIO handling should not need any changes at all.
>

Creating endpoints and calling rpmsg_sendto() is only a small part of the picture. You also
need to manage the service announcement from the remote side and handle asynchronous
notification messages. That entire flow is already implemented in the existing virtio_rpmsg_bus
driver. Re‑implementing those pieces just to mimic gpio‑virtio over RPMSG would essentially
mean reinventing the wheel without any real benefit.

Thanks,
Shenwei

> Interrupt support does however need some changes. The
> virtio_gpio_request_vq() replacement would need to see if the received message
> indicates an interrupt and call the equivalent of virtio_gpio_event_vq(), since
> rpmsg does not have a separate mechanism to deliver interrupts, unlike rpmsg.
>
> At a guess, 90% of the code would stay the same?
>
> Andrew