[PATCH v3 3/4] gpio: imx-rpmsg: add imx-rpmsg GPIO driver

Shenwei Wang shenwei.wang at nxp.com
Mon Oct 13 07:44:43 PDT 2025



> -----Original Message-----
> From: Andrew Lunn <andrew at lunn.ch>
> Sent: Friday, October 10, 2025 2:32 PM
> To: Shenwei Wang <shenwei.wang at nxp.com>
> Cc: Bjorn Andersson <andersson at kernel.org>; Mathieu Poirier
> <mathieu.poirier at linaro.org>; Rob Herring <robh at kernel.org>; Krzysztof
> Kozlowski <krzk+dt at kernel.org>; Conor Dooley <conor+dt at kernel.org>; Shawn
> Guo <shawnguo at kernel.org>; Sascha Hauer <s.hauer at pengutronix.de>; Linus
> Walleij <linus.walleij at linaro.org>; Bartosz Golaszewski <brgl at bgdev.pl>;
> Pengutronix Kernel Team <kernel at pengutronix.de>; Fabio Estevam
> <festevam at gmail.com>; Peng Fan <peng.fan at nxp.com>; linux-
> remoteproc at vger.kernel.org; devicetree at vger.kernel.org; imx at lists.linux.dev;
> linux-arm-kernel at lists.infradead.org; linux-kernel at vger.kernel.org; dl-linux-imx
> <linux-imx at nxp.com>
> Subject: [EXT] Re: [PATCH v3 3/4] gpio: imx-rpmsg: add imx-rpmsg GPIO driver
> > The only platform-specific part is the message format exchanged between
> Linux and the remote processors.
> > As long as the remote processor follows the same message protocol, the driver
> should work as expected.
> >
> > Here's the layout of the message packets:
> >
> > +--------+--------+--------+--------+--------+----------------+--------+--------+----------
> -----+---------------+
> > |0x00    |0x01    |0x02    |0x03    |0x04    |0x05..0x09      |0x0A    |0x0B    |0x0C
> |0x0D           |
> > |cate    |major   |minor   |type    |cmd     |reserved[5]     |pin_idx
> |port_idx|out:{evt/rc/v} |in:{wkup/val}  |
> > +--------+--------+--------+--------+--------+----------------+--------+--------+----------
> -----+---------------+
> >
> > Cate (Category field ): can be GPIO /I2C/PMIC/AUDIO ... etc Major :
> > Major version number
> > Minor: Minor version number
> > Type (Message Type): Can be SETUP / REPLY /NOTIFY for GPIO category
> > Cmd (Command): Can be Input INIT / Output INIT / Input GET for GPIO
> > category
> > Pin_idx: The GPIO line index
> > Port_idx: The GPIO controller index
> >
> > For Out packet:
> >       if it is OUPUT INIT, the out field value is the gpio output level.
> >       If it is INPUT INIT, the out filed is 0.
> >
> > For In packet:
> >       If it is a REPLY message, the out field is return code. 0 means success.
> >       If it is a REPLY of INPUT GET, the in field is the value of GPIO line level.
> >       If it is an NOTIFY type of message, it simulates an interrupt event from the
> remote processor.
> >
> > I can add above comments in the commit log or the beginning of the driver
> source file.
> 
> Maybe Documentation/admin-guide/gpio-rpmsg.rst would be better.  You should
> also document how to handle features the device does not support. e.g. i _think_
> your hardware supports all 4 interrupt types. But maybe other hardware needs to
> return something meaning -EOPNOTSUP?
> 

That should be one type of the error return code in the out field of REPLY message. 
The return code of 0 means success, and the others are error codes. 

I will add a gpio-rpmsg.rst file in the next patches. 

Thanks,
Shenwei

>         Andrew



More information about the linux-arm-kernel mailing list