* [patch 00/10] mfd: irq cleanup and namespace conversion
@ 2011-03-25 11:12 Thomas Gleixner
2011-03-25 11:12 ` [patch 01/10] mfd: asic3: Cleanup irq handling Thomas Gleixner
` (9 more replies)
0 siblings, 10 replies; 14+ messages in thread
From: Thomas Gleixner @ 2011-03-25 11:12 UTC (permalink / raw)
To: LKML; +Cc: Andrew Morton, Samuel Ortiz
The following series cleans up the interrupt code in drivers/mfd and
converts to the new function names in the core code.
If possible, push this to Linus for .39 so we can get rid of all the
deprecated and compat cruft in the core code.
Thanks,
tglx
---
88pm860x-core.c | 11 +++------
ab3550-core.c | 12 +++++-----
ab8500-core.c | 12 +++++-----
asic3.c | 38 +++++++++++++-------------------
ezx-pcap.c | 34 +++++++++++-----------------
htc-egpio.c | 23 ++++++++-----------
htc-i2cpld.c | 33 +++++++++-------------------
jz4740-adc.c | 16 ++++++-------
max8925-core.c | 10 +++-----
max8998-irq.c | 8 +++---
max8998.c | 4 +--
stmpe.c | 12 +++++-----
t7l66xb.c | 21 ++++++++---------
tc3589x.c | 12 +++++-----
tc6393xb.c | 21 ++++++++---------
tps6586x.c | 6 ++---
twl4030-irq.c | 66 +++++++++++++++-----------------------------------------
twl6030-irq.c | 25 ++++-----------------
wm831x-irq.c | 8 +++---
wm8350-irq.c | 8 +++---
wm8994-irq.c | 8 +++---
21 files changed, 154 insertions(+), 234 deletions(-)
^ permalink raw reply [flat|nested] 14+ messages in thread
* [patch 01/10] mfd: asic3: Cleanup irq handling
2011-03-25 11:12 [patch 00/10] mfd: irq cleanup and namespace conversion Thomas Gleixner
@ 2011-03-25 11:12 ` Thomas Gleixner
2011-03-25 11:12 ` [patch 02/10] mfd: 88pm860x: Remove unused irq_desc leftovers Thomas Gleixner
` (8 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Thomas Gleixner @ 2011-03-25 11:12 UTC (permalink / raw)
To: LKML; +Cc: Andrew Morton, Samuel Ortiz
[-- Attachment #1: mfd-asic3.patch --]
[-- Type: text/plain, Size: 1734 bytes --]
Remove the open coded access to irq_desc and use the proper wrappers.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/mfd/asic3.c | 17 ++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)
Index: linux-2.6-tip/drivers/mfd/asic3.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/asic3.c
+++ linux-2.6-tip/drivers/mfd/asic3.c
@@ -139,13 +139,12 @@ static void asic3_irq_flip_edge(struct a
static void asic3_irq_demux(unsigned int irq, struct irq_desc *desc)
{
+ struct asic3 *asic = irq_desc_get_handler_data(desc);
+ struct irq_data *data = irq_desc_get_irq_data(desc);
int iter, i;
unsigned long flags;
- struct asic3 *asic;
-
- desc->irq_data.chip->irq_ack(&desc->irq_data);
- asic = get_irq_data(irq);
+ data->chip->irq_ack(irq_data);
for (iter = 0 ; iter < MAX_ASIC_ISR_LOOPS; iter++) {
u32 status;
@@ -188,8 +187,7 @@ static void asic3_irq_demux(unsigned int
irqnr = asic->irq_base +
(ASIC3_GPIOS_PER_BANK * bank)
+ i;
- desc = irq_to_desc(irqnr);
- desc->handle_irq(irqnr, desc);
+ generic_handle_irq(irqnr);
if (asic->irq_bothedge[bank] & bit)
asic3_irq_flip_edge(asic, base,
bit);
@@ -200,11 +198,8 @@ static void asic3_irq_demux(unsigned int
/* Handle remaining IRQs in the status register */
for (i = ASIC3_NUM_GPIOS; i < ASIC3_NR_IRQS; i++) {
/* They start at bit 4 and go up */
- if (status & (1 << (i - ASIC3_NUM_GPIOS + 4))) {
- desc = irq_to_desc(asic->irq_base + i);
- desc->handle_irq(asic->irq_base + i,
- desc);
- }
+ if (status & (1 << (i - ASIC3_NUM_GPIOS + 4)))
+ generic_handle_irq(asic->irq_base + i);
}
}
^ permalink raw reply [flat|nested] 14+ messages in thread
* [patch 02/10] mfd: 88pm860x: Remove unused irq_desc leftovers
2011-03-25 11:12 [patch 00/10] mfd: irq cleanup and namespace conversion Thomas Gleixner
2011-03-25 11:12 ` [patch 01/10] mfd: asic3: Cleanup irq handling Thomas Gleixner
@ 2011-03-25 11:12 ` Thomas Gleixner
2011-03-25 11:12 ` [patch 03/10] mfd: ezx-pcap: Remvove open coded irq handling Thomas Gleixner
` (7 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Thomas Gleixner @ 2011-03-25 11:12 UTC (permalink / raw)
To: LKML; +Cc: Andrew Morton, Samuel Ortiz
[-- Attachment #1: mfd-88pm.patch --]
[-- Type: text/plain, Size: 862 bytes --]
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/mfd/88pm860x-core.c | 3 ---
1 file changed, 3 deletions(-)
Index: linux-2.6-tip/drivers/mfd/88pm860x-core.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/88pm860x-core.c
+++ linux-2.6-tip/drivers/mfd/88pm860x-core.c
@@ -508,7 +508,6 @@ static int __devinit device_irq_init(str
: chip->companion;
unsigned char status_buf[INT_STATUS_NUM];
unsigned long flags = IRQF_TRIGGER_FALLING | IRQF_ONESHOT;
- struct irq_desc *desc;
int i, data, mask, ret = -EINVAL;
int __irq;
@@ -560,8 +559,6 @@ static int __devinit device_irq_init(str
if (!chip->core_irq)
goto out;
- desc = irq_to_desc(chip->core_irq);
-
/* register IRQ by genirq */
for (i = 0; i < ARRAY_SIZE(pm860x_irqs); i++) {
__irq = i + chip->irq_base;
^ permalink raw reply [flat|nested] 14+ messages in thread
* [patch 03/10] mfd: ezx-pcap: Remvove open coded irq handling
2011-03-25 11:12 [patch 00/10] mfd: irq cleanup and namespace conversion Thomas Gleixner
2011-03-25 11:12 ` [patch 01/10] mfd: asic3: Cleanup irq handling Thomas Gleixner
2011-03-25 11:12 ` [patch 02/10] mfd: 88pm860x: Remove unused irq_desc leftovers Thomas Gleixner
@ 2011-03-25 11:12 ` Thomas Gleixner
2011-03-25 11:12 ` [patch 04/10] mfd: htc-egpio: Cleanup interrupt handling Thomas Gleixner
` (6 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Thomas Gleixner @ 2011-03-25 11:12 UTC (permalink / raw)
To: LKML; +Cc: Andrew Morton, Samuel Ortiz
[-- Attachment #1: mfd-ezx.patch --]
[-- Type: text/plain, Size: 1469 bytes --]
There is no point in checking irq_desc here, as it _is_ available. The
driver configured those lines, so they cannot go away.
The home brewn disabled/note_interrupt magic can be removed as well by
adding a irq_disable callback which avoids the lazy disable.
That driver needs to be converted to threaded interrupts.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/mfd/ezx-pcap.c | 14 +++-----------
1 file changed, 3 insertions(+), 11 deletions(-)
Index: linux-2.6-tip/drivers/mfd/ezx-pcap.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/ezx-pcap.c
+++ linux-2.6-tip/drivers/mfd/ezx-pcap.c
@@ -162,6 +162,7 @@ static void pcap_unmask_irq(struct irq_d
static struct irq_chip pcap_irq_chip = {
.name = "pcap",
+ .irq_disable = pcap_mask_irq,
.irq_mask = pcap_mask_irq,
.irq_unmask = pcap_unmask_irq,
};
@@ -196,17 +197,8 @@ static void pcap_isr_work(struct work_st
local_irq_disable();
service = isr & ~msr;
for (irq = pcap->irq_base; service; service >>= 1, irq++) {
- if (service & 1) {
- struct irq_desc *desc = irq_to_desc(irq);
-
- if (WARN(!desc, "Invalid PCAP IRQ %d\n", irq))
- break;
-
- if (desc->status & IRQ_DISABLED)
- note_interrupt(irq, desc, IRQ_NONE);
- else
- desc->handle_irq(irq, desc);
- }
+ if (service & 1)
+ generic_handle_irq(irq);
}
local_irq_enable();
ezx_pcap_write(pcap, PCAP_REG_MSR, pcap->msr);
^ permalink raw reply [flat|nested] 14+ messages in thread
* [patch 04/10] mfd: htc-egpio: Cleanup interrupt handling
2011-03-25 11:12 [patch 00/10] mfd: irq cleanup and namespace conversion Thomas Gleixner
` (2 preceding siblings ...)
2011-03-25 11:12 ` [patch 03/10] mfd: ezx-pcap: Remvove open coded irq handling Thomas Gleixner
@ 2011-03-25 11:12 ` Thomas Gleixner
2011-03-25 11:12 ` [patch 05/10] mfd: htc-i2cpld: " Thomas Gleixner
` (5 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Thomas Gleixner @ 2011-03-25 11:12 UTC (permalink / raw)
To: LKML; +Cc: Andrew Morton, Samuel Ortiz
[-- Attachment #1: mff-htc-eg.patch --]
[-- Type: text/plain, Size: 1107 bytes --]
Replace the open coded handler call with the prober accessor. Retrieve
the handler data from desc. That avoids a redundant lookup in the
sparse irq case.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/mfd/htc-egpio.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
Index: linux-2.6-tip/drivers/mfd/htc-egpio.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/htc-egpio.c
+++ linux-2.6-tip/drivers/mfd/htc-egpio.c
@@ -100,7 +100,7 @@ static struct irq_chip egpio_muxed_chip
static void egpio_handler(unsigned int irq, struct irq_desc *desc)
{
- struct egpio_info *ei = get_irq_data(irq);
+ struct egpio_info *ei = irq_desc_get_handler_data(desc);
int irqpin;
/* Read current pins. */
@@ -113,9 +113,7 @@ static void egpio_handler(unsigned int i
for_each_set_bit(irqpin, &readval, ei->nirqs) {
/* Run irq handler */
pr_debug("got IRQ %d\n", irqpin);
- irq = ei->irq_start + irqpin;
- desc = irq_to_desc(irq);
- desc->handle_irq(irq, desc);
+ generic_handle_irq(ei->irq_start + irqpin);
}
}
^ permalink raw reply [flat|nested] 14+ messages in thread
* [patch 05/10] mfd: htc-i2cpld: Cleanup interrupt handling
2011-03-25 11:12 [patch 00/10] mfd: irq cleanup and namespace conversion Thomas Gleixner
` (3 preceding siblings ...)
2011-03-25 11:12 ` [patch 04/10] mfd: htc-egpio: Cleanup interrupt handling Thomas Gleixner
@ 2011-03-25 11:12 ` Thomas Gleixner
2011-03-25 11:12 ` [patch 06/10] mfd: mx8925: Remove irq_desc leftovers Thomas Gleixner
` (4 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Thomas Gleixner @ 2011-03-25 11:12 UTC (permalink / raw)
To: LKML; +Cc: Andrew Morton, Samuel Ortiz
[-- Attachment #1: mfd-htc-i2.patch --]
[-- Type: text/plain, Size: 2647 bytes --]
Remove the pointless irq_desc check in set_type. This function is
called with that irq descriptor locked. Also remove the write back of
the flow type as the core code does this already when the return value
is 0.
Also store the flow type in the chip data structure, so there is no
need to fiddle in the irq descriptor.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/mfd/htc-i2cpld.c | 25 +++++++------------------
1 file changed, 7 insertions(+), 18 deletions(-)
Index: linux-2.6-tip/drivers/mfd/htc-i2cpld.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/htc-i2cpld.c
+++ linux-2.6-tip/drivers/mfd/htc-i2cpld.c
@@ -58,6 +58,7 @@ struct htcpld_chip {
uint irq_start;
int nirqs;
+ unsigned int flow_type;
/*
* Work structure to allow for setting values outside of any
* possible interrupt context
@@ -97,12 +98,7 @@ static void htcpld_unmask(struct irq_dat
static int htcpld_set_type(struct irq_data *data, unsigned int flags)
{
- struct irq_desc *d = irq_to_desc(data->irq);
-
- if (!d) {
- pr_err("HTCPLD invalid IRQ: %d\n", data->irq);
- return -EINVAL;
- }
+ struct htcpld_chip *chip = irq_data_get_irq_chip_data(data);
if (flags & ~IRQ_TYPE_SENSE_MASK)
return -EINVAL;
@@ -111,9 +107,7 @@ static int htcpld_set_type(struct irq_da
if (flags & (IRQ_TYPE_LEVEL_LOW|IRQ_TYPE_LEVEL_HIGH))
return -EINVAL;
- d->status &= ~IRQ_TYPE_SENSE_MASK;
- d->status |= flags;
-
+ chip->flow_type = flags;
return 0;
}
@@ -135,7 +129,6 @@ static irqreturn_t htcpld_handler(int ir
unsigned int i;
unsigned long flags;
int irqpin;
- struct irq_desc *desc;
if (!htcpld) {
pr_debug("htcpld is null in ISR\n");
@@ -195,23 +188,19 @@ static irqreturn_t htcpld_handler(int ir
* associated interrupts.
*/
for (irqpin = 0; irqpin < chip->nirqs; irqpin++) {
- unsigned oldb, newb;
- int flags;
+ unsigned oldb, newb, type = chip->flow_type;
irq = chip->irq_start + irqpin;
- desc = irq_to_desc(irq);
- flags = desc->status;
/* Run the IRQ handler, but only if the bit value
* changed, and the proper flags are set */
oldb = (old_val >> irqpin) & 1;
newb = (uval >> irqpin) & 1;
- if ((!oldb && newb && (flags & IRQ_TYPE_EDGE_RISING)) ||
- (oldb && !newb &&
- (flags & IRQ_TYPE_EDGE_FALLING))) {
+ if ((!oldb && newb && (type & IRQ_TYPE_EDGE_RISING)) ||
+ (oldb && !newb && (type & IRQ_TYPE_EDGE_FALLING))) {
pr_debug("fire IRQ %d\n", irqpin);
- desc->handle_irq(irq, desc);
+ generic_handle_irq(irq);
}
}
}
^ permalink raw reply [flat|nested] 14+ messages in thread
* [patch 06/10] mfd: mx8925: Remove irq_desc leftovers
2011-03-25 11:12 [patch 00/10] mfd: irq cleanup and namespace conversion Thomas Gleixner
` (4 preceding siblings ...)
2011-03-25 11:12 ` [patch 05/10] mfd: htc-i2cpld: " Thomas Gleixner
@ 2011-03-25 11:12 ` Thomas Gleixner
2011-03-25 11:12 ` [patch 07/10] mfd: twl4030: Cleanup interrupt handling Thomas Gleixner
` (3 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Thomas Gleixner @ 2011-03-25 11:12 UTC (permalink / raw)
To: LKML; +Cc: Andrew Morton, Samuel Ortiz
[-- Attachment #1: mfd-max.patch --]
[-- Type: text/plain, Size: 857 bytes --]
Remove unused code.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/mfd/max8925-core.c | 2 --
1 file changed, 2 deletions(-)
Index: linux-2.6-tip/drivers/mfd/max8925-core.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/max8925-core.c
+++ linux-2.6-tip/drivers/mfd/max8925-core.c
@@ -517,7 +517,6 @@ static int max8925_irq_init(struct max89
struct max8925_platform_data *pdata)
{
unsigned long flags = IRQF_TRIGGER_FALLING | IRQF_ONESHOT;
- struct irq_desc *desc;
int i, ret;
int __irq;
@@ -544,7 +543,6 @@ static int max8925_irq_init(struct max89
mutex_init(&chip->irq_lock);
chip->core_irq = irq;
chip->irq_base = pdata->irq_base;
- desc = irq_to_desc(chip->core_irq);
/* register with genirq */
for (i = 0; i < ARRAY_SIZE(max8925_irqs); i++) {
^ permalink raw reply [flat|nested] 14+ messages in thread
* [patch 08/10] mfd: twl6030: Cleanup interrupt handling
2011-03-25 11:12 [patch 00/10] mfd: irq cleanup and namespace conversion Thomas Gleixner
` (6 preceding siblings ...)
2011-03-25 11:12 ` [patch 07/10] mfd: twl4030: Cleanup interrupt handling Thomas Gleixner
@ 2011-03-25 11:12 ` Thomas Gleixner
2011-03-25 11:12 ` [patch 09/10] mfd: Cleanup irq namespace Thomas Gleixner
2011-03-25 11:12 ` [patch 10/10] mfd: Fold irq_set_chip/irq_set_handler Thomas Gleixner
9 siblings, 0 replies; 14+ messages in thread
From: Thomas Gleixner @ 2011-03-25 11:12 UTC (permalink / raw)
To: LKML; +Cc: Andrew Morton, Samuel Ortiz
[-- Attachment #1: mfdtwl6.patch --]
[-- Type: text/plain, Size: 1273 bytes --]
irq_desc checking in the interrupt demux routine is totally
pointless. The driver sets those lines up, so that cant go away
magically.
Remove the open coded handler magic and use the proper accessor.
This driver needs to be converted to threaded interrupts and buslock.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/mfd/twl6030-irq.c | 17 +----------------
1 file changed, 1 insertion(+), 16 deletions(-)
Index: linux-2.6-tip/drivers/mfd/twl6030-irq.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/twl6030-irq.c
+++ linux-2.6-tip/drivers/mfd/twl6030-irq.c
@@ -140,22 +140,7 @@ static int twl6030_irq_thread(void *data
if (sts.int_sts & 0x1) {
int module_irq = twl6030_irq_base +
twl6030_interrupt_mapping[i];
- struct irq_desc *d = irq_to_desc(module_irq);
-
- if (!d) {
- pr_err("twl6030: Invalid SIH IRQ: %d\n",
- module_irq);
- return -EINVAL;
- }
-
- /* These can't be masked ... always warn
- * if we get any surprises.
- */
- if (d->status & IRQ_DISABLED)
- note_interrupt(module_irq, d,
- IRQ_NONE);
- else
- d->handle_irq(module_irq, d);
+ generic_handle_irq(module_irq);
}
local_irq_enable();
^ permalink raw reply [flat|nested] 14+ messages in thread
* [patch 07/10] mfd: twl4030: Cleanup interrupt handling
2011-03-25 11:12 [patch 00/10] mfd: irq cleanup and namespace conversion Thomas Gleixner
` (5 preceding siblings ...)
2011-03-25 11:12 ` [patch 06/10] mfd: mx8925: Remove irq_desc leftovers Thomas Gleixner
@ 2011-03-25 11:12 ` Thomas Gleixner
2011-03-25 11:12 ` [patch 08/10] mfd: twl6030: " Thomas Gleixner
` (2 subsequent siblings)
9 siblings, 0 replies; 14+ messages in thread
From: Thomas Gleixner @ 2011-03-25 11:12 UTC (permalink / raw)
To: LKML; +Cc: Andrew Morton, Samuel Ortiz
[-- Attachment #1: mfd-twl4.patch --]
[-- Type: text/plain, Size: 3250 bytes --]
irq_desc checking in a function which is called with that irq
descriptor locked, is pointless. Equally pointless as the irq desc
check in the interrupt service routine. The driver sets those lines
up, so that cant go away magically.
Remove the open coded handler magic and use the proper accessor.
No need to fiddle with irq_desc in the type setting function. The
original value is in irq_data and the core code stores the new setting
when the return value is 0.
This driver needs to be converted to threaded interrupts and buslock.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/mfd/twl4030-irq.c | 46 ++++++++--------------------------------------
1 file changed, 8 insertions(+), 38 deletions(-)
Index: linux-2.6-tip/drivers/mfd/twl4030-irq.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/twl4030-irq.c
+++ linux-2.6-tip/drivers/mfd/twl4030-irq.c
@@ -320,24 +320,8 @@ static int twl4030_irq_thread(void *data
for (module_irq = twl4030_irq_base;
pih_isr;
pih_isr >>= 1, module_irq++) {
- if (pih_isr & 0x1) {
- struct irq_desc *d = irq_to_desc(module_irq);
-
- if (!d) {
- pr_err("twl4030: Invalid SIH IRQ: %d\n",
- module_irq);
- return -EINVAL;
- }
-
- /* These can't be masked ... always warn
- * if we get any surprises.
- */
- if (d->status & IRQ_DISABLED)
- note_interrupt(module_irq, d,
- IRQ_NONE);
- else
- d->handle_irq(module_irq, d);
- }
+ if (pih_isr & 0x1)
+ generic_handle_irq(module_irq);
}
local_irq_enable();
@@ -560,24 +544,18 @@ static void twl4030_sih_do_edge(struct w
/* Modify only the bits we know must change */
while (edge_change) {
int i = fls(edge_change) - 1;
- struct irq_desc *d = irq_to_desc(i + agent->irq_base);
+ struct irq_data *idata = irq_get_irq_data(i + agent->irq_base);
int byte = 1 + (i >> 2);
int off = (i & 0x3) * 2;
-
- if (!d) {
- pr_err("twl4030: Invalid IRQ: %d\n",
- i + agent->irq_base);
- return;
- }
+ unsigned int type;
bytes[byte] &= ~(0x03 << off);
- raw_spin_lock_irq(&d->lock);
- if (d->status & IRQ_TYPE_EDGE_RISING)
+ type = irqd_get_trigger_type(idata);
+ if (type & IRQ_TYPE_EDGE_RISING)
bytes[byte] |= BIT(off + 1);
- if (d->status & IRQ_TYPE_EDGE_FALLING)
+ if (type & IRQ_TYPE_EDGE_FALLING)
bytes[byte] |= BIT(off + 0);
- raw_spin_unlock_irq(&d->lock);
edge_change &= ~BIT(i);
}
@@ -626,21 +604,13 @@ static void twl4030_sih_unmask(struct ir
static int twl4030_sih_set_type(struct irq_data *data, unsigned trigger)
{
struct sih_agent *sih = irq_data_get_irq_chip_data(data);
- struct irq_desc *desc = irq_to_desc(data->irq);
unsigned long flags;
- if (!desc) {
- pr_err("twl4030: Invalid IRQ: %d\n", data->irq);
- return -EINVAL;
- }
-
if (trigger & ~(IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING))
return -EINVAL;
spin_lock_irqsave(&sih_agent_lock, flags);
- if ((desc->status & IRQ_TYPE_SENSE_MASK) != trigger) {
- desc->status &= ~IRQ_TYPE_SENSE_MASK;
- desc->status |= trigger;
+ if (irqd_get_trigger_type(data) != trigger) {
sih->edge_change |= BIT(data->irq - sih->irq_base);
queue_work(wq, &sih->edge_work);
}
^ permalink raw reply [flat|nested] 14+ messages in thread
* [patch 09/10] mfd: Cleanup irq namespace
2011-03-25 11:12 [patch 00/10] mfd: irq cleanup and namespace conversion Thomas Gleixner
` (7 preceding siblings ...)
2011-03-25 11:12 ` [patch 08/10] mfd: twl6030: " Thomas Gleixner
@ 2011-03-25 11:12 ` Thomas Gleixner
2011-03-25 12:08 ` Mark Brown
2011-03-25 11:12 ` [patch 10/10] mfd: Fold irq_set_chip/irq_set_handler Thomas Gleixner
9 siblings, 1 reply; 14+ messages in thread
From: Thomas Gleixner @ 2011-03-25 11:12 UTC (permalink / raw)
To: LKML; +Cc: Andrew Morton, Samuel Ortiz
[-- Attachment #1: mfd-namespace.patch --]
[-- Type: text/plain, Size: 26384 bytes --]
Converted with coccinelle.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/mfd/88pm860x-core.c | 8 ++++----
drivers/mfd/ab3550-core.c | 12 ++++++------
drivers/mfd/ab8500-core.c | 12 ++++++------
drivers/mfd/asic3.c | 22 +++++++++++-----------
drivers/mfd/ezx-pcap.c | 20 ++++++++++----------
drivers/mfd/htc-egpio.c | 18 +++++++++---------
drivers/mfd/htc-i2cpld.c | 8 ++++----
drivers/mfd/jz4740-adc.c | 16 ++++++++--------
drivers/mfd/max8925-core.c | 8 ++++----
drivers/mfd/max8998-irq.c | 8 ++++----
drivers/mfd/max8998.c | 4 ++--
drivers/mfd/stmpe.c | 12 ++++++------
drivers/mfd/t7l66xb.c | 22 +++++++++++-----------
drivers/mfd/tc3589x.c | 12 ++++++------
drivers/mfd/tc6393xb.c | 22 +++++++++++-----------
drivers/mfd/tps6586x.c | 6 +++---
drivers/mfd/twl4030-irq.c | 20 ++++++++++----------
drivers/mfd/twl6030-irq.c | 8 ++++----
drivers/mfd/wm831x-irq.c | 8 ++++----
drivers/mfd/wm8350-irq.c | 8 ++++----
drivers/mfd/wm8994-irq.c | 8 ++++----
21 files changed, 131 insertions(+), 131 deletions(-)
Index: linux-2.6-tip/drivers/mfd/88pm860x-core.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/88pm860x-core.c
+++ linux-2.6-tip/drivers/mfd/88pm860x-core.c
@@ -562,14 +562,14 @@ static int __devinit device_irq_init(str
/* register IRQ by genirq */
for (i = 0; i < ARRAY_SIZE(pm860x_irqs); i++) {
__irq = i + chip->irq_base;
- set_irq_chip_data(__irq, chip);
- set_irq_chip_and_handler(__irq, &pm860x_irq_chip,
+ irq_set_chip_data(__irq, chip);
+ irq_set_chip_and_handler(__irq, &pm860x_irq_chip,
handle_edge_irq);
- set_irq_nested_thread(__irq, 1);
+ irq_set_nested_thread(__irq, 1);
#ifdef CONFIG_ARM
set_irq_flags(__irq, IRQF_VALID);
#else
- set_irq_noprobe(__irq);
+ irq_set_noprobe(__irq);
#endif
}
Index: linux-2.6-tip/drivers/mfd/ab3550-core.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/ab3550-core.c
+++ linux-2.6-tip/drivers/mfd/ab3550-core.c
@@ -668,7 +668,7 @@ static int ab3550_startup_irq_enabled(st
struct ab3550_platform_data *plf_data;
bool val;
- ab = get_irq_chip_data(irq);
+ ab = irq_get_chip_data(irq);
plf_data = ab->i2c_client[0]->dev.platform_data;
irq -= plf_data->irq.base;
val = ((ab->startup_events[irq / 8] & BIT(irq % 8)) != 0);
@@ -1296,14 +1296,14 @@ static int __init ab3550_probe(struct i2
unsigned int irq;
irq = ab3550_plf_data->irq.base + i;
- set_irq_chip_data(irq, ab);
- set_irq_chip_and_handler(irq, &ab3550_irq_chip,
- handle_simple_irq);
- set_irq_nested_thread(irq, 1);
+ irq_set_chip_data(irq, ab);
+ irq_set_chip_and_handler(irq, &ab3550_irq_chip,
+ handle_simple_irq);
+ irq_set_nested_thread(irq, 1);
#ifdef CONFIG_ARM
set_irq_flags(irq, IRQF_VALID);
#else
- set_irq_noprobe(irq);
+ irq_set_noprobe(irq);
#endif
}
Index: linux-2.6-tip/drivers/mfd/ab8500-core.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/ab8500-core.c
+++ linux-2.6-tip/drivers/mfd/ab8500-core.c
@@ -333,14 +333,14 @@ static int ab8500_irq_init(struct ab8500
int irq;
for (irq = base; irq < base + AB8500_NR_IRQS; irq++) {
- set_irq_chip_data(irq, ab8500);
- set_irq_chip_and_handler(irq, &ab8500_irq_chip,
+ irq_set_chip_data(irq, ab8500);
+ irq_set_chip_and_handler(irq, &ab8500_irq_chip,
handle_simple_irq);
- set_irq_nested_thread(irq, 1);
+ irq_set_nested_thread(irq, 1);
#ifdef CONFIG_ARM
set_irq_flags(irq, IRQF_VALID);
#else
- set_irq_noprobe(irq);
+ irq_set_noprobe(irq);
#endif
}
@@ -356,8 +356,8 @@ static void ab8500_irq_remove(struct ab8
#ifdef CONFIG_ARM
set_irq_flags(irq, 0);
#endif
- set_irq_chip_and_handler(irq, NULL, NULL);
- set_irq_chip_data(irq, NULL);
+ irq_set_chip_and_handler(irq, NULL, NULL);
+ irq_set_chip_data(irq, NULL);
}
}
Index: linux-2.6-tip/drivers/mfd/asic3.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/asic3.c
+++ linux-2.6-tip/drivers/mfd/asic3.c
@@ -388,21 +388,21 @@ static int __init asic3_irq_probe(struct
for (irq = irq_base; irq < irq_base + ASIC3_NR_IRQS; irq++) {
if (irq < asic->irq_base + ASIC3_NUM_GPIOS)
- set_irq_chip(irq, &asic3_gpio_irq_chip);
+ irq_set_chip(irq, &asic3_gpio_irq_chip);
else
- set_irq_chip(irq, &asic3_irq_chip);
+ irq_set_chip(irq, &asic3_irq_chip);
- set_irq_chip_data(irq, asic);
- set_irq_handler(irq, handle_level_irq);
+ irq_set_chip_data(irq, asic);
+ irq_set_handler(irq, handle_level_irq);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
}
asic3_write_register(asic, ASIC3_OFFSET(INTR, INT_MASK),
ASIC3_INTMASK_GINTMASK);
- set_irq_chained_handler(asic->irq_nr, asic3_irq_demux);
- set_irq_type(asic->irq_nr, IRQ_TYPE_EDGE_RISING);
- set_irq_data(asic->irq_nr, asic);
+ irq_set_chained_handler(asic->irq_nr, asic3_irq_demux);
+ irq_set_irq_type(asic->irq_nr, IRQ_TYPE_EDGE_RISING);
+ irq_set_handler_data(asic->irq_nr, asic);
return 0;
}
@@ -416,11 +416,11 @@ static void asic3_irq_remove(struct plat
for (irq = irq_base; irq < irq_base + ASIC3_NR_IRQS; irq++) {
set_irq_flags(irq, 0);
- set_irq_handler(irq, NULL);
- set_irq_chip(irq, NULL);
- set_irq_chip_data(irq, NULL);
+ irq_set_handler(irq, NULL);
+ irq_set_chip(irq, NULL);
+ irq_set_chip_data(irq, NULL);
}
- set_irq_chained_handler(asic->irq_nr, NULL);
+ irq_set_chained_handler(asic->irq_nr, NULL);
}
/* GPIOs */
Index: linux-2.6-tip/drivers/mfd/ezx-pcap.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/ezx-pcap.c
+++ linux-2.6-tip/drivers/mfd/ezx-pcap.c
@@ -207,7 +207,7 @@ static void pcap_isr_work(struct work_st
static void pcap_irq_handler(unsigned int irq, struct irq_desc *desc)
{
- struct pcap_chip *pcap = get_irq_data(irq);
+ struct pcap_chip *pcap = irq_get_handler_data(irq);
desc->irq_data.chip->irq_ack(&desc->irq_data);
queue_work(pcap->workqueue, &pcap->isr_work);
@@ -411,7 +411,7 @@ static int __devexit ezx_pcap_remove(str
/* cleanup irqchip */
for (i = pcap->irq_base; i < (pcap->irq_base + PCAP_NIRQS); i++)
- set_irq_chip_and_handler(i, NULL, NULL);
+ irq_set_chip_and_handler(i, NULL, NULL);
destroy_workqueue(pcap->workqueue);
@@ -468,12 +468,12 @@ static int __devinit ezx_pcap_probe(stru
/* setup irq chip */
for (i = pcap->irq_base; i < (pcap->irq_base + PCAP_NIRQS); i++) {
- set_irq_chip_and_handler(i, &pcap_irq_chip, handle_simple_irq);
- set_irq_chip_data(i, pcap);
+ irq_set_chip_and_handler(i, &pcap_irq_chip, handle_simple_irq);
+ irq_set_chip_data(i, pcap);
#ifdef CONFIG_ARM
set_irq_flags(i, IRQF_VALID);
#else
- set_irq_noprobe(i);
+ irq_set_noprobe(i);
#endif
}
@@ -482,10 +482,10 @@ static int __devinit ezx_pcap_probe(stru
ezx_pcap_write(pcap, PCAP_REG_ISR, PCAP_CLEAR_INTERRUPT_REGISTER);
pcap->msr = PCAP_MASK_ALL_INTERRUPT;
- set_irq_type(spi->irq, IRQ_TYPE_EDGE_RISING);
- set_irq_data(spi->irq, pcap);
- set_irq_chained_handler(spi->irq, pcap_irq_handler);
- set_irq_wake(spi->irq, 1);
+ irq_set_irq_type(spi->irq, IRQ_TYPE_EDGE_RISING);
+ irq_set_handler_data(spi->irq, pcap);
+ irq_set_chained_handler(spi->irq, pcap_irq_handler);
+ irq_set_irq_wake(spi->irq, 1);
/* ADC */
adc_irq = pcap_to_irq(pcap, (pdata->config & PCAP_SECOND_PORT) ?
@@ -514,7 +514,7 @@ remove_subdevs:
free_irq(adc_irq, pcap);
free_irqchip:
for (i = pcap->irq_base; i < (pcap->irq_base + PCAP_NIRQS); i++)
- set_irq_chip_and_handler(i, NULL, NULL);
+ irq_set_chip_and_handler(i, NULL, NULL);
/* destroy_workqueue: */
destroy_workqueue(pcap->workqueue);
free_pcap:
Index: linux-2.6-tip/drivers/mfd/htc-egpio.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/htc-egpio.c
+++ linux-2.6-tip/drivers/mfd/htc-egpio.c
@@ -344,14 +344,14 @@ static int __init egpio_probe(struct pla
ei->ack_write = 0;
irq_end = ei->irq_start + ei->nirqs;
for (irq = ei->irq_start; irq < irq_end; irq++) {
- set_irq_chip(irq, &egpio_muxed_chip);
- set_irq_chip_data(irq, ei);
- set_irq_handler(irq, handle_simple_irq);
+ irq_set_chip(irq, &egpio_muxed_chip);
+ irq_set_chip_data(irq, ei);
+ irq_set_handler(irq, handle_simple_irq);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
}
- set_irq_type(ei->chained_irq, IRQ_TYPE_EDGE_RISING);
- set_irq_data(ei->chained_irq, ei);
- set_irq_chained_handler(ei->chained_irq, egpio_handler);
+ irq_set_irq_type(ei->chained_irq, IRQ_TYPE_EDGE_RISING);
+ irq_set_handler_data(ei->chained_irq, ei);
+ irq_set_chained_handler(ei->chained_irq, egpio_handler);
ack_irqs(ei);
device_init_wakeup(&pdev->dev, 1);
@@ -373,11 +373,11 @@ static int __exit egpio_remove(struct pl
if (ei->chained_irq) {
irq_end = ei->irq_start + ei->nirqs;
for (irq = ei->irq_start; irq < irq_end; irq++) {
- set_irq_chip(irq, NULL);
- set_irq_handler(irq, NULL);
+ irq_set_chip(irq, NULL);
+ irq_set_handler(irq, NULL);
set_irq_flags(irq, 0);
}
- set_irq_chained_handler(ei->chained_irq, NULL);
+ irq_set_chained_handler(ei->chained_irq, NULL);
device_init_wakeup(&pdev->dev, 0);
}
iounmap(ei->base_addr);
Index: linux-2.6-tip/drivers/mfd/htc-i2cpld.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/htc-i2cpld.c
+++ linux-2.6-tip/drivers/mfd/htc-i2cpld.c
@@ -348,13 +348,13 @@ static int __devinit htcpld_setup_chip_i
/* Setup irq handlers */
irq_end = chip->irq_start + chip->nirqs;
for (irq = chip->irq_start; irq < irq_end; irq++) {
- set_irq_chip(irq, &htcpld_muxed_chip);
- set_irq_chip_data(irq, chip);
- set_irq_handler(irq, handle_simple_irq);
+ irq_set_chip(irq, &htcpld_muxed_chip);
+ irq_set_chip_data(irq, chip);
+ irq_set_handler(irq, handle_simple_irq);
#ifdef CONFIG_ARM
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
#else
- set_irq_probe(irq);
+ irq_set_probe(irq);
#endif
}
Index: linux-2.6-tip/drivers/mfd/jz4740-adc.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/jz4740-adc.c
+++ linux-2.6-tip/drivers/mfd/jz4740-adc.c
@@ -112,7 +112,7 @@ static struct irq_chip jz4740_adc_irq_ch
static void jz4740_adc_irq_demux(unsigned int irq, struct irq_desc *desc)
{
- struct jz4740_adc *adc = get_irq_desc_data(desc);
+ struct jz4740_adc *adc = irq_desc_get_handler_data(desc);
uint8_t status;
unsigned int i;
@@ -314,13 +314,13 @@ static int __devinit jz4740_adc_probe(st
platform_set_drvdata(pdev, adc);
for (irq = adc->irq_base; irq < adc->irq_base + 5; ++irq) {
- set_irq_chip_data(irq, adc);
- set_irq_chip_and_handler(irq, &jz4740_adc_irq_chip,
- handle_level_irq);
+ irq_set_chip_data(irq, adc);
+ irq_set_chip_and_handler(irq, &jz4740_adc_irq_chip,
+ handle_level_irq);
}
- set_irq_data(adc->irq, adc);
- set_irq_chained_handler(adc->irq, jz4740_adc_irq_demux);
+ irq_set_handler_data(adc->irq, adc);
+ irq_set_chained_handler(adc->irq, jz4740_adc_irq_demux);
writeb(0x00, adc->base + JZ_REG_ADC_ENABLE);
writeb(0xff, adc->base + JZ_REG_ADC_CTRL);
@@ -351,8 +351,8 @@ static int __devexit jz4740_adc_remove(s
mfd_remove_devices(&pdev->dev);
- set_irq_data(adc->irq, NULL);
- set_irq_chained_handler(adc->irq, NULL);
+ irq_set_handler_data(adc->irq, NULL);
+ irq_set_chained_handler(adc->irq, NULL);
iounmap(adc->base);
release_mem_region(adc->mem->start, resource_size(adc->mem));
Index: linux-2.6-tip/drivers/mfd/max8925-core.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/max8925-core.c
+++ linux-2.6-tip/drivers/mfd/max8925-core.c
@@ -547,14 +547,14 @@ static int max8925_irq_init(struct max89
/* register with genirq */
for (i = 0; i < ARRAY_SIZE(max8925_irqs); i++) {
__irq = i + chip->irq_base;
- set_irq_chip_data(__irq, chip);
- set_irq_chip_and_handler(__irq, &max8925_irq_chip,
+ irq_set_chip_data(__irq, chip);
+ irq_set_chip_and_handler(__irq, &max8925_irq_chip,
handle_edge_irq);
- set_irq_nested_thread(__irq, 1);
+ irq_set_nested_thread(__irq, 1);
#ifdef CONFIG_ARM
set_irq_flags(__irq, IRQF_VALID);
#else
- set_irq_noprobe(__irq);
+ irq_set_noprobe(__irq);
#endif
}
if (!irq) {
Index: linux-2.6-tip/drivers/mfd/max8998-irq.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/max8998-irq.c
+++ linux-2.6-tip/drivers/mfd/max8998-irq.c
@@ -224,14 +224,14 @@ int max8998_irq_init(struct max8998_dev
/* register with genirq */
for (i = 0; i < MAX8998_IRQ_NR; i++) {
cur_irq = i + max8998->irq_base;
- set_irq_chip_data(cur_irq, max8998);
- set_irq_chip_and_handler(cur_irq, &max8998_irq_chip,
+ irq_set_chip_data(cur_irq, max8998);
+ irq_set_chip_and_handler(cur_irq, &max8998_irq_chip,
handle_edge_irq);
- set_irq_nested_thread(cur_irq, 1);
+ irq_set_nested_thread(cur_irq, 1);
#ifdef CONFIG_ARM
set_irq_flags(cur_irq, IRQF_VALID);
#else
- set_irq_noprobe(cur_irq);
+ irq_set_noprobe(cur_irq);
#endif
}
Index: linux-2.6-tip/drivers/mfd/max8998.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/max8998.c
+++ linux-2.6-tip/drivers/mfd/max8998.c
@@ -209,7 +209,7 @@ static int max8998_suspend(struct device
struct max8998_dev *max8998 = i2c_get_clientdata(i2c);
if (max8998->wakeup)
- set_irq_wake(max8998->irq, 1);
+ irq_set_irq_wake(max8998->irq, 1);
return 0;
}
@@ -219,7 +219,7 @@ static int max8998_resume(struct device
struct max8998_dev *max8998 = i2c_get_clientdata(i2c);
if (max8998->wakeup)
- set_irq_wake(max8998->irq, 0);
+ irq_set_irq_wake(max8998->irq, 0);
/*
* In LP3974, if IRQ registers are not "read & clear"
* when it's set during sleep, the interrupt becomes
Index: linux-2.6-tip/drivers/mfd/stmpe.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/stmpe.c
+++ linux-2.6-tip/drivers/mfd/stmpe.c
@@ -762,14 +762,14 @@ static int __devinit stmpe_irq_init(stru
int irq;
for (irq = base; irq < base + num_irqs; irq++) {
- set_irq_chip_data(irq, stmpe);
- set_irq_chip_and_handler(irq, &stmpe_irq_chip,
+ irq_set_chip_data(irq, stmpe);
+ irq_set_chip_and_handler(irq, &stmpe_irq_chip,
handle_edge_irq);
- set_irq_nested_thread(irq, 1);
+ irq_set_nested_thread(irq, 1);
#ifdef CONFIG_ARM
set_irq_flags(irq, IRQF_VALID);
#else
- set_irq_noprobe(irq);
+ irq_set_noprobe(irq);
#endif
}
@@ -786,8 +786,8 @@ static void stmpe_irq_remove(struct stmp
#ifdef CONFIG_ARM
set_irq_flags(irq, 0);
#endif
- set_irq_chip_and_handler(irq, NULL, NULL);
- set_irq_chip_data(irq, NULL);
+ irq_set_chip_and_handler(irq, NULL, NULL);
+ irq_set_chip_data(irq, NULL);
}
}
Index: linux-2.6-tip/drivers/mfd/t7l66xb.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/t7l66xb.c
+++ linux-2.6-tip/drivers/mfd/t7l66xb.c
@@ -186,7 +186,7 @@ static struct mfd_cell t7l66xb_cells[] =
/* Handle the T7L66XB interrupt mux */
static void t7l66xb_irq(unsigned int irq, struct irq_desc *desc)
{
- struct t7l66xb *t7l66xb = get_irq_data(irq);
+ struct t7l66xb *t7l66xb = irq_get_handler_data(irq);
unsigned int isr;
unsigned int i, irq_base;
@@ -243,17 +243,17 @@ static void t7l66xb_attach_irq(struct pl
irq_base = t7l66xb->irq_base;
for (irq = irq_base; irq < irq_base + T7L66XB_NR_IRQS; irq++) {
- set_irq_chip(irq, &t7l66xb_chip);
- set_irq_chip_data(irq, t7l66xb);
- set_irq_handler(irq, handle_level_irq);
+ irq_set_chip(irq, &t7l66xb_chip);
+ irq_set_chip_data(irq, t7l66xb);
+ irq_set_handler(irq, handle_level_irq);
#ifdef CONFIG_ARM
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
#endif
}
- set_irq_type(t7l66xb->irq, IRQ_TYPE_EDGE_FALLING);
- set_irq_data(t7l66xb->irq, t7l66xb);
- set_irq_chained_handler(t7l66xb->irq, t7l66xb_irq);
+ irq_set_irq_type(t7l66xb->irq, IRQ_TYPE_EDGE_FALLING);
+ irq_set_handler_data(t7l66xb->irq, t7l66xb);
+ irq_set_chained_handler(t7l66xb->irq, t7l66xb_irq);
}
static void t7l66xb_detach_irq(struct platform_device *dev)
@@ -263,15 +263,15 @@ static void t7l66xb_detach_irq(struct pl
irq_base = t7l66xb->irq_base;
- set_irq_chained_handler(t7l66xb->irq, NULL);
- set_irq_data(t7l66xb->irq, NULL);
+ irq_set_chained_handler(t7l66xb->irq, NULL);
+ irq_set_handler_data(t7l66xb->irq, NULL);
for (irq = irq_base; irq < irq_base + T7L66XB_NR_IRQS; irq++) {
#ifdef CONFIG_ARM
set_irq_flags(irq, 0);
#endif
- set_irq_chip(irq, NULL);
- set_irq_chip_data(irq, NULL);
+ irq_set_chip(irq, NULL);
+ irq_set_chip_data(irq, NULL);
}
}
Index: linux-2.6-tip/drivers/mfd/tc3589x.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/tc3589x.c
+++ linux-2.6-tip/drivers/mfd/tc3589x.c
@@ -192,14 +192,14 @@ static int tc3589x_irq_init(struct tc358
int irq;
for (irq = base; irq < base + TC3589x_NR_INTERNAL_IRQS; irq++) {
- set_irq_chip_data(irq, tc3589x);
- set_irq_chip_and_handler(irq, &dummy_irq_chip,
+ irq_set_chip_data(irq, tc3589x);
+ irq_set_chip_and_handler(irq, &dummy_irq_chip,
handle_edge_irq);
- set_irq_nested_thread(irq, 1);
+ irq_set_nested_thread(irq, 1);
#ifdef CONFIG_ARM
set_irq_flags(irq, IRQF_VALID);
#else
- set_irq_noprobe(irq);
+ irq_set_noprobe(irq);
#endif
}
@@ -215,8 +215,8 @@ static void tc3589x_irq_remove(struct tc
#ifdef CONFIG_ARM
set_irq_flags(irq, 0);
#endif
- set_irq_chip_and_handler(irq, NULL, NULL);
- set_irq_chip_data(irq, NULL);
+ irq_set_chip_and_handler(irq, NULL, NULL);
+ irq_set_chip_data(irq, NULL);
}
}
Index: linux-2.6-tip/drivers/mfd/tc6393xb.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/tc6393xb.c
+++ linux-2.6-tip/drivers/mfd/tc6393xb.c
@@ -513,7 +513,7 @@ static int tc6393xb_register_gpio(struct
static void
tc6393xb_irq(unsigned int irq, struct irq_desc *desc)
{
- struct tc6393xb *tc6393xb = get_irq_data(irq);
+ struct tc6393xb *tc6393xb = irq_get_handler_data(irq);
unsigned int isr;
unsigned int i, irq_base;
@@ -572,15 +572,15 @@ static void tc6393xb_attach_irq(struct p
irq_base = tc6393xb->irq_base;
for (irq = irq_base; irq < irq_base + TC6393XB_NR_IRQS; irq++) {
- set_irq_chip(irq, &tc6393xb_chip);
- set_irq_chip_data(irq, tc6393xb);
- set_irq_handler(irq, handle_edge_irq);
+ irq_set_chip(irq, &tc6393xb_chip);
+ irq_set_chip_data(irq, tc6393xb);
+ irq_set_handler(irq, handle_edge_irq);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
}
- set_irq_type(tc6393xb->irq, IRQ_TYPE_EDGE_FALLING);
- set_irq_data(tc6393xb->irq, tc6393xb);
- set_irq_chained_handler(tc6393xb->irq, tc6393xb_irq);
+ irq_set_irq_type(tc6393xb->irq, IRQ_TYPE_EDGE_FALLING);
+ irq_set_handler_data(tc6393xb->irq, tc6393xb);
+ irq_set_chained_handler(tc6393xb->irq, tc6393xb_irq);
}
static void tc6393xb_detach_irq(struct platform_device *dev)
@@ -588,15 +588,15 @@ static void tc6393xb_detach_irq(struct p
struct tc6393xb *tc6393xb = platform_get_drvdata(dev);
unsigned int irq, irq_base;
- set_irq_chained_handler(tc6393xb->irq, NULL);
- set_irq_data(tc6393xb->irq, NULL);
+ irq_set_chained_handler(tc6393xb->irq, NULL);
+ irq_set_handler_data(tc6393xb->irq, NULL);
irq_base = tc6393xb->irq_base;
for (irq = irq_base; irq < irq_base + TC6393XB_NR_IRQS; irq++) {
set_irq_flags(irq, 0);
- set_irq_chip(irq, NULL);
- set_irq_chip_data(irq, NULL);
+ irq_set_chip(irq, NULL);
+ irq_set_chip_data(irq, NULL);
}
}
Index: linux-2.6-tip/drivers/mfd/tps6586x.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/tps6586x.c
+++ linux-2.6-tip/drivers/mfd/tps6586x.c
@@ -426,10 +426,10 @@ static int __devinit tps6586x_irq_init(s
for (i = 0; i < ARRAY_SIZE(tps6586x_irqs); i++) {
int __irq = i + tps6586x->irq_base;
- set_irq_chip_data(__irq, tps6586x);
- set_irq_chip_and_handler(__irq, &tps6586x->irq_chip,
+ irq_set_chip_data(__irq, tps6586x);
+ irq_set_chip_and_handler(__irq, &tps6586x->irq_chip,
handle_simple_irq);
- set_irq_nested_thread(__irq, 1);
+ irq_set_nested_thread(__irq, 1);
#ifdef CONFIG_ARM
set_irq_flags(__irq, IRQF_VALID);
#endif
Index: linux-2.6-tip/drivers/mfd/twl4030-irq.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/twl4030-irq.c
+++ linux-2.6-tip/drivers/mfd/twl4030-irq.c
@@ -454,7 +454,7 @@ static inline void activate_irq(int irq)
set_irq_flags(irq, IRQF_VALID);
#else
/* same effect on other architectures */
- set_irq_noprobe(irq);
+ irq_set_noprobe(irq);
#endif
}
@@ -650,7 +650,7 @@ static inline int sih_read_isr(const str
*/
static void handle_twl4030_sih(unsigned irq, struct irq_desc *desc)
{
- struct sih_agent *agent = get_irq_data(irq);
+ struct sih_agent *agent = irq_get_handler_data(irq);
const struct sih *sih = agent->sih;
int isr;
@@ -724,9 +724,9 @@ int twl4030_sih_setup(int module)
for (i = 0; i < sih->bits; i++) {
irq = irq_base + i;
- set_irq_chip_and_handler(irq, &twl4030_sih_irq_chip,
- handle_edge_irq);
- set_irq_chip_data(irq, agent);
+ irq_set_chip_and_handler(irq, &twl4030_sih_irq_chip,
+ handle_edge_irq);
+ irq_set_chip_data(irq, agent);
activate_irq(irq);
}
@@ -735,8 +735,8 @@ int twl4030_sih_setup(int module)
/* replace generic PIH handler (handle_simple_irq) */
irq = sih_mod + twl4030_irq_base;
- set_irq_data(irq, agent);
- set_irq_chained_handler(irq, handle_twl4030_sih);
+ irq_set_handler_data(irq, agent);
+ irq_set_chained_handler(irq, handle_twl4030_sih);
pr_info("twl4030: %s (irq %d) chaining IRQs %d..%d\n", sih->name,
irq, irq_base, twl4030_irq_next - 1);
@@ -785,8 +785,8 @@ int twl4030_init_irq(int irq_num, unsign
twl4030_sih_irq_chip.irq_ack = dummy_irq_chip.irq_ack;
for (i = irq_base; i < irq_end; i++) {
- set_irq_chip_and_handler(i, &twl4030_irq_chip,
- handle_simple_irq);
+ irq_set_chip_and_handler(i, &twl4030_irq_chip,
+ handle_simple_irq);
activate_irq(i);
}
twl4030_irq_next = i;
@@ -826,7 +826,7 @@ fail_rqirq:
/* clean up twl4030_sih_setup */
fail:
for (i = irq_base; i < irq_end; i++)
- set_irq_chip_and_handler(i, NULL, NULL);
+ irq_set_chip_and_handler(i, NULL, NULL);
destroy_workqueue(wq);
wq = NULL;
return status;
Index: linux-2.6-tip/drivers/mfd/twl6030-irq.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/twl6030-irq.c
+++ linux-2.6-tip/drivers/mfd/twl6030-irq.c
@@ -183,7 +183,7 @@ static inline void activate_irq(int irq)
set_irq_flags(irq, IRQF_VALID);
#else
/* same effect on other architectures */
- set_irq_noprobe(irq);
+ irq_set_noprobe(irq);
#endif
}
@@ -320,8 +320,8 @@ int twl6030_init_irq(int irq_num, unsign
twl6030_irq_chip.irq_set_type = NULL;
for (i = irq_base; i < irq_end; i++) {
- set_irq_chip_and_handler(i, &twl6030_irq_chip,
- handle_simple_irq);
+ irq_set_chip_and_handler(i, &twl6030_irq_chip,
+ handle_simple_irq);
activate_irq(i);
}
@@ -350,7 +350,7 @@ fail_irq:
fail_kthread:
for (i = irq_base; i < irq_end; i++)
- set_irq_chip_and_handler(i, NULL, NULL);
+ irq_set_chip_and_handler(i, NULL, NULL);
return status;
}
Index: linux-2.6-tip/drivers/mfd/wm831x-irq.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/wm831x-irq.c
+++ linux-2.6-tip/drivers/mfd/wm831x-irq.c
@@ -535,17 +535,17 @@ int wm831x_irq_init(struct wm831x *wm831
for (cur_irq = wm831x->irq_base;
cur_irq < ARRAY_SIZE(wm831x_irqs) + wm831x->irq_base;
cur_irq++) {
- set_irq_chip_data(cur_irq, wm831x);
- set_irq_chip_and_handler(cur_irq, &wm831x_irq_chip,
+ irq_set_chip_data(cur_irq, wm831x);
+ irq_set_chip_and_handler(cur_irq, &wm831x_irq_chip,
handle_edge_irq);
- set_irq_nested_thread(cur_irq, 1);
+ irq_set_nested_thread(cur_irq, 1);
/* ARM needs us to explicitly flag the IRQ as valid
* and will set them noprobe when we do so. */
#ifdef CONFIG_ARM
set_irq_flags(cur_irq, IRQF_VALID);
#else
- set_irq_noprobe(cur_irq);
+ irq_set_noprobe(cur_irq);
#endif
}
Index: linux-2.6-tip/drivers/mfd/wm8350-irq.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/wm8350-irq.c
+++ linux-2.6-tip/drivers/mfd/wm8350-irq.c
@@ -518,17 +518,17 @@ int wm8350_irq_init(struct wm8350 *wm835
for (cur_irq = wm8350->irq_base;
cur_irq < ARRAY_SIZE(wm8350_irqs) + wm8350->irq_base;
cur_irq++) {
- set_irq_chip_data(cur_irq, wm8350);
- set_irq_chip_and_handler(cur_irq, &wm8350_irq_chip,
+ irq_set_chip_data(cur_irq, wm8350);
+ irq_set_chip_and_handler(cur_irq, &wm8350_irq_chip,
handle_edge_irq);
- set_irq_nested_thread(cur_irq, 1);
+ irq_set_nested_thread(cur_irq, 1);
/* ARM needs us to explicitly flag the IRQ as valid
* and will set them noprobe when we do so. */
#ifdef CONFIG_ARM
set_irq_flags(cur_irq, IRQF_VALID);
#else
- set_irq_noprobe(cur_irq);
+ irq_set_noprobe(cur_irq);
#endif
}
Index: linux-2.6-tip/drivers/mfd/wm8994-irq.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/wm8994-irq.c
+++ linux-2.6-tip/drivers/mfd/wm8994-irq.c
@@ -276,17 +276,17 @@ int wm8994_irq_init(struct wm8994 *wm899
for (cur_irq = wm8994->irq_base;
cur_irq < ARRAY_SIZE(wm8994_irqs) + wm8994->irq_base;
cur_irq++) {
- set_irq_chip_data(cur_irq, wm8994);
- set_irq_chip_and_handler(cur_irq, &wm8994_irq_chip,
+ irq_set_chip_data(cur_irq, wm8994);
+ irq_set_chip_and_handler(cur_irq, &wm8994_irq_chip,
handle_edge_irq);
- set_irq_nested_thread(cur_irq, 1);
+ irq_set_nested_thread(cur_irq, 1);
/* ARM needs us to explicitly flag the IRQ as valid
* and will set them noprobe when we do so. */
#ifdef CONFIG_ARM
set_irq_flags(cur_irq, IRQF_VALID);
#else
- set_irq_noprobe(cur_irq);
+ irq_set_noprobe(cur_irq);
#endif
}
^ permalink raw reply [flat|nested] 14+ messages in thread
* [patch 10/10] mfd: Fold irq_set_chip/irq_set_handler
2011-03-25 11:12 [patch 00/10] mfd: irq cleanup and namespace conversion Thomas Gleixner
` (8 preceding siblings ...)
2011-03-25 11:12 ` [patch 09/10] mfd: Cleanup irq namespace Thomas Gleixner
@ 2011-03-25 11:12 ` Thomas Gleixner
9 siblings, 0 replies; 14+ messages in thread
From: Thomas Gleixner @ 2011-03-25 11:12 UTC (permalink / raw)
To: LKML; +Cc: Andrew Morton, Samuel Ortiz
[-- Attachment #1: mfd-fold.patch --]
[-- Type: text/plain, Size: 3863 bytes --]
Use the combined irq_set_chip_and_handler() function
instead. Converted with coccinelle.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
drivers/mfd/asic3.c | 3 +--
drivers/mfd/htc-egpio.c | 7 +++----
drivers/mfd/htc-i2cpld.c | 4 ++--
drivers/mfd/t7l66xb.c | 3 +--
drivers/mfd/tc6393xb.c | 3 +--
5 files changed, 8 insertions(+), 12 deletions(-)
Index: linux-2.6-tip/drivers/mfd/asic3.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/asic3.c
+++ linux-2.6-tip/drivers/mfd/asic3.c
@@ -416,8 +416,7 @@ static void asic3_irq_remove(struct plat
for (irq = irq_base; irq < irq_base + ASIC3_NR_IRQS; irq++) {
set_irq_flags(irq, 0);
- irq_set_handler(irq, NULL);
- irq_set_chip(irq, NULL);
+ irq_set_chip_and_handler(irq, NULL, NULL);
irq_set_chip_data(irq, NULL);
}
irq_set_chained_handler(asic->irq_nr, NULL);
Index: linux-2.6-tip/drivers/mfd/htc-egpio.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/htc-egpio.c
+++ linux-2.6-tip/drivers/mfd/htc-egpio.c
@@ -344,9 +344,9 @@ static int __init egpio_probe(struct pla
ei->ack_write = 0;
irq_end = ei->irq_start + ei->nirqs;
for (irq = ei->irq_start; irq < irq_end; irq++) {
- irq_set_chip(irq, &egpio_muxed_chip);
+ irq_set_chip_and_handler(irq, &egpio_muxed_chip,
+ handle_simple_irq);
irq_set_chip_data(irq, ei);
- irq_set_handler(irq, handle_simple_irq);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
}
irq_set_irq_type(ei->chained_irq, IRQ_TYPE_EDGE_RISING);
@@ -373,8 +373,7 @@ static int __exit egpio_remove(struct pl
if (ei->chained_irq) {
irq_end = ei->irq_start + ei->nirqs;
for (irq = ei->irq_start; irq < irq_end; irq++) {
- irq_set_chip(irq, NULL);
- irq_set_handler(irq, NULL);
+ irq_set_chip_and_handler(irq, NULL, NULL);
set_irq_flags(irq, 0);
}
irq_set_chained_handler(ei->chained_irq, NULL);
Index: linux-2.6-tip/drivers/mfd/htc-i2cpld.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/htc-i2cpld.c
+++ linux-2.6-tip/drivers/mfd/htc-i2cpld.c
@@ -348,9 +348,9 @@ static int __devinit htcpld_setup_chip_i
/* Setup irq handlers */
irq_end = chip->irq_start + chip->nirqs;
for (irq = chip->irq_start; irq < irq_end; irq++) {
- irq_set_chip(irq, &htcpld_muxed_chip);
+ irq_set_chip_and_handler(irq, &htcpld_muxed_chip,
+ handle_simple_irq);
irq_set_chip_data(irq, chip);
- irq_set_handler(irq, handle_simple_irq);
#ifdef CONFIG_ARM
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
#else
Index: linux-2.6-tip/drivers/mfd/t7l66xb.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/t7l66xb.c
+++ linux-2.6-tip/drivers/mfd/t7l66xb.c
@@ -243,9 +243,8 @@ static void t7l66xb_attach_irq(struct pl
irq_base = t7l66xb->irq_base;
for (irq = irq_base; irq < irq_base + T7L66XB_NR_IRQS; irq++) {
- irq_set_chip(irq, &t7l66xb_chip);
+ irq_set_chip_and_handler(irq, &t7l66xb_chip, handle_level_irq);
irq_set_chip_data(irq, t7l66xb);
- irq_set_handler(irq, handle_level_irq);
#ifdef CONFIG_ARM
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
#endif
Index: linux-2.6-tip/drivers/mfd/tc6393xb.c
===================================================================
--- linux-2.6-tip.orig/drivers/mfd/tc6393xb.c
+++ linux-2.6-tip/drivers/mfd/tc6393xb.c
@@ -572,9 +572,8 @@ static void tc6393xb_attach_irq(struct p
irq_base = tc6393xb->irq_base;
for (irq = irq_base; irq < irq_base + TC6393XB_NR_IRQS; irq++) {
- irq_set_chip(irq, &tc6393xb_chip);
+ irq_set_chip_and_handler(irq, &tc6393xb_chip, handle_edge_irq);
irq_set_chip_data(irq, tc6393xb);
- irq_set_handler(irq, handle_edge_irq);
set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
}
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [patch 09/10] mfd: Cleanup irq namespace
2011-03-25 11:12 ` [patch 09/10] mfd: Cleanup irq namespace Thomas Gleixner
@ 2011-03-25 12:08 ` Mark Brown
2011-03-25 12:33 ` Thomas Gleixner
0 siblings, 1 reply; 14+ messages in thread
From: Mark Brown @ 2011-03-25 12:08 UTC (permalink / raw)
To: Thomas Gleixner; +Cc: LKML, Andrew Morton, Samuel Ortiz
On Fri, Mar 25, 2011 at 11:12:32AM -0000, Thomas Gleixner wrote:
> Converted with coccinelle.
>
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
but
> #ifdef CONFIG_ARM
> set_irq_flags(__irq, IRQF_VALID);
> #else
> - set_irq_noprobe(__irq);
> + irq_set_noprobe(__irq);
it looks like you also need to update the set_irq_flags() naming.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [patch 09/10] mfd: Cleanup irq namespace
2011-03-25 12:08 ` Mark Brown
@ 2011-03-25 12:33 ` Thomas Gleixner
2011-03-25 12:41 ` Mark Brown
0 siblings, 1 reply; 14+ messages in thread
From: Thomas Gleixner @ 2011-03-25 12:33 UTC (permalink / raw)
To: Mark Brown; +Cc: LKML, Andrew Morton, Samuel Ortiz
On Fri, 25 Mar 2011, Mark Brown wrote:
> On Fri, Mar 25, 2011 at 11:12:32AM -0000, Thomas Gleixner wrote:
> > Converted with coccinelle.
> >
> > Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
>
> Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
>
> but
>
> > #ifdef CONFIG_ARM
> > set_irq_flags(__irq, IRQF_VALID);
> > #else
> > - set_irq_noprobe(__irq);
> > + irq_set_noprobe(__irq);
>
> it looks like you also need to update the set_irq_flags() naming.
No, that's an ARM thing.
Thanks,
tglx
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [patch 09/10] mfd: Cleanup irq namespace
2011-03-25 12:33 ` Thomas Gleixner
@ 2011-03-25 12:41 ` Mark Brown
0 siblings, 0 replies; 14+ messages in thread
From: Mark Brown @ 2011-03-25 12:41 UTC (permalink / raw)
To: Thomas Gleixner; +Cc: LKML, Andrew Morton, Samuel Ortiz
On Fri, Mar 25, 2011 at 01:33:34PM +0100, Thomas Gleixner wrote:
> On Fri, 25 Mar 2011, Mark Brown wrote:
> > it looks like you also need to update the set_irq_flags() naming.
> No, that's an ARM thing.
It seems like if you're going through and renaming all the genirq APIs
then it'd be only sensible to also go through and do the same thing for
the ARM extensions, the new code looks less clean in the affected areas.
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2011-03-25 12:41 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-03-25 11:12 [patch 00/10] mfd: irq cleanup and namespace conversion Thomas Gleixner
2011-03-25 11:12 ` [patch 01/10] mfd: asic3: Cleanup irq handling Thomas Gleixner
2011-03-25 11:12 ` [patch 02/10] mfd: 88pm860x: Remove unused irq_desc leftovers Thomas Gleixner
2011-03-25 11:12 ` [patch 03/10] mfd: ezx-pcap: Remvove open coded irq handling Thomas Gleixner
2011-03-25 11:12 ` [patch 04/10] mfd: htc-egpio: Cleanup interrupt handling Thomas Gleixner
2011-03-25 11:12 ` [patch 05/10] mfd: htc-i2cpld: " Thomas Gleixner
2011-03-25 11:12 ` [patch 06/10] mfd: mx8925: Remove irq_desc leftovers Thomas Gleixner
2011-03-25 11:12 ` [patch 07/10] mfd: twl4030: Cleanup interrupt handling Thomas Gleixner
2011-03-25 11:12 ` [patch 08/10] mfd: twl6030: " Thomas Gleixner
2011-03-25 11:12 ` [patch 09/10] mfd: Cleanup irq namespace Thomas Gleixner
2011-03-25 12:08 ` Mark Brown
2011-03-25 12:33 ` Thomas Gleixner
2011-03-25 12:41 ` Mark Brown
2011-03-25 11:12 ` [patch 10/10] mfd: Fold irq_set_chip/irq_set_handler 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).