LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* [patch 0/4] avr32: Convert to new irq_chip functions
@ 2011-02-06 16:30 Thomas Gleixner
  2011-02-06 16:30 ` [patch 1/4] avr32: at32ap: Convert extint irq_chip to new functions Thomas Gleixner
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Thomas Gleixner @ 2011-02-06 16:30 UTC (permalink / raw)
  To: LKML; +Cc: Hans-Christian Egtvedt

Convert to new irq_chip functions and cleanup a few open coded
irq_desc accesses.

Thanks,

	tglx








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

* [patch 1/4] avr32: at32ap: Convert extint irq_chip to new functions
  2011-02-06 16:30 [patch 0/4] avr32: Convert to new irq_chip functions Thomas Gleixner
@ 2011-02-06 16:30 ` Thomas Gleixner
  2011-02-06 16:30 ` [patch 2/4] avr32: at32ap: Convert intc " Thomas Gleixner
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Thomas Gleixner @ 2011-02-06 16:30 UTC (permalink / raw)
  To: LKML; +Cc: Hans-Christian Egtvedt

[-- Attachment #1: avr32-at32ap-extint-convert-irq-chip.patch --]
[-- Type: text/plain, Size: 3097 bytes --]

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
 arch/avr32/mach-at32ap/extint.c |   45 ++++++++++++++++++++--------------------
 1 file changed, 23 insertions(+), 22 deletions(-)

Index: linux-next/arch/avr32/mach-at32ap/extint.c
===================================================================
--- linux-next.orig/arch/avr32/mach-at32ap/extint.c
+++ linux-next/arch/avr32/mach-at32ap/extint.c
@@ -61,35 +61,36 @@ struct eic {
 static struct eic *nmi_eic;
 static bool nmi_enabled;
 
-static void eic_ack_irq(unsigned int irq)
+static void eic_ack_irq(struct irq_chip *d)
 {
-	struct eic *eic = get_irq_chip_data(irq);
-	eic_writel(eic, ICR, 1 << (irq - eic->first_irq));
+	struct eic *eic = irq_data_get_irq_chip_data(data);
+	eic_writel(eic, ICR, 1 << (d->irq - eic->first_irq));
 }
 
-static void eic_mask_irq(unsigned int irq)
+static void eic_mask_irq(struct irq_chip *d)
 {
-	struct eic *eic = get_irq_chip_data(irq);
-	eic_writel(eic, IDR, 1 << (irq - eic->first_irq));
+	struct eic *eic = irq_data_get_irq_chip_data(data);
+	eic_writel(eic, IDR, 1 << (d->irq - eic->first_irq));
 }
 
-static void eic_mask_ack_irq(unsigned int irq)
+static void eic_mask_ack_irq(struct irq_chip *d)
 {
-	struct eic *eic = get_irq_chip_data(irq);
-	eic_writel(eic, ICR, 1 << (irq - eic->first_irq));
-	eic_writel(eic, IDR, 1 << (irq - eic->first_irq));
+	struct eic *eic = irq_data_get_irq_chip_data(data);
+	eic_writel(eic, ICR, 1 << (d->irq - eic->first_irq));
+	eic_writel(eic, IDR, 1 << (d->irq - eic->first_irq));
 }
 
-static void eic_unmask_irq(unsigned int irq)
+static void eic_unmask_irq(struct irq_chip *d)
 {
-	struct eic *eic = get_irq_chip_data(irq);
-	eic_writel(eic, IER, 1 << (irq - eic->first_irq));
+	struct eic *eic = irq_data_get_irq_chip_data(data);
+	eic_writel(eic, IER, 1 << (d->irq - eic->first_irq));
 }
 
-static int eic_set_irq_type(unsigned int irq, unsigned int flow_type)
+static int eic_set_irq_type(struct irq_chip *d, unsigned int flow_type)
 {
-	struct eic *eic = get_irq_chip_data(irq);
+	struct eic *eic = irq_data_get_irq_chip_data(data);
 	struct irq_desc *desc;
+	unsigned int irq = d->irq;
 	unsigned int i = irq - eic->first_irq;
 	u32 mode, edge, level;
 	int ret = 0;
@@ -98,7 +99,7 @@ static int eic_set_irq_type(unsigned int
 	if (flow_type == IRQ_TYPE_NONE)
 		flow_type = IRQ_TYPE_LEVEL_LOW;
 
-	desc = &irq_desc[irq];
+	desc = irq_to_desc(irq);
 
 	mode = eic_readl(eic, MODE);
 	edge = eic_readl(eic, EDGE);
@@ -145,16 +146,16 @@ static int eic_set_irq_type(unsigned int
 
 static struct irq_chip eic_chip = {
 	.name		= "eic",
-	.ack		= eic_ack_irq,
-	.mask		= eic_mask_irq,
-	.mask_ack	= eic_mask_ack_irq,
-	.unmask		= eic_unmask_irq,
-	.set_type	= eic_set_irq_type,
+	.irq_ack	= eic_ack_irq,
+	.irq_mask	= eic_mask_irq,
+	.irq_mask_ack	= eic_mask_ack_irq,
+	.irq_unmask	= eic_unmask_irq,
+	.irq_set_type	= eic_set_irq_type,
 };
 
 static void demux_eic_irq(unsigned int irq, struct irq_desc *desc)
 {
-	struct eic *eic = desc->handler_data;
+	struct eic *eic = get_irq_desc_data(desc);
 	unsigned long status, pending;
 	unsigned int i;
 



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

* [patch 2/4] avr32: at32ap: Convert intc irq_chip to new functions
  2011-02-06 16:30 [patch 0/4] avr32: Convert to new irq_chip functions Thomas Gleixner
  2011-02-06 16:30 ` [patch 1/4] avr32: at32ap: Convert extint irq_chip to new functions Thomas Gleixner
