drivers/nfc/nxp-nci/i2c.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
Allow the firmware and enable GPIOs to sleep.
This fixes a `WARN_ON' and allows the driver to operate GPIOs which are
connected to I2C GPIO expanders.
-- >8 --
kernel: WARNING: CPU: 3 PID: 2636 at drivers/gpio/gpiolib.c:3880 gpiod_set_value+0x88/0x98
-- >8 --
Signed-off-by: Ian Ray <ian.ray@gehealthcare.com>
---
drivers/nfc/nxp-nci/i2c.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/nfc/nxp-nci/i2c.c b/drivers/nfc/nxp-nci/i2c.c
index 6a5ce8ff91f0..b3d34433bd14 100644
--- a/drivers/nfc/nxp-nci/i2c.c
+++ b/drivers/nfc/nxp-nci/i2c.c
@@ -47,8 +47,8 @@ static int nxp_nci_i2c_set_mode(void *phy_id,
{
struct nxp_nci_i2c_phy *phy = (struct nxp_nci_i2c_phy *) phy_id;
- gpiod_set_value(phy->gpiod_fw, (mode == NXP_NCI_MODE_FW) ? 1 : 0);
- gpiod_set_value(phy->gpiod_en, (mode != NXP_NCI_MODE_COLD) ? 1 : 0);
+ gpiod_set_value_cansleep(phy->gpiod_fw, (mode == NXP_NCI_MODE_FW) ? 1 : 0);
+ gpiod_set_value_cansleep(phy->gpiod_en, (mode != NXP_NCI_MODE_COLD) ? 1 : 0);
usleep_range(10000, 15000);
if (mode == NXP_NCI_MODE_COLD)
--
2.49.0
On Fri, Feb 20, 2026 at 01:59:05PM +0200, Ian Ray wrote: > Allow the firmware and enable GPIOs to sleep. > > This fixes a `WARN_ON' and allows the driver to operate GPIOs which are > connected to I2C GPIO expanders. > > -- >8 -- > kernel: WARNING: CPU: 3 PID: 2636 at drivers/gpio/gpiolib.c:3880 gpiod_set_value+0x88/0x98 > -- >8 -- Are there in tree boards which have this problem? Should this be part of stable? https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html Did you use ./scripts/get_maintainer.pl to get the To: and Cc: list? It is very unusual to see an empty To:. Andrew
On Fri, Feb 20, 2026 at 02:19:34PM +0100, Andrew Lunn wrote: > CAUTION: This email originated from outside of GE HealthCare. Only open links or attachments if you trust the sender. Report suspicious emails using Outlook’s “Report” button. > > On Fri, Feb 20, 2026 at 01:59:05PM +0200, Ian Ray wrote: > > Allow the firmware and enable GPIOs to sleep. > > > > This fixes a `WARN_ON' and allows the driver to operate GPIOs which are > > connected to I2C GPIO expanders. > > > > -- >8 -- > > kernel: WARNING: CPU: 3 PID: 2636 at drivers/gpio/gpiolib.c:3880 gpiod_set_value+0x88/0x98 > > -- >8 -- > > Are there in tree boards which have this problem? Should this be part > of stable? I could not find any (I am working on a board which I have not submitted upstream as yet). > > https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html > > Did you use ./scripts/get_maintainer.pl to get the To: and Cc: list? > It is very unusual to see an empty To:. > I did. This driver is marked as an orphan. > Andrew Regards, Ian
On Fri, Feb 20, 2026 at 03:28:54PM +0200, Ian Ray wrote: > On Fri, Feb 20, 2026 at 02:19:34PM +0100, Andrew Lunn wrote: > > CAUTION: This email originated from outside of GE HealthCare. Only open links or attachments if you trust the sender. Report suspicious emails using Outlook’s “Report” button. > > > > On Fri, Feb 20, 2026 at 01:59:05PM +0200, Ian Ray wrote: > > > Allow the firmware and enable GPIOs to sleep. > > > > > > This fixes a `WARN_ON' and allows the driver to operate GPIOs which are > > > connected to I2C GPIO expanders. > > > > > > -- >8 -- > > > kernel: WARNING: CPU: 3 PID: 2636 at drivers/gpio/gpiolib.c:3880 gpiod_set_value+0x88/0x98 > > > -- >8 -- > > > > Are there in tree boards which have this problem? Should this be part > > of stable? > > I could not find any (I am working on a board which I have not submitted > upstream as yet). Argh. Apologies, failed search-fu. There are indeed a few boards with compatible nxp,nxp-nci-i2c. > > > > > https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html > > > > Did you use ./scripts/get_maintainer.pl to get the To: and Cc: list? > > It is very unusual to see an empty To:. > > > > I did. This driver is marked as an orphan. > > > Andrew > > Regards, > Ian
Ian Ray <ian.ray@gehealthcare.com> writes:
> Allow the firmware and enable GPIOs to sleep.
>
> This fixes a `WARN_ON' and allows the driver to operate GPIOs which are
> connected to I2C GPIO expanders.
>
> -- >8 --
> kernel: WARNING: CPU: 3 PID: 2636 at drivers/gpio/gpiolib.c:3880 gpiod_set_value+0x88/0x98
> -- >8 --
>
> Signed-off-by: Ian Ray <ian.ray@gehealthcare.com>
> ---
> drivers/nfc/nxp-nci/i2c.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/nfc/nxp-nci/i2c.c b/drivers/nfc/nxp-nci/i2c.c
> index 6a5ce8ff91f0..b3d34433bd14 100644
> --- a/drivers/nfc/nxp-nci/i2c.c
> +++ b/drivers/nfc/nxp-nci/i2c.c
> @@ -47,8 +47,8 @@ static int nxp_nci_i2c_set_mode(void *phy_id,
> {
> struct nxp_nci_i2c_phy *phy = (struct nxp_nci_i2c_phy *) phy_id;
>
> - gpiod_set_value(phy->gpiod_fw, (mode == NXP_NCI_MODE_FW) ? 1 : 0);
> - gpiod_set_value(phy->gpiod_en, (mode != NXP_NCI_MODE_COLD) ? 1 : 0);
> + gpiod_set_value_cansleep(phy->gpiod_fw, (mode == NXP_NCI_MODE_FW) ? 1 : 0);
> + gpiod_set_value_cansleep(phy->gpiod_en, (mode != NXP_NCI_MODE_COLD) ? 1 : 0);
Do we need a Fixes tag here?
AFAICT this was introduced in
6be88670fc59 ("NFC: nxp-nci_i2c: Add I2C support to NXP NCI driver")
which used gpio_set_value() instead of gpio_set_value_cansleep() from
the beginning (that is before transitioning to gpiod_* calls in
43201767b44c ("NFC: nxp-nci: Convert to use GPIO descriptor").
This piece of code is present on active stable trees. So you also need
to Cc stable?
Cheers,
C. Mitrodimas
> usleep_range(10000, 15000);
>
> if (mode == NXP_NCI_MODE_COLD)
On Fri, Feb 20, 2026 at 01:16:56PM +0000, Charalampos Mitrodimas wrote:
> CAUTION: This email originated from outside of GE HealthCare. Only open links or attachments if you trust the sender. Report suspicious emails using Outlook’s “Report” button.
>
> Ian Ray <ian.ray@gehealthcare.com> writes:
>
> > Allow the firmware and enable GPIOs to sleep.
> >
> > This fixes a `WARN_ON' and allows the driver to operate GPIOs which are
> > connected to I2C GPIO expanders.
> >
> > -- >8 --
> > kernel: WARNING: CPU: 3 PID: 2636 at drivers/gpio/gpiolib.c:3880 gpiod_set_value+0x88/0x98
> > -- >8 --
> >
> > Signed-off-by: Ian Ray <ian.ray@gehealthcare.com>
> > ---
> > drivers/nfc/nxp-nci/i2c.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/nfc/nxp-nci/i2c.c b/drivers/nfc/nxp-nci/i2c.c
> > index 6a5ce8ff91f0..b3d34433bd14 100644
> > --- a/drivers/nfc/nxp-nci/i2c.c
> > +++ b/drivers/nfc/nxp-nci/i2c.c
> > @@ -47,8 +47,8 @@ static int nxp_nci_i2c_set_mode(void *phy_id,
> > {
> > struct nxp_nci_i2c_phy *phy = (struct nxp_nci_i2c_phy *) phy_id;
> >
> > - gpiod_set_value(phy->gpiod_fw, (mode == NXP_NCI_MODE_FW) ? 1 : 0);
> > - gpiod_set_value(phy->gpiod_en, (mode != NXP_NCI_MODE_COLD) ? 1 : 0);
> > + gpiod_set_value_cansleep(phy->gpiod_fw, (mode == NXP_NCI_MODE_FW) ? 1 : 0);
> > + gpiod_set_value_cansleep(phy->gpiod_en, (mode != NXP_NCI_MODE_COLD) ? 1 : 0);
>
> Do we need a Fixes tag here?
I think we should, yes; sorry for overlooking that.
>
> AFAICT this was introduced in
>
> 6be88670fc59 ("NFC: nxp-nci_i2c: Add I2C support to NXP NCI driver")
>
> which used gpio_set_value() instead of gpio_set_value_cansleep() from
> the beginning (that is before transitioning to gpiod_* calls in
> 43201767b44c ("NFC: nxp-nci: Convert to use GPIO descriptor").
>
> This piece of code is present on active stable trees. So you also need
> to Cc stable?
Yes, you're right, thank you.
>
> Cheers,
> C. Mitrodimas
>
> > usleep_range(10000, 15000);
> >
> > if (mode == NXP_NCI_MODE_COLD)
© 2016 - 2026 Red Hat, Inc.