linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [patch 00/22] pinctrl: Interrupt cleanups and API change preparation
@ 2015-07-13 20:47 Thomas Gleixner
  2015-07-13 20:47 ` [patch 01/22] pinctrl/rockchip: Consolidate chained IRQ handler install/remove Thomas Gleixner
                   ` (21 more replies)
  0 siblings, 22 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:47 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu

The following patch series contains the following changes:

    - Consolidation of chained interrupt handler setup/removal

    - Switch to functions which avoid a redundant interrupt
      descriptor lookup

    - Preparation of interrupt flow handlers for the 'irq' argument
      removal

The series has no dependencies and is also available as a git branch
for your convenience:

 git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/pinctrl

If you want me to carry the patches in the irq/core branch of tip,
please let me know.

Thanks,

	tglx




^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 01/22] pinctrl/rockchip: Consolidate chained IRQ handler install/remove
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
@ 2015-07-13 20:47 ` Thomas Gleixner
  2015-07-13 20:47 ` [patch 02/22] pinctrl: " Thomas Gleixner
                   ` (20 subsequent siblings)
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:47 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Russell King, Julia Lawall

[-- Attachment #1: pinctrl-rockchip-Consolidate-chained-IRQ-handler-ins.patch --]
[-- Type: text/plain, Size: 1106 bytes --]

Chained irq handlers usually set up handler data as well. We now have
a function to set both under irq_desc->lock. Replace the two calls
with one.

Search and conversion was done with coccinelle.

Reported-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/pinctrl-rockchip.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Index: tip/drivers/pinctrl/pinctrl-rockchip.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-rockchip.c
+++ tip/drivers/pinctrl/pinctrl-rockchip.c
@@ -1689,8 +1689,8 @@ static int rockchip_interrupts_register(
 		gc->chip_types[0].chip.irq_set_type = rockchip_irq_set_type;
 		gc->wake_enabled = IRQ_MSK(bank->nr_pins);
 
-		irq_set_handler_data(bank->irq, bank);
-		irq_set_chained_handler(bank->irq, rockchip_irq_demux);
+		irq_set_chained_handler_and_data(bank->irq,
+						 rockchip_irq_demux, bank);
 	}
 
 	return 0;



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 02/22] pinctrl: Consolidate chained IRQ handler install/remove
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
  2015-07-13 20:47 ` [patch 01/22] pinctrl/rockchip: Consolidate chained IRQ handler install/remove Thomas Gleixner
@ 2015-07-13 20:47 ` Thomas Gleixner
  2015-07-13 20:47 ` [patch 03/22] pinctrl/exynos: " Thomas Gleixner
                   ` (19 subsequent siblings)
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:47 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Russell King, Julia Lawall

[-- Attachment #1: pinctrl-Consolidate-chained-IRQ-handler-install-remo.patch --]
[-- Type: text/plain, Size: 1048 bytes --]

Chained irq handlers usually set up handler data as well. We now have
a function to set both under irq_desc->lock. Replace the two calls
with one.

Search and conversion was done with coccinelle.

Reported-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/pinctrl-single.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Index: tip/drivers/pinctrl/pinctrl-single.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-single.c
+++ tip/drivers/pinctrl/pinctrl-single.c
@@ -1767,9 +1767,9 @@ static int pcs_irq_init_chained_handler(
 			return res;
 		}
 	} else {
-		irq_set_handler_data(pcs_soc->irq, pcs_soc);
-		irq_set_chained_handler(pcs_soc->irq,
-					pcs_irq_chain_handler);
+		irq_set_chained_handler_and_data(pcs_soc->irq,
+						 pcs_irq_chain_handler,
+						 pcs_soc);
 	}
 
 	/*



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 03/22] pinctrl/exynos: Consolidate chained IRQ handler install/remove
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
  2015-07-13 20:47 ` [patch 01/22] pinctrl/rockchip: Consolidate chained IRQ handler install/remove Thomas Gleixner
  2015-07-13 20:47 ` [patch 02/22] pinctrl: " Thomas Gleixner
@ 2015-07-13 20:47 ` Thomas Gleixner
  2015-07-13 20:47 ` [patch 04/22] pinctrl/bcm2835: Use irq_set_handler_locked() Thomas Gleixner
                   ` (18 subsequent siblings)
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:47 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Russell King, Julia Lawall

[-- Attachment #1: pinctrl-exynos-Consolidate-chained-IRQ-handler-insta.patch --]
[-- Type: text/plain, Size: 1100 bytes --]

Chained irq handlers usually set up handler data as well. We now have
a function to set both under irq_desc->lock. Replace the two calls
with one.

Search and conversion was done with coccinelle.

Reported-by: Russell King <rmk+kernel@arm.linux.org.uk>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/samsung/pinctrl-exynos.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Index: tip/drivers/pinctrl/samsung/pinctrl-exynos.c
===================================================================
--- tip.orig/drivers/pinctrl/samsung/pinctrl-exynos.c
+++ tip/drivers/pinctrl/samsung/pinctrl-exynos.c
@@ -542,8 +542,9 @@ static int exynos_eint_wkup_init(struct
 			}
 			weint_data[idx].irq = idx;
 			weint_data[idx].bank = bank;
-			irq_set_handler_data(irq, &weint_data[idx]);
-			irq_set_chained_handler(irq, exynos_irq_eint0_15);
+			irq_set_chained_handler_and_data(irq,
+							 exynos_irq_eint0_15,
+							 &weint_data[idx]);
 		}
 	}
 



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 04/22] pinctrl/bcm2835: Use irq_set_handler_locked()
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (2 preceding siblings ...)
  2015-07-13 20:47 ` [patch 03/22] pinctrl/exynos: " Thomas Gleixner
@ 2015-07-13 20:47 ` Thomas Gleixner
  2015-07-13 20:47 ` [patch 05/22] pinctrl/baytrail: " Thomas Gleixner
                   ` (17 subsequent siblings)
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:47 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Julia Lawall

