aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@evo.osdl.org>2005-09-05 03:17:25 -0400
committerLinus Torvalds <torvalds@evo.osdl.org>2005-09-05 03:17:25 -0400
commit64c4813d9ea0d646a0652bd9dcc5b40db6ddce69 (patch)
tree98658d9009182e79cb443cef67afbdc4bb3b8a48 /arch/arm
parentbabf68de5848f7e4b97c9c4a2d5e30598b825387 (diff)
parent664399e1fbdceb18da9c9c5534dedd62327c63e8 (diff)
Merge master.kernel.org:/home/rmk/linux-2.6-arm
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/common/locomo.c24
-rw-r--r--arch/arm/common/sa1111.c8
-rw-r--r--arch/arm/kernel/ecard.c4
-rw-r--r--arch/arm/kernel/irq.c20
-rw-r--r--arch/arm/kernel/smp.c2
-rw-r--r--arch/arm/mach-footbridge/isa-irq.c2
-rw-r--r--arch/arm/mach-h720x/common.c2
-rw-r--r--arch/arm/mach-h720x/cpu-h7202.c2
-rw-r--r--arch/arm/mach-imx/irq.c4
-rw-r--r--arch/arm/mach-integrator/integrator_cp.c2
-rw-r--r--arch/arm/mach-ixp2000/core.c10
-rw-r--r--arch/arm/mach-ixp2000/ixdp2x00.c2
-rw-r--r--arch/arm/mach-ixp2000/ixdp2x01.c2
-rw-r--r--arch/arm/mach-lh7a40x/common.h2
-rw-r--r--arch/arm/mach-omap1/fpga.c2
-rw-r--r--arch/arm/mach-pxa/irq.c12
-rw-r--r--arch/arm/mach-pxa/lubbock.c2
-rw-r--r--arch/arm/mach-pxa/mainstone.c2
-rw-r--r--arch/arm/mach-s3c2410/bast-irq.c2
-rw-r--r--arch/arm/mach-s3c2410/irq.c22
-rw-r--r--arch/arm/mach-s3c2410/pm.c6
-rw-r--r--arch/arm/mach-s3c2410/s3c2440-irq.c8
-rw-r--r--arch/arm/mach-sa1100/irq.c10
-rw-r--r--arch/arm/mach-sa1100/neponset.c6
-rw-r--r--arch/arm/mach-versatile/core.c2
-rw-r--r--arch/arm/mm/proc-arm6_7.S8
-rw-r--r--arch/arm/plat-omap/gpio.c2
27 files changed, 86 insertions, 84 deletions
diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c
index 41f12658c8b4..51f430cc2fbf 100644
--- a/arch/arm/common/locomo.c
+++ b/arch/arm/common/locomo.c
@@ -177,7 +177,7 @@ static void locomo_handler(unsigned int irq, struct irqdesc *desc,
177 d = irq_desc + irq; 177 d = irq_desc + irq;
178 for (i = 0; i <= 3; i++, d++, irq++) { 178 for (i = 0; i <= 3; i++, d++, irq++) {
179 if (req & (0x0100 << i)) { 179 if (req & (0x0100 << i)) {
180 d->handle(irq, d, regs); 180 desc_handle_irq(irq, d, regs);
181 } 181 }
182 182
183 } 183 }
@@ -220,7 +220,7 @@ static void locomo_key_handler(unsigned int irq, struct irqdesc *desc,
220 220
221 if (locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC) & 0x0001) { 221 if (locomo_readl(mapbase + LOCOMO_KEYBOARD + LOCOMO_KIC) & 0x0001) {
222 d = irq_desc + LOCOMO_IRQ_KEY_START; 222 d = irq_desc + LOCOMO_IRQ_KEY_START;
223 d->handle(LOCOMO_IRQ_KEY_START, d, regs); 223 desc_handle_irq(LOCOMO_IRQ_KEY_START, d, regs);
224 } 224 }
225} 225}
226 226
@@ -273,7 +273,7 @@ static void locomo_gpio_handler(unsigned int irq, struct irqdesc *desc,
273 d = irq_desc + LOCOMO_IRQ_GPIO_START; 273 d = irq_desc + LOCOMO_IRQ_GPIO_START;
274 for (i = 0; i <= 15; i++, irq++, d++) { 274 for (i = 0; i <= 15; i++, irq++, d++) {
275 if (req & (0x0001 << i)) { 275 if (req & (0x0001 << i)) {
276 d->handle(irq, d, regs); 276 desc_handle_irq(irq, d, regs);
277 } 277 }
278 } 278 }
279 } 279 }
@@ -328,7 +328,7 @@ static void locomo_lt_handler(unsigned int irq, struct irqdesc *desc,
328 328
329 if (locomo_readl(mapbase + LOCOMO_LTINT) & 0x0001) { 329 if (locomo_readl(mapbase + LOCOMO_LTINT) & 0x0001) {
330 d = irq_desc + LOCOMO_IRQ_LT_START; 330 d = irq_desc + LOCOMO_IRQ_LT_START;
331 d->handle(LOCOMO_IRQ_LT_START, d, regs); 331 desc_handle_irq(LOCOMO_IRQ_LT_START, d, regs);
332 } 332 }
333} 333}
334 334
@@ -379,7 +379,7 @@ static void locomo_spi_handler(unsigned int irq, struct irqdesc *desc,
379 379
380 for (i = 0; i <= 3; i++, irq++, d++) { 380 for (i = 0; i <= 3; i++, irq++, d++) {
381 if (req & (0x0001 << i)) { 381 if (req & (0x0001 << i)) {
382 d->handle(irq, d, regs); 382 desc_handle_irq(irq, d, regs);
383 } 383 }
384 } 384 }
385 } 385 }
@@ -651,15 +651,15 @@ __locomo_probe(struct device *me, struct resource *mem, int irq)
651 return ret; 651 return ret;
652} 652}
653 653
654static void __locomo_remove(struct locomo *lchip) 654static int locomo_remove_child(struct device *dev, void *data)
655{ 655{
656 struct list_head *l, *n; 656 device_unregister(dev);
657 657 return 0;
658 list_for_each_safe(l, n, &lchip->dev->children) { 658}
659 struct device *d = list_to_dev(l);
660 659
661 device_unregister(d); 660static void __locomo_remove(struct locomo *lchip)
662 } 661{
662 device_for_each_child(lchip->dev, NULL, locomo_remove_child);
663 663
664 if (lchip->irq != NO_IRQ) { 664 if (lchip->irq != NO_IRQ) {
665 set_irq_chained_handler(lchip->irq, NULL); 665 set_irq_chained_handler(lchip->irq, NULL);
diff --git a/arch/arm/common/sa1111.c b/arch/arm/common/sa1111.c
index 38c2eb667eb9..1a47fbf9cbbc 100644
--- a/arch/arm/common/sa1111.c
+++ b/arch/arm/common/sa1111.c
@@ -268,8 +268,8 @@ static struct irqchip sa1111_low_chip = {
268 .mask = sa1111_mask_lowirq, 268 .mask = sa1111_mask_lowirq,
269 .unmask = sa1111_unmask_lowirq, 269 .unmask = sa1111_unmask_lowirq,
270 .retrigger = sa1111_retrigger_lowirq, 270 .retrigger = sa1111_retrigger_lowirq,
271 .type = sa1111_type_lowirq, 271 .set_type = sa1111_type_lowirq,
272 .wake = sa1111_wake_lowirq, 272 .set_wake = sa1111_wake_lowirq,
273}; 273};
274 274
275static void sa1111_mask_highirq(unsigned int irq) 275static void sa1111_mask_highirq(unsigned int irq)
@@ -364,8 +364,8 @@ static struct irqchip sa1111_high_chip = {
364 .mask = sa1111_mask_highirq, 364 .mask = sa1111_mask_highirq,
365 .unmask = sa1111_unmask_highirq, 365 .unmask = sa1111_unmask_highirq,
366 .retrigger = sa1111_retrigger_highirq, 366 .retrigger = sa1111_retrigger_highirq,
367 .type = sa1111_type_highirq, 367 .set_type = sa1111_type_highirq,
368 .wake = sa1111_wake_highirq, 368 .set_wake = sa1111_wake_highirq,
369}; 369};
370 370
371static void sa1111_setup_irq(struct sa1111 *sachip) 371static void sa1111_setup_irq(struct sa1111 *sachip)
diff --git a/arch/arm/kernel/ecard.c b/arch/arm/kernel/ecard.c
index 6540db691338..dceb826bd216 100644
--- a/arch/arm/kernel/ecard.c
+++ b/arch/arm/kernel/ecard.c
@@ -585,7 +585,7 @@ ecard_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
585 585
586 if (pending) { 586 if (pending) {
587 struct irqdesc *d = irq_desc + ec->irq; 587 struct irqdesc *d = irq_desc + ec->irq;
588 d->handle(ec->irq, d, regs); 588 desc_handle_irq(ec->irq, d, regs);
589 called ++; 589 called ++;
590 } 590 }
591 } 591 }
@@ -632,7 +632,7 @@ ecard_irqexp_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *reg
632 * Serial cards should go in 0/1, ethernet/scsi in 2/3 632 * Serial cards should go in 0/1, ethernet/scsi in 2/3
633 * otherwise you will lose serial data at high speeds! 633 * otherwise you will lose serial data at high speeds!
634 */ 634 */
635 d->handle(ec->irq, d, regs); 635 desc_handle_irq(ec->irq, d, regs);
636 } else { 636 } else {
637 printk(KERN_WARNING "card%d: interrupt from unclaimed " 637 printk(KERN_WARNING "card%d: interrupt from unclaimed "
638 "card???\n", slot); 638 "card???\n", slot);
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c
index 395137a8fad2..3284118f356b 100644
--- a/arch/arm/kernel/irq.c
+++ b/arch/arm/kernel/irq.c
@@ -207,8 +207,8 @@ void enable_irq_wake(unsigned int irq)
207 unsigned long flags; 207 unsigned long flags;
208 208
209 spin_lock_irqsave(&irq_controller_lock, flags); 209 spin_lock_irqsave(&irq_controller_lock, flags);
210 if (desc->chip->wake) 210 if (desc->chip->set_wake)
211 desc->chip->wake(irq, 1); 211 desc->chip->set_wake(irq, 1);
212 spin_unlock_irqrestore(&irq_controller_lock, flags); 212 spin_unlock_irqrestore(&irq_controller_lock, flags);
213} 213}
214EXPORT_SYMBOL(enable_irq_wake); 214EXPORT_SYMBOL(enable_irq_wake);
@@ -219,8 +219,8 @@ void disable_irq_wake(unsigned int irq)
219 unsigned long flags; 219 unsigned long flags;
220 220
221 spin_lock_irqsave(&irq_controller_lock, flags); 221 spin_lock_irqsave(&irq_controller_lock, flags);
222 if (desc->chip->wake) 222 if (desc->chip->set_wake)
223 desc->chip->wake(irq, 0); 223 desc->chip->set_wake(irq, 0);
224 spin_unlock_irqrestore(&irq_controller_lock, flags); 224 spin_unlock_irqrestore(&irq_controller_lock, flags);
225} 225}
226EXPORT_SYMBOL(disable_irq_wake); 226EXPORT_SYMBOL(disable_irq_wake);
@@ -517,7 +517,7 @@ static void do_pending_irqs(struct pt_regs *regs)
517 list_for_each_safe(l, n, &head) { 517 list_for_each_safe(l, n, &head) {
518 desc = list_entry(l, struct irqdesc, pend); 518 desc = list_entry(l, struct irqdesc, pend);
519 list_del_init(&desc->pend); 519 list_del_init(&desc->pend);
520 desc->handle(desc - irq_desc, desc, regs); 520 desc_handle_irq(desc - irq_desc, desc, regs);
521 } 521 }
522 522
523 /* 523 /*
@@ -545,7 +545,7 @@ asmlinkage void asm_do_IRQ(unsigned int irq, struct pt_regs *regs)
545 545
546 irq_enter(); 546 irq_enter();
547 spin_lock(&irq_controller_lock); 547 spin_lock(&irq_controller_lock);
548 desc->handle(irq, desc, regs); 548 desc_handle_irq(irq, desc, regs);
549 549
550 /* 550 /*
551 * Now re-run any pending interrupts. 551 * Now re-run any pending interrupts.
@@ -624,9 +624,9 @@ int set_irq_type(unsigned int irq, unsigned int type)
624 } 624 }
625 625
626 desc = irq_desc + irq; 626 desc = irq_desc + irq;
627 if (desc->chip->type) { 627 if (desc->chip->set_type) {
628 spin_lock_irqsave(&irq_controller_lock, flags); 628 spin_lock_irqsave(&irq_controller_lock, flags);
629 ret = desc->chip->type(irq, type); 629 ret = desc->chip->set_type(irq, type);
630 spin_unlock_irqrestore(&irq_controller_lock, flags); 630 spin_unlock_irqrestore(&irq_controller_lock, flags);
631 } 631 }
632 632
@@ -846,8 +846,8 @@ unsigned long probe_irq_on(void)
846 846
847 irq_desc[i].probing = 1; 847 irq_desc[i].probing = 1;
848 irq_desc[i].triggered = 0; 848 irq_desc[i].triggered = 0;
849 if (irq_desc[i].chip->type) 849 if (irq_desc[i].chip->set_type)
850 irq_desc[i].chip->type(i, IRQT_PROBE); 850 irq_desc[i].chip->set_type(i, IRQT_PROBE);
851 irq_desc[i].chip->unmask(i); 851 irq_desc[i].chip->unmask(i);
852 irqs += 1; 852 irqs += 1;
853 } 853 }
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
index b2085735a2ba..826164945747 100644
--- a/arch/arm/kernel/smp.c
+++ b/arch/arm/kernel/smp.c
@@ -110,7 +110,7 @@ int __cpuinit __cpu_up(unsigned int cpu)
110 * We need to tell the secondary core where to find 110 * We need to tell the secondary core where to find
111 * its stack and the page tables. 111 * its stack and the page tables.
112 */ 112 */
113 secondary_data.stack = (void *)idle->thread_info + THREAD_SIZE - 8; 113 secondary_data.stack = (void *)idle->thread_info + THREAD_START_SP;
114 secondary_data.pgdir = virt_to_phys(pgd); 114 secondary_data.pgdir = virt_to_phys(pgd);
115 wmb(); 115 wmb();
116 116
diff --git a/arch/arm/mach-footbridge/isa-irq.c b/arch/arm/mach-footbridge/isa-irq.c
index b21016070ea3..e1c43b331d64 100644
--- a/arch/arm/mach-footbridge/isa-irq.c
+++ b/arch/arm/mach-footbridge/isa-irq.c
@@ -95,7 +95,7 @@ isa_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
95 } 95 }
96 96
97 desc = irq_desc + isa_irq; 97 desc = irq_desc + isa_irq;
98 desc->handle(isa_irq, desc, regs); 98 desc_handle_irq(isa_irq, desc, regs);
99} 99}
100 100
101static struct irqaction irq_cascade = { .handler = no_action, .name = "cascade", }; 101static struct irqaction irq_cascade = { .handler = no_action, .name = "cascade", };
diff --git a/arch/arm/mach-h720x/common.c b/arch/arm/mach-h720x/common.c
index 96aa3af70d86..5110e2e65ddd 100644
--- a/arch/arm/mach-h720x/common.c
+++ b/arch/arm/mach-h720x/common.c
@@ -108,7 +108,7 @@ h720x_gpio_handler(unsigned int mask, unsigned int irq,
108 while (mask) { 108 while (mask) {
109 if (mask & 1) { 109 if (mask & 1) {
110 IRQDBG("handling irq %d\n", irq); 110 IRQDBG("handling irq %d\n", irq);
111 desc->handle(irq, desc, regs); 111 desc_handle_irq(irq, desc, regs);
112 } 112 }
113 irq++; 113 irq++;
114 desc++; 114 desc++;
diff --git a/arch/arm/mach-h720x/cpu-h7202.c b/arch/arm/mach-h720x/cpu-h7202.c
index 593b6a2a30e1..4b3199319e68 100644
--- a/arch/arm/mach-h720x/cpu-h7202.c
+++ b/arch/arm/mach-h720x/cpu-h7202.c
@@ -126,7 +126,7 @@ h7202_timerx_demux_handler(unsigned int irq_unused, struct irqdesc *desc,
126 desc = irq_desc + irq; 126 desc = irq_desc + irq;
127 while (mask) { 127 while (mask) {
128 if (mask & 1) 128 if (mask & 1)
129 desc->handle(irq, desc, regs); 129 desc_handle_irq(irq, desc, regs);
130 irq++; 130 irq++;
131 desc++; 131 desc++;
132 mask >>= 1; 132 mask >>= 1;
diff --git a/arch/arm/mach-imx/irq.c b/arch/arm/mach-imx/irq.c
index 0c2713426dfd..eeb8a6d4a399 100644
--- a/arch/arm/mach-imx/irq.c
+++ b/arch/arm/mach-imx/irq.c
@@ -152,7 +152,7 @@ imx_gpio_handler(unsigned int mask, unsigned int irq,
152 while (mask) { 152 while (mask) {
153 if (mask & 1) { 153 if (mask & 1) {
154 DEBUG_IRQ("handling irq %d\n", irq); 154 DEBUG_IRQ("handling irq %d\n", irq);
155 desc->handle(irq, desc, regs); 155 desc_handle_irq(irq, desc, regs);
156 } 156 }
157 irq++; 157 irq++;
158 desc++; 158 desc++;
@@ -214,7 +214,7 @@ static struct irqchip imx_gpio_chip = {
214 .ack = imx_gpio_ack_irq, 214 .ack = imx_gpio_ack_irq,
215 .mask = imx_gpio_mask_irq, 215 .mask = imx_gpio_mask_irq,
216 .unmask = imx_gpio_unmask_irq, 216 .unmask = imx_gpio_unmask_irq,
217 .type = imx_gpio_irq_type, 217 .set_type = imx_gpio_irq_type,
218}; 218};
219 219
220void __init 220void __init
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c
index 569f328c479d..2be5c03ab87f 100644
--- a/arch/arm/mach-integrator/integrator_cp.c
+++ b/arch/arm/mach-integrator/integrator_cp.c
@@ -170,7 +170,7 @@ sic_handle_irq(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
170 irq += IRQ_SIC_START; 170 irq += IRQ_SIC_START;
171 171
172 desc = irq_desc + irq; 172 desc = irq_desc + irq;
173 desc->handle(irq, desc, regs); 173 desc_handle_irq(irq, desc, regs);
174 } while (status); 174 } while (status);
175} 175}
176 176
diff --git a/arch/arm/mach-ixp2000/core.c b/arch/arm/mach-ixp2000/core.c
index 45b18658499f..781d10ae00b7 100644
--- a/arch/arm/mach-ixp2000/core.c
+++ b/arch/arm/mach-ixp2000/core.c
@@ -317,7 +317,7 @@ static void ixp2000_GPIO_irq_handler(unsigned int irq, struct irqdesc *desc, str
317 for (i = 0; i <= 7; i++) { 317 for (i = 0; i <= 7; i++) {
318 if (status & (1<<i)) { 318 if (status & (1<<i)) {
319 desc = irq_desc + i + IRQ_IXP2000_GPIO0; 319 desc = irq_desc + i + IRQ_IXP2000_GPIO0;
320 desc->handle(i + IRQ_IXP2000_GPIO0, desc, regs); 320 desc_handle_irq(i + IRQ_IXP2000_GPIO0, desc, regs);
321 } 321 }
322 } 322 }
323} 323}
@@ -380,10 +380,10 @@ static void ixp2000_GPIO_irq_unmask(unsigned int irq)
380} 380}
381 381
382static struct irqchip ixp2000_GPIO_irq_chip = { 382static struct irqchip ixp2000_GPIO_irq_chip = {
383 .type = ixp2000_GPIO_irq_type, 383 .ack = ixp2000_GPIO_irq_mask_ack,
384 .ack = ixp2000_GPIO_irq_mask_ack, 384 .mask = ixp2000_GPIO_irq_mask,
385 .mask = ixp2000_GPIO_irq_mask, 385 .unmask = ixp2000_GPIO_irq_unmask
386 .unmask = ixp2000_GPIO_irq_unmask 386 .set_type = ixp2000_GPIO_irq_type,
387}; 387};
388 388
389static void ixp2000_pci_irq_mask(unsigned int irq) 389static void ixp2000_pci_irq_mask(unsigned int irq)
diff --git a/arch/arm/mach-ixp2000/ixdp2x00.c b/arch/arm/mach-ixp2000/ixdp2x00.c
index a43369ad876c..63ba0191aa65 100644
--- a/arch/arm/mach-ixp2000/ixdp2x00.c
+++ b/arch/arm/mach-ixp2000/ixdp2x00.c
@@ -133,7 +133,7 @@ static void ixdp2x00_irq_handler(unsigned int irq, struct irqdesc *desc, struct
133 struct irqdesc *cpld_desc; 133 struct irqdesc *cpld_desc;
134 int cpld_irq = IXP2000_BOARD_IRQ(0) + i; 134 int cpld_irq = IXP2000_BOARD_IRQ(0) + i;
135 cpld_desc = irq_desc + cpld_irq; 135 cpld_desc = irq_desc + cpld_irq;
136 cpld_desc->handle(cpld_irq, cpld_desc, regs); 136 desc_handle_irq(cpld_irq, cpld_desc, regs);
137 } 137 }
138 } 138 }
139 139
diff --git a/arch/arm/mach-ixp2000/ixdp2x01.c b/arch/arm/mach-ixp2000/ixdp2x01.c
index 43447dad1657..7a5109921287 100644
--- a/arch/arm/mach-ixp2000/ixdp2x01.c
+++ b/arch/arm/mach-ixp2000/ixdp2x01.c
@@ -82,7 +82,7 @@ static void ixdp2x01_irq_handler(unsigned int irq, struct irqdesc *desc, struct
82 struct irqdesc *cpld_desc; 82 struct irqdesc *cpld_desc;
83 int cpld_irq = IXP2000_BOARD_IRQ(0) + i; 83 int cpld_irq = IXP2000_BOARD_IRQ(0) + i;
84 cpld_desc = irq_desc + cpld_irq; 84 cpld_desc = irq_desc + cpld_irq;
85 cpld_desc->handle(cpld_irq, cpld_desc, regs); 85 desc_handle_irq(cpld_irq, cpld_desc, regs);
86 } 86 }
87 } 87 }
88 88
diff --git a/arch/arm/mach-lh7a40x/common.h b/arch/arm/mach-lh7a40x/common.h
index beda7c2602fb..578a52461fdb 100644
--- a/arch/arm/mach-lh7a40x/common.h
+++ b/arch/arm/mach-lh7a40x/common.h
@@ -13,4 +13,4 @@ extern struct sys_timer lh7a40x_timer;
13extern void lh7a400_init_irq (void); 13extern void lh7a400_init_irq (void);
14extern void lh7a404_init_irq (void); 14extern void lh7a404_init_irq (void);
15 15
16#define IRQ_DISPATCH(irq) irq_desc[irq].handle ((irq), &irq_desc[irq], regs) 16#define IRQ_DISPATCH(irq) desc_handle_irq((irq),(irq_desc + irq), regs)
diff --git a/arch/arm/mach-omap1/fpga.c b/arch/arm/mach-omap1/fpga.c
index 7c08f6c2e1d0..c12a78335625 100644
--- a/arch/arm/mach-omap1/fpga.c
+++ b/arch/arm/mach-omap1/fpga.c
@@ -102,7 +102,7 @@ void innovator_fpga_IRQ_demux(unsigned int irq, struct irqdesc *desc,
102 fpga_irq++, stat >>= 1) { 102 fpga_irq++, stat >>= 1) {
103 if (stat & 1) { 103 if (stat & 1) {
104 d = irq_desc + fpga_irq; 104 d = irq_desc + fpga_irq;
105 d->handle(fpga_irq, d, regs); 105 desc_handle_irq(fpga_irq, d, regs);
106 } 106 }
107 } 107 }
108} 108}
diff --git a/arch/arm/mach-pxa/irq.c b/arch/arm/mach-pxa/irq.c
index f3cac43124a5..539b596005fc 100644
--- a/arch/arm/mach-pxa/irq.c
+++ b/arch/arm/mach-pxa/irq.c
@@ -133,7 +133,7 @@ static struct irqchip pxa_low_gpio_chip = {
133 .ack = pxa_ack_low_gpio, 133 .ack = pxa_ack_low_gpio,
134 .mask = pxa_mask_low_irq, 134 .mask = pxa_mask_low_irq,
135 .unmask = pxa_unmask_low_irq, 135 .unmask = pxa_unmask_low_irq,
136 .type = pxa_gpio_irq_type, 136 .set_type = pxa_gpio_irq_type,
137}; 137};
138 138
139/* 139/*
@@ -157,7 +157,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc,
157 mask >>= 2; 157 mask >>= 2;
158 do { 158 do {
159 if (mask & 1) 159 if (mask & 1)
160 desc->handle(irq, desc, regs); 160 desc_handle_irq(irq, desc, regs);
161 irq++; 161 irq++;
162 desc++; 162 desc++;
163 mask >>= 1; 163 mask >>= 1;
@@ -172,7 +172,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc,
172 desc = irq_desc + irq; 172 desc = irq_desc + irq;
173 do { 173 do {
174 if (mask & 1) 174 if (mask & 1)
175 desc->handle(irq, desc, regs); 175 desc_handle_irq(irq, desc, regs);
176 irq++; 176 irq++;
177 desc++; 177 desc++;
178 mask >>= 1; 178 mask >>= 1;
@@ -187,7 +187,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc,
187 desc = irq_desc + irq; 187 desc = irq_desc + irq;
188 do { 188 do {
189 if (mask & 1) 189 if (mask & 1)
190 desc->handle(irq, desc, regs); 190 desc_handle_irq(irq, desc, regs);
191 irq++; 191 irq++;
192 desc++; 192 desc++;
193 mask >>= 1; 193 mask >>= 1;
@@ -203,7 +203,7 @@ static void pxa_gpio_demux_handler(unsigned int irq, struct irqdesc *desc,
203 desc = irq_desc + irq; 203 desc = irq_desc + irq;
204 do { 204 do {
205 if (mask & 1) 205 if (mask & 1)
206 desc->handle(irq, desc, regs); 206 desc_handle_irq(irq, desc, regs);
207 irq++; 207 irq++;
208 desc++; 208 desc++;
209 mask >>= 1; 209 mask >>= 1;
@@ -241,7 +241,7 @@ static struct irqchip pxa_muxed_gpio_chip = {
241 .ack = pxa_ack_muxed_gpio, 241 .ack = pxa_ack_muxed_gpio,
242 .mask = pxa_mask_muxed_gpio, 242 .mask = pxa_mask_muxed_gpio,
243 .unmask = pxa_unmask_muxed_gpio, 243 .unmask = pxa_unmask_muxed_gpio,
244 .type = pxa_gpio_irq_type, 244 .set_type = pxa_gpio_irq_type,
245}; 245};
246 246
247 247
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c
index 6309853b59be..923f6eb774c0 100644
--- a/arch/arm/mach-pxa/lubbock.c
+++ b/arch/arm/mach-pxa/lubbock.c
@@ -84,7 +84,7 @@ static void lubbock_irq_handler(unsigned int irq, struct irqdesc *desc,
84 if (likely(pending)) { 84 if (likely(pending)) {
85 irq = LUBBOCK_IRQ(0) + __ffs(pending); 85 irq = LUBBOCK_IRQ(0) + __ffs(pending);
86 desc = irq_desc + irq; 86 desc = irq_desc + irq;
87 desc->handle(irq, desc, regs); 87 desc_handle_irq(irq, desc, regs);
88 } 88 }
89 pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled; 89 pending = LUB_IRQ_SET_CLR & lubbock_irq_enabled;
90 } while (pending); 90 } while (pending);
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c
index 827b7b5a5be8..85fdb5b1470a 100644
--- a/arch/arm/mach-pxa/mainstone.c
+++ b/arch/arm/mach-pxa/mainstone.c
@@ -72,7 +72,7 @@ static void mainstone_irq_handler(unsigned int irq, struct irqdesc *desc,
72 if (likely(pending)) { 72 if (likely(pending)) {
73 irq = MAINSTONE_IRQ(0) + __ffs(pending); 73 irq = MAINSTONE_IRQ(0) + __ffs(pending);
74 desc = irq_desc + irq; 74 desc = irq_desc + irq;
75 desc->handle(irq, desc, regs); 75 desc_handle_irq(irq, desc, regs);
76 } 76 }
77 pending = MST_INTSETCLR & mainstone_irq_enabled; 77 pending = MST_INTSETCLR & mainstone_irq_enabled;
78 } while (pending); 78 } while (pending);
diff --git a/arch/arm/mach-s3c2410/bast-irq.c b/arch/arm/mach-s3c2410/bast-irq.c
index 5e5bbe893cbb..49914709fa09 100644
--- a/arch/arm/mach-s3c2410/bast-irq.c
+++ b/arch/arm/mach-s3c2410/bast-irq.c
@@ -124,7 +124,7 @@ bast_irq_pc104_demux(unsigned int irq,
124 irqno = bast_pc104_irqs[i]; 124 irqno = bast_pc104_irqs[i];
125 desc = irq_desc + irqno; 125 desc = irq_desc + irqno;
126 126
127 desc->handle(irqno, desc, regs); 127 desc_handle_irq(irqno, desc, regs);
128 } 128 }
129 129
130 stat >>= 1; 130 stat >>= 1;
diff --git a/arch/arm/mach-s3c2410/irq.c b/arch/arm/mach-s3c2410/irq.c
index 973a5fe6769c..66d8c068e940 100644
--- a/arch/arm/mach-s3c2410/irq.c
+++ b/arch/arm/mach-s3c2410/irq.c
@@ -184,14 +184,14 @@ struct irqchip s3c_irq_level_chip = {
184 .ack = s3c_irq_maskack, 184 .ack = s3c_irq_maskack,
185 .mask = s3c_irq_mask, 185 .mask = s3c_irq_mask,
186 .unmask = s3c_irq_unmask, 186 .unmask = s3c_irq_unmask,
187 .wake = s3c_irq_wake 187 .set_wake = s3c_irq_wake
188}; 188};
189 189
190static struct irqchip s3c_irq_chip = { 190static struct irqchip s3c_irq_chip = {
191 .ack = s3c_irq_ack, 191 .ack = s3c_irq_ack,
192 .mask = s3c_irq_mask, 192 .mask = s3c_irq_mask,
193 .unmask = s3c_irq_unmask, 193 .unmask = s3c_irq_unmask,
194 .wake = s3c_irq_wake 194 .set_wake = s3c_irq_wake
195}; 195};
196 196
197/* S3C2410_EINTMASK 197/* S3C2410_EINTMASK
@@ -350,16 +350,16 @@ static struct irqchip s3c_irqext_chip = {
350 .mask = s3c_irqext_mask, 350 .mask = s3c_irqext_mask,
351 .unmask = s3c_irqext_unmask, 351 .unmask = s3c_irqext_unmask,
352 .ack = s3c_irqext_ack, 352 .ack = s3c_irqext_ack,
353 .type = s3c_irqext_type, 353 .set_type = s3c_irqext_type,
354 .wake = s3c_irqext_wake 354 .set_wake = s3c_irqext_wake
355}; 355};
356 356
357static struct irqchip s3c_irq_eint0t4 = { 357static struct irqchip s3c_irq_eint0t4 = {
358 .ack = s3c_irq_ack, 358 .ack = s3c_irq_ack,
359 .mask = s3c_irq_mask, 359 .mask = s3c_irq_mask,
360 .unmask = s3c_irq_unmask, 360 .unmask = s3c_irq_unmask,
361 .wake = s3c_irq_wake, 361 .set_wake = s3c_irq_wake,
362 .type = s3c_irqext_type, 362 .set_type = s3c_irqext_type,
363}; 363};
364 364
365/* mask values for the parent registers for each of the interrupt types */ 365/* mask values for the parent registers for each of the interrupt types */
@@ -496,11 +496,11 @@ static void s3c_irq_demux_adc(unsigned int irq,
496 if (subsrc != 0) { 496 if (subsrc != 0) {
497 if (subsrc & 1) { 497 if (subsrc & 1) {
498 mydesc = irq_desc + IRQ_TC; 498 mydesc = irq_desc + IRQ_TC;
499 mydesc->handle( IRQ_TC, mydesc, regs); 499 desc_handle_irq(IRQ_TC, mydesc, regs);
500 } 500 }
501 if (subsrc & 2) { 501 if (subsrc & 2) {
502 mydesc = irq_desc + IRQ_ADC; 502 mydesc = irq_desc + IRQ_ADC;
503 mydesc->handle(IRQ_ADC, mydesc, regs); 503 desc_handle_irq(IRQ_ADC, mydesc, regs);
504 } 504 }
505 } 505 }
506} 506}
@@ -529,17 +529,17 @@ static void s3c_irq_demux_uart(unsigned int start,
529 desc = irq_desc + start; 529 desc = irq_desc + start;
530 530
531 if (subsrc & 1) 531 if (subsrc & 1)
532 desc->handle(start, desc, regs); 532 desc_handle_irq(start, desc, regs);
533 533
534 desc++; 534 desc++;
535 535
536 if (subsrc & 2) 536 if (subsrc & 2)
537 desc->handle(start+1, desc, regs); 537 desc_handle_irq(start+1, desc, regs);
538 538
539 desc++; 539 desc++;
540 540
541 if (subsrc & 4) 541 if (subsrc & 4)
542 desc->handle(start+2, desc, regs); 542 desc_handle_irq(start+2, desc, regs);
543 } 543 }
544} 544}
545 545
diff --git a/arch/arm/mach-s3c2410/pm.c b/arch/arm/mach-s3c2410/pm.c
index 13a48ee77484..fe57d966a34d 100644
--- a/arch/arm/mach-s3c2410/pm.c
+++ b/arch/arm/mach-s3c2410/pm.c
@@ -585,14 +585,16 @@ static int s3c2410_pm_enter(suspend_state_t state)
585 585
586 s3c2410_pm_check_store(); 586 s3c2410_pm_check_store();
587 587
588 // need to make some form of time-delta
589
590 /* send the cpu to sleep... */ 588 /* send the cpu to sleep... */
591 589
592 __raw_writel(0x00, S3C2410_CLKCON); /* turn off clocks over sleep */ 590 __raw_writel(0x00, S3C2410_CLKCON); /* turn off clocks over sleep */
593 591
594 s3c2410_cpu_suspend(regs_save); 592 s3c2410_cpu_suspend(regs_save);
595 593
594 /* restore the cpu state */
595
596 cpu_init();
597
596 /* unset the return-from-sleep flag, to ensure reset */ 598 /* unset the return-from-sleep flag, to ensure reset */
597 599
598 tmp = __raw_readl(S3C2410_GSTATUS2); 600 tmp = __raw_readl(S3C2410_GSTATUS2);
diff --git a/arch/arm/mach-s3c2410/s3c2440-irq.c b/arch/arm/mach-s3c2410/s3c2440-irq.c
index 7cb9912242a3..278d0044c85d 100644
--- a/arch/arm/mach-s3c2410/s3c2440-irq.c
+++ b/arch/arm/mach-s3c2410/s3c2440-irq.c
@@ -64,11 +64,11 @@ static void s3c_irq_demux_wdtac97(unsigned int irq,
64 if (subsrc != 0) { 64 if (subsrc != 0) {
65 if (subsrc & 1) { 65 if (subsrc & 1) {
66 mydesc = irq_desc + IRQ_S3C2440_WDT; 66 mydesc = irq_desc + IRQ_S3C2440_WDT;
67 mydesc->handle( IRQ_S3C2440_WDT, mydesc, regs); 67 desc_handle_irq(IRQ_S3C2440_WDT, mydesc, regs);
68 } 68 }
69 if (subsrc & 2) { 69 if (subsrc & 2) {
70 mydesc = irq_desc + IRQ_S3C2440_AC97; 70 mydesc = irq_desc + IRQ_S3C2440_AC97;
71 mydesc->handle(IRQ_S3C2440_AC97, mydesc, regs); 71 desc_handle_irq(IRQ_S3C2440_AC97, mydesc, regs);
72 } 72 }
73 } 73 }
74} 74}
@@ -122,11 +122,11 @@ static void s3c_irq_demux_cam(unsigned int irq,
122 if (subsrc != 0) { 122 if (subsrc != 0) {
123 if (subsrc & 1) { 123 if (subsrc & 1) {
124 mydesc = irq_desc + IRQ_S3C2440_CAM_C; 124 mydesc = irq_desc + IRQ_S3C2440_CAM_C;
125 mydesc->handle( IRQ_S3C2440_WDT, mydesc, regs); 125 desc_handle_irq(IRQ_S3C2440_CAM_C, mydesc, regs);
126 } 126 }
127 if (subsrc & 2) { 127 if (subsrc & 2) {
128 mydesc = irq_desc + IRQ_S3C2440_CAM_P; 128 mydesc = irq_desc + IRQ_S3C2440_CAM_P;
129 mydesc->handle(IRQ_S3C2440_AC97, mydesc, regs); 129 desc_handle_irq(IRQ_S3C2440_CAM_P, mydesc, regs);
130 } 130 }
131 } 131 }
132} 132}
diff --git a/arch/arm/mach-sa1100/irq.c b/arch/arm/mach-sa1100/irq.c
index 66a929cb7bc5..c131a5201b5b 100644
--- a/arch/arm/mach-sa1100/irq.c
+++ b/arch/arm/mach-sa1100/irq.c
@@ -98,8 +98,8 @@ static struct irqchip sa1100_low_gpio_chip = {
98 .ack = sa1100_low_gpio_ack, 98 .ack = sa1100_low_gpio_ack,
99 .mask = sa1100_low_gpio_mask, 99 .mask = sa1100_low_gpio_mask,
100 .unmask = sa1100_low_gpio_unmask, 100 .unmask = sa1100_low_gpio_unmask,
101 .type = sa1100_gpio_type, 101 .set_type = sa1100_gpio_type,
102 .wake = sa1100_low_gpio_wake, 102 .set_wake = sa1100_low_gpio_wake,
103}; 103};
104 104
105/* 105/*
@@ -126,7 +126,7 @@ sa1100_high_gpio_handler(unsigned int irq, struct irqdesc *desc,
126 mask >>= 11; 126 mask >>= 11;
127 do { 127 do {
128 if (mask & 1) 128 if (mask & 1)
129 desc->handle(irq, desc, regs); 129 desc_handle_irq(irq, desc, regs);
130 mask >>= 1; 130 mask >>= 1;
131 irq++; 131 irq++;
132 desc++; 132 desc++;
@@ -181,8 +181,8 @@ static struct irqchip sa1100_high_gpio_chip = {
181 .ack = sa1100_high_gpio_ack, 181 .ack = sa1100_high_gpio_ack,
182 .mask = sa1100_high_gpio_mask, 182 .mask = sa1100_high_gpio_mask,
183 .unmask = sa1100_high_gpio_unmask, 183 .unmask = sa1100_high_gpio_unmask,
184 .type = sa1100_gpio_type, 184 .set_type = sa1100_gpio_type,
185 .wake = sa1100_high_gpio_wake, 185 .set_wake = sa1100_high_gpio_wake,
186}; 186};
187 187
188/* 188/*
diff --git a/arch/arm/mach-sa1100/neponset.c b/arch/arm/mach-sa1100/neponset.c
index 1405383463ea..fc061641b7be 100644
--- a/arch/arm/mach-sa1100/neponset.c
+++ b/arch/arm/mach-sa1100/neponset.c
@@ -61,12 +61,12 @@ neponset_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *reg
61 61
62 if (irr & IRR_ETHERNET) { 62 if (irr & IRR_ETHERNET) {
63 d = irq_desc + IRQ_NEPONSET_SMC9196; 63 d = irq_desc + IRQ_NEPONSET_SMC9196;
64 d->handle(IRQ_NEPONSET_SMC9196, d, regs); 64 desc_handle_irq(IRQ_NEPONSET_SMC9196, d, regs);
65 } 65 }
66 66
67 if (irr & IRR_USAR) { 67 if (irr & IRR_USAR) {
68 d = irq_desc + IRQ_NEPONSET_USAR; 68 d = irq_desc + IRQ_NEPONSET_USAR;
69 d->handle(IRQ_NEPONSET_USAR, d, regs); 69 desc_handle_irq(IRQ_NEPONSET_USAR, d, regs);
70 } 70 }
71 71
72 desc->chip->unmask(irq); 72 desc->chip->unmask(irq);
@@ -74,7 +74,7 @@ neponset_irq_handler(unsigned int irq, struct irqdesc *desc, struct pt_regs *reg
74 74
75 if (irr & IRR_SA1111) { 75 if (irr & IRR_SA1111) {
76 d = irq_desc + IRQ_NEPONSET_SA1111; 76 d = irq_desc + IRQ_NEPONSET_SA1111;
77 d->handle(IRQ_NEPONSET_SA1111, d, regs); 77 desc_handle_irq(IRQ_NEPONSET_SA1111, d, regs);
78 } 78 }
79 } 79 }
80} 80}
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c
index f01c0f8a2bb3..3c8862fde51a 100644
--- a/arch/arm/mach-versatile/core.c
+++ b/arch/arm/mach-versatile/core.c
@@ -108,7 +108,7 @@ sic_handle_irq(unsigned int irq, struct irqdesc *desc, struct pt_regs *regs)
108 irq += IRQ_SIC_START; 108 irq += IRQ_SIC_START;
109 109
110 desc = irq_desc + irq; 110 desc = irq_desc + irq;
111 desc->handle(irq, desc, regs); 111 desc_handle_irq(irq, desc, regs);
112 } while (status); 112 } while (status);
113} 113}
114 114
diff --git a/arch/arm/mm/proc-arm6_7.S b/arch/arm/mm/proc-arm6_7.S
index 0ee214b824ff..189ef6a71ba1 100644
--- a/arch/arm/mm/proc-arm6_7.S
+++ b/arch/arm/mm/proc-arm6_7.S
@@ -38,8 +38,8 @@ ENTRY(cpu_arm7_data_abort)
38 mrc p15, 0, r1, c5, c0, 0 @ get FSR 38 mrc p15, 0, r1, c5, c0, 0 @ get FSR
39 mrc p15, 0, r0, c6, c0, 0 @ get FAR 39 mrc p15, 0, r0, c6, c0, 0 @ get FAR
40 ldr r8, [r0] @ read arm instruction 40 ldr r8, [r0] @ read arm instruction
41 tst r8, #1 << 20 @ L = 1 -> write? 41 tst r8, #1 << 20 @ L = 0 -> write?
42 orreq r1, r1, #1 << 8 @ yes. 42 orreq r1, r1, #1 << 11 @ yes.
43 and r7, r8, #15 << 24 43 and r7, r8, #15 << 24
44 add pc, pc, r7, lsr #22 @ Now branch to the relevant processing routine 44 add pc, pc, r7, lsr #22 @ Now branch to the relevant processing routine
45 nop 45 nop
@@ -71,8 +71,8 @@ ENTRY(cpu_arm6_data_abort)
71 mrc p15, 0, r1, c5, c0, 0 @ get FSR 71 mrc p15, 0, r1, c5, c0, 0 @ get FSR
72 mrc p15, 0, r0, c6, c0, 0 @ get FAR 72 mrc p15, 0, r0, c6, c0, 0 @ get FAR
73 ldr r8, [r2] @ read arm instruction 73 ldr r8, [r2] @ read arm instruction
74 tst r8, #1 << 20 @ L = 1 -> write? 74 tst r8, #1 << 20 @ L = 0 -> write?
75 orreq r1, r1, #1 << 8 @ yes. 75 orreq r1, r1, #1 << 11 @ yes.
76 and r7, r8, #14 << 24 76 and r7, r8, #14 << 24
77 teq r7, #8 << 24 @ was it ldm/stm 77 teq r7, #8 << 24 @ was it ldm/stm
78 movne pc, lr 78 movne pc, lr
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c
index 1c85b4e536c2..aa481ea3d702 100644
--- a/arch/arm/plat-omap/gpio.c
+++ b/arch/arm/plat-omap/gpio.c
@@ -590,7 +590,7 @@ static void gpio_irq_handler(unsigned int irq, struct irqdesc *desc,
590 if (!(isr & 1)) 590 if (!(isr & 1))
591 continue; 591 continue;
592 d = irq_desc + gpio_irq; 592 d = irq_desc + gpio_irq;
593 d->handle(gpio_irq, d, regs); 593 desc_handle_irq(gpio_irq, d, regs);
594 } 594 }
595} 595}
596 596