diff options
42 files changed, 72 insertions, 162 deletions
diff --git a/arch/arm/common/it8152.c b/arch/arm/common/it8152.c index 5fe9588db07..2793447621c 100644 --- a/arch/arm/common/it8152.c +++ b/arch/arm/common/it8152.c @@ -66,14 +66,6 @@ static void it8152_unmask_irq(unsigned int irq)         }  } -static inline void it8152_irq(int irq) -{ -	struct irq_desc *desc; - -	desc = irq_desc + irq; -	desc_handle_irq(irq, desc); -} -  static struct irq_chip it8152_irq_chip = {  	.name		= "it8152",  	.ack		= it8152_mask_irq, @@ -128,21 +120,21 @@ void it8152_irq_demux(unsigned int irq, struct irq_desc *desc)  	       bits_pd &= ((1 << IT8152_PD_IRQ_COUNT) - 1);  	       while (bits_pd) {  		       i = __ffs(bits_pd); -		       it8152_irq(IT8152_PD_IRQ(i)); +		       generic_handle_irq(IT8152_PD_IRQ(i));  		       bits_pd &= ~(1 << i);  	       }  	       bits_lp &= ((1 << IT8152_LP_IRQ_COUNT) - 1);  	       while (bits_lp) {  		       i = __ffs(bits_lp); -		       it8152_irq(IT8152_LP_IRQ(i)); +		       generic_handle_irq(IT8152_LP_IRQ(i));  		       bits_lp &= ~(1 << i);  	       }  	       bits_ld &= ((1 << IT8152_LD_IRQ_COUNT) - 1);  	       while (bits_ld) {  		       i = __ffs(bits_ld); -		       it8152_irq(IT8152_LD_IRQ(i)); +		       generic_handle_irq(IT8152_LD_IRQ(i));  		       bits_ld &= ~(1 << i);  	       }         } diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c index 283051eaf93..8f473b7c349 100644 --- a/arch/arm/common/locomo.c +++ b/arch/arm/common/locomo.c @@ -169,7 +169,6 @@ static struct locomo_dev_info locomo_devices[] = {  static void locomo_handler(unsigned int irq, struct irq_desc *desc)  {  	int req, i; -	struct irq_desc *d;  	void __iomem *mapbase = get_irq_chip_data(irq);  	/* Acknowledge the parent IRQ */ @@ -181,10 +180,9 @@ static void locomo_handler(unsigned int irq, struct irq_desc *desc)  	if (req) {  		/* generate the next interrupt(s) */  		irq = LOCOMO_IRQ_START; -		d = irq_desc + irq; -		for (i = 0; i <= 3; i++, d++, irq++) { +		for (i = 0; i <= 3; i++, irq++) {  			if (req & (0x0100 << i)) { -				desc_handle_irq(irq, d); +				generic_handle_irq(irq);  			}  		} @@ -222,12 +220,10 @@ static struct irq_chip locomo_chip = {  static void locomo_key_handler(unsigned int irq, struct irq_desc *desc)  { -	struct irq_desc *d;  	void __iomem *mapbase = get_irq_chip_data(irq);  	if (locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC) & 0x0001) { -		d = irq_desc + LOCOMO_IRQ_KEY_START; -		desc_handle_irq(LOCOMO_IRQ_KEY_START, d); +		generic_handle_irq(LOCOMO_IRQ_KEY_START);  	}  } @@ -268,7 +264,6 @@ static struct irq_chip locomo_key_chip = {  static void locomo_gpio_handler(unsigned int irq, struct irq_desc *desc)  {  	int req, i; -	struct irq_desc *d;  	void __iomem *mapbase = get_irq_chip_data(irq);  	req = 	locomo_readl(mapbase + LOCOMO_GIR) & @@ -277,10 +272,9 @@ static void locomo_gpio_handler(unsigned int irq, struct irq_desc *desc)  	if (req) {  		irq = LOCOMO_IRQ_GPIO_START; -		d = irq_desc + LOCOMO_IRQ_GPIO_START; -		for (i = 0; i <= 15; i++, irq++, d++) { +		for (i = 0; i <= 15; i++, irq++) {  			if (req & (0x0001 << i)) { -				desc_handle_irq(irq, d); +				generic_handle_irq(irq);  			}  		}  	} @@ -361,12 +355,10 @@ static struct irq_chip locomo_gpio_chip = {  static void locomo_lt_handler(unsigned int irq, struct irq_desc *desc)  { -	struct irq_desc *d;  	void __iomem *mapbase = get_irq_chip_data(irq);  	if (locomo_readl(mapbase + LOCOMO_LTINT) & 0x0001) { -		d = irq_desc + LOCOMO_IRQ_LT_START; -		desc_handle_irq(LOCOMO_IRQ_LT_START, d); +		generic_handle_irq(LOCOMO_IRQ_LT_START);  	}  } @@ -407,17 +399,15 @@ static struct irq_chip locomo_lt_chip = {  static void locomo_spi_handler(unsigned int irq, struct irq_desc *desc)  {  	int req, i; -	struct irq_desc *d;  	void __iomem *mapbase = get_irq_chip_data(irq);  	req = locomo_readl(mapbase + LOCOMO_SPI + LOCOMO_SPIIR) & 0x000F;  	if (req) {  		irq = LOCOMO_IRQ_SPI_START; -		d = irq_desc + irq; -		for (i = 0; i <= 3; i++, irq++, d++) { +		for (i = 0; i <= 3; i++, irq++) {  			if (req & (0x0001 << i)) { -				desc_handle_irq(irq, d); +				generic_handle_irq(irq);  			}  		}  	} diff --git a/arch/arm/kernel/ecard.c b/arch/arm/kernel/ecard.c index 7a50575a8d4..60c079d8535 100644 --- a/arch/arm/kernel/ecard.c +++ b/arch/arm/kernel/ecard.c @@ -587,8 +587,7 @@ ecard_irq_handler(unsigned int irq, struct irq_desc *desc)  			pending = ecard_default_ops.irqpending(ec);  		if (pending) { -			struct irq_desc *d = irq_desc + ec->irq; -			desc_handle_irq(ec->irq, d); +			generic_handle_irq(ec->irq);  			called ++;  		}  	} @@ -622,7 +621,6 @@ ecard_irqexp_handler(unsigned int irq, struct irq_desc *desc)  		ecard_t *ec = slot_to_ecard(slot);  		if (ec->claimed) { -			struct irq_desc *d = irq_desc + ec->irq;  			/*  			 * this ugly code is so that we can operate a  			 * prioritorising system: @@ -635,7 +633,7 @@ ecard_irqexp_handler(unsigned int irq, struct irq_desc *desc)  			 * Serial cards should go in 0/1, ethernet/scsi in 2/3  			 * otherwise you will lose serial data at high speeds!  			 */ -			desc_handle_irq(ec->irq, d); +			generic_handle_irq(ec->irq);  		} else {  			printk(KERN_WARNING "card%d: interrupt from unclaimed "  			       "card???\n", slot); diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index f88efb135b7..2f3eb795fa6 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c @@ -112,18 +112,17 @@ static struct irq_desc bad_irq_desc = {  asmlinkage void __exception asm_do_IRQ(unsigned int irq, struct pt_regs *regs)  {  	struct pt_regs *old_regs = set_irq_regs(regs); -	struct irq_desc *desc = irq_desc + irq; + +	irq_enter();  	/*  	 * Some hardware gives randomly wrong interrupts.  Rather  	 * than crashing, do something sensible.  	 */  	if (irq >= NR_IRQS) -		desc = &bad_irq_desc; - -	irq_enter(); - -	desc_handle_irq(irq, desc); +		handle_bad_irq(irq, &bad_irq_desc); +	else +		generic_handle_irq(irq);  	/* AT91 specific workaround */  	irq_finish(irq); diff --git a/arch/arm/mach-at91/gpio.c b/arch/arm/mach-at91/gpio.c index 8392d5b517f..94c2f96811f 100644 --- a/arch/arm/mach-at91/gpio.c +++ b/arch/arm/mach-at91/gpio.c @@ -404,7 +404,6 @@ static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)  		}  		pin = bank->chipbase; -		gpio = &irq_desc[pin];  		while (isr) {  			if (isr & 1) { @@ -417,7 +416,7 @@ static void gpio_irq_handler(unsigned irq, struct irq_desc *desc)  					gpio_irq_mask(pin);  				}  				else -					desc_handle_irq(pin, gpio); +					generic_handle_irq(pin);  			}  			pin++;  			gpio++; diff --git a/arch/arm/mach-davinci/gpio.c b/arch/arm/mach-davinci/gpio.c index c9cb4f09b18..574cb810a50 100644 --- a/arch/arm/mach-davinci/gpio.c +++ b/arch/arm/mach-davinci/gpio.c @@ -201,7 +201,6 @@ gpio_irq_handler(unsigned irq, struct irq_desc *desc)  	desc->chip->ack(irq);  	while (1) {  		u32		status; -		struct irq_desc	*gpio;  		int		n;  		int		res; @@ -215,12 +214,10 @@ gpio_irq_handler(unsigned irq, struct irq_desc *desc)  		/* now demux them to the right lowlevel handler */  		n = (int)get_irq_data(irq); -		gpio = &irq_desc[n];  		while (status) {  			res = ffs(status);  			n += res; -			gpio += res; -			desc_handle_irq(n - 1, gpio - 1); +			generic_handle_irq(n - 1);  			status >>= res;  		}  	} diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c index f99f4366939..68ee82b4959 100644 --- a/arch/arm/mach-ep93xx/core.c +++ b/arch/arm/mach-ep93xx/core.c @@ -192,8 +192,7 @@ static void ep93xx_gpio_ab_irq_handler(unsigned int irq, struct irq_desc *desc)  	for (i = 0; i < 8; i++) {  		if (status & (1 << i)) {  			int gpio_irq = gpio_to_irq(EP93XX_GPIO_LINE_A(0)) + i; -			desc = irq_desc + gpio_irq; -			desc_handle_irq(gpio_irq, desc); +			generic_handle_irq(gpio_irq);  		}  	} @@ -202,7 +201,7 @@ static void ep93xx_gpio_ab_irq_handler(unsigned int irq, struct irq_desc *desc)  		if (status & (1 << i)) {  			int gpio_irq = gpio_to_irq(EP93XX_GPIO_LINE_B(0)) + i;  			desc = irq_desc + gpio_irq; -			desc_handle_irq(gpio_irq, desc); +			generic_handle_irq(gpio_irq);  		}  	}  } @@ -217,7 +216,7 @@ static void ep93xx_gpio_f_irq_handler(unsigned int irq, struct irq_desc *desc)  	int port_f_idx = ((irq + 1) & 7) ^ 4; /* {19..22,47..50} -> {0..7} */  	int gpio_irq = gpio_to_irq(EP93XX_GPIO_LINE_F(0)) + port_f_idx; -	desc_handle_irq(gpio_irq, irq_desc + gpio_irq); +	generic_handle_irq(gpio_irq);  }  static void ep93xx_gpio_irq_ack(unsigned int irq) diff --git a/arch/arm/mach-footbridge/isa-irq.c b/arch/arm/mach-footbridge/isa-irq.c index 7132e522c36..d5a29a0e7d9 100644 --- a/arch/arm/mach-footbridge/isa-irq.c +++ b/arch/arm/mach-footbridge/isa-irq.c @@ -94,8 +94,7 @@ isa_irq_handler(unsigned int irq, struct irq_desc *desc)  		return;  	} -	desc = irq_desc + isa_irq; -	desc_handle_irq(isa_irq, desc); +	generic_handle_irq(isa_irq);  }  static struct irqaction irq_cascade = { diff --git a/arch/arm/mach-h720x/common.c b/arch/arm/mach-h720x/common.c index b5f9741ae13..c1fa44cff38 100644 --- a/arch/arm/mach-h720x/common.c +++ b/arch/arm/mach-h720x/common.c @@ -104,14 +104,12 @@ h720x_gpio_handler(unsigned int mask, unsigned int irq,                   struct irq_desc *desc)  {  	IRQDBG("%s irq: %d\n", __func__, irq); -	desc = irq_desc + irq;  	while (mask) {  		if (mask & 1) {  			IRQDBG("handling irq %d\n", irq); -			desc_handle_irq(irq, desc); +			generic_handle_irq(irq);  		}  		irq++; -		desc++;  		mask >>= 1;  	}  } diff --git a/arch/arm/mach-h720x/cpu-h7202.c b/arch/arm/mach-h720x/cpu-h7202.c index 53e1f62f2e7..fd33a19c813 100644 --- a/arch/arm/mach-h720x/cpu-h7202.c +++ b/arch/arm/mach-h720x/cpu-h7202.c @@ -120,12 +120,10 @@ h7202_timerx_demux_handler(unsigned int irq_unused, struct irq_desc *desc)  	mask >>= 1;  	irq = IRQ_TIMER1; -	desc = irq_desc + irq;  	while (mask) {  		if (mask & 1) -			desc_handle_irq(irq, desc); +			generic_handle_irq(irq);  		irq++; -		desc++;  		mask >>= 1;  	}  } diff --git a/arch/arm/mach-imx/irq.c b/arch/arm/mach-imx/irq.c index 798f221eb3b..cbdd7d1dac9 100644 --- a/arch/arm/mach-imx/irq.c +++ b/arch/arm/mach-imx/irq.c @@ -182,14 +182,12 @@ static void  imx_gpio_handler(unsigned int mask, unsigned int irq,                   struct irq_desc *desc)  { -	desc = irq_desc + irq;  	while (mask) {  		if (mask & 1) {  			DEBUG_IRQ("handling irq %d\n", irq); -			desc_handle_irq(irq, desc); +			generic_handle_irq(irq);  		}  		irq++; -		desc++;  		mask >>= 1;  	}  } diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c index 6b99e9c258b..0c9a91d6ec8 100644 --- a/arch/arm/mach-integrator/integrator_cp.c +++ b/arch/arm/mach-integrator/integrator_cp.c @@ -217,8 +217,7 @@ sic_handle_irq(unsigned int irq, struct irq_desc *desc)  		irq += IRQ_SIC_START; -		desc = irq_desc + irq; -		desc_handle_irq(irq, desc); +		generic_handle_irq(irq);  	} while (status);  } diff --git a/arch/arm/mach-iop13xx/msi.c b/arch/arm/mach-iop13xx/msi.c index 63ef1124ca5..f34b0ed8063 100644 --- a/arch/arm/mach-iop13xx/msi.c +++ b/arch/arm/mach-iop13xx/msi.c @@ -110,8 +110,7 @@ static void iop13xx_msi_handler(unsigned int irq, struct irq_desc *desc)  		do {  			j = find_first_bit(&status, 32);  			(write_imipr[i])(1 << j); /* write back to clear bit */ -			desc = irq_desc + IRQ_IOP13XX_MSI_0 + j + (32*i); -			desc_handle_irq(IRQ_IOP13XX_MSI_0 + j + (32*i),	desc); +			generic_handle_irq(IRQ_IOP13XX_MSI_0 + j + (32*i));  			status = (read_imipr[i])();  		} while (status);  	} diff --git a/arch/arm/mach-ixp2000/core.c b/arch/arm/mach-ixp2000/core.c index a6a4f93085f..e193a34e417 100644 --- a/arch/arm/mach-ixp2000/core.c +++ b/arch/arm/mach-ixp2000/core.c @@ -311,8 +311,7 @@ static void ixp2000_GPIO_irq_handler(unsigned int irq, struct irq_desc *desc)  	for (i = 0; i <= 7; i++) {  		if (status & (1<<i)) { -			desc = irq_desc + i + IRQ_IXP2000_GPIO0; -			desc_handle_irq(i + IRQ_IXP2000_GPIO0, desc); +			generic_handle_irq(i + IRQ_IXP2000_GPIO0);  		}  	}  } @@ -404,8 +403,7 @@ static void ixp2000_err_irq_handler(unsigned int irq, struct irq_desc *desc)  	for(i = 31; i >= 0; i--) {  		if(status & (1 << i)) { -			desc = irq_desc + IRQ_IXP2000_DRAM0_MIN_ERR + i; -			desc_handle_irq(IRQ_IXP2000_DRAM0_MIN_ERR + i, desc); +			generic_handle_irq(IRQ_IXP2000_DRAM0_MIN_ERR + i);  		}  	}  } diff --git a/arch/arm/mach-ixp2000/ixdp2x00.c b/arch/arm/mach-ixp2000/ixdp2x00.c index 5a781fd9757..4c749d49024 100644 --- a/arch/arm/mach-ixp2000/ixdp2x00.c +++ b/arch/arm/mach-ixp2000/ixdp2x00.c @@ -129,10 +129,8 @@ static void ixdp2x00_irq_handler(unsigned int irq, struct irq_desc *desc)  	for(i = 0; i < board_irq_count; i++) {  		if(ex_interrupt & (1 << i))  { -			struct irq_desc *cpld_desc;  			int cpld_irq = IXP2000_BOARD_IRQ(0) + i; -			cpld_desc = irq_desc + cpld_irq; -			desc_handle_irq(cpld_irq, cpld_desc); +			generic_handle_irq(cpld_irq);  		}  	} diff --git a/arch/arm/mach-ixp2000/ixdp2x01.c b/arch/arm/mach-ixp2000/ixdp2x01.c index 78a2341dee2..b78c08d1f63 100644 --- a/arch/arm/mach-ixp2000/ixdp2x01.c +++ b/arch/arm/mach-ixp2000/ixdp2x01.c @@ -79,10 +79,8 @@ static void ixdp2x01_irq_handler(unsigned int irq, struct irq_desc *desc)  	for (i = 0; i < IXP2000_BOARD_IRQS; i++) {  		if (ex_interrupt & (1 << i)) { -			struct irq_desc *cpld_desc;  			int cpld_irq = IXP2000_BOARD_IRQ(0) + i; -			cpld_desc = irq_desc + cpld_irq; -			desc_handle_irq(cpld_irq, cpld_desc); +			generic_handle_irq(cpld_irq);  		}  	} diff --git a/arch/arm/mach-ixp23xx/core.c b/arch/arm/mach-ixp23xx/core.c index 68b4ac5b248..aa4c4420ff3 100644 --- a/arch/arm/mach-ixp23xx/core.c +++ b/arch/arm/mach-ixp23xx/core.c @@ -253,7 +253,6 @@ static void pci_handler(unsigned int irq, struct irq_desc *desc)  {  	u32 pci_interrupt;  	unsigned int irqno; -	struct irq_desc *int_desc;  	pci_interrupt = *IXP23XX_PCI_XSCALE_INT_STATUS; @@ -268,8 +267,7 @@ static void pci_handler(unsigned int irq, struct irq_desc *desc)  		BUG();  	} -	int_desc = irq_desc + irqno; -	desc_handle_irq(irqno, int_desc); +	generic_handle_irq(irqno);  	desc->chip->unmask(irq);  } diff --git a/arch/arm/mach-ixp23xx/ixdp2351.c b/arch/arm/mach-ixp23xx/ixdp2351.c index b6e0bfa44df..f1b124a709a 100644 --- a/arch/arm/mach-ixp23xx/ixdp2351.c +++ b/arch/arm/mach-ixp23xx/ixdp2351.c @@ -68,11 +68,9 @@ static void ixdp2351_inta_handler(unsigned int irq, struct irq_desc *desc)  	for (i = 0; i < IXDP2351_INTA_IRQ_NUM; i++) {  		if (ex_interrupt & (1 << i)) { -			struct irq_desc *cpld_desc;  			int cpld_irq =  				IXP23XX_MACH_IRQ(IXDP2351_INTA_IRQ_BASE + i); -			cpld_desc = irq_desc + cpld_irq; -			desc_handle_irq(cpld_irq, cpld_desc); +			generic_handle_irq(cpld_irq);  		}  	} @@ -105,11 +103,9 @@ static void ixdp2351_intb_handler(unsigned int irq, struct irq_desc *desc)  	for (i = 0; i < IXDP2351_INTB_IRQ_NUM; i++) {  		if (ex_interrupt & (1 << i)) { -			struct irq_desc *cpld_desc;  			int cpld_irq =  				IXP23XX_MACH_IRQ(IXDP2351_INTB_IRQ_BASE + i); -			cpld_desc = irq_desc + cpld_irq; -			desc_handle_irq(cpld_irq, cpld_desc); +			generic_handle_irq(cpld_irq);  		}  	} diff --git a/arch/arm/mach-lh7a40x/arch-kev7a400.c b/arch/arm/mach-lh7a40x/arch-kev7a400.c index 551b9726182..3d7bd50b909 100644 --- a/arch/arm/mach-lh7a40x/arch-kev7a400.c +++ b/arch/arm/mach-lh7a40x/arch-kev7a400.c @@ -77,7 +77,7 @@ static void kev7a400_cpld_handler (unsigned int irq, struct irq_desc *desc)  	irq = IRQ_KEV7A400_CPLD;  	for (; mask; mask >>= 1, ++irq)  		if (mask & 1) -			desc_handle_irq(irq, desc); +			generic_handle_irq(irq);  }  void __init lh7a40x_init_board_irq (void) diff --git a/arch/arm/mach-lh7a40x/arch-lpd7a40x.c b/arch/arm/mach-lh7a40x/arch-lpd7a40x.c index e373fb8e269..cb15e5d3212 100644 --- a/arch/arm/mach-lh7a40x/arch-lpd7a40x.c +++ b/arch/arm/mach-lh7a40x/arch-lpd7a40x.c @@ -214,11 +214,11 @@ static void lpd7a40x_cpld_handler (unsigned int irq, struct irq_desc *desc)  	desc->chip->ack (irq);  	if ((mask & (1<<0)) == 0)	/* WLAN */ -		IRQ_DISPATCH (IRQ_LPD7A40X_ETH_INT); +		generic_handle_irq(IRQ_LPD7A40X_ETH_INT);  #if defined (IRQ_TOUCH)  	if ((mask & (1<<1)) == 0)	/* Touch */ -		IRQ_DISPATCH (IRQ_TOUCH); +		generic_handle_irq(IRQ_TOUCH);  #endif  	desc->chip->unmask (irq); /* Level-triggered need this */ diff --git a/arch/arm/mach-lh7a40x/common.h b/arch/arm/mach-lh7a40x/common.h index 0ca20c6c83b..6ed3f6b6db7 100644 --- a/arch/arm/mach-lh7a40x/common.h +++ b/arch/arm/mach-lh7a40x/common.h @@ -15,4 +15,3 @@ extern void lh7a404_init_irq (void);  extern void lh7a40x_clcd_init (void);  extern void lh7a40x_init_board_irq (void); -#define IRQ_DISPATCH(irq) desc_handle_irq((irq),(irq_desc + irq)) diff --git a/arch/arm/mach-lh7a40x/irq-lpd7a40x.c b/arch/arm/mach-lh7a40x/irq-lpd7a40x.c index 0d5063ebda1..fd033bb4342 100644 --- a/arch/arm/mach-lh7a40x/irq-lpd7a40x.c +++ b/arch/arm/mach-lh7a40x/irq-lpd7a40x.c @@ -63,10 +63,10 @@ static void lh7a40x_cpld_handler (unsigned int irq, struct irq_desc *desc)  	desc->chip->ack (irq);  	if ((mask & 0x1) == 0)	/* WLAN */ -		IRQ_DISPATCH (IRQ_LPD7A40X_ETH_INT); +		generic_handle_irq(IRQ_LPD7A40X_ETH_INT);  	if ((mask & 0x2) == 0)	/* Touch */ -		IRQ_DISPATCH (IRQ_LPD7A400_TS); +		generic_handle_irq(IRQ_LPD7A400_TS);  	desc->chip->unmask (irq); /* Level-triggered need this */  } diff --git a/arch/arm/mach-netx/generic.c b/arch/arm/mach-netx/generic.c index 1b40483ea75..3830eca2438 100644 --- a/arch/arm/mach-netx/generic.c +++ b/arch/arm/mach-netx/generic.c @@ -77,15 +77,12 @@ netx_hif_demux_handler(unsigned int irq_unused, struct irq_desc *desc)  	stat = ((readl(NETX_DPMAS_INT_EN) &  		readl(NETX_DPMAS_INT_STAT)) >> 24) & 0x1f; -	desc = irq_desc + NETX_IRQ_HIF_CHAINED(0); -  	while (stat) {  		if (stat & 1) {  			DEBUG_IRQ("handling irq %d\n", irq); -			desc_handle_irq(irq, desc); +			generic_handle_irq(irq);  		}  		irq++; -		desc++;  		stat >>= 1;  	}  } diff --git a/arch/arm/mach-ns9xxx/board-a9m9750dev.c b/arch/arm/mach-ns9xxx/board-a9m9750dev.c index a22a608a7ab..b45bb3b802f 100644 --- a/arch/arm/mach-ns9xxx/board-a9m9750dev.c +++ b/arch/arm/mach-ns9xxx/board-a9m9750dev.c @@ -86,13 +86,10 @@ static void a9m9750dev_fpga_demux_handler(unsigned int irq,  	while (stat != 0) {  		int irqno = fls(stat) - 1; -		struct irq_desc *fpgadesc;  		stat &= ~(1 << irqno); -		fpgadesc = irq_desc + FPGA_IRQ(irqno); - -		desc_handle_irq(FPGA_IRQ(irqno), fpgadesc); +		generic_handle_irq(FPGA_IRQ(irqno));  	}  	desc->chip->unmask(irq); diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c index 213b4878710..45a01311669 100644 --- a/arch/arm/mach-omap1/board-voiceblue.c +++ b/arch/arm/mach-omap1/board-voiceblue.c @@ -21,6 +21,7 @@  #include <linux/reboot.h>  #include <linux/serial_8250.h>  #include <linux/serial_reg.h> +#include <linux/irq.h>  #include <mach/hardware.h>  #include <asm/mach-types.h> diff --git a/arch/arm/mach-omap1/fpga.c b/arch/arm/mach-omap1/fpga.c index 4449d86095f..23f2c3aeb38 100644 --- a/arch/arm/mach-omap1/fpga.c +++ b/arch/arm/mach-omap1/fpga.c @@ -86,7 +86,6 @@ static void fpga_mask_ack_irq(unsigned int irq)  void innovator_fpga_IRQ_demux(unsigned int irq, struct irq_desc *desc)  { -	struct irq_desc *d;  	u32 stat;  	int fpga_irq; @@ -99,8 +98,7 @@ void innovator_fpga_IRQ_demux(unsigned int irq, struct irq_desc *desc)  	     (fpga_irq < OMAP_FPGA_IRQ_END) && stat;  	     fpga_irq++, stat >>= 1) {  		if (stat & 1) { -			d = irq_desc + fpga_irq; -			desc_handle_irq(fpga_irq, d); +			generic_handle_irq(fpga_irq);  		}  	}  } diff --git a/arch/arm/mach-orion5x/irq.c b/arch/arm/mach-orion5x/irq.c index 2545ff9e583..15f27aa7f53 100644 --- a/arch/arm/mach-orion5x/irq.c +++ b/arch/arm/mach-orion5x/irq.c @@ -162,7 +162,7 @@ static void orion5x_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)  				polarity ^= 1 << pin;  				writel(polarity, GPIO_IN_POL);  			} -			desc_handle_irq(irq, desc); +			generic_handle_irq(irq);  		}  	}  } diff --git a/arch/arm/mach-pxa/gpio.c b/arch/arm/mach-pxa/gpio.c index 07acc1b2385..e92bec510e5 100644 --- a/arch/arm/mach-pxa/gpio.c +++ b/arch/arm/mach-pxa/gpio.c @@ -275,7 +275,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irq_desc *desc)  			loop = 1;  			n = PXA_GPIO_IRQ_BASE + bit; -			desc_handle_irq(n, irq_desc + n); +			generic_handle_irq(n);  			bit = find_next_bit(gedr, GEDR_BITS, bit + 1);  		} diff --git a/arch/arm/mach-pxa/lpd270.c b/arch/arm/mach-pxa/lpd270.c index 92728a37298..de3f67daaac 100644 --- a/arch/arm/mach-pxa/lpd270.c +++ b/arch/arm/mach-pxa/lpd270.c @@ -125,8 +125,7 @@ static void lpd270_irq_handler(unsigned int irq, struct irq_desc *desc)  		GEDR(0) = GPIO_bit(0);  /* clear useless edge notification */  		if (likely(pending)) {  			irq = LPD270_IRQ(0) + __ffs(pending); -			desc = irq_desc + irq; -			desc_handle_irq(irq, desc); +			generic_handle_irq(irq);  			pending = __raw_readw(LPD270_INT_STATUS) &  						lpd270_irq_enabled; diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c index ecbfbb9f46a..bff704354c1 100644 --- a/arch/arm/mach-pxa/lubbock.c +++ b/arch/arm/mach-pxa/lubbock.c @@ -155,8 +155,7 @@ static void lubbock_irq_handler(unsigned int irq, struct irq_desc *desc)  		GEDR(0) = GPIO_bit(0);	/* clear our parent irq */  		if (likely(pending)) {  			irq = LUBBOCK_IRQ(0) + __ffs(pending); -			desc = irq_desc + irq; -			desc_handle_irq(irq, desc); +			generic_handle_irq(irq);  		}  		pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled;  	} while (pending); diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c index a02edfd4fc0..f2c7ad8f2b6 100644 --- a/arch/arm/mach-pxa/mainstone.c +++ b/arch/arm/mach-pxa/mainstone.c @@ -162,8 +162,7 @@ static void mainstone_irq_handler(unsigned int irq, struct irq_desc *desc)  		GEDR(0) = GPIO_bit(0);  /* clear useless edge notification */  		if (likely(pending)) {  			irq = MAINSTONE_IRQ(0) + __ffs(pending); -			desc = irq_desc + irq; -			desc_handle_irq(irq, desc); +			generic_handle_irq(irq);  		}  		pending = MST_INTSETCLR & mainstone_irq_enabled;  	} while (pending); diff --git a/arch/arm/mach-pxa/pcm990-baseboard.c b/arch/arm/mach-pxa/pcm990-baseboard.c index e9efb80bb33..f601425f1b1 100644 --- a/arch/arm/mach-pxa/pcm990-baseboard.c +++ b/arch/arm/mach-pxa/pcm990-baseboard.c @@ -262,8 +262,7 @@ static void pcm990_irq_handler(unsigned int irq, struct irq_desc *desc)  					GPIO_bit(PCM990_CTRL_INT_IRQ_GPIO);  		if (likely(pending)) {  			irq = PCM027_IRQ(0) + __ffs(pending); -			desc = irq_desc + irq; -			desc_handle_irq(irq, desc); +			generic_handle_irq(irq);  		}  		pending = (~PCM990_INTSETCLR) & pcm990_irq_enabled;  	} while (pending); diff --git a/arch/arm/mach-s3c2410/bast-irq.c b/arch/arm/mach-s3c2410/bast-irq.c index c66021b5fa4..44140bd99ed 100644 --- a/arch/arm/mach-s3c2410/bast-irq.c +++ b/arch/arm/mach-s3c2410/bast-irq.c @@ -130,8 +130,7 @@ bast_irq_pc104_demux(unsigned int irq,  		for (i = 0; stat != 0; i++, stat >>= 1) {  			if (stat & 1) {  				irqno = bast_pc104_irqs[i]; -				desc = irq_desc + irqno; -				desc_handle_irq(irqno, desc); +				generic_handle_irq(irqno);  			}  		}  	} diff --git a/arch/arm/mach-s3c2412/irq.c b/arch/arm/mach-s3c2412/irq.c index ac62b79044f..72159d31966 100644 --- a/arch/arm/mach-s3c2412/irq.c +++ b/arch/arm/mach-s3c2412/irq.c @@ -123,10 +123,10 @@ static void s3c2412_irq_demux_cfsdi(unsigned int irq, struct irq_desc *desc)  	subsrc  &= ~submsk;  	if (subsrc & INTBIT(IRQ_S3C2412_SDI)) -		desc_handle_irq(IRQ_S3C2412_SDI, irq_desc + IRQ_S3C2412_SDI); +		generic_handle_irq(IRQ_S3C2412_SDI);  	if (subsrc & INTBIT(IRQ_S3C2412_CF)) -		desc_handle_irq(IRQ_S3C2412_CF, irq_desc + IRQ_S3C2412_CF); +		generic_handle_irq(IRQ_S3C2412_CF);  }  #define INTMSK_CFSDI	(1UL << (IRQ_S3C2412_CFSDI - IRQ_EINT0)) diff --git a/arch/arm/mach-s3c2440/irq.c b/arch/arm/mach-s3c2440/irq.c index 276b823f4e2..ad68b4d8835 100644 --- a/arch/arm/mach-s3c2440/irq.c +++ b/arch/arm/mach-s3c2440/irq.c @@ -44,7 +44,6 @@ static void s3c_irq_demux_wdtac97(unsigned int irq,  				  struct irq_desc *desc)  {  	unsigned int subsrc, submsk; -	struct irq_desc *mydesc;  	/* read the current pending interrupts, and the mask  	 * for what it is available */ @@ -58,12 +57,10 @@ static void s3c_irq_demux_wdtac97(unsigned int irq,  	if (subsrc != 0) {  		if (subsrc & 1) { -			mydesc = irq_desc + IRQ_S3C2440_WDT; -			desc_handle_irq(IRQ_S3C2440_WDT, mydesc); +			generic_handle_irq(IRQ_S3C2440_WDT);  		}  		if (subsrc & 2) { -			mydesc = irq_desc + IRQ_S3C2440_AC97; -			desc_handle_irq(IRQ_S3C2440_AC97, mydesc); +			generic_handle_irq(IRQ_S3C2440_AC97);  		}  	}  } diff --git a/arch/arm/mach-s3c2443/irq.c b/arch/arm/mach-s3c2443/irq.c index 9674de7223f..1570d3a6e15 100644 --- a/arch/arm/mach-s3c2443/irq.c +++ b/arch/arm/mach-s3c2443/irq.c @@ -44,7 +44,6 @@ static inline void s3c2443_irq_demux(unsigned int irq, unsigned int len)  {  	unsigned int subsrc, submsk;  	unsigned int end; -	struct irq_desc *mydesc;  	/* read the current pending interrupts, and the mask  	 * for what it is available */ @@ -57,13 +56,11 @@ static inline void s3c2443_irq_demux(unsigned int irq, unsigned int len)  	subsrc  &= (1 << len)-1;  	end = len + irq; -	mydesc = irq_desc + irq;  	for (; irq < end && subsrc; irq++) {  		if (subsrc & 1) -			desc_handle_irq(irq, mydesc); +			generic_handle_irq(irq); -		mydesc++;  		subsrc >>= 1;  	}  } diff --git a/arch/arm/mach-sa1100/irq.c b/arch/arm/mach-sa1100/irq.c index 86369a8f0ce..3093d46a9c6 100644 --- a/arch/arm/mach-sa1100/irq.c +++ b/arch/arm/mach-sa1100/irq.c @@ -122,14 +122,12 @@ sa1100_high_gpio_handler(unsigned int irq, struct irq_desc *desc)  		GEDR = mask;  		irq = IRQ_GPIO11; -		desc = irq_desc + irq;  		mask >>= 11;  		do {  			if (mask & 1) -				desc_handle_irq(irq, desc); +				generic_handle_irq(irq);  			mask >>= 1;  			irq++; -			desc++;  		} while (mask);  		mask = GEDR & 0xfffff800; diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c index 4856a6bd248..6ccd175bc4c 100644 --- a/arch/arm/mach-sa1100/neponset.c +++ b/arch/arm/mach-sa1100/neponset.c @@ -33,8 +33,6 @@ neponset_irq_handler(unsigned int irq, struct irq_desc *desc)  	unsigned int irr;  	while (1) { -		struct irq_desc *d; -  		/*  		 * Acknowledge the parent IRQ.  		 */ @@ -67,21 +65,18 @@ neponset_irq_handler(unsigned int irq, struct irq_desc *desc)  			desc->chip->ack(irq);  			if (irr & IRR_ETHERNET) { -				d = irq_desc + IRQ_NEPONSET_SMC9196; -				desc_handle_irq(IRQ_NEPONSET_SMC9196, d); +				generic_handle_irq(IRQ_NEPONSET_SMC9196);  			}  			if (irr & IRR_USAR) { -				d = irq_desc + IRQ_NEPONSET_USAR; -				desc_handle_irq(IRQ_NEPONSET_USAR, d); +				generic_handle_irq(IRQ_NEPONSET_USAR);  			}  			desc->chip->unmask(irq);  		}  		if (irr & IRR_SA1111) { -			d = irq_desc + IRQ_NEPONSET_SA1111; -			desc_handle_irq(IRQ_NEPONSET_SA1111, d); +			generic_handle_irq(IRQ_NEPONSET_SA1111);  		}  	}  } diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c index d75e795c893..c3468bf2841 100644 --- a/arch/arm/mach-versatile/core.c +++ b/arch/arm/mach-versatile/core.c @@ -95,8 +95,7 @@ sic_handle_irq(unsigned int irq, struct irq_desc *desc)  		irq += IRQ_SIC_START; -		desc = irq_desc + irq; -		desc_handle_irq(irq, desc); +		generic_handle_irq(irq);  	} while (status);  } diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index 9e1341ebc14..960040aa71f 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c @@ -1051,13 +1051,10 @@ static void gpio_irq_handler(unsigned int irq, struct irq_desc *desc)  		gpio_irq = bank->virtual_irq_start;  		for (; isr != 0; isr >>= 1, gpio_irq++) { -			struct irq_desc *d; -  			if (!(isr & 1))  				continue; -			d = irq_desc + gpio_irq; -			desc_handle_irq(gpio_irq, d); +			generic_handle_irq(gpio_irq);  		}  	}  	/* if bank has any level sensitive GPIO pin interrupt diff --git a/arch/arm/plat-s3c24xx/irq.c b/arch/arm/plat-s3c24xx/irq.c index 36cefe17683..b6c84f4f7a1 100644 --- a/arch/arm/plat-s3c24xx/irq.c +++ b/arch/arm/plat-s3c24xx/irq.c @@ -468,7 +468,6 @@ static void s3c_irq_demux_adc(unsigned int irq,  {  	unsigned int subsrc, submsk;  	unsigned int offset = 9; -	struct irq_desc *mydesc;  	/* read the current pending interrupts, and the mask  	 * for what it is available */ @@ -482,12 +481,10 @@ static void s3c_irq_demux_adc(unsigned int irq,  	if (subsrc != 0) {  		if (subsrc & 1) { -			mydesc = irq_desc + IRQ_TC; -			desc_handle_irq(IRQ_TC, mydesc); +			generic_handle_irq(IRQ_TC);  		}  		if (subsrc & 2) { -			mydesc = irq_desc + IRQ_ADC; -			desc_handle_irq(IRQ_ADC, mydesc); +			generic_handle_irq(IRQ_ADC);  		}  	}  } @@ -496,7 +493,6 @@ static void s3c_irq_demux_uart(unsigned int start)  {  	unsigned int subsrc, submsk;  	unsigned int offset = start - IRQ_S3CUART_RX0; -	struct irq_desc *desc;  	/* read the current pending interrupts, and the mask  	 * for what it is available */ @@ -512,20 +508,14 @@ static void s3c_irq_demux_uart(unsigned int start)  	subsrc &= 7;  	if (subsrc != 0) { -		desc = irq_desc + start; -  		if (subsrc & 1) -			desc_handle_irq(start, desc); - -		desc++; +			generic_handle_irq(start);  		if (subsrc & 2) -			desc_handle_irq(start+1, desc); - -		desc++; +			generic_handle_irq(start+1);  		if (subsrc & 4) -			desc_handle_irq(start+2, desc); +			generic_handle_irq(start+2);  	}  } @@ -572,7 +562,7 @@ s3c_irq_demux_extint8(unsigned int irq,  		eintpnd &= ~(1<<irq);  		irq += (IRQ_EINT4 - 4); -		desc_handle_irq(irq, irq_desc + irq); +		generic_handle_irq(irq);  	}  } @@ -595,7 +585,7 @@ s3c_irq_demux_extint4t7(unsigned int irq,  		irq += (IRQ_EINT4 - 4); -		desc_handle_irq(irq, irq_desc + irq); +		generic_handle_irq(irq);  	}  } diff --git a/arch/arm/plat-s3c24xx/s3c244x-irq.c b/arch/arm/plat-s3c24xx/s3c244x-irq.c index f3dc38cf1de..1e094fcb45a 100644 --- a/arch/arm/plat-s3c24xx/s3c244x-irq.c +++ b/arch/arm/plat-s3c24xx/s3c244x-irq.c @@ -44,7 +44,6 @@ static void s3c_irq_demux_cam(unsigned int irq,  			      struct irq_desc *desc)  {  	unsigned int subsrc, submsk; -	struct irq_desc *mydesc;  	/* read the current pending interrupts, and the mask  	 * for what it is available */ @@ -58,12 +57,10 @@ static void s3c_irq_demux_cam(unsigned int irq,  	if (subsrc != 0) {  		if (subsrc & 1) { -			mydesc = irq_desc + IRQ_S3C2440_CAM_C; -			desc_handle_irq(IRQ_S3C2440_CAM_C, mydesc); +			generic_handle_irq(IRQ_S3C2440_CAM_C);  		}  		if (subsrc & 2) { -			mydesc = irq_desc + IRQ_S3C2440_CAM_P; -			desc_handle_irq(IRQ_S3C2440_CAM_P, mydesc); +			generic_handle_irq(IRQ_S3C2440_CAM_P);  		}  	}  }  |