git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
arch
/
m68k
/
mac
/
via.c
diff --git
a/arch/m68k/mac/via.c
b/arch/m68k/mac/via.c
index
cd528bf
..
e27735b
100644
(file)
--- a/
arch/m68k/mac/via.c
+++ b/
arch/m68k/mac/via.c
@@
-25,7
+25,6
@@
#include <linux/init.h>
#include <linux/ide.h>
#include <linux/init.h>
#include <linux/ide.h>
-#include <asm/traps.h>
#include <asm/bootinfo.h>
#include <asm/macintosh.h>
#include <asm/macints.h>
#include <asm/bootinfo.h>
#include <asm/macintosh.h>
#include <asm/macints.h>
@@
-64,15
+63,14
@@
static int gIER,gIFR,gBufA,gBufB;
static int nubus_active;
void via_debug_dump(void);
static int nubus_active;
void via_debug_dump(void);
-irqreturn_t via1_irq(int, void *
, struct pt_regs *
);
-irqreturn_t via2_irq(int, void *
, struct pt_regs *
);
-irqreturn_t via_nubus_irq(int, void *
, struct pt_regs *
);
+irqreturn_t via1_irq(int, void *);
+irqreturn_t via2_irq(int, void *);
+irqreturn_t via_nubus_irq(int, void *);
void via_irq_enable(int irq);
void via_irq_disable(int irq);
void via_irq_clear(int irq);
void via_irq_enable(int irq);
void via_irq_disable(int irq);
void via_irq_clear(int irq);
-extern irqreturn_t mac_bang(int, void *, struct pt_regs *);
-extern irqreturn_t mac_scc_dispatch(int, void *, struct pt_regs *);
+extern irqreturn_t mac_scc_dispatch(int, void *);
extern int oss_present;
/*
extern int oss_present;
/*
@@
-212,11
+210,6
@@
void __init via_init(void)
break;
}
#else
break;
}
#else
- /* The alernate IRQ mapping seems to just not work. Anyone with a */
- /* supported machine is welcome to take a stab at fixing it. It */
- /* _should_ work on the following Quadras: 610,650,700,800,900,950 */
- /* - 1999-06-12 (jmt) */
-
via_alt_mapping = 0;
#endif
via_alt_mapping = 0;
#endif
@@
-242,7
+235,7
@@
void __init via_init(void)
* Start the 100 Hz clock
*/
* Start the 100 Hz clock
*/
-void __init via_init_clock(irq
return_t (*func)(int, void *, struct pt_regs *)
)
+void __init via_init_clock(irq
_handler_t func
)
{
via1[vACR] |= 0x40;
via1[vT1LL] = MAC_CLOCK_LOW;
{
via1[vACR] |= 0x40;
via1[vT1LL] = MAC_CLOCK_LOW;
@@
-260,27
+253,21
@@
void __init via_init_clock(irqreturn_t (*func)(int, void *, struct pt_regs *))
void __init via_register_interrupts(void)
{
if (via_alt_mapping) {
void __init via_register_interrupts(void)
{
if (via_alt_mapping) {
-
cpu_
request_irq(IRQ_AUTO_1, via1_irq,
+ request_irq(IRQ_AUTO_1, via1_irq,
IRQ_FLG_LOCK|IRQ_FLG_FAST, "software",
(void *) via1);
IRQ_FLG_LOCK|IRQ_FLG_FAST, "software",
(void *) via1);
-
cpu_
request_irq(IRQ_AUTO_6, via1_irq,
+ request_irq(IRQ_AUTO_6, via1_irq,
IRQ_FLG_LOCK|IRQ_FLG_FAST, "via1",
(void *) via1);
} else {
IRQ_FLG_LOCK|IRQ_FLG_FAST, "via1",
(void *) via1);
} else {
-
cpu_
request_irq(IRQ_AUTO_1, via1_irq,
+ request_irq(IRQ_AUTO_1, via1_irq,
IRQ_FLG_LOCK|IRQ_FLG_FAST, "via1",
(void *) via1);
IRQ_FLG_LOCK|IRQ_FLG_FAST, "via1",
(void *) via1);
-#if 0 /* interferes with serial on some machines */
- if (!psc_present) {
- cpu_request_irq(IRQ_AUTO_6, mac_bang, IRQ_FLG_LOCK,
- "Off Switch", mac_bang);
- }
-#endif
}
}
-
cpu_
request_irq(IRQ_AUTO_2, via2_irq, IRQ_FLG_LOCK|IRQ_FLG_FAST,
+ request_irq(IRQ_AUTO_2, via2_irq, IRQ_FLG_LOCK|IRQ_FLG_FAST,
"via2", (void *) via2);
if (!psc_present) {
"via2", (void *) via2);
if (!psc_present) {
-
cpu_
request_irq(IRQ_AUTO_4, mac_scc_dispatch, IRQ_FLG_LOCK,
+ request_irq(IRQ_AUTO_4, mac_scc_dispatch, IRQ_FLG_LOCK,
"scc", mac_scc_dispatch);
}
request_irq(IRQ_MAC_NUBUS, via_nubus_irq, IRQ_FLG_LOCK|IRQ_FLG_FAST,
"scc", mac_scc_dispatch);
}
request_irq(IRQ_MAC_NUBUS, via_nubus_irq, IRQ_FLG_LOCK|IRQ_FLG_FAST,
@@
-425,7
+412,7
@@
void __init via_nubus_init(void)
* the machspec interrupt number after clearing the interrupt.
*/
* the machspec interrupt number after clearing the interrupt.
*/
-irqreturn_t via1_irq(int irq, void *dev_id
, struct pt_regs *regs
)
+irqreturn_t via1_irq(int irq, void *dev_id)
{
int irq_bit, i;
unsigned char events, mask;
{
int irq_bit, i;
unsigned char events, mask;
@@
-437,7
+424,7
@@
irqreturn_t via1_irq(int irq, void *dev_id, struct pt_regs *regs)
for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1)
if (events & irq_bit) {
via1[vIER] = irq_bit;
for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1)
if (events & irq_bit) {
via1[vIER] = irq_bit;
- m
ac_do_irq_list(VIA1_SOURCE_BASE + i, regs
);
+ m
68k_handle_int(VIA1_SOURCE_BASE + i
);
via1[vIFR] = irq_bit;
via1[vIER] = irq_bit | 0x80;
}
via1[vIFR] = irq_bit;
via1[vIER] = irq_bit | 0x80;
}
@@
-452,14
+439,14
@@
irqreturn_t via1_irq(int irq, void *dev_id, struct pt_regs *regs)
/* No, it won't be set. that's why we're doing this. */
via_irq_disable(IRQ_MAC_NUBUS);
via_irq_clear(IRQ_MAC_NUBUS);
/* No, it won't be set. that's why we're doing this. */
via_irq_disable(IRQ_MAC_NUBUS);
via_irq_clear(IRQ_MAC_NUBUS);
- m
ac_do_irq_list(IRQ_MAC_NUBUS, regs
);
+ m
68k_handle_int(IRQ_MAC_NUBUS
);
via_irq_enable(IRQ_MAC_NUBUS);
}
#endif
return IRQ_HANDLED;
}
via_irq_enable(IRQ_MAC_NUBUS);
}
#endif
return IRQ_HANDLED;
}
-irqreturn_t via2_irq(int irq, void *dev_id
, struct pt_regs *regs
)
+irqreturn_t via2_irq(int irq, void *dev_id)
{
int irq_bit, i;
unsigned char events, mask;
{
int irq_bit, i;
unsigned char events, mask;
@@
-471,8
+458,8
@@
irqreturn_t via2_irq(int irq, void *dev_id, struct pt_regs *regs)
for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1)
if (events & irq_bit) {
via2[gIER] = irq_bit;
for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1)
if (events & irq_bit) {
via2[gIER] = irq_bit;
- mac_do_irq_list(VIA2_SOURCE_BASE + i, regs);
via2[gIFR] = irq_bit | rbv_clear;
via2[gIFR] = irq_bit | rbv_clear;
+ m68k_handle_int(VIA2_SOURCE_BASE + i);
via2[gIER] = irq_bit | 0x80;
}
return IRQ_HANDLED;
via2[gIER] = irq_bit | 0x80;
}
return IRQ_HANDLED;
@@
-483,7
+470,7
@@
irqreturn_t via2_irq(int irq, void *dev_id, struct pt_regs *regs)
* VIA2 dispatcher as a fast interrupt handler.
*/
* VIA2 dispatcher as a fast interrupt handler.
*/
-irqreturn_t via_nubus_irq(int irq, void *dev_id
, struct pt_regs *regs
)
+irqreturn_t via_nubus_irq(int irq, void *dev_id)
{
int irq_bit, i;
unsigned char events;
{
int irq_bit, i;
unsigned char events;
@@
-494,7
+481,7
@@
irqreturn_t via_nubus_irq(int irq, void *dev_id, struct pt_regs *regs)
for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1) {
if (events & irq_bit) {
via_irq_disable(NUBUS_SOURCE_BASE + i);
for (i = 0, irq_bit = 1 ; i < 7 ; i++, irq_bit <<= 1) {
if (events & irq_bit) {
via_irq_disable(NUBUS_SOURCE_BASE + i);
- m
ac_do_irq_list(NUBUS_SOURCE_BASE + i, regs
);
+ m
68k_handle_int(NUBUS_SOURCE_BASE + i
);
via_irq_enable(NUBUS_SOURCE_BASE + i);
}
}
via_irq_enable(NUBUS_SOURCE_BASE + i);
}
}
@@
-529,6
+516,7
@@
void via_irq_enable(int irq) {
}
via2[gIER] = irq_bit | 0x80;
} else if (irq_src == 7) {
}
via2[gIER] = irq_bit | 0x80;
} else if (irq_src == 7) {
+ nubus_active |= irq_bit;
if (rbv_present) {
/* enable the slot interrupt. SIER works like IER. */
via2[rSIER] = IER_SET_BIT(irq_idx);
if (rbv_present) {
/* enable the slot interrupt. SIER works like IER. */
via2[rSIER] = IER_SET_BIT(irq_idx);
@@
-550,7
+538,6
@@
void via_irq_enable(int irq) {
}
}
}
}
}
}
- nubus_active |= irq_bit;
}
}
}
}