Skip to contentSkip to conversation

gpio: omap: implement get_direction

PATCH New yegorslists at googlemail.com 5 participants 6 messages Apr 24, 2014

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH v3 1/1 gpio: omap: implement get_direction

From: Yegor Yefremov <[email protected]>

This patch implements gpio_chip's get_direction() routine, that lets other drivers get particular GPIOs direction using struct gpio_desc.

---
Changes:
v3: get rid of _get_gpio_direction() (Linus Walleij)
v2: rework return value calculation

 drivers/gpio/gpio-omap.c |   17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)
drivers/gpio/gpio-omap.c +17 -0
index 19b886c..62c12e4 100644
@@ -27,6 +27,7 @@
 #include <linux/irqdomain.h>
 #include <linux/irqchip/chained_irq.h>
 #include <linux/gpio.h>
+#include <linux/bitops.h>
 #include <linux/platform_data/gpio-omap.h>
 
 #define OFF_MODE	1
@@ -936,6 +937,21 @@ static inline void mpuio_init(struct gpio_bank *bank)
 
 /*---------------------------------------------------------------------*/
 
+static int gpio_get_direction(struct gpio_chip *chip, unsigned offset)
+{
+	struct gpio_bank *bank;
+	unsigned long flags;
+	void __iomem *reg;
+	int dir;
+
+	bank = container_of(chip, struct gpio_bank, chip);
+	reg = bank->base + bank->regs->direction;
+	spin_lock_irqsave(&bank->lock, flags);
+	dir = !!(readl_relaxed(reg) & BIT(offset));
+	spin_unlock_irqrestore(&bank->lock, flags);
+	return dir;
+}
+
 static int gpio_input(struct gpio_chip *chip, unsigned offset)
 {
 	struct gpio_bank *bank;
@@ -1092,6 +1108,7 @@ static void omap_gpio_chip_init(struct gpio_bank *bank)
 	 */
 	bank->chip.request = omap_gpio_request;
 	bank->chip.free = omap_gpio_free;
+	bank->chip.get_direction = gpio_get_direction;
 	bank->chip.direction_input = gpio_input;
 	bank->chip.get = gpio_get;
 	bank->chip.direction_output = gpio_output;
Signature · 1 line
1.7.7
#1 lore raw

PATCH v3 1/1 gpio: omap: implement get_direction

Quoted 6 lines · On Thu, Apr 24, 2014 at 8:57 AM, <[email protected]> wrote:

From: Yegor Yefremov <[email protected]>

This patch implements gpio_chip's get_direction() routine, that lets other drivers get particular GPIOs direction using struct gpio_desc.

Quoted 6 lines

---
Changes:
v3: get rid of _get_gpio_direction() (Linus Walleij)
v2: rework return value calculation

Looks good to me, Kevin, Santosh?

Part of me wants to list Javier as maintainer for this driver.

drivers/gpio/gpio-omap.c static inline void mpuio_init(struct gpio_bank *bank) · line 945

Quoted 6 lines
drivers/gpio/gpio-omap.c +6 -0
+static int gpio_get_direction(struct gpio_chip *chip, unsigned offset)
+{
+       struct gpio_bank *bank;
+       unsigned long flags;
+       void __iomem *reg;
+       int dir;

That is a bool, actually. But no big deal.

drivers/gpio/gpio-omap.c static inline void mpuio_init(struct gpio_bank *bank) · line 953

Quoted 8 lines
drivers/gpio/gpio-omap.c +8 -0
+
+       bank = container_of(chip, struct gpio_bank, chip);
+       reg = bank->base + bank->regs->direction;
+       spin_lock_irqsave(&bank->lock, flags);
+       dir = !!(readl_relaxed(reg) & BIT(offset));
+       spin_unlock_irqrestore(&bank->lock, flags);
+       return dir;
+}

Yours,
Linus Walleij

#2 lore raw

PATCH v3 1/1 gpio: omap: implement get_direction

Quoted 8 lines · Linus Walleij
Quoted 6 lines · On Thu, Apr 24, 2014 at 8:57 AM, <[email protected]> wrote:

From: Yegor Yefremov <[email protected]>

This patch implements gpio_chip's get_direction() routine, that lets other drivers get particular GPIOs direction using struct gpio_desc.

Quoted 9 lines
Quoted 6 lines

---
Changes:
v3: get rid of _get_gpio_direction() (Linus Walleij)
v2: rework return value calculation

Looks good to me, Kevin, Santosh?

Looks fine to me as well.

Quoted 2 lines

Part of me wants to list Javier as maintainer for this driver.

Am ok with it as well.

#3 lore raw

PATCH v3 1/1 gpio: omap: implement get_direction

Quoted 16 lines · Santosh Shilimkar
Quoted 15 lines · Linus Walleij
Quoted 12 lines · On Thu, Apr 24, 2014 at 8:57 AM, <[email protected]> wrote:

From: Yegor Yefremov <[email protected]>

This patch implements gpio_chip's get_direction() routine, that lets other drivers get particular GPIOs direction using struct gpio_desc.

---
Changes:
v3: get rid of _get_gpio_direction() (Linus Walleij)
v2: rework return value calculation

Quoted 4 lines
Quoted 2 lines

Looks good to me, Kevin, Santosh?

Looks fine to me as well.

OK finally got around testing gpio/for-next here. Could not use todays linux next as it's broken again for whatever reasons and does not even compile for me.

Boot tested gpio/next on few omap1 boards: h2, osk and 770 and things behave the same way as earlier for me on these boards. Also made sure the PM does not break as tested on n900 with the GPIO changes. So for the following patches, feel free to add:

cb2a5fb059b5 gpio: do not set up hardware for IRQ_TYPE_NONE da09ceae78f7 gpio: omap: implement get_direction d04b76626e94 gpio: omap: convert driver to use gpiolib irqchip d4094cd7577c gpio: omap: check gpiochip_add() return value 820eade1b7f3 gpio: omap: convert to use irq_domain_add_simple() 717f70e39a98 gpio: omap: Use devm_ioremap_resource()

Naturally no need to go back to edit the commits for my acks unless there are other reasons to redo the branches.

Quoted 3 lines
Quoted 2 lines

Part of me wants to list Javier as maintainer for this driver.

Am ok with it as well.

That sounds good to me too, looks like Javier is doing a good job on that already :)