@ 2011-02-06 16:30 ` Thomas Gleixner
  2011-02-06 16:30 ` [patch 3/4] avr32: at32ap: Convert pop " Thomas Gleixner
  2011-02-06 16:30 ` [patch 4/4] avr32: Use generic IRQ config, enable GENERIC_HARDIRQS_NO_DEPRECATED Thomas Gleixner
  3 siblings, 0 replies; 5+ messages in thread
From: Thomas Gleixner @ 2011-02-06 16:30 UTC (permalink / raw)
  To: LKML; +Cc: Hans-Christian Egtvedt

[-- Attachment #1: avr32-at32ap-intc-convert-irq-chip.patch --]
[-- Type: text/plain, Size: 1551 bytes --]

Also replace the open coded handler call with the proper wrapper.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
 arch/avr32/mach-at32ap/intc.c |   12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

Index: linux-next/arch/avr32/mach-at32ap/intc.c
===================================================================
--- linux-next.orig/arch/avr32/mach-at32ap/intc.c
+++ linux-next/arch/avr32/mach-at32ap/intc.c
@@ -34,12 +34,12 @@ extern struct platform_device at32_intc0
  * TODO: We may be able to implement mask/unmask by setting IxM flags
  * in the status register.
  */
-static void intc_mask_irq(unsigned int irq)
+static void intc_mask_irq(struct irq_data *d)
 {
 
 }
 
-static void intc_unmask_irq(unsigned int irq)
+static void intc_unmask_irq(struct irq_data *d)
 {
 
 }
@@ -47,8 +47,8 @@ static void intc_unmask_irq(unsigned int
 static struct intc intc0 = {
 	.chip = {
 		.name		= "intc",
-		.mask		= intc_mask_irq,
-		.unmask		= intc_unmask_irq,
+		.irq_mask	= intc_mask_irq,
+		.irq_unmask	= intc_unmask_irq,
 	},
 };
 
@@ -57,7 +57,6 @@ static struct intc intc0 = {
  */
 asmlinkage void do_IRQ(int level, struct pt_regs *regs)
 {
-	struct irq_desc *desc;
 	struct pt_regs *old_regs;
 	unsigned int irq;
 	unsigned long status_reg;
@@ -69,8 +68,7 @@ asmlinkage void do_IRQ(int level, struct
 	irq_enter();
 
 	irq = intc_readl(&intc0, INTCAUSE0 - 4 * level);
-	desc = irq_desc + irq;
-	desc->handle_irq(irq, desc);
+	generic_handle_irq(irq);
 
 	/*
 	 * Clear all interrupt level masks so that we may handle



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

* [patch 3/4] avr32: at32ap: Convert pop irq_chip to new functions
  2011-02-06 16:30 [patch 0/4] avr32: Convert to new irq_chip functions Thomas Gleixner
  2011-02-06 16:30 ` [patch 1/4] avr32: at32ap: Convert extint irq_chip to new functions Thomas Gleixner
  2011-02-06 16:30 ` [patch 2/4] avr32: at32ap: Convert intc " Thomas Gleixner
@ 2011-02-06 16:30 ` Thomas Gleixner
  2011-02-06 16:30 ` [patch 4/4] avr32: Use generic IRQ config, enable GENERIC_HARDIRQS_NO_DEPRECATED Thomas Gleixner
  3 siblings, 0 replies; 5+ messages in thread
From: Thomas Gleixner @ 2011-02-06 16:30 UTC (permalink / raw)
  To: LKML; +Cc: Hans-Christian Egtvedt

[-- Attachment #1: avr32-at32ap-pio-convert-irq-chip.patch --]
[-- Type: text/plain, Size: 2174 bytes --]

Also replace the open coded handler call with the proper wrapper.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
 arch/avr32/mach-at32ap/pio.c |   23 ++++++++++-------------
 1 file changed, 10 insertions(+), 13 deletions(-)

Index: linux-next/arch/avr32/mach-at32ap/pio.c
===================================================================
--- linux-next.orig/arch/avr32/mach-at32ap/pio.c
+++ linux-next/arch/avr32/mach-at32ap/pio.c
@@ -249,23 +249,23 @@ static void gpio_set(struct gpio_chip *c
 
 /* GPIO IRQ support */
 
-static void gpio_irq_mask(unsigned irq)
+static void gpio_irq_mask(struct irq_data *d)
 {
-	unsigned		gpio = irq_to_gpio(irq);
+	unsigned		gpio = irq_to_gpio(d->irq);
 	struct pio_device	*pio = &pio_dev[gpio >> 5];
 
 	pio_writel(pio, IDR, 1 << (gpio & 0x1f));
 }
 
-static void gpio_irq_unmask(unsigned irq)
+static void gpio_irq_unmask(struct irq_data *d))
 {
-	unsigned		gpio = irq_to_gpio(irq);
+	unsigned		gpio = irq_to_gpio(d->irq);
 	struct pio_device	*pio = &pio_dev[gpio >> 5];
 
 	pio_writel(pio, IER, 1 << (gpio & 0x1f));
 }
 
-static int gpio_irq_type(unsigned irq, unsigned type)
+static int gpio_irq_type(struct irq_data *d, unsigned type)
 {
 	if (type != IRQ_TYPE_EDGE_BOTH && type != IRQ_TYPE_NONE)
 		return -EINVAL;
@@ -275,20 +275,19 @@ static int gpio_irq_type(unsigned irq, u
 
 static struct irq_chip gpio_irqchip = {
 	.name		= "gpio",
-	.mask		= gpio_irq_mask,
-	.unmask		= gpio_irq_unmask,
-	.set_type	= gpio_irq_type,
+	.irq_mask	= gpio_irq_mask,
+	.irq_unmask	= gpio_irq_unmask,
+	.irq_set_type	= gpio_irq_type,
 };
 
 static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)
 {
-	struct pio_device	*pio = get_irq_chip_data(irq);
+	struct pio_device	*pio = get_irq_desc_chip_data(desc);
 	unsigned		gpio_irq;
 
 	gpio_irq = (unsigned) get_irq_data(irq);
 	for (;;) {
 		u32		isr;
-		struct irq_desc	*d;
 
 		/* ack pending GPIO interrupts */
 		isr = pio_readl(pio, ISR) & pio_readl(pio, IMR);
@@ -301,9 +300,7 @@ static void gpio_irq_handler(unsigned ir
 			isr &= ~(1 << i);
 
 			i += gpio_irq;
-			d = &irq_desc[i];
-
-			d->handle_irq(i, d);
+			generic_handle_irq(i);
 		} while (isr);
 	}
 }



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

* [patch 4/4] avr32: Use generic IRQ config, enable GENERIC_HARDIRQS_NO_DEPRECATED
  2011-02-06 16:30 [patch 0/4] avr32: Convert to new irq_chip functions Thomas Gleixner
                   ` (2 preceding siblings ...)
  2011-02-06 16:30 ` [patch 3/4] avr32: at32ap: Convert pop " Thomas Gleixner
@ 2011-02-06 16:30 ` Thomas Gleixner
  3 siblings, 0 replies; 5+ messages in thread