[-- Attachment #1: pinctrl-bcm2835-Use-irq_set_handler_locked.patch --]
[-- Type: text/plain, Size: 1106 bytes --]

Use irq_set_handler_locked() as it avoids a redundant lookup of the
irq descriptor.

Search and replacement was done with coccinelle.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Julia Lawall <julia.lawall@lip6.fr>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/bcm/pinctrl-bcm2835.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Index: tip/drivers/pinctrl/bcm/pinctrl-bcm2835.c
===================================================================
--- tip.orig/drivers/pinctrl/bcm/pinctrl-bcm2835.c
+++ tip/drivers/pinctrl/bcm/pinctrl-bcm2835.c
@@ -584,9 +584,9 @@ static int bcm2835_gpio_irq_set_type(str
 		ret = __bcm2835_gpio_irq_set_type_disabled(pc, gpio, type);
 
 	if (type & IRQ_TYPE_EDGE_BOTH)
-		__irq_set_handler_locked(data->irq, handle_edge_irq);
+		irq_set_handler_locked(data, handle_edge_irq);
 	else
-		__irq_set_handler_locked(data->irq, handle_level_irq);
+		irq_set_handler_locked(data, handle_level_irq);
 
 	spin_unlock_irqrestore(&pc->irq_lock[bank], flags);
 



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 05/22] pinctrl/baytrail: Use irq_set_handler_locked()
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (3 preceding siblings ...)
  2015-07-13 20:47 ` [patch 04/22] pinctrl/bcm2835: Use irq_set_handler_locked() Thomas Gleixner
@ 2015-07-13 20:47 ` Thomas Gleixner
  2015-07-13 20:47 ` [patch 06/22] pinctrl/cherryview: " Thomas Gleixner
                   ` (16 subsequent siblings)
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:47 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Julia Lawall

[-- Attachment #1: pinctrl-baytrail-Use-irq_set_handler_locked.patch --]
[-- Type: text/plain, Size: 1086 bytes --]

Use irq_set_handler_locked() as it avoids a redundant lookup of the
irq descriptor.

Search and replacement was done with coccinelle.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Julia Lawall <julia.lawall@lip6.fr>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/intel/pinctrl-baytrail.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Index: tip/drivers/pinctrl/intel/pinctrl-baytrail.c
===================================================================
--- tip.orig/drivers/pinctrl/intel/pinctrl-baytrail.c
+++ tip/drivers/pinctrl/intel/pinctrl-baytrail.c
@@ -265,9 +265,9 @@ static int byt_irq_type(struct irq_data
 	writel(value, reg);
 
 	if (type & IRQ_TYPE_EDGE_BOTH)
-		__irq_set_handler_locked(d->irq, handle_edge_irq);
+		irq_set_handler_locked(d, handle_edge_irq);
 	else if (type & IRQ_TYPE_LEVEL_MASK)
-		__irq_set_handler_locked(d->irq, handle_level_irq);
+		irq_set_handler_locked(d, handle_level_irq);
 
 	spin_unlock_irqrestore(&vg->lock, flags);
 



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 06/22] pinctrl/cherryview: Use irq_set_handler_locked()
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (4 preceding siblings ...)
  2015-07-13 20:47 ` [patch 05/22] pinctrl/baytrail: " Thomas Gleixner
@ 2015-07-13 20:47 ` Thomas Gleixner
  2015-07-13 20:47 ` [patch 07/22] pinctrl/intel: " Thomas Gleixner
                   ` (15 subsequent siblings)
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:47 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Julia Lawall

[-- Attachment #1: pinctrl-cherryview-Use-irq_set_handler_locked.patch --]
[-- Type: text/plain, Size: 1442 bytes --]

Use irq_set_handler_locked() as it avoids a redundant lookup of the
irq descriptor.

Search and replacement was done with coccinelle.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Julia Lawall <julia.lawall@lip6.fr>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/intel/pinctrl-cherryview.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Index: tip/drivers/pinctrl/intel/pinctrl-cherryview.c
===================================================================
--- tip.orig/drivers/pinctrl/intel/pinctrl-cherryview.c
+++ tip/drivers/pinctrl/intel/pinctrl-cherryview.c
@@ -1325,7 +1325,7 @@ static unsigned chv_gpio_irq_startup(str
 
 		spin_lock_irqsave(&pctrl->lock, flags);
 		if (!pctrl->intr_lines[intsel]) {
-			__irq_set_handler_locked(d->irq, handler);
+			irq_set_handler_locked(d, handler);
 			pctrl->intr_lines[intsel] = offset;
 		}
 		spin_unlock_irqrestore(&pctrl->lock, flags);
@@ -1389,9 +1389,9 @@ static int chv_gpio_irq_type(struct irq_
 	pctrl->intr_lines[value] = offset;
 
 	if (type & IRQ_TYPE_EDGE_BOTH)
-		__irq_set_handler_locked(d->irq, handle_edge_irq);
+		irq_set_handler_locked(d, handle_edge_irq);
 	else if (type & IRQ_TYPE_LEVEL_MASK)
-		__irq_set_handler_locked(d->irq, handle_level_irq);
+		irq_set_handler_locked(d, handle_level_irq);
 
 	spin_unlock_irqrestore(&pctrl->lock, flags);
 



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 07/22] pinctrl/intel: Use irq_set_handler_locked()
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (5 preceding siblings ...)
  2015-07-13 20:47 ` [patch 06/22] pinctrl/cherryview: " Thomas Gleixner
@ 2015-07-13 20:47 ` Thomas Gleixner
  2015-07-13 20:47 ` [patch 08/22] pinctrl/adi2: " Thomas Gleixner
                   ` (14 subsequent siblings)
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:47 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Julia Lawall

[-- Attachment #1: pinctrl-intel-Use-irq_set_handler_locked.patch --]
[-- Type: text/plain, Size: 1078 bytes --]

Use irq_set_handler_locked() as it avoids a redundant lookup of the
irq descriptor.

Search and replacement was done with coccinelle.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Julia Lawall <julia.lawall@lip6.fr>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/intel/pinctrl-intel.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Index: tip/drivers/pinctrl/intel/pinctrl-intel.c
===================================================================
--- tip.orig/drivers/pinctrl/intel/pinctrl-intel.c
+++ tip/drivers/pinctrl/intel/pinctrl-intel.c
@@ -758,9 +758,9 @@ static int intel_gpio_irq_type(struct ir
 	writel(value, reg);
 
 	if (type & IRQ_TYPE_EDGE_BOTH)
-		__irq_set_handler_locked(d->irq, handle_edge_irq);
+		irq_set_handler_locked(d, handle_edge_irq);
 	else if (type & IRQ_TYPE_LEVEL_MASK)
-		__irq_set_handler_locked(d->irq, handle_level_irq);
+		irq_set_handler_locked(d, handle_level_irq);
 
 	spin_unlock_irqrestore(&pctrl->lock, flags);
 



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 08/22] pinctrl/adi2: Use irq_set_handler_locked()
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (6 preceding siblings ...)
  2015-07-13 20:47 ` [patch 07/22] pinctrl/intel: " Thomas Gleixner
@ 2015-07-13 20:47 ` Thomas Gleixner
  2015-07-13 20:47 ` [patch 09/22] pinctrl/amd: " Thomas Gleixner
                   ` (13 subsequent siblings)
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:47 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Julia Lawall

[-- Attachment #1: pinctrl-adi2-Use-irq_set_handler_locked.patch --]
[-- Type: text/plain, Size: 1070 bytes --]

Use irq_set_handler_locked() as it avoids a redundant lookup of the
irq descriptor.

Search and update was done with coccinelle.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Julia Lawall <julia.lawall@lip6.fr>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/pinctrl-adi2.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Index: tip/drivers/pinctrl/pinctrl-adi2.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-adi2.c
+++ tip/drivers/pinctrl/pinctrl-adi2.c
@@ -427,10 +427,10 @@ static int adi_gpio_irq_type(struct irq_
 
 	if (type & (IRQ_TYPE_EDGE_RISING | IRQ_TYPE_EDGE_FALLING)) {
 		writel(pintmask, &pint_regs->edge_set);
-		__irq_set_handler_locked(irq, handle_edge_irq);
+		irq_set_handler_locked(d, handle_edge_irq);
 	} else {
 		writel(pintmask, &pint_regs->edge_clear);
-		__irq_set_handler_locked(irq, handle_level_irq);
+		irq_set_handler_locked(d, handle_level_irq);
 	}
 
 out:



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 09/22] pinctrl/amd: Use irq_set_handler_locked()
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (7 preceding siblings ...)
  2015-07-13 20:47 ` [patch 08/22] pinctrl/adi2: " Thomas Gleixner
@ 2015-07-13 20:47 ` Thomas Gleixner
  2015-07-13 20:47 ` [patch 10/22] pinctrl/at91: " Thomas Gleixner
                   ` (12 subsequent siblings)
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:47 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Julia Lawall

[-- Attachment #1: pinctrl-amd-Use-irq_set_handler_locked.patch --]
[-- Type: text/plain, Size: 2417 bytes --]

Use irq_set_handler_locked() as it avoids a redundant lookup of the
irq descriptor.

Search and replacement was done with coccinelle.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Julia Lawall <julia.lawall@lip6.fr>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/pinctrl-amd.c |   10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

Index: tip/drivers/pinctrl/pinctrl-amd.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-amd.c
+++ tip/drivers/pinctrl/pinctrl-amd.c
@@ -420,7 +420,7 @@ static int amd_gpio_irq_set_type(struct
 		pin_reg &= ~(ACTIVE_LEVEL_MASK << ACTIVE_LEVEL_OFF);
 		pin_reg |= ACTIVE_HIGH << ACTIVE_LEVEL_OFF;
 		pin_reg |= DB_TYPE_REMOVE_GLITCH << DB_CNTRL_OFF;
-		__irq_set_handler_locked(d->irq, handle_edge_irq);
+		irq_set_handler_locked(d, handle_edge_irq);
 		break;
 
 	case IRQ_TYPE_EDGE_FALLING:
@@ -428,7 +428,7 @@ static int amd_gpio_irq_set_type(struct
 		pin_reg &= ~(ACTIVE_LEVEL_MASK << ACTIVE_LEVEL_OFF);
 		pin_reg |= ACTIVE_LOW << ACTIVE_LEVEL_OFF;
 		pin_reg |= DB_TYPE_REMOVE_GLITCH << DB_CNTRL_OFF;
-		__irq_set_handler_locked(d->irq, handle_edge_irq);
+		irq_set_handler_locked(d, handle_edge_irq);
 		break;
 
 	case IRQ_TYPE_EDGE_BOTH:
@@ -436,7 +436,7 @@ static int amd_gpio_irq_set_type(struct
 		pin_reg &= ~(ACTIVE_LEVEL_MASK << ACTIVE_LEVEL_OFF);
 		pin_reg |= BOTH_EADGE << ACTIVE_LEVEL_OFF;
 		pin_reg |= DB_TYPE_REMOVE_GLITCH << DB_CNTRL_OFF;
-		__irq_set_handler_locked(d->irq, handle_edge_irq);
+		irq_set_handler_locked(d, handle_edge_irq);
 		break;
 
 	case IRQ_TYPE_LEVEL_HIGH:
@@ -445,7 +445,7 @@ static int amd_gpio_irq_set_type(struct
 		pin_reg |= ACTIVE_HIGH << ACTIVE_LEVEL_OFF;
 		pin_reg &= ~(DB_CNTRl_MASK << DB_CNTRL_OFF);
 		pin_reg |= DB_TYPE_PRESERVE_LOW_GLITCH << DB_CNTRL_OFF;
-		__irq_set_handler_locked(d->irq, handle_level_irq);
+		irq_set_handler_locked(d, handle_level_irq);
 		break;
 
 	case IRQ_TYPE_LEVEL_LOW:
@@ -454,7 +454,7 @@ static int amd_gpio_irq_set_type(struct
 		pin_reg |= ACTIVE_LOW << ACTIVE_LEVEL_OFF;
 		pin_reg &= ~(DB_CNTRl_MASK << DB_CNTRL_OFF);
 		pin_reg |= DB_TYPE_PRESERVE_HIGH_GLITCH << DB_CNTRL_OFF;
-		__irq_set_handler_locked(d->irq, handle_level_irq);
+		irq_set_handler_locked(d, handle_level_irq);
 		break;
 
 	case IRQ_TYPE_NONE:



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 10/22] pinctrl/at91: Use irq_set_handler_locked()
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (8 preceding siblings ...)
  2015-07-13 20:47 ` [patch 09/22] pinctrl/amd: " Thomas Gleixner
@ 2015-07-13 20:47 ` Thomas Gleixner
  2015-07-13 20:47 ` [patch 11/22] pinctrl/rockchip: " Thomas Gleixner
                   ` (11 subsequent siblings)
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:47 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Julia Lawall

[-- Attachment #1: pinctrl-at91-Use-irq_set_handler_locked.patch --]
[-- Type: text/plain, Size: 1961 bytes --]

Use irq_set_handler_locked() as it avoids a redundant lookup of the
irq descriptor.

Search and replacement was done with coccinelle.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Julia Lawall <julia.lawall@lip6.fr>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/pinctrl-at91.c |   10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

Index: tip/drivers/pinctrl/pinctrl-at91.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-at91.c
+++ tip/drivers/pinctrl/pinctrl-at91.c
@@ -1444,22 +1444,22 @@ static int alt_gpio_irq_type(struct irq_
 
 	switch (type) {
 	case IRQ_TYPE_EDGE_RISING:
-		__irq_set_handler_locked(d->irq, handle_simple_irq);
+		irq_set_handler_locked(d, handle_simple_irq);
 		writel_relaxed(mask, pio + PIO_ESR);
 		writel_relaxed(mask, pio + PIO_REHLSR);
 		break;
 	case IRQ_TYPE_EDGE_FALLING:
-		__irq_set_handler_locked(d->irq, handle_simple_irq);
+		irq_set_handler_locked(d, handle_simple_irq);
 		writel_relaxed(mask, pio + PIO_ESR);
 		writel_relaxed(mask, pio + PIO_FELLSR);
 		break;
 	case IRQ_TYPE_LEVEL_LOW:
-		__irq_set_handler_locked(d->irq, handle_level_irq);
+		irq_set_handler_locked(d, handle_level_irq);
 		writel_relaxed(mask, pio + PIO_LSR);
 		writel_relaxed(mask, pio + PIO_FELLSR);
 		break;
 	case IRQ_TYPE_LEVEL_HIGH:
-		__irq_set_handler_locked(d->irq, handle_level_irq);
+		irq_set_handler_locked(d, handle_level_irq);
 		writel_relaxed(mask, pio + PIO_LSR);
 		writel_relaxed(mask, pio + PIO_REHLSR);
 		break;
@@ -1468,7 +1468,7 @@ static int alt_gpio_irq_type(struct irq_
 		 * disable additional interrupt modes:
 		 * fall back to default behavior
 		 */
-		__irq_set_handler_locked(d->irq, handle_simple_irq);
+		irq_set_handler_locked(d, handle_simple_irq);
 		writel_relaxed(mask, pio + PIO_AIMDR);
 		return 0;
 	case IRQ_TYPE_NONE:



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 11/22] pinctrl/rockchip: Use irq_set_handler_locked()
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (9 preceding siblings ...)
  2015-07-13 20:47 ` [patch 10/22] pinctrl/at91: " Thomas Gleixner
@ 2015-07-13 20:47 ` Thomas Gleixner
  2015-07-13 20:47 ` [patch 12/22] pinctrl/qcom: " Thomas Gleixner
                   ` (10 subsequent siblings)
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:47 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Julia Lawall

[-- Attachment #1: pinctrl-rockchip-Use-irq_set_handler_locked.patch --]
[-- Type: text/plain, Size: 1072 bytes --]

Use irq_set_handler_locked() as it avoids a redundant lookup of the
irq descriptor.

Search and replacement was done with coccinelle.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Julia Lawall <julia.lawall@lip6.fr>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/pinctrl-rockchip.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Index: tip/drivers/pinctrl/pinctrl-rockchip.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-rockchip.c
+++ tip/drivers/pinctrl/pinctrl-rockchip.c
@@ -1555,9 +1555,9 @@ static int rockchip_irq_set_type(struct
 	spin_unlock_irqrestore(&bank->slock, flags);
 
 	if (type & IRQ_TYPE_EDGE_BOTH)
-		__irq_set_handler_locked(d->irq, handle_edge_irq);
+		irq_set_handler_locked(d, handle_edge_irq);
 	else
-		__irq_set_handler_locked(d->irq, handle_level_irq);
+		irq_set_handler_locked(d, handle_level_irq);
 
 	spin_lock_irqsave(&bank->slock, flags);
 	irq_gc_lock(gc);



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 12/22] pinctrl/qcom: Use irq_set_handler_locked()
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (10 preceding siblings ...)
  2015-07-13 20:47 ` [patch 11/22] pinctrl/rockchip: " Thomas Gleixner
@ 2015-07-13 20:47 ` Thomas Gleixner
  2015-07-13 20:47 ` [patch 13/22] pinctrl/exynos: " Thomas Gleixner
                   ` (9 subsequent siblings)
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:47 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Julia Lawall

[-- Attachment #1: pinctrl-qcom-Use-irq_set_handler_locked.patch --]
[-- Type: text/plain, Size: 1107 bytes --]

Use irq_set_handler_locked() as it avoids a redundant lookup of the
irq descriptor.

Search and replacement was done with coccinelle.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Julia Lawall <julia.lawall@lip6.fr>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/qcom/pinctrl-msm.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Index: tip/drivers/pinctrl/qcom/pinctrl-msm.c
===================================================================
--- tip.orig/drivers/pinctrl/qcom/pinctrl-msm.c
+++ tip/drivers/pinctrl/qcom/pinctrl-msm.c
@@ -733,9 +733,9 @@ static int msm_gpio_irq_set_type(struct
 	spin_unlock_irqrestore(&pctrl->lock, flags);
 
 	if (type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH))
-		__irq_set_handler_locked(d->irq, handle_level_irq);
+		irq_set_handler_locked(d, handle_level_irq);
 	else if (type & (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING))
-		__irq_set_handler_locked(d->irq, handle_edge_irq);
+		irq_set_handler_locked(d, handle_edge_irq);
 
 	return 0;
 }



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 13/22] pinctrl/exynos: Use irq_set_handler_locked()
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (11 preceding siblings ...)
  2015-07-13 20:47 ` [patch 12/22] pinctrl/qcom: " Thomas Gleixner
@ 2015-07-13 20:47 ` Thomas Gleixner
  2015-07-13 20:47 ` [patch 14/22] pinctrl/samsung: " Thomas Gleixner
                   ` (8 subsequent siblings)
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:47 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Julia Lawall

[-- Attachment #1: pinctrl-exynos-Use-irq_set_handler_locked.patch --]
[-- Type: text/plain, Size: 1085 bytes --]

Use irq_set_handler_locked() as it avoids a redundant lookup of the
irq descriptor.

Search and replacement was done with coccinelle.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Julia Lawall <julia.lawall@lip6.fr>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/samsung/pinctrl-exynos.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Index: tip/drivers/pinctrl/samsung/pinctrl-exynos.c
===================================================================
--- tip.orig/drivers/pinctrl/samsung/pinctrl-exynos.c
+++ tip/drivers/pinctrl/samsung/pinctrl-exynos.c
@@ -148,9 +148,9 @@ static int exynos_irq_set_type(struct ir
 	}
 
 	if (type & IRQ_TYPE_EDGE_BOTH)
-		__irq_set_handler_locked(irqd->irq, handle_edge_irq);
+		irq_set_handler_locked(irqd, handle_edge_irq);
 	else
-		__irq_set_handler_locked(irqd->irq, handle_level_irq);
+		irq_set_handler_locked(irqd, handle_level_irq);
 
 	con = readl(d->virt_base + reg_con);
 	con &= ~(EXYNOS_EINT_CON_MASK << shift);



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 14/22] pinctrl/samsung: Use irq_set_handler_locked()
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (12 preceding siblings ...)
  2015-07-13 20:47 ` [patch 13/22] pinctrl/exynos: " Thomas Gleixner
@ 2015-07-13 20:47 ` Thomas Gleixner
  2015-07-13 21:09   ` Thomas Gleixner
  2015-07-13 20:47 ` [patch 15/22] pinctrl: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc Thomas Gleixner
                   ` (7 subsequent siblings)
  21 siblings, 1 reply; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:47 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu

[-- Attachment #1: pinctrl-samsung-Use-irq_set_handler_locked.patch --]
[-- Type: text/plain, Size: 2938 bytes --]

Use irq_set_handler_locked() as it avoids a redundant lookup of the
irq descriptor.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/samsung/pinctrl-s3c24xx.c |   10 +++++-----
 drivers/pinctrl/samsung/pinctrl-s3c64xx.c |   10 +++++-----
 2 files changed, 10 insertions(+), 10 deletions(-)

Index: tip/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
===================================================================
--- tip.orig/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
+++ tip/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
@@ -131,13 +131,13 @@ static int s3c24xx_eint_get_trigger(unsi
 	}
 }
 
-static void s3c24xx_eint_set_handler(unsigned int irq, unsigned int type)
+static void s3c24xx_eint_set_handler(struct irq_data *d, unsigned int type)
 {
 	/* Edge- and level-triggered interrupts need different handlers */
 	if (type & IRQ_TYPE_EDGE_BOTH)
-		__irq_set_handler_locked(irq, handle_edge_irq);
+		irq_set_handler_locked(d, handle_edge_irq);
 	else
-		__irq_set_handler_locked(irq, handle_level_irq);
+		irq_set_handler_locked(d, handle_level_irq);
 }
 
 static void s3c24xx_eint_set_function(struct samsung_pinctrl_drv_data *d,
@@ -180,8 +180,8 @@ static int s3c24xx_eint_type(struct irq_
 		dev_err(d->dev, "unsupported external interrupt type\n");
 		return -EINVAL;
 	}
-
-	s3c24xx_eint_set_handler(data->irq, type);
+x
+	s3c24xx_eint_set_handler(data, type);
 
 	/* Set up interrupt trigger */
 	reg = d->virt_base + EINT_REG(index);
Index: tip/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
===================================================================
--- tip.orig/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
+++ tip/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
@@ -260,13 +260,13 @@ static int s3c64xx_irq_get_trigger(unsig
 	return trigger;
 }
 
-static void s3c64xx_irq_set_handler(unsigned int irq, unsigned int type)
+static void s3c64xx_irq_set_handler(struct irq_data *d, unsigned int type)
 {
 	/* Edge- and level-triggered interrupts need different handlers */
 	if (type & IRQ_TYPE_EDGE_BOTH)
-		__irq_set_handler_locked(irq, handle_edge_irq);
+		irq_set_handler_locked(d, handle_edge_irq);
 	else
-		__irq_set_handler_locked(irq, handle_level_irq);
+		irq_set_handler_locked(d, handle_level_irq);
 }
 
 static void s3c64xx_irq_set_function(struct samsung_pinctrl_drv_data *d,
@@ -356,7 +356,7 @@ static int s3c64xx_gpio_irq_set_type(str
 		return -EINVAL;
 	}
 
-	s3c64xx_irq_set_handler(irqd->irq, type);
+	s3c64xx_irq_set_handler(irqd, type);
 
 	/* Set up interrupt trigger */
 	reg = d->virt_base + EINTCON_REG(bank->eint_offset);
@@ -567,7 +567,7 @@ static int s3c64xx_eint0_irq_set_type(st
 		return -EINVAL;
 	}
 
-	s3c64xx_irq_set_handler(irqd->irq, type);
+	s3c64xx_irq_set_handler(irqd, type);
 
 	/* Set up interrupt trigger */
 	reg = d->virt_base + EINT0CON0_REG;



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 15/22] pinctrl: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (13 preceding siblings ...)
  2015-07-13 20:47 ` [patch 14/22] pinctrl/samsung: " Thomas Gleixner
@ 2015-07-13 20:47 ` Thomas Gleixner
  2015-08-31 21:28   ` Paul Gortmaker
  2015-07-13 20:47 ` [patch 16/22] pinctrl/amd: Prepare amd_gpio_irq_handler for irq argument removal Thomas Gleixner
                   ` (6 subsequent siblings)
  21 siblings, 1 reply; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:47 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu

[-- Attachment #1: pinctrl-Use-irq_desc_get_xxx-to-avoid-redundant-look.patch --]
[-- Type: text/plain, Size: 16404 bytes --]

From: Jiang Liu <jiang.liu@linux.intel.com>

Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
already have a pointer to corresponding irq_desc.

Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
 drivers/pinctrl/intel/pinctrl-cherryview.c    |    2 +-
 drivers/pinctrl/intel/pinctrl-intel.c         |    2 +-
 drivers/pinctrl/mediatek/pinctrl-mtk-common.c |    4 ++--
 drivers/pinctrl/nomadik/pinctrl-nomadik.c     |   12 +++++-------
 drivers/pinctrl/pinctrl-amd.c                 |    2 +-
 drivers/pinctrl/pinctrl-at91.c                |    2 +-
 drivers/pinctrl/pinctrl-coh901.c              |    4 ++--
 drivers/pinctrl/pinctrl-rockchip.c            |    4 ++--
 drivers/pinctrl/pinctrl-single.c              |    2 +-
 drivers/pinctrl/pinctrl-st.c                  |    6 +++---
 drivers/pinctrl/qcom/pinctrl-msm.c            |    2 +-
 drivers/pinctrl/samsung/pinctrl-exynos.c      |    8 ++++----
 drivers/pinctrl/samsung/pinctrl-s3c24xx.c     |   18 +++++++++---------
 drivers/pinctrl/samsung/pinctrl-s3c64xx.c     |   22 ++++++++++------------
 drivers/pinctrl/sirf/pinctrl-sirf.c           |    2 +-
 drivers/pinctrl/sunxi/pinctrl-sunxi.c         |    4 ++--
 16 files changed, 46 insertions(+), 50 deletions(-)

Index: tip/drivers/pinctrl/intel/pinctrl-cherryview.c
===================================================================
--- tip.orig/drivers/pinctrl/intel/pinctrl-cherryview.c
+++ tip/drivers/pinctrl/intel/pinctrl-cherryview.c
@@ -1412,7 +1412,7 @@ static void chv_gpio_irq_handler(unsigne
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct chv_pinctrl *pctrl = gpiochip_to_pinctrl(gc);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	unsigned long pending;
 	u32 intr_line;
 
Index: tip/drivers/pinctrl/intel/pinctrl-intel.c
===================================================================
--- tip.orig/drivers/pinctrl/intel/pinctrl-intel.c
+++ tip/drivers/pinctrl/intel/pinctrl-intel.c
@@ -840,7 +840,7 @@ static void intel_gpio_irq_handler(unsig
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct intel_pinctrl *pctrl = gpiochip_to_pinctrl(gc);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int i;
 
 	chained_irq_enter(chip, desc);
Index: tip/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
===================================================================
--- tip.orig/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
+++ tip/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
@@ -1118,8 +1118,8 @@ mtk_eint_debounce_process(struct mtk_pin
 
 static void mtk_eint_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct mtk_pinctrl *pctl = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct mtk_pinctrl *pctl = irq_desc_get_handler_data(desc);
 	unsigned int status, eint_num;
 	int offset, index, virq;
 	const struct mtk_eint_offsets *eint_offsets =
Index: tip/drivers/pinctrl/nomadik/pinctrl-nomadik.c
===================================================================
--- tip.orig/drivers/pinctrl/nomadik/pinctrl-nomadik.c
+++ tip/drivers/pinctrl/nomadik/pinctrl-nomadik.c
@@ -843,10 +843,9 @@ static void nmk_gpio_irq_shutdown(struct
 	clk_disable(nmk_chip->clk);
 }
 
-static void __nmk_gpio_irq_handler(unsigned int irq, struct irq_desc *desc,
-				   u32 status)
+static void __nmk_gpio_irq_handler(struct irq_desc *desc, u32 status)
 {
-	struct irq_chip *host_chip = irq_get_chip(irq);
+	struct irq_chip *host_chip = irq_desc_get_chip(desc);
 	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 
 	chained_irq_enter(host_chip, desc);
@@ -871,17 +870,16 @@ static void nmk_gpio_irq_handler(unsigne
 	status = readl(nmk_chip->addr + NMK_GPIO_IS);
 	clk_disable(nmk_chip->clk);
 
-	__nmk_gpio_irq_handler(irq, desc, status);
+	__nmk_gpio_irq_handler(desc, status);
 }
 
-static void nmk_gpio_latent_irq_handler(unsigned int irq,
-					   struct irq_desc *desc)
+static void nmk_gpio_latent_irq_handler(unsigned int irq, struct irq_desc *desc)
 {
 	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 	struct nmk_gpio_chip *nmk_chip = container_of(chip, struct nmk_gpio_chip, chip);
 	u32 status = nmk_chip->get_latent_status(nmk_chip->bank);
 
-	__nmk_gpio_irq_handler(irq, desc, status);
+	__nmk_gpio_irq_handler(desc, status);
 }
 
 /* I/O Functions */
Index: tip/drivers/pinctrl/pinctrl-amd.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-amd.c
+++ tip/drivers/pinctrl/pinctrl-amd.c
@@ -501,7 +501,7 @@ static void amd_gpio_irq_handler(unsigne
 	u64 reg64;
 	int handled = 0;
 	unsigned long flags;
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct amd_gpio *gpio_dev = to_amd_gpio(gc);
 
Index: tip/drivers/pinctrl/pinctrl-at91.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-at91.c
+++ tip/drivers/pinctrl/pinctrl-at91.c
@@ -1596,7 +1596,7 @@ static struct irq_chip gpio_irqchip = {
 
 static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct gpio_chip *gpio_chip = irq_desc_get_handler_data(desc);
 	struct at91_gpio_chip *at91_gpio = container_of(gpio_chip,
 					   struct at91_gpio_chip, chip);
Index: tip/drivers/pinctrl/pinctrl-coh901.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-coh901.c
+++ tip/drivers/pinctrl/pinctrl-coh901.c
@@ -521,8 +521,8 @@ static struct irq_chip u300_gpio_irqchip
 
 static void u300_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *parent_chip = irq_get_chip(irq);
-	struct gpio_chip *chip = irq_get_handler_data(irq);
+	struct irq_chip *parent_chip = irq_desc_get_chip(desc);
+	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 	struct u300_gpio *gpio = to_u300_gpio(chip);
 	struct u300_gpio_port *port = &gpio->ports[irq - chip->base];
 	int pinoffset = port->number << 3; /* get the right stride */
Index: tip/drivers/pinctrl/pinctrl-rockchip.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-rockchip.c
+++ tip/drivers/pinctrl/pinctrl-rockchip.c
@@ -1471,8 +1471,8 @@ static const struct gpio_chip rockchip_g
 
 static void rockchip_irq_demux(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct rockchip_pin_bank *bank = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct rockchip_pin_bank *bank = irq_desc_get_handler_data(desc);
 	u32 pend;
 
 	dev_dbg(bank->drvdata->dev, "got irq for bank %s\n", bank->name);
Index: tip/drivers/pinctrl/pinctrl-single.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-single.c
+++ tip/drivers/pinctrl/pinctrl-single.c
@@ -1684,7 +1684,7 @@ static void pcs_irq_chain_handler(unsign
 	struct pcs_soc_data *pcs_soc = irq_desc_get_handler_data(desc);
 	struct irq_chip *chip;
 
-	chip = irq_get_chip(irq);
+	chip = irq_desc_get_chip(desc);
 	chained_irq_enter(chip, desc);
 	pcs_irq_handle(pcs_soc);
 	/* REVISIT: export and add handle_bad_irq(irq, desc)? */
Index: tip/drivers/pinctrl/pinctrl-st.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-st.c
+++ tip/drivers/pinctrl/pinctrl-st.c
@@ -1463,7 +1463,7 @@ static void __gpio_irq_handler(struct st
 static void st_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
 	/* interrupt dedicated per bank */
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct st_gpio_bank *bank = gpio_chip_to_bank(gc);
 
@@ -1474,8 +1474,8 @@ static void st_gpio_irq_handler(unsigned
 
 static void st_gpio_irqmux_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct st_pinctrl *info = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct st_pinctrl *info = irq_desc_get_handler_data(desc);
 	unsigned long status;
 	int n;
 
Index: tip/drivers/pinctrl/qcom/pinctrl-msm.c
===================================================================
--- tip.orig/drivers/pinctrl/qcom/pinctrl-msm.c
+++ tip/drivers/pinctrl/qcom/pinctrl-msm.c
@@ -769,7 +769,7 @@ static void msm_gpio_irq_handler(unsigne
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	const struct msm_pingroup *g;
 	struct msm_pinctrl *pctrl = to_msm_pinctrl(gc);
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int irq_pin;
 	int handled = 0;
 	u32 val;
Index: tip/drivers/pinctrl/samsung/pinctrl-exynos.c
===================================================================
--- tip.orig/drivers/pinctrl/samsung/pinctrl-exynos.c
+++ tip/drivers/pinctrl/samsung/pinctrl-exynos.c
@@ -422,9 +422,9 @@ static const struct of_device_id exynos_
 /* interrupt handler for wakeup interrupts 0..15 */
 static void exynos_irq_eint0_15(unsigned int irq, struct irq_desc *desc)
 {
-	struct exynos_weint_data *eintd = irq_get_handler_data(irq);
+	struct exynos_weint_data *eintd = irq_desc_get_handler_data(desc);
 	struct samsung_pin_bank *bank = eintd->bank;
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int eint_irq;
 
 	chained_irq_enter(chip, desc);
@@ -454,8 +454,8 @@ static inline void exynos_irq_demux_eint
 /* interrupt handler for wakeup interrupt 16 */
 static void exynos_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct exynos_muxed_weint_data *eintd = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct exynos_muxed_weint_data *eintd = irq_desc_get_handler_data(desc);
 	struct samsung_pinctrl_drv_data *d = eintd->banks[0]->drvdata;
 	unsigned long pend;
 	unsigned long mask;
Index: tip/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
===================================================================
--- tip.orig/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
+++ tip/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
@@ -243,7 +243,7 @@ static struct irq_chip s3c2410_eint0_3_c
 static void s3c2410_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
 {
 	struct irq_data *data = irq_desc_get_irq_data(desc);
-	struct s3c24xx_eint_data *eint_data = irq_get_handler_data(irq);
+	struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
 	unsigned int virq;
 
 	/* the first 4 eints have a simple 1 to 1 mapping */
@@ -297,9 +297,9 @@ static struct irq_chip s3c2412_eint0_3_c
 
 static void s3c2412_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
 	struct irq_data *data = irq_desc_get_irq_data(desc);
-	struct s3c24xx_eint_data *eint_data = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_data_get_irq_chip(data);
 	unsigned int virq;
 
 	chained_irq_enter(chip, desc);
@@ -357,11 +357,11 @@ static struct irq_chip s3c24xx_eint_chip
 	.irq_set_type	= s3c24xx_eint_type,
 };
 
-static inline void s3c24xx_demux_eint(unsigned int irq, struct irq_desc *desc,
+static inline void s3c24xx_demux_eint(struct irq_desc *desc,
 				      u32 offset, u32 range)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct s3c24xx_eint_data *data = irq_get_handler_data(irq);
+	struct s3c24xx_eint_data *data = irq_desc_get_handler_data(desc);
+	struct irq_chip *chip = irq_desc_get_irq_chip(desc);
 	struct samsung_pinctrl_drv_data *d = data->drvdata;
 	unsigned int pend, mask;
 
@@ -374,7 +374,7 @@ static inline void s3c24xx_demux_eint(un
 	pend &= range;
 
 	while (pend) {
-		unsigned int virq;
+		unsigned int virq, irq;
 
 		irq = __ffs(pend);
 		pend &= ~(1 << irq);
@@ -390,12 +390,12 @@ static inline void s3c24xx_demux_eint(un
 
 static void s3c24xx_demux_eint4_7(unsigned int irq, struct irq_desc *desc)
 {
-	s3c24xx_demux_eint(irq, desc, 0, 0xf0);
+	s3c24xx_demux_eint(desc, 0, 0xf0);
 }
 
 static void s3c24xx_demux_eint8_23(unsigned int irq, struct irq_desc *desc)
 {
-	s3c24xx_demux_eint(irq, desc, 8, 0xffff00);
+	s3c24xx_demux_eint(desc, 8, 0xffff00);
 }
 
 static irq_flow_handler_t s3c2410_eint_handlers[NUM_EINT_IRQ] = {
Index: tip/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
===================================================================
--- tip.orig/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
+++ tip/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
@@ -410,8 +410,8 @@ static const struct irq_domain_ops s3c64
 
 static void s3c64xx_eint_gpio_irq(unsigned int irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct s3c64xx_eint_gpio_data *data = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct s3c64xx_eint_gpio_data *data = irq_desc_get_handler_data(desc);
 	struct samsung_pinctrl_drv_data *drvdata = data->drvdata;
 
 	chained_irq_enter(chip, desc);
@@ -599,11 +599,10 @@ static struct irq_chip s3c64xx_eint0_irq
 	.irq_set_type	= s3c64xx_eint0_irq_set_type,
 };
 
-static inline void s3c64xx_irq_demux_eint(unsigned int irq,
-					struct irq_desc *desc, u32 range)
+static inline void s3c64xx_irq_demux_eint(struct irq_desc *desc, u32 range)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct s3c64xx_eint0_data *data = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct s3c64xx_eint0_data *data = irq_desc_get_handler_data(desc);
 	struct samsung_pinctrl_drv_data *drvdata = data->drvdata;
 	unsigned int pend, mask;
 
@@ -616,11 +615,10 @@ static inline void s3c64xx_irq_demux_ein
 	pend &= range;
 
 	while (pend) {
-		unsigned int virq;
+		unsigned int virq, irq;
 
 		irq = fls(pend) - 1;
 		pend &= ~(1 << irq);
-
 		virq = irq_linear_revmap(data->domains[irq], data->pins[irq]);
 		/*
 		 * Something must be really wrong if an unmapped EINT
@@ -636,22 +634,22 @@ static inline void s3c64xx_irq_demux_ein
 
 static void s3c64xx_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
 {
-	s3c64xx_irq_demux_eint(irq, desc, 0xf);
+	s3c64xx_irq_demux_eint(desc, 0xf);
 }
 
 static void s3c64xx_demux_eint4_11(unsigned int irq, struct irq_desc *desc)
 {
-	s3c64xx_irq_demux_eint(irq, desc, 0xff0);
+	s3c64xx_irq_demux_eint(desc, 0xff0);
 }
 
 static void s3c64xx_demux_eint12_19(unsigned int irq, struct irq_desc *desc)
 {
-	s3c64xx_irq_demux_eint(irq, desc, 0xff000);
+	s3c64xx_irq_demux_eint(desc, 0xff000);
 }
 
 static void s3c64xx_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
 {
-	s3c64xx_irq_demux_eint(irq, desc, 0xff00000);
+	s3c64xx_irq_demux_eint(desc, 0xff00000);
 }
 
 static irq_flow_handler_t s3c64xx_eint0_handlers[NUM_EINT0_IRQ] = {
Index: tip/drivers/pinctrl/sirf/pinctrl-sirf.c
===================================================================
--- tip.orig/drivers/pinctrl/sirf/pinctrl-sirf.c
+++ tip/drivers/pinctrl/sirf/pinctrl-sirf.c
@@ -552,7 +552,7 @@ static void sirfsoc_gpio_handle_irq(unsi
 	struct sirfsoc_gpio_bank *bank;
 	u32 status, ctrl;
 	int idx = 0;
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 	int i;
 
 	for (i = 0; i < SIRFSOC_GPIO_NO_OF_BANKS; i++) {
Index: tip/drivers/pinctrl/sunxi/pinctrl-sunxi.c
===================================================================
--- tip.orig/drivers/pinctrl/sunxi/pinctrl-sunxi.c
+++ tip/drivers/pinctrl/sunxi/pinctrl-sunxi.c
@@ -711,8 +711,8 @@ static struct irq_chip sunxi_pinctrl_lev
 
 static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct irq_chip *chip = irq_get_chip(irq);
-	struct sunxi_pinctrl *pctl = irq_get_handler_data(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
+	struct sunxi_pinctrl *pctl = irq_desc_get_handler_data(desc);
 	unsigned long bank, reg, val;
 
 	for (bank = 0; bank < pctl->desc->irq_banks; bank++)



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 16/22] pinctrl/amd: Prepare amd_gpio_irq_handler for irq argument removal
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (14 preceding siblings ...)
  2015-07-13 20:47 ` [patch 15/22] pinctrl: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc Thomas Gleixner
@ 2015-07-13 20:47 ` Thomas Gleixner
  2015-07-13 20:48 ` [patch 17/22] pinctrl/coh901: Prepare u300_gpio_irq_handler " Thomas Gleixner
                   ` (5 subsequent siblings)
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:47 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Julia Lawall

[-- Attachment #1: pinctrl-amd-prepare-amd_gpio_irq_handler-for-irq-argument-removal.patch --]
[-- Type: text/plain, Size: 1087 bytes --]

The irq argument of most interrupt flow handlers is unused or merily
used instead of a local variable. The handlers which need the irq
argument can retrieve the irq number from the irq descriptor.

Search and update was done with coccinelle and the invaluable help of
Julia Lawall.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
---
 drivers/pinctrl/pinctrl-amd.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Index: tip/drivers/pinctrl/pinctrl-amd.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-amd.c
+++ tip/drivers/pinctrl/pinctrl-amd.c
@@ -492,8 +492,9 @@ static struct irq_chip amd_gpio_irqchip
 	.irq_set_type = amd_gpio_irq_set_type,
 };
 
-static void amd_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void amd_gpio_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	u32 i;
 	u32 off;
 	u32 reg;



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 17/22] pinctrl/coh901: Prepare u300_gpio_irq_handler for irq argument removal
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (15 preceding siblings ...)
  2015-07-13 20:47 ` [patch 16/22] pinctrl/amd: Prepare amd_gpio_irq_handler for irq argument removal Thomas Gleixner
@ 2015-07-13 20:48 ` Thomas Gleixner
  2015-07-13 20:48 ` [patch 18/22] pinctrl/pistachio: Prepare pistachio_gpio_irq_handler " Thomas Gleixner
                   ` (4 subsequent siblings)
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:48 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Julia Lawall

[-- Attachment #1: pinctrl-coh901-prepare-u300_gpio_irq_handler-for-irq-argument-removal.patch --]
[-- Type: text/plain, Size: 1257 bytes --]

The irq argument of most interrupt flow handlers is unused or merily
used instead of a local variable. The handlers which need the irq
argument can retrieve the irq number from the irq descriptor.

Search and update was done with coccinelle and the invaluable help of
Julia Lawall.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/pinctrl-coh901.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Index: tip/drivers/pinctrl/pinctrl-coh901.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-coh901.c
+++ tip/drivers/pinctrl/pinctrl-coh901.c
@@ -519,8 +519,9 @@ static struct irq_chip u300_gpio_irqchip
 	.irq_set_type		= u300_gpio_irq_type,
 };
 
-static void u300_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
+static void u300_gpio_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *parent_chip = irq_desc_get_chip(desc);
 	struct gpio_chip *chip = irq_desc_get_handler_data(desc);
 	struct u300_gpio *gpio = to_u300_gpio(chip);



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 18/22] pinctrl/pistachio: Prepare pistachio_gpio_irq_handler for irq argument removal
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (16 preceding siblings ...)
  2015-07-13 20:48 ` [patch 17/22] pinctrl/coh901: Prepare u300_gpio_irq_handler " Thomas Gleixner
@ 2015-07-13 20:48 ` Thomas Gleixner
  2015-07-13 20:48 ` [patch 19/22] pinctrl/rockchip: Prepare rockchip_irq_demux " Thomas Gleixner
                   ` (3 subsequent siblings)
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:48 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Julia Lawall

[-- Attachment #1: pinctrl-pistachio-prepare-pistachio_gpio_irq_handler-for-irq-argument-removal.patch --]
[-- Type: text/plain, Size: 1346 bytes --]

The irq argument of most interrupt flow handlers is unused or merily
used instead of a local variable. The handlers which need the irq
argument can retrieve the irq number from the irq descriptor.

Search and update was done with coccinelle and the invaluable help of
Julia Lawall.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/pinctrl-pistachio.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Index: tip/drivers/pinctrl/pinctrl-pistachio.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-pistachio.c
+++ tip/drivers/pinctrl/pinctrl-pistachio.c
@@ -1310,9 +1310,11 @@ static int pistachio_gpio_irq_set_type(s
 	return 0;
 }
 
-static void pistachio_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void pistachio_gpio_irq_handler(unsigned int __irq,
+				       struct irq_desc *desc)
 {
-	struct gpio_chip *gc = irq_get_handler_data(irq);
+	unsigned int irq = irq_desc_get_irq(desc);
+	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct pistachio_gpio_bank *bank = gc_to_bank(gc);
 	struct irq_chip *chip = irq_get_chip(irq);
 	unsigned long pending;



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 19/22] pinctrl/rockchip: Prepare rockchip_irq_demux for irq argument removal
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (17 preceding siblings ...)
  2015-07-13 20:48 ` [patch 18/22] pinctrl/pistachio: Prepare pistachio_gpio_irq_handler " Thomas Gleixner
@ 2015-07-13 20:48 ` Thomas Gleixner
  2015-07-13 20:48 ` [patch 20/22] pinctrl/qcom/msm: Prepare msm_gpio_irq_handler " Thomas Gleixner
                   ` (2 subsequent siblings)
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:48 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Julia Lawall

[-- Attachment #1: pinctrl-rockchip-prepare-rockchip-irq-demux-for-irq-argument-removal.patch --]
[-- Type: text/plain, Size: 1399 bytes --]

The irq argument of most interrupt flow handlers is unused or merily
used instead of a local variable. The handlers which need the irq
argument can retrieve the irq number from the irq descriptor.

Search and update was done with coccinelle and the invaluable help of
Julia Lawall.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/pinctrl-rockchip.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Index: tip/drivers/pinctrl/pinctrl-rockchip.c
===================================================================
--- tip.orig/drivers/pinctrl/pinctrl-rockchip.c
+++ tip/drivers/pinctrl/pinctrl-rockchip.c
@@ -1469,7 +1469,7 @@ static const struct gpio_chip rockchip_g
  * Interrupt handling
  */
 
-static void rockchip_irq_demux(unsigned int irq, struct irq_desc *desc)
+static void rockchip_irq_demux(unsigned int __irq, struct irq_desc *desc)
 {
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct rockchip_pin_bank *bank = irq_desc_get_handler_data(desc);
@@ -1482,7 +1482,7 @@ static void rockchip_irq_demux(unsigned
 	pend = readl_relaxed(bank->reg_base + GPIO_INT_STATUS);
 
 	while (pend) {
-		unsigned int virq;
+		unsigned int irq, virq;
 
 		irq = __ffs(pend);
 		pend &= ~BIT(irq);



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 20/22] pinctrl/qcom/msm: Prepare msm_gpio_irq_handler for irq argument removal
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (18 preceding siblings ...)
  2015-07-13 20:48 ` [patch 19/22] pinctrl/rockchip: Prepare rockchip_irq_demux " Thomas Gleixner
@ 2015-07-13 20:48 ` Thomas Gleixner
  2015-07-13 20:48 ` [patch 21/22] pinctrl/sirf: Prepare-x-gpio-handle-irq-for-irq-argument-removal.patch Thomas Gleixner
  2015-07-13 20:48 ` [patch 22/22] pinctrl/sunxi: Prepare sunxi_pinctrl_irq_handler for irq argument removal Thomas Gleixner
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:48 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Julia Lawall

[-- Attachment #1: pinctrl-qcom-msm-prepare-msm_gpio_irq_handler-for-irq-argument-removal.patch --]
[-- Type: text/plain, Size: 1250 bytes --]

The irq argument of most interrupt flow handlers is unused or merily
used instead of a local variable. The handlers which need the irq
argument can retrieve the irq number from the irq descriptor.

Search and update was done with coccinelle and the invaluable help of
Julia Lawall.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/qcom/pinctrl-msm.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Index: tip/drivers/pinctrl/qcom/pinctrl-msm.c
===================================================================
--- tip.orig/drivers/pinctrl/qcom/pinctrl-msm.c
+++ tip/drivers/pinctrl/qcom/pinctrl-msm.c
@@ -764,8 +764,9 @@ static struct irq_chip msm_gpio_irq_chip
 	.irq_set_wake   = msm_gpio_irq_set_wake,
 };
 
-static void msm_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
+static void msm_gpio_irq_handler(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	const struct msm_pingroup *g;
 	struct msm_pinctrl *pctrl = to_msm_pinctrl(gc);



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 21/22] pinctrl/sirf: Prepare-x-gpio-handle-irq-for-irq-argument-removal.patch
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (19 preceding siblings ...)
  2015-07-13 20:48 ` [patch 20/22] pinctrl/qcom/msm: Prepare msm_gpio_irq_handler " Thomas Gleixner
@ 2015-07-13 20:48 ` Thomas Gleixner
  2015-07-13 20:48 ` [patch 22/22] pinctrl/sunxi: Prepare sunxi_pinctrl_irq_handler for irq argument removal Thomas Gleixner
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:48 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Julia Lawall

[-- Attachment #1: pinctrl-sirf-prepare-x-gpio-handle-irq-for-irq-argument-removal.patch --]
[-- Type: text/plain, Size: 2176 bytes --]

The irq argument of most interrupt flow handlers is unused or merily
used instead of a local variable. The handlers which need the irq
argument can retrieve the irq number from the irq descriptor.

Search and update was done with coccinelle and the invaluable help of
Julia Lawall.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/sirf/pinctrl-atlas7.c |    4 ++--
 drivers/pinctrl/sirf/pinctrl-sirf.c   |    3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)

Index: tip/drivers/pinctrl/sirf/pinctrl-atlas7.c
===================================================================
--- tip.orig/drivers/pinctrl/sirf/pinctrl-atlas7.c
+++ tip/drivers/pinctrl/sirf/pinctrl-atlas7.c
@@ -4286,14 +4286,14 @@ static struct irq_chip atlas7_gpio_irq_c
 	.irq_set_type = atlas7_gpio_irq_type,
 };
 
-static void atlas7_gpio_handle_irq(unsigned int irq, struct irq_desc *desc)
+static void atlas7_gpio_handle_irq(unsigned int __irq, struct irq_desc *desc)
 {
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct atlas7_gpio_chip *a7gc = to_atlas7_gpio(gc);
 	struct atlas7_gpio_bank *bank = NULL;
 	u32 status, ctrl;
 	int pin_in_bank = 0, idx;
-	struct irq_chip *chip = irq_get_chip(irq);
+	struct irq_chip *chip = irq_desc_get_chip(desc);
 
 	for (idx = 0; idx < a7gc->nbank; idx++) {
 		bank = &a7gc->banks[idx];
Index: tip/drivers/pinctrl/sirf/pinctrl-sirf.c
===================================================================
--- tip.orig/drivers/pinctrl/sirf/pinctrl-sirf.c
+++ tip/drivers/pinctrl/sirf/pinctrl-sirf.c
@@ -545,8 +545,9 @@ static struct irq_chip sirfsoc_irq_chip
 	.irq_set_type = sirfsoc_gpio_irq_type,
 };
 
-static void sirfsoc_gpio_handle_irq(unsigned int irq, struct irq_desc *desc)
+static void sirfsoc_gpio_handle_irq(unsigned int __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct gpio_chip *gc = irq_desc_get_handler_data(desc);
 	struct sirfsoc_gpio_chip *sgpio = to_sirfsoc_gpio(gc);
 	struct sirfsoc_gpio_bank *bank;



^ permalink raw reply	[flat|nested] 28+ messages in thread

* [patch 22/22] pinctrl/sunxi: Prepare sunxi_pinctrl_irq_handler for irq argument removal
  2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
                   ` (20 preceding siblings ...)
  2015-07-13 20:48 ` [patch 21/22] pinctrl/sirf: Prepare-x-gpio-handle-irq-for-irq-argument-removal.patch Thomas Gleixner
@ 2015-07-13 20:48 ` Thomas Gleixner
  21 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 20:48 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu, Julia Lawall

[-- Attachment #1: pinctrl-sunxi-prepare-sunxi_pinctrl_irq_handler-for-irq-argument-removal.patch --]
[-- Type: text/plain, Size: 1258 bytes --]

The irq argument of most interrupt flow handlers is unused or merily
used instead of a local variable. The handlers which need the irq
argument can retrieve the irq number from the irq descriptor.

Search and update was done with coccinelle and the invaluable help of
Julia Lawall.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Julia Lawall <Julia.Lawall@lip6.fr>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/sunxi/pinctrl-sunxi.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Index: tip/drivers/pinctrl/sunxi/pinctrl-sunxi.c
===================================================================
--- tip.orig/drivers/pinctrl/sunxi/pinctrl-sunxi.c
+++ tip/drivers/pinctrl/sunxi/pinctrl-sunxi.c
@@ -709,8 +709,9 @@ static struct irq_chip sunxi_pinctrl_lev
 			  IRQCHIP_EOI_IF_HANDLED,
 };
 
-static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc)
+static void sunxi_pinctrl_irq_handler(unsigned __irq, struct irq_desc *desc)
 {
+	unsigned int irq = irq_desc_get_irq(desc);
 	struct irq_chip *chip = irq_desc_get_chip(desc);
 	struct sunxi_pinctrl *pctl = irq_desc_get_handler_data(desc);
 	unsigned long bank, reg, val;



^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [patch 14/22] pinctrl/samsung: Use irq_set_handler_locked()
  2015-07-13 20:47 ` [patch 14/22] pinctrl/samsung: " Thomas Gleixner
@ 2015-07-13 21:09   ` Thomas Gleixner
  0 siblings, 0 replies; 28+ messages in thread
From: Thomas Gleixner @ 2015-07-13 21:09 UTC (permalink / raw)
  To: LKML; +Cc: Linus Walleij, linux-gpio, Jiang Liu

On Mon, 13 Jul 2015, Thomas Gleixner wrote:
> -	s3c24xx_eint_set_handler(data->irq, type);
> +x

Hrpmf. Fatfingered it after importing to git. The git tree is
correct. Proper patch below.

Thanks,

	tglx
---
From: Thomas Gleixner <tglx@linutronix.de>
Date: Tue, 23 Jun 2015 15:52:57 +0200
Subject: pinctrl/samsung: Use irq_set_handler_locked()

Use irq_set_handler_locked() as it avoids a redundant lookup of the
irq descriptor.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: linux-gpio@vger.kernel.org
---
 drivers/pinctrl/samsung/pinctrl-s3c24xx.c |    8 ++++----
 drivers/pinctrl/samsung/pinctrl-s3c64xx.c |   10 +++++-----
 2 files changed, 9 insertions(+), 9 deletions(-)

Index: tip/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
===================================================================
--- tip.orig/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
+++ tip/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
@@ -131,13 +131,13 @@ static int s3c24xx_eint_get_trigger(unsi
 	}
 }
 
-static void s3c24xx_eint_set_handler(unsigned int irq, unsigned int type)
+static void s3c24xx_eint_set_handler(struct irq_data *d, unsigned int type)
 {
 	/* Edge- and level-triggered interrupts need different handlers */
 	if (type & IRQ_TYPE_EDGE_BOTH)
-		__irq_set_handler_locked(irq, handle_edge_irq);
+		irq_set_handler_locked(d, handle_edge_irq);
 	else
-		__irq_set_handler_locked(irq, handle_level_irq);
+		irq_set_handler_locked(d, handle_level_irq);
 }
 
 static void s3c24xx_eint_set_function(struct samsung_pinctrl_drv_data *d,
@@ -181,7 +181,7 @@ static int s3c24xx_eint_type(struct irq_
 		return -EINVAL;
 	}
 
-	s3c24xx_eint_set_handler(data->irq, type);
+	s3c24xx_eint_set_handler(data, type);
 
 	/* Set up interrupt trigger */
 	reg = d->virt_base + EINT_REG(index);
Index: tip/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
===================================================================
--- tip.orig/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
+++ tip/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
@@ -260,13 +260,13 @@ static int s3c64xx_irq_get_trigger(unsig
 	return trigger;
 }
 
-static void s3c64xx_irq_set_handler(unsigned int irq, unsigned int type)
+static void s3c64xx_irq_set_handler(struct irq_data *d, unsigned int type)
 {
 	/* Edge- and level-triggered interrupts need different handlers */
 	if (type & IRQ_TYPE_EDGE_BOTH)
-		__irq_set_handler_locked(irq, handle_edge_irq);
+		irq_set_handler_locked(d, handle_edge_irq);
 	else
-		__irq_set_handler_locked(irq, handle_level_irq);
+		irq_set_handler_locked(d, handle_level_irq);
 }
 
 static void s3c64xx_irq_set_function(struct samsung_pinctrl_drv_data *d,
@@ -356,7 +356,7 @@ static int s3c64xx_gpio_irq_set_type(str
 		return -EINVAL;
 	}
 
-	s3c64xx_irq_set_handler(irqd->irq, type);
+	s3c64xx_irq_set_handler(irqd, type);
 
 	/* Set up interrupt trigger */
 	reg = d->virt_base + EINTCON_REG(bank->eint_offset);
@@ -567,7 +567,7 @@ static int s3c64xx_eint0_irq_set_type(st
 		return -EINVAL;
 	}
 
-	s3c64xx_irq_set_handler(irqd->irq, type);
+	s3c64xx_irq_set_handler(irqd, type);
 
 	/* Set up interrupt trigger */
 	reg = d->virt_base + EINT0CON0_REG;


^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [patch 15/22] pinctrl: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-07-13 20:47 ` [patch 15/22] pinctrl: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc Thomas Gleixner
@ 2015-08-31 21:28   ` Paul Gortmaker
  2015-09-08 14:00     ` Linus Walleij
  0 siblings, 1 reply; 28+ messages in thread
From: Paul Gortmaker @ 2015-08-31 21:28 UTC (permalink / raw)
  To: Thomas Gleixner, Linus Walleij; +Cc: LKML, linux-gpio, Jiang Liu

On Mon, Jul 13, 2015 at 4:47 PM, Thomas Gleixner <tglx@linutronix.de> wrote:
> From: Jiang Liu <jiang.liu@linux.intel.com>
>
> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
> already have a pointer to corresponding irq_desc.

Hi Linus,

It seems that linux-next has this copy of the patch as 5663bb27dec1, which
has a stray irq_desc_get_irq_chip in s3c24xx ; (2nd instance of "irq" is
bogus looking.)   I first assumed it was from tglx since it did not have any
additional SOB lines, but on further investigation I traced it back to sfr's
merge of pinctrl/for-next.

Anyway, it doesn't compile with the extra irq in the name like that, and
that SHA isn't in tip, so it appears to be manually applied to pinctrl vs
merged in.

Paul.
--


>
> Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: linux-gpio@vger.kernel.org
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> ---
>  drivers/pinctrl/intel/pinctrl-cherryview.c    |    2 +-
>  drivers/pinctrl/intel/pinctrl-intel.c         |    2 +-
>  drivers/pinctrl/mediatek/pinctrl-mtk-common.c |    4 ++--
>  drivers/pinctrl/nomadik/pinctrl-nomadik.c     |   12 +++++-------
>  drivers/pinctrl/pinctrl-amd.c                 |    2 +-
>  drivers/pinctrl/pinctrl-at91.c                |    2 +-
>  drivers/pinctrl/pinctrl-coh901.c              |    4 ++--
>  drivers/pinctrl/pinctrl-rockchip.c            |    4 ++--
>  drivers/pinctrl/pinctrl-single.c              |    2 +-
>  drivers/pinctrl/pinctrl-st.c                  |    6 +++---
>  drivers/pinctrl/qcom/pinctrl-msm.c            |    2 +-
>  drivers/pinctrl/samsung/pinctrl-exynos.c      |    8 ++++----
>  drivers/pinctrl/samsung/pinctrl-s3c24xx.c     |   18 +++++++++---------
>  drivers/pinctrl/samsung/pinctrl-s3c64xx.c     |   22 ++++++++++------------
>  drivers/pinctrl/sirf/pinctrl-sirf.c           |    2 +-
>  drivers/pinctrl/sunxi/pinctrl-sunxi.c         |    4 ++--
>  16 files changed, 46 insertions(+), 50 deletions(-)
>
> Index: tip/drivers/pinctrl/intel/pinctrl-cherryview.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/intel/pinctrl-cherryview.c
> +++ tip/drivers/pinctrl/intel/pinctrl-cherryview.c
> @@ -1412,7 +1412,7 @@ static void chv_gpio_irq_handler(unsigne
>  {
>         struct gpio_chip *gc = irq_desc_get_handler_data(desc);
>         struct chv_pinctrl *pctrl = gpiochip_to_pinctrl(gc);
> -       struct irq_chip *chip = irq_get_chip(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
>         unsigned long pending;
>         u32 intr_line;
>
> Index: tip/drivers/pinctrl/intel/pinctrl-intel.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/intel/pinctrl-intel.c
> +++ tip/drivers/pinctrl/intel/pinctrl-intel.c
> @@ -840,7 +840,7 @@ static void intel_gpio_irq_handler(unsig
>  {
>         struct gpio_chip *gc = irq_desc_get_handler_data(desc);
>         struct intel_pinctrl *pctrl = gpiochip_to_pinctrl(gc);
> -       struct irq_chip *chip = irq_get_chip(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
>         int i;
>
>         chained_irq_enter(chip, desc);
> Index: tip/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> +++ tip/drivers/pinctrl/mediatek/pinctrl-mtk-common.c
> @@ -1118,8 +1118,8 @@ mtk_eint_debounce_process(struct mtk_pin
>
>  static void mtk_eint_irq_handler(unsigned irq, struct irq_desc *desc)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> -       struct mtk_pinctrl *pctl = irq_get_handler_data(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
> +       struct mtk_pinctrl *pctl = irq_desc_get_handler_data(desc);
>         unsigned int status, eint_num;
>         int offset, index, virq;
>         const struct mtk_eint_offsets *eint_offsets =
> Index: tip/drivers/pinctrl/nomadik/pinctrl-nomadik.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/nomadik/pinctrl-nomadik.c
> +++ tip/drivers/pinctrl/nomadik/pinctrl-nomadik.c
> @@ -843,10 +843,9 @@ static void nmk_gpio_irq_shutdown(struct
>         clk_disable(nmk_chip->clk);
>  }
>
> -static void __nmk_gpio_irq_handler(unsigned int irq, struct irq_desc *desc,
> -                                  u32 status)
> +static void __nmk_gpio_irq_handler(struct irq_desc *desc, u32 status)
>  {
> -       struct irq_chip *host_chip = irq_get_chip(irq);
> +       struct irq_chip *host_chip = irq_desc_get_chip(desc);
>         struct gpio_chip *chip = irq_desc_get_handler_data(desc);
>
>         chained_irq_enter(host_chip, desc);
> @@ -871,17 +870,16 @@ static void nmk_gpio_irq_handler(unsigne
>         status = readl(nmk_chip->addr + NMK_GPIO_IS);
>         clk_disable(nmk_chip->clk);
>
> -       __nmk_gpio_irq_handler(irq, desc, status);
> +       __nmk_gpio_irq_handler(desc, status);
>  }
>
> -static void nmk_gpio_latent_irq_handler(unsigned int irq,
> -                                          struct irq_desc *desc)
> +static void nmk_gpio_latent_irq_handler(unsigned int irq, struct irq_desc *desc)
>  {
>         struct gpio_chip *chip = irq_desc_get_handler_data(desc);
>         struct nmk_gpio_chip *nmk_chip = container_of(chip, struct nmk_gpio_chip, chip);
>         u32 status = nmk_chip->get_latent_status(nmk_chip->bank);
>
> -       __nmk_gpio_irq_handler(irq, desc, status);
> +       __nmk_gpio_irq_handler(desc, status);
>  }
>
>  /* I/O Functions */
> Index: tip/drivers/pinctrl/pinctrl-amd.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/pinctrl-amd.c
> +++ tip/drivers/pinctrl/pinctrl-amd.c
> @@ -501,7 +501,7 @@ static void amd_gpio_irq_handler(unsigne
>         u64 reg64;
>         int handled = 0;
>         unsigned long flags;
> -       struct irq_chip *chip = irq_get_chip(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
>         struct gpio_chip *gc = irq_desc_get_handler_data(desc);
>         struct amd_gpio *gpio_dev = to_amd_gpio(gc);
>
> Index: tip/drivers/pinctrl/pinctrl-at91.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/pinctrl-at91.c
> +++ tip/drivers/pinctrl/pinctrl-at91.c
> @@ -1596,7 +1596,7 @@ static struct irq_chip gpio_irqchip = {
>
>  static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
>         struct gpio_chip *gpio_chip = irq_desc_get_handler_data(desc);
>         struct at91_gpio_chip *at91_gpio = container_of(gpio_chip,
>                                            struct at91_gpio_chip, chip);
> Index: tip/drivers/pinctrl/pinctrl-coh901.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/pinctrl-coh901.c
> +++ tip/drivers/pinctrl/pinctrl-coh901.c
> @@ -521,8 +521,8 @@ static struct irq_chip u300_gpio_irqchip
>
>  static void u300_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
>  {
> -       struct irq_chip *parent_chip = irq_get_chip(irq);
> -       struct gpio_chip *chip = irq_get_handler_data(irq);
> +       struct irq_chip *parent_chip = irq_desc_get_chip(desc);
> +       struct gpio_chip *chip = irq_desc_get_handler_data(desc);
>         struct u300_gpio *gpio = to_u300_gpio(chip);
>         struct u300_gpio_port *port = &gpio->ports[irq - chip->base];
>         int pinoffset = port->number << 3; /* get the right stride */
> Index: tip/drivers/pinctrl/pinctrl-rockchip.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/pinctrl-rockchip.c
> +++ tip/drivers/pinctrl/pinctrl-rockchip.c
> @@ -1471,8 +1471,8 @@ static const struct gpio_chip rockchip_g
>
>  static void rockchip_irq_demux(unsigned int irq, struct irq_desc *desc)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> -       struct rockchip_pin_bank *bank = irq_get_handler_data(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
> +       struct rockchip_pin_bank *bank = irq_desc_get_handler_data(desc);
>         u32 pend;
>
>         dev_dbg(bank->drvdata->dev, "got irq for bank %s\n", bank->name);
> Index: tip/drivers/pinctrl/pinctrl-single.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/pinctrl-single.c
> +++ tip/drivers/pinctrl/pinctrl-single.c
> @@ -1684,7 +1684,7 @@ static void pcs_irq_chain_handler(unsign
>         struct pcs_soc_data *pcs_soc = irq_desc_get_handler_data(desc);
>         struct irq_chip *chip;
>
> -       chip = irq_get_chip(irq);
> +       chip = irq_desc_get_chip(desc);
>         chained_irq_enter(chip, desc);
>         pcs_irq_handle(pcs_soc);
>         /* REVISIT: export and add handle_bad_irq(irq, desc)? */
> Index: tip/drivers/pinctrl/pinctrl-st.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/pinctrl-st.c
> +++ tip/drivers/pinctrl/pinctrl-st.c
> @@ -1463,7 +1463,7 @@ static void __gpio_irq_handler(struct st
>  static void st_gpio_irq_handler(unsigned irq, struct irq_desc *desc)
>  {
>         /* interrupt dedicated per bank */
> -       struct irq_chip *chip = irq_get_chip(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
>         struct gpio_chip *gc = irq_desc_get_handler_data(desc);
>         struct st_gpio_bank *bank = gpio_chip_to_bank(gc);
>
> @@ -1474,8 +1474,8 @@ static void st_gpio_irq_handler(unsigned
>
>  static void st_gpio_irqmux_handler(unsigned irq, struct irq_desc *desc)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> -       struct st_pinctrl *info = irq_get_handler_data(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
> +       struct st_pinctrl *info = irq_desc_get_handler_data(desc);
>         unsigned long status;
>         int n;
>
> Index: tip/drivers/pinctrl/qcom/pinctrl-msm.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/qcom/pinctrl-msm.c
> +++ tip/drivers/pinctrl/qcom/pinctrl-msm.c
> @@ -769,7 +769,7 @@ static void msm_gpio_irq_handler(unsigne
>         struct gpio_chip *gc = irq_desc_get_handler_data(desc);
>         const struct msm_pingroup *g;
>         struct msm_pinctrl *pctrl = to_msm_pinctrl(gc);
> -       struct irq_chip *chip = irq_get_chip(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
>         int irq_pin;
>         int handled = 0;
>         u32 val;
> Index: tip/drivers/pinctrl/samsung/pinctrl-exynos.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/samsung/pinctrl-exynos.c
> +++ tip/drivers/pinctrl/samsung/pinctrl-exynos.c
> @@ -422,9 +422,9 @@ static const struct of_device_id exynos_
>  /* interrupt handler for wakeup interrupts 0..15 */
>  static void exynos_irq_eint0_15(unsigned int irq, struct irq_desc *desc)
>  {
> -       struct exynos_weint_data *eintd = irq_get_handler_data(irq);
> +       struct exynos_weint_data *eintd = irq_desc_get_handler_data(desc);
>         struct samsung_pin_bank *bank = eintd->bank;
> -       struct irq_chip *chip = irq_get_chip(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
>         int eint_irq;
>
>         chained_irq_enter(chip, desc);
> @@ -454,8 +454,8 @@ static inline void exynos_irq_demux_eint
>  /* interrupt handler for wakeup interrupt 16 */
>  static void exynos_irq_demux_eint16_31(unsigned int irq, struct irq_desc *desc)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> -       struct exynos_muxed_weint_data *eintd = irq_get_handler_data(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
> +       struct exynos_muxed_weint_data *eintd = irq_desc_get_handler_data(desc);
>         struct samsung_pinctrl_drv_data *d = eintd->banks[0]->drvdata;
>         unsigned long pend;
>         unsigned long mask;
> Index: tip/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
> +++ tip/drivers/pinctrl/samsung/pinctrl-s3c24xx.c
> @@ -243,7 +243,7 @@ static struct irq_chip s3c2410_eint0_3_c
>  static void s3c2410_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
>  {
>         struct irq_data *data = irq_desc_get_irq_data(desc);
> -       struct s3c24xx_eint_data *eint_data = irq_get_handler_data(irq);
> +       struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
>         unsigned int virq;
>
>         /* the first 4 eints have a simple 1 to 1 mapping */
> @@ -297,9 +297,9 @@ static struct irq_chip s3c2412_eint0_3_c
>
>  static void s3c2412_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> +       struct s3c24xx_eint_data *eint_data = irq_desc_get_handler_data(desc);
>         struct irq_data *data = irq_desc_get_irq_data(desc);
> -       struct s3c24xx_eint_data *eint_data = irq_get_handler_data(irq);
> +       struct irq_chip *chip = irq_data_get_irq_chip(data);
>         unsigned int virq;
>
>         chained_irq_enter(chip, desc);
> @@ -357,11 +357,11 @@ static struct irq_chip s3c24xx_eint_chip
>         .irq_set_type   = s3c24xx_eint_type,
>  };
>
> -static inline void s3c24xx_demux_eint(unsigned int irq, struct irq_desc *desc,
> +static inline void s3c24xx_demux_eint(struct irq_desc *desc,
>                                       u32 offset, u32 range)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> -       struct s3c24xx_eint_data *data = irq_get_handler_data(irq);
> +       struct s3c24xx_eint_data *data = irq_desc_get_handler_data(desc);
> +       struct irq_chip *chip = irq_desc_get_irq_chip(desc);
>         struct samsung_pinctrl_drv_data *d = data->drvdata;
>         unsigned int pend, mask;
>
> @@ -374,7 +374,7 @@ static inline void s3c24xx_demux_eint(un
>         pend &= range;
>
>         while (pend) {
> -               unsigned int virq;
> +               unsigned int virq, irq;
>
>                 irq = __ffs(pend);
>                 pend &= ~(1 << irq);
> @@ -390,12 +390,12 @@ static inline void s3c24xx_demux_eint(un
>
>  static void s3c24xx_demux_eint4_7(unsigned int irq, struct irq_desc *desc)
>  {
> -       s3c24xx_demux_eint(irq, desc, 0, 0xf0);
> +       s3c24xx_demux_eint(desc, 0, 0xf0);
>  }
>
>  static void s3c24xx_demux_eint8_23(unsigned int irq, struct irq_desc *desc)
>  {
> -       s3c24xx_demux_eint(irq, desc, 8, 0xffff00);
> +       s3c24xx_demux_eint(desc, 8, 0xffff00);
>  }
>
>  static irq_flow_handler_t s3c2410_eint_handlers[NUM_EINT_IRQ] = {
> Index: tip/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
> +++ tip/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
> @@ -410,8 +410,8 @@ static const struct irq_domain_ops s3c64
>
>  static void s3c64xx_eint_gpio_irq(unsigned int irq, struct irq_desc *desc)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> -       struct s3c64xx_eint_gpio_data *data = irq_get_handler_data(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
> +       struct s3c64xx_eint_gpio_data *data = irq_desc_get_handler_data(desc);
>         struct samsung_pinctrl_drv_data *drvdata = data->drvdata;
>
>         chained_irq_enter(chip, desc);
> @@ -599,11 +599,10 @@ static struct irq_chip s3c64xx_eint0_irq
>         .irq_set_type   = s3c64xx_eint0_irq_set_type,
>  };
>
> -static inline void s3c64xx_irq_demux_eint(unsigned int irq,
> -                                       struct irq_desc *desc, u32 range)
> +static inline void s3c64xx_irq_demux_eint(struct irq_desc *desc, u32 range)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> -       struct s3c64xx_eint0_data *data = irq_get_handler_data(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
> +       struct s3c64xx_eint0_data *data = irq_desc_get_handler_data(desc);
>         struct samsung_pinctrl_drv_data *drvdata = data->drvdata;
>         unsigned int pend, mask;
>
> @@ -616,11 +615,10 @@ static inline void s3c64xx_irq_demux_ein
>         pend &= range;
>
>         while (pend) {
> -               unsigned int virq;
> +               unsigned int virq, irq;
>
>                 irq = fls(pend) - 1;
>                 pend &= ~(1 << irq);
> -
>                 virq = irq_linear_revmap(data->domains[irq], data->pins[irq]);
>                 /*
>                  * Something must be really wrong if an unmapped EINT
> @@ -636,22 +634,22 @@ static inline void s3c64xx_irq_demux_ein
>
>  static void s3c64xx_demux_eint0_3(unsigned int irq, struct irq_desc *desc)
>  {
> -       s3c64xx_irq_demux_eint(irq, desc, 0xf);
> +       s3c64xx_irq_demux_eint(desc, 0xf);
>  }
>
>  static void s3c64xx_demux_eint4_11(unsigned int irq, struct irq_desc *desc)
>  {
> -       s3c64xx_irq_demux_eint(irq, desc, 0xff0);
> +       s3c64xx_irq_demux_eint(desc, 0xff0);
>  }
>
>  static void s3c64xx_demux_eint12_19(unsigned int irq, struct irq_desc *desc)
>  {
> -       s3c64xx_irq_demux_eint(irq, desc, 0xff000);
> +       s3c64xx_irq_demux_eint(desc, 0xff000);
>  }
>
>  static void s3c64xx_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
>  {
> -       s3c64xx_irq_demux_eint(irq, desc, 0xff00000);
> +       s3c64xx_irq_demux_eint(desc, 0xff00000);
>  }
>
>  static irq_flow_handler_t s3c64xx_eint0_handlers[NUM_EINT0_IRQ] = {
> Index: tip/drivers/pinctrl/sirf/pinctrl-sirf.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/sirf/pinctrl-sirf.c
> +++ tip/drivers/pinctrl/sirf/pinctrl-sirf.c
> @@ -552,7 +552,7 @@ static void sirfsoc_gpio_handle_irq(unsi
>         struct sirfsoc_gpio_bank *bank;
>         u32 status, ctrl;
>         int idx = 0;
> -       struct irq_chip *chip = irq_get_chip(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
>         int i;
>
>         for (i = 0; i < SIRFSOC_GPIO_NO_OF_BANKS; i++) {
> Index: tip/drivers/pinctrl/sunxi/pinctrl-sunxi.c
> ===================================================================
> --- tip.orig/drivers/pinctrl/sunxi/pinctrl-sunxi.c
> +++ tip/drivers/pinctrl/sunxi/pinctrl-sunxi.c
> @@ -711,8 +711,8 @@ static struct irq_chip sunxi_pinctrl_lev
>
>  static void sunxi_pinctrl_irq_handler(unsigned irq, struct irq_desc *desc)
>  {
> -       struct irq_chip *chip = irq_get_chip(irq);
> -       struct sunxi_pinctrl *pctl = irq_get_handler_data(irq);
> +       struct irq_chip *chip = irq_desc_get_chip(desc);
> +       struct sunxi_pinctrl *pctl = irq_desc_get_handler_data(desc);
>         unsigned long bank, reg, val;
>
>         for (bank = 0; bank < pctl->desc->irq_banks; bank++)
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [patch 15/22] pinctrl: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-08-31 21:28   ` Paul Gortmaker
@ 2015-09-08 14:00     ` Linus Walleij
  2015-09-08 14:10       ` Thomas Gleixner
  0 siblings, 1 reply; 28+ messages in thread
From: Linus Walleij @ 2015-09-08 14:00 UTC (permalink / raw)
  To: Paul Gortmaker; +Cc: Thomas Gleixner, LKML, linux-gpio, Jiang Liu

On Mon, Aug 31, 2015 at 11:28 PM, Paul Gortmaker
<paul.gortmaker@windriver.com> wrote:
> On Mon, Jul 13, 2015 at 4:47 PM, Thomas Gleixner <tglx@linutronix.de> wrote:
>> From: Jiang Liu <jiang.liu@linux.intel.com>
>>
>> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
>> already have a pointer to corresponding irq_desc.
>
> Hi Linus,
>
> It seems that linux-next has this copy of the patch as 5663bb27dec1, which
> has a stray irq_desc_get_irq_chip in s3c24xx ; (2nd instance of "irq" is
> bogus looking.)   I first assumed it was from tglx since it did not have any
> additional SOB lines, but on further investigation I traced it back to sfr's
> merge of pinctrl/for-next.

Hm, saw this a bit late I guess.

Torvalds has merged my trees, is there a problem in mainline
that need to be addressed or did this fix itself?

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [patch 15/22] pinctrl: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-09-08 14:00     ` Linus Walleij
@ 2015-09-08 14:10       ` Thomas Gleixner
  2015-09-08 14:50         ` Linus Walleij
  0 siblings, 1 reply; 28+ messages in thread
From: Thomas Gleixner @ 2015-09-08 14:10 UTC (permalink / raw)
  To: Linus Walleij; +Cc: Paul Gortmaker, LKML, linux-gpio, Jiang Liu

On Tue, 8 Sep 2015, Linus Walleij wrote:
> On Mon, Aug 31, 2015 at 11:28 PM, Paul Gortmaker
> <paul.gortmaker@windriver.com> wrote:
> > On Mon, Jul 13, 2015 at 4:47 PM, Thomas Gleixner <tglx@linutronix.de> wrote:
> >> From: Jiang Liu <jiang.liu@linux.intel.com>
> >>
> >> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
> >> already have a pointer to corresponding irq_desc.
> >
> > Hi Linus,
> >
> > It seems that linux-next has this copy of the patch as 5663bb27dec1, which
> > has a stray irq_desc_get_irq_chip in s3c24xx ; (2nd instance of "irq" is
> > bogus looking.)   I first assumed it was from tglx since it did not have any
> > additional SOB lines, but on further investigation I traced it back to sfr's
> > merge of pinctrl/for-next.
> 
> Hm, saw this a bit late I guess.
> 
> Torvalds has merged my trees, is there a problem in mainline
> that need to be addressed or did this fix itself?

No, it's buggered in Linus tree as well.


^ permalink raw reply	[flat|nested] 28+ messages in thread

* Re: [patch 15/22] pinctrl: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
  2015-09-08 14:10       ` Thomas Gleixner
@ 2015-09-08 14:50         ` Linus Walleij
  0 siblings, 0 replies; 28+ messages in thread
From: Linus Walleij @ 2015-09-08 14:50 UTC (permalink / raw)
  To: Thomas Gleixner; +Cc: Paul Gortmaker, LKML, linux-gpio, Jiang Liu

On Tue, Sep 8, 2015 at 4:10 PM, Thomas Gleixner <tglx@linutronix.de> wrote:
> On Tue, 8 Sep 2015, Linus Walleij wrote:
>> On Mon, Aug 31, 2015 at 11:28 PM, Paul Gortmaker
>> <paul.gortmaker@windriver.com> wrote:
>> > On Mon, Jul 13, 2015 at 4:47 PM, Thomas Gleixner <tglx@linutronix.de> wrote:
>> >> From: Jiang Liu <jiang.liu@linux.intel.com>
>> >>
>> >> Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
>> >> already have a pointer to corresponding irq_desc.
>> >
>> > Hi Linus,
>> >
>> > It seems that linux-next has this copy of the patch as 5663bb27dec1, which
>> > has a stray irq_desc_get_irq_chip in s3c24xx ; (2nd instance of "irq" is
>> > bogus looking.)   I first assumed it was from tglx since it did not have any
>> > additional SOB lines, but on further investigation I traced it back to sfr's
>> > merge of pinctrl/for-next.
>>
>> Hm, saw this a bit late I guess.
>>
>> Torvalds has merged my trees, is there a problem in mainline
>> that need to be addressed or did this fix itself?
>
> No, it's buggered in Linus tree as well.

OK fixing it.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 28+ messages in thread

end of thread, other threads:[~2015-09-08 14:50 UTC | newest]

Thread overview: 28+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-13 20:47 [patch 00/22] pinctrl: Interrupt cleanups and API change preparation Thomas Gleixner
2015-07-13 20:47 ` [patch 01/22] pinctrl/rockchip: Consolidate chained IRQ handler install/remove Thomas Gleixner
2015-07-13 20:47 ` [patch 02/22] pinctrl: " Thomas Gleixner
2015-07-13 20:47 ` [patch 03/22] pinctrl/exynos: " Thomas Gleixner
2015-07-13 20:47 ` [patch 04/22] pinctrl/bcm2835: Use irq_set_handler_locked() Thomas Gleixner
2015-07-13 20:47 ` [patch 05/22] pinctrl/baytrail: " Thomas Gleixner
2015-07-13 20:47 ` [patch 06/22] pinctrl/cherryview: " Thomas Gleixner
2015-07-13 20:47 ` [patch 07/22] pinctrl/intel: " Thomas Gleixner
2015-07-13 20:47 ` [patch 08/22] pinctrl/adi2: " Thomas Gleixner
2015-07-13 20:47 ` [patch 09/22] pinctrl/amd: " Thomas Gleixner
2015-07-13 20:47 ` [patch 10/22] pinctrl/at91: " Thomas Gleixner
2015-07-13 20:47 ` [patch 11/22] pinctrl/rockchip: " Thomas Gleixner
2015-07-13 20:47 ` [patch 12/22] pinctrl/qcom: " Thomas Gleixner
2015-07-13 20:47 ` [patch 13/22] pinctrl/exynos: " Thomas Gleixner
2015-07-13 20:47 ` [patch 14/22] pinctrl/samsung: " Thomas Gleixner
2015-07-13 21:09   ` Thomas Gleixner
2015-07-13 20:47 ` [patch 15/22] pinctrl: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc Thomas Gleixner
2015-08-31 21:28   ` Paul Gortmaker
2015-09-08 14:00     ` Linus Walleij
2015-09-08 14:10       ` Thomas Gleixner
2015-09-08 14:50         ` Linus Walleij
2015-07-13 20:47 ` [patch 16/22] pinctrl/amd: Prepare amd_gpio_irq_handler for irq argument removal Thomas Gleixner
2015-07-13 20:48 ` [patch 17/22] pinctrl/coh901: Prepare u300_gpio_irq_handler " Thomas Gleixner
2015-07-13 20:48 ` [patch 18/22] pinctrl/pistachio: Prepare pistachio_gpio_irq_handler " Thomas Gleixner
2015-07-13 20:48 ` [patch 19/22] pinctrl/rockchip: Prepare rockchip_irq_demux " Thomas Gleixner
2015-07-13 20:48 ` [patch 20/22] pinctrl/qcom/msm: Prepare msm_gpio_irq_handler " Thomas Gleixner
2015-07-13 20:48 ` [patch 21/22] pinctrl/sirf: Prepare-x-gpio-handle-irq-for-irq-argument-removal.patch Thomas Gleixner
2015-07-13 20:48 ` [patch 22/22] pinctrl/sunxi: Prepare sunxi_pinctrl_irq_handler for irq argument removal Thomas Gleixner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).