adm8668: nuke 2.6.36 support
[openwrt/staging/yousong.git] / target / linux / adm8668 / patches-3.3 / a01-adm8668-irq-code-fixes.patch
1 --- a/arch/mips/adm8668/irq.c
2 +++ b/arch/mips/adm8668/irq.c
3 @@ -20,28 +20,7 @@
4 #include <asm/irq.h>
5 #include <adm8668.h>
6
7 -
8 -void enable_adm8668_irq(unsigned int irq);
9 -void disable_adm8668_irq(unsigned int irq);
10 -void adm8668_irq_cascade(void);
11 -
12 -void plat_irq_dispatch(void)
13 -{
14 - unsigned int pending;
15 -
16 - pending = read_c0_cause() & read_c0_status() & ST0_IM;
17 -
18 - /* timer interrupt, that we renumbered */
19 - if (pending & STATUSF_IP7)
20 - do_IRQ(MIPS_CPU_IRQ_BASE + 7);
21 - if (pending & STATUSF_IP2)
22 - adm8668_irq_cascade();
23 -}
24 -
25 -/*
26 - * System irq dispatch
27 - */
28 -void adm8668_irq_cascade()
29 +static void adm8668_irq_cascade(void)
30 {
31 int i;
32 unsigned long intsrc;
33 @@ -53,49 +32,53 @@ void adm8668_irq_cascade()
34 }
35
36 /*
37 - * irq enable
38 + * System irq dispatch
39 */
40 -static __inline void _irq_enable(int irql)
41 +void plat_irq_dispatch(void)
42 {
43 - ADM8668_INTC_REG(IRQ_ENABLE_REG) = (1 << irql);
44 -}
45 + unsigned int pending;
46
47 + pending = read_c0_cause() & read_c0_status() & ST0_IM;
48
49 -/*
50 - * irq disable
51 - */
52 -static __inline void _irq_disable(int irql)
53 -{
54 - ADM8668_INTC_REG(IRQ_DISABLE_REG) = (1 << irql);
55 + /* timer interrupt, that we renumbered */
56 + if (pending & STATUSF_IP7)
57 + do_IRQ(MIPS_CPU_IRQ_BASE + 7);
58 + if (pending & STATUSF_IP2)
59 + adm8668_irq_cascade();
60 }
61
62 -
63 /*
64 * enable 8668 irq
65 */
66 -void enable_adm8668_irq(unsigned int irq)
67 +static void enable_adm8668_irq(struct irq_data *d)
68 {
69 + int irq = d->irq;
70 +
71 if ((irq < 0) || (irq > NR_IRQS))
72 return;
73
74 - _irq_enable(irq);
75 + ADM8668_INTC_REG(IRQ_ENABLE_REG) = (1 << irq);
76 }
77
78
79 /*
80 * disable 8668 irq
81 */
82 -void disable_adm8668_irq(unsigned int irq)
83 +static void disable_adm8668_irq(struct irq_data *d)
84 {
85 + int irq = d->irq;
86 +
87 if ((irq < 0) || (irq > NR_IRQS))
88 return;
89
90 - _irq_disable(irq);
91 + ADM8668_INTC_REG(IRQ_DISABLE_REG) = (1 << irq);
92 }
93
94 -static inline void ack_adm8668_irq(unsigned int irq_nr)
95 +static void ack_adm8668_irq(struct irq_data *d)
96 {
97 - ADM8668_INTC_REG(IRQ_DISABLE_REG) = (1 << irq_nr);
98 + int irq = d->irq;
99 +
100 + ADM8668_INTC_REG(IRQ_DISABLE_REG) = (1 << irq);
101 }
102
103 /*
104 @@ -104,20 +87,20 @@ static inline void ack_adm8668_irq(unsig
105
106 static struct irq_chip adm8668_irq_type = {
107 .name = "adm8668",
108 - .ack = ack_adm8668_irq,
109 - .mask = disable_adm8668_irq,
110 - .unmask = enable_adm8668_irq
111 + .irq_ack = ack_adm8668_irq,
112 + .irq_mask = disable_adm8668_irq,
113 + .irq_unmask = enable_adm8668_irq
114 };
115
116 /*
117 * irq init
118 */
119 -void __init init_adm8668_irqs(void)
120 +static void __init init_adm8668_irqs(void)
121 {
122 int i;
123
124 for (i = 0; i <= INT_LVL_MAX; i++)
125 - set_irq_chip_and_handler(i, &adm8668_irq_type,
126 + irq_set_chip_and_handler(i, &adm8668_irq_type,
127 handle_level_irq);
128
129 /* hw0 is where our interrupts are uh.. interrupted at. */