From: Thomas Gleixner @ 2011-02-06 16:30 UTC (permalink / raw)
  To: LKML; +Cc: Hans-Christian Egtvedt

[-- Attachment #1: avr32-enable-no-depr.patch --]
[-- Type: text/plain, Size: 1160 bytes --]

Use the generic Kconfig for interrupts and enable
GENERIC_HARDIRQS_NO_DEPRECATED. All conversions done.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
 arch/avr32/Kconfig |   13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

Index: linux-next/arch/avr32/Kconfig
===================================================================
--- linux-next.orig/arch/avr32/Kconfig
+++ linux-next/arch/avr32/Kconfig
@@ -6,6 +6,10 @@ config AVR32
 	select HAVE_CLK
 	select HAVE_OPROFILE
 	select HAVE_KPROBES
+	select HAVE_GENERIC_HARDIRQS
+	select GENERIC_IRQ_PROBE
+	select HARDIRQS_SW_RESEND
+	select GENERIC_HARDIRQS_NO_DEPRECATED
 	help
 	  AVR32 is a high-performance 32-bit RISC microprocessor core,
 	  designed for cost-sensitive embedded applications, with particular
@@ -17,9 +21,6 @@ config AVR32
 config GENERIC_GPIO
 	def_bool y
 
-config GENERIC_HARDIRQS
-	def_bool y
-
 config STACKTRACE_SUPPORT
 	def_bool y
 
@@ -29,12 +30,6 @@ config LOCKDEP_SUPPORT
 config TRACE_IRQFLAGS_SUPPORT
 	def_bool y
 
-config HARDIRQS_SW_RESEND
-	def_bool y
-
-config GENERIC_IRQ_PROBE
-	def_bool y
-
 config RWSEM_GENERIC_SPINLOCK
 	def_bool y
 



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

end of thread, other threads:[~2011-02-06 16:31 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-06 16:30 [patch 0/4] avr32: Convert to new irq_chip functions Thomas Gleixner
2011-02-06 16:30 ` [patch 1/4] avr32: at32ap: Convert extint irq_chip to new functions Thomas Gleixner
2011-02-06 16:30 ` [patch 2/4] avr32: at32ap: Convert intc " Thomas Gleixner
2011-02-06 16:30 ` [patch 3/4] avr32: at32ap: Convert pop " Thomas Gleixner
2011-02-06 16:30 ` [patch 4/4] avr32: Use generic IRQ config, enable GENERIC_HARDIRQS_NO_DEPRECATED 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).