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).