]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
gpio: max77620: Implement .get_direction() callback
authorDiogo Ivo <diogo.ivo@tecnico.ulisboa.pt>
Tue, 27 Jan 2026 18:52:42 +0000 (18:52 +0000)
committerBartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Wed, 28 Jan 2026 09:07:23 +0000 (10:07 +0100)
Add support for reporting the current GPIO line direction by implementing
the .get_direction() callback for the MAX77620 GPIO controller.

Signed-off-by: Diogo Ivo <diogo.ivo@tecnico.ulisboa.pt>
Reviewed-by: Linus Walleij <linusw@kernel.org>
Link: https://patch.msgid.link/20260127-smaug-spi_flash-v1-1-5fd334415118@tecnico.ulisboa.pt
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
drivers/gpio/gpio-max77620.c

index 02eca400b3077253c3dcd1aff73f028ae01eaa0f..e6c85411c695eea12b948d64a3bbad9a327439a4 100644 (file)
@@ -132,6 +132,24 @@ static const struct irq_chip max77620_gpio_irqchip = {
        GPIOCHIP_IRQ_RESOURCE_HELPERS,
 };
 
+static int max77620_gpio_get_dir(struct gpio_chip *gc, unsigned int offset)
+{
+       struct max77620_gpio *mgpio = gpiochip_get_data(gc);
+       unsigned int val;
+       int ret;
+
+       ret = regmap_read(mgpio->rmap, GPIO_REG_ADDR(offset), &val);
+       if (ret < 0) {
+               dev_err(mgpio->dev, "CNFG_GPIOx read failed: %d\n", ret);
+               return ret;
+       }
+
+       if (val & MAX77620_CNFG_GPIO_DIR_MASK)
+               return GPIO_LINE_DIRECTION_IN;
+       else
+               return GPIO_LINE_DIRECTION_OUT;
+}
+
 static int max77620_gpio_dir_input(struct gpio_chip *gc, unsigned int offset)
 {
        struct max77620_gpio *mgpio = gpiochip_get_data(gc);
@@ -308,6 +326,7 @@ static int max77620_gpio_probe(struct platform_device *pdev)
 
        mgpio->gpio_chip.label = pdev->name;
        mgpio->gpio_chip.parent = pdev->dev.parent;
+       mgpio->gpio_chip.get_direction = max77620_gpio_get_dir;
        mgpio->gpio_chip.direction_input = max77620_gpio_dir_input;
        mgpio->gpio_chip.get = max77620_gpio_get;
        mgpio->gpio_chip.direction_output = max77620_gpio_dir_output;