.../bindings/remoteproc/fsl,imx-rproc.yaml | 123 +++++ Documentation/staging/gpio-rpmsg.rst | 202 ++++++++ Documentation/staging/index.rst | 1 + arch/arm64/boot/dts/freescale/imx8ulp.dtsi | 27 + drivers/gpio/Kconfig | 17 + drivers/gpio/Makefile | 1 + drivers/gpio/gpio-imx-rpmsg.c | 475 ++++++++++++++++++ drivers/remoteproc/imx_rproc.c | 146 ++++++ include/linux/rpmsg/imx_rpmsg.h | 48 ++ 9 files changed, 1040 insertions(+) create mode 100644 Documentation/staging/gpio-rpmsg.rst create mode 100644 drivers/gpio/gpio-imx-rpmsg.c create mode 100644 include/linux/rpmsg/imx_rpmsg.h
Support the remote devices on the remote processor via the RPMSG bus on i.MX platform. Changes in v5: - move the gpio-rpmsg.rst from admin-guide to staging directory after discussion with Randy Dunlap. - add include files with some code improvements per Bartosz's comments. Changes in v4: - add a documentation to describe the transport protocol per Andrew's comments. - add a new handler to get the gpio direction. Changes in v3: - fix various format issue and return value check per Peng 's review comments. - add the logic to also populate the subnodes which are not in the device map per Arnaud's request. (in imx_rproc.c) - update the yaml per Frank's review comments. Changes in v2: - re-implemented the gpio driver per Linus Walleij's feedback by using GPIOLIB_IRQCHIP helper library. - fix various format issue per Mathieu/Peng 's review comments. - update the yaml doc per Rob's feedback Cc: Bartosz Golaszewski <brgl@bgdev.pl> Cc: Randy Dunlap <rdunlap@infradead.org> Cc: Andrew Lunn <andrew@lunn.ch> Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Cc: Arnaud POULIQUEN <arnaud.pouliquen@foss.st.com> Cc: Linus Walleij <linus.walleij@linaro.org> Cc: linux-gpio@vger.kernel.org Shenwei Wang (5): dt-bindings: remoteproc: imx_rproc: Add "rpmsg" subnode support remoteproc: imx_rproc: Populate devices under "rpmsg" subnode docs: staging: gpio-rpmsg: gpio over rpmsg bus gpio: imx-rpmsg: add imx-rpmsg GPIO driver arm64: dts: imx8ulp: Add rpmsg node under imx_rproc .../bindings/remoteproc/fsl,imx-rproc.yaml | 123 +++++ Documentation/staging/gpio-rpmsg.rst | 202 ++++++++ Documentation/staging/index.rst | 1 + arch/arm64/boot/dts/freescale/imx8ulp.dtsi | 27 + drivers/gpio/Kconfig | 17 + drivers/gpio/Makefile | 1 + drivers/gpio/gpio-imx-rpmsg.c | 475 ++++++++++++++++++ drivers/remoteproc/imx_rproc.c | 146 ++++++ include/linux/rpmsg/imx_rpmsg.h | 48 ++ 9 files changed, 1040 insertions(+) create mode 100644 Documentation/staging/gpio-rpmsg.rst create mode 100644 drivers/gpio/gpio-imx-rpmsg.c create mode 100644 include/linux/rpmsg/imx_rpmsg.h -- 2.43.0
On Tue, Nov 04, 2025 at 02:33:10PM -0600, Shenwei Wang wrote: > Support the remote devices on the remote processor via the RPMSG bus on > i.MX platform. > > Changes in v5: > - move the gpio-rpmsg.rst from admin-guide to staging directory after > discussion with Randy Dunlap. > - add include files with some code improvements per Bartosz's comments. > > Changes in v4: > - add a documentation to describe the transport protocol per Andrew's > comments. > - add a new handler to get the gpio direction. > > Changes in v3: > - fix various format issue and return value check per Peng 's review > comments. > - add the logic to also populate the subnodes which are not in the > device map per Arnaud's request. (in imx_rproc.c) > - update the yaml per Frank's review comments. > > Changes in v2: > - re-implemented the gpio driver per Linus Walleij's feedback by using > GPIOLIB_IRQCHIP helper library. > - fix various format issue per Mathieu/Peng 's review comments. > - update the yaml doc per Rob's feedback > > Cc: Bartosz Golaszewski <brgl@bgdev.pl> > Cc: Randy Dunlap <rdunlap@infradead.org> > Cc: Andrew Lunn <andrew@lunn.ch> > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > Cc: Arnaud POULIQUEN <arnaud.pouliquen@foss.st.com> > Cc: Linus Walleij <linus.walleij@linaro.org> > Cc: linux-gpio@vger.kernel.org > > Shenwei Wang (5): > dt-bindings: remoteproc: imx_rproc: Add "rpmsg" subnode support > remoteproc: imx_rproc: Populate devices under "rpmsg" subnode > docs: staging: gpio-rpmsg: gpio over rpmsg bus > gpio: imx-rpmsg: add imx-rpmsg GPIO driver > arm64: dts: imx8ulp: Add rpmsg node under imx_rproc > > .../bindings/remoteproc/fsl,imx-rproc.yaml | 123 +++++ > Documentation/staging/gpio-rpmsg.rst | 202 ++++++++ > Documentation/staging/index.rst | 1 + > arch/arm64/boot/dts/freescale/imx8ulp.dtsi | 27 + > drivers/gpio/Kconfig | 17 + > drivers/gpio/Makefile | 1 + > drivers/gpio/gpio-imx-rpmsg.c | 475 ++++++++++++++++++ > drivers/remoteproc/imx_rproc.c | 146 ++++++ > include/linux/rpmsg/imx_rpmsg.h | 48 ++ > 9 files changed, 1040 insertions(+) > create mode 100644 Documentation/staging/gpio-rpmsg.rst > create mode 100644 drivers/gpio/gpio-imx-rpmsg.c > create mode 100644 include/linux/rpmsg/imx_rpmsg.h > After reviewing this patchset I come to the following conclusion: (1) Other people have pointed this out multiple time and I will do the same: the only way this work will move forward is by adopting a generic solution. This proposal is not (no need to try to convince me otherwise). (2) The right way to do this would be to have a separate set of virtqueues for each component that sits behind the remoteproc, instantiated using the content found in the resource table. This would follow the same approach as the namespace, with their own VIRTIO IDS as published in [1]. That way we could re-use a lot of the work already done for other components, such as virtio-i2c and virtio-gpio. (3) Some environment may be too memory constrained for option (2) above, hence using rpmsg as a transport protocol. But as with option (2), that way also needs to look like virtio devices to the kernel. It also means that protocol to interact with components need to follow the OASIS specification. As such you'd have platform drivers for rpmsg-i2c and rpmsg-gpio that would register rpmsg_drivers. I don't mind which approach is taken as they both represent the same amount of work. Lastly, your next patchset should contain an implementation for GPIO or I2C, not both. Thanks, Mathieu [1]. https://elixir.bootlin.com/linux/v6.18-rc7/source/include/uapi/linux/virtio_ids.h#L38 > -- > 2.43.0 >
On Tue, Nov 04, 2025 at 02:33:10PM -0600, Shenwei Wang wrote: > Support the remote devices on the remote processor via the RPMSG bus on > i.MX platform. > > Changes in v5: > - move the gpio-rpmsg.rst from admin-guide to staging directory after > discussion with Randy Dunlap. > - add include files with some code improvements per Bartosz's comments. > > Changes in v4: > - add a documentation to describe the transport protocol per Andrew's > comments. > - add a new handler to get the gpio direction. > > Changes in v3: > - fix various format issue and return value check per Peng 's review > comments. > - add the logic to also populate the subnodes which are not in the > device map per Arnaud's request. (in imx_rproc.c) > - update the yaml per Frank's review comments. > > Changes in v2: > - re-implemented the gpio driver per Linus Walleij's feedback by using > GPIOLIB_IRQCHIP helper library. > - fix various format issue per Mathieu/Peng 's review comments. > - update the yaml doc per Rob's feedback > > Cc: Bartosz Golaszewski <brgl@bgdev.pl> > Cc: Randy Dunlap <rdunlap@infradead.org> > Cc: Andrew Lunn <andrew@lunn.ch> > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > Cc: Arnaud POULIQUEN <arnaud.pouliquen@foss.st.com> > Cc: Linus Walleij <linus.walleij@linaro.org> > Cc: linux-gpio@vger.kernel.org > > Shenwei Wang (5): > dt-bindings: remoteproc: imx_rproc: Add "rpmsg" subnode support > remoteproc: imx_rproc: Populate devices under "rpmsg" subnode > docs: staging: gpio-rpmsg: gpio over rpmsg bus > gpio: imx-rpmsg: add imx-rpmsg GPIO driver > arm64: dts: imx8ulp: Add rpmsg node under imx_rproc > > .../bindings/remoteproc/fsl,imx-rproc.yaml | 123 +++++ > Documentation/staging/gpio-rpmsg.rst | 202 ++++++++ > Documentation/staging/index.rst | 1 + > arch/arm64/boot/dts/freescale/imx8ulp.dtsi | 27 + > drivers/gpio/Kconfig | 17 + > drivers/gpio/Makefile | 1 + > drivers/gpio/gpio-imx-rpmsg.c | 475 ++++++++++++++++++ > drivers/remoteproc/imx_rproc.c | 146 ++++++ > include/linux/rpmsg/imx_rpmsg.h | 48 ++ > 9 files changed, 1040 insertions(+) I started reviewing this set. Given the size and amount of comments to go through, it will likely take me several days. I will tell you when I am done. Even at this early stage of review on my side, I can already confirm the only way to move forward with this set is by reaching a consensus that includes Andrew, Arneaud and Linus W. Thanks, Mathieu > create mode 100644 Documentation/staging/gpio-rpmsg.rst > create mode 100644 drivers/gpio/gpio-imx-rpmsg.c > create mode 100644 include/linux/rpmsg/imx_rpmsg.h > > -- > 2.43.0 >
© 2016 - 2025 Red Hat, Inc.