Regards,

Tony

#4 lore raw

PATCH v3 1/1 gpio: omap: implement get_direction

In reply to Linus Walleij
Quoted 8 lines · Linus Walleij
Quoted 6 lines · On Thu, Apr 24, 2014 at 8:57 AM, <[email protected]> wrote:

From: Yegor Yefremov <[email protected]>

This patch implements gpio_chip's get_direction() routine, that lets other drivers get particular GPIOs direction using struct gpio_desc.

Quoted 8 lines
Quoted 6 lines

---
Changes:
v3: get rid of _get_gpio_direction() (Linus Walleij)
v2: rework return value calculation

Looks good to me, Kevin, Santosh?

Quoted 1 line

Part of me wants to list Javier as maintainer for this driver.

That's fine with me.

Kevin

#5 lore raw

PATCH v3 1/1 gpio: omap: implement get_direction

In reply to yegorslists at googlemail.com
Quoted 6 lines · On Thu, Apr 24, 2014 at 8:57 AM, <[email protected]> wrote:

From: Yegor Yefremov <[email protected]>

This patch implements gpio_chip's get_direction() routine, that lets other drivers get particular GPIOs direction using struct gpio_desc.

Quoted 6 lines

---
Changes:
v3: get rid of _get_gpio_direction() (Linus Walleij)
v2: rework return value calculation

This v3 version applied with Santosh's ACK.

Yours,
Linus Walleij