gpio: amd-fch: ionly return allowed values from amd_fch_gpio_get()
authorDmitry Torokhov <dmitry.torokhov@gmail.com>
Tue, 17 Feb 2026 22:11:49 +0000 (14:11 -0800)
committerBartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Wed, 18 Feb 2026 09:56:35 +0000 (10:56 +0100)
As of 86ef402d805d ("gpiolib: sanitize the return value of
gpio_chip::get()") gpiolib requires drivers implementing GPIOs to only
return 0, 1 or negative error for the get() callbacks. Ensure that
amd-fch complies with this requirement.

Fixes: 86ef402d805d ("gpiolib: sanitize the return value of gpio_chip::get()")
Reported-and-tested-by: Tj <tj.iam.tj@proton.me>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Link: https://patch.msgid.link/aZTlwnvHt2Gho4yN@google.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
drivers/gpio/gpio-amd-fch.c

index e6c6c3e..9f32993 100644 (file)
@@ -8,6 +8,7 @@
  *
  */
 
+#include <linux/bitfield.h>
 #include <linux/err.h>
 #include <linux/io.h>
 #include <linux/kernel.h>
@@ -120,15 +121,15 @@ static int amd_fch_gpio_get(struct gpio_chip *gc,
                            unsigned int offset)
 {
        unsigned long flags;
-       int ret;
+       u32 val;
        struct amd_fch_gpio_priv *priv = gpiochip_get_data(gc);
        void __iomem *ptr = amd_fch_gpio_addr(priv, offset);
 
        spin_lock_irqsave(&priv->lock, flags);
-       ret = (readl_relaxed(ptr) & AMD_FCH_GPIO_FLAG_READ);
+       val = readl_relaxed(ptr);
        spin_unlock_irqrestore(&priv->lock, flags);
 
-       return ret;
+       return FIELD_GET(AMD_FCH_GPIO_FLAG_READ, val);
 }
 
 static int amd_fch_gpio_request(struct gpio_chip *chip,