Re: [PATCH v1 1/1] pinctrl: iproc: Add 'get_direction' support

2019-09-11 Thread Linus Walleij
On Wed, Sep 11, 2019 at 6:16 AM Rayagonda Kokatanur
 wrote:

> Add 'get_direction' support to the iProc GPIO driver.
>
> Signed-off-by: Rayagonda Kokatanur 

Patch applied, thanks for doing this!

Yours,
Linus Walleij


[PATCH v1 1/1] pinctrl: iproc: Add 'get_direction' support

2019-09-10 Thread Rayagonda Kokatanur
Add 'get_direction' support to the iProc GPIO driver.

Signed-off-by: Rayagonda Kokatanur 
---
 drivers/pinctrl/bcm/pinctrl-iproc-gpio.c | 10 ++
 1 file changed, 10 insertions(+)

diff --git a/drivers/pinctrl/bcm/pinctrl-iproc-gpio.c 
b/drivers/pinctrl/bcm/pinctrl-iproc-gpio.c
index b70058c..d782d70 100644
--- a/drivers/pinctrl/bcm/pinctrl-iproc-gpio.c
+++ b/drivers/pinctrl/bcm/pinctrl-iproc-gpio.c
@@ -355,6 +355,15 @@ static int iproc_gpio_direction_output(struct gpio_chip 
*gc, unsigned gpio,
return 0;
 }
 
+static int iproc_gpio_get_direction(struct gpio_chip *gc, unsigned int gpio)
+{
+   struct iproc_gpio *chip = gpiochip_get_data(gc);
+   unsigned int offset = IPROC_GPIO_REG(gpio, IPROC_GPIO_OUT_EN_OFFSET);
+   unsigned int shift = IPROC_GPIO_SHIFT(gpio);
+
+   return !(readl(chip->base + offset) & BIT(shift));
+}
+
 static void iproc_gpio_set(struct gpio_chip *gc, unsigned gpio, int val)
 {
struct iproc_gpio *chip = gpiochip_get_data(gc);
@@ -784,6 +793,7 @@ static int iproc_gpio_probe(struct platform_device *pdev)
gc->free = iproc_gpio_free;
gc->direction_input = iproc_gpio_direction_input;
gc->direction_output = iproc_gpio_direction_output;
+   gc->get_direction = iproc_gpio_get_direction;
gc->set = iproc_gpio_set;
gc->get = iproc_gpio_get;
 
-- 
1.9.1