Re: [PATCH] nfc: nxp-nci: allow GPIOs to sleep

From: Charalampos Mitrodimas

Date: Fri Feb 20 2026 - 08:17:44 EST


Ian Ray <ian.ray@xxxxxxxxxxxxxxxx> 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@xxxxxxxxxxxxxxxx>
> ---
> 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)