Skip to contentSkip to conversation

mfd: irq cleanup and namespace conversion

PATCH In review Thomas Gleixner 2 participants 14 messages Mar 25, 2011

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

cover mfd: irq cleanup and namespace conversion

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(-)
#1 lore raw

PATCH 1/10 mfd: asic3: Cleanup irq handling

Remove the open coded access to irq_desc and use the proper wrappers.

---
 drivers/mfd/asic3.c |   17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)
drivers/mfd/asic3.c +6 -11
Index: 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);
 		}
 	}
 
#2 lore raw

PATCH 2/10 mfd: 88pm860x: Remove unused irq_desc leftovers

In reply to Thomas Gleixner
---
 drivers/mfd/88pm860x-core.c |    3 ---
 1 file changed, 3 deletions(-)
drivers/mfd/88pm860x-core.c +0 -3
Index: 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;
#3 lore raw

PATCH 3/10 mfd: ezx-pcap: Remvove open coded irq handling

In reply to Thomas Gleixner

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.

---
 drivers/mfd/ezx-pcap.c |   14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)
drivers/mfd/ezx-pcap.c +3 -11
Index: 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);
#4 lore raw

PATCH 4/10 mfd: htc-egpio: Cleanup interrupt handling

In reply to Thomas Gleixner

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.

---
 drivers/mfd/htc-egpio.c |    6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)
drivers/mfd/htc-egpio.c +2 -4
Index: 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);
 	}
 }
 
#5 lore raw

PATCH 5/10 mfd: htc-i2cpld: Cleanup interrupt handling

In reply to Thomas Gleixner

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.

---
 drivers/mfd/htc-i2cpld.c |   25 +++++++------------------
 1 file changed, 7 insertions(+), 18 deletions(-)
drivers/mfd/htc-i2cpld.c +7 -18
Index: 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);
 			}
 		}
 	}
#6 lore raw

PATCH 6/10 mfd: mx8925: Remove irq_desc leftovers

In reply to Thomas Gleixner

Remove unused code.

---
 drivers/mfd/max8925-core.c |    2 --
 1 file changed, 2 deletions(-)
drivers/mfd/max8925-core.c +0 -2
Index: 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++) {
#7 lore raw

PATCH 7/10 mfd: twl4030: Cleanup interrupt handling

In reply to Thomas Gleixner

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.

---
 drivers/mfd/twl4030-irq.c |   46 ++++++++--------------------------------------
 1 file changed, 8 insertions(+), 38 deletions(-)
drivers/mfd/twl4030-irq.c +8 -38
Index: 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);
 	}
#8 lore raw

PATCH 8/10 mfd: twl6030: Cleanup interrupt handling

In reply to Thomas Gleixner

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.

---
 drivers/mfd/twl6030-irq.c |   17 +----------------
 1 file changed, 1 insertion(+), 16 deletions(-)
drivers/mfd/twl6030-irq.c +1 -16
Index: 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();
#9 lore raw

PATCH 9/10 mfd: Cleanup irq namespace

In reply to Thomas Gleixner

Converted with coccinelle.

---
 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(-)
drivers/mfd/88pm860x-core.c +4 -4
Index: 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
 	}
 
drivers/mfd/ab3550-core.c +6 -6
Index: 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
 	}
 
drivers/mfd/ab8500-core.c +6 -6
Index: 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);
 	}
 }
 
drivers/mfd/asic3.c +11 -11
Index: 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 */
drivers/mfd/ezx-pcap.c +10 -10
Index: 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:
drivers/mfd/htc-egpio.c +9 -9
Index: 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);
drivers/mfd/htc-i2cpld.c +4 -4
Index: 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
 	}
 
drivers/mfd/jz4740-adc.c +8 -8
Index: 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));
drivers/mfd/max8925-core.c +4 -4
Index: 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) {
drivers/mfd/max8998-irq.c +4 -4
Index: 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
 	}
 
drivers/mfd/max8998.c +2 -2
Index: 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
drivers/mfd/stmpe.c +6 -6
Index: 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);
 	}
 }
 
drivers/mfd/t7l66xb.c +11 -11
Index: 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);
 	}
 }
 
drivers/mfd/tc3589x.c +6 -6
Index: 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);
 	}
 }
 
drivers/mfd/tc6393xb.c +11 -11
Index: 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);
 	}
 }
 
drivers/mfd/tps6586x.c +3 -3
Index: 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
drivers/mfd/twl4030-irq.c +10 -10
Index: 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;
drivers/mfd/twl6030-irq.c +4 -4
Index: 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;
 }
 
drivers/mfd/wm831x-irq.c +4 -4
Index: 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
 	}
 
drivers/mfd/wm8350-irq.c +4 -4
Index: 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
 	}
 
drivers/mfd/wm8994-irq.c +4 -4
Index: 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
 	}
 
Acked-by on v1 9/10
#10 lore raw

Re: [patch 09/10] mfd: Cleanup irq namespace

Quoted 3 lines · Thomas Gleixner

Converted with coccinelle.

but

drivers/mfd/88pm860x-core.c static int __devinit device_irq_init(str · line 572

Quoted 5 lines

#ifdef CONFIG_ARM

drivers/mfd/88pm860x-core.c +1 -1
 		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.

#11 lore raw

Re: [patch 09/10] mfd: Cleanup irq namespace

Quoted 9 lines · Mark Brown
Quoted 3 lines · Thomas Gleixner

Converted with coccinelle.

but

Quoted 7 lines

drivers/mfd/88pm860x-core.c static int __devinit device_irq_init(str · line 572

Quoted 5 lines

#ifdef CONFIG_ARM

drivers/mfd/88pm860x-core.c +1 -1
 		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

#12 lore raw

Re: [patch 09/10] mfd: Cleanup irq namespace

Quoted 5 lines · Thomas Gleixner
Quoted 1 line · Mark Brown

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.

#13 lore raw

PATCH 10/10 mfd: Fold irq_set_chip/irq_set_handler

In reply to Thomas Gleixner

Use the combined irq_set_chip_and_handler() function instead. Converted with coccinelle.

---
 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(-)
drivers/mfd/asic3.c +1 -2
Index: 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);
drivers/mfd/htc-egpio.c +3 -4
Index: 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);
drivers/mfd/htc-i2cpld.c +2 -2
Index: 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
drivers/mfd/t7l66xb.c +1 -2
Index: 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
drivers/mfd/tc6393xb.c +1 -2
Index: 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);
 	}