git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of ../mmc
[pandora-kernel.git]
/
arch
/
m68k
/
mac
/
oss.c
diff --git
a/arch/m68k/mac/oss.c
b/arch/m68k/mac/oss.c
index
63e0436
..
8426501
100644
(file)
--- a/
arch/m68k/mac/oss.c
+++ b/
arch/m68k/mac/oss.c
@@
-8,7
+8,7
@@
*
* 990502 (jmt) - Major rewrite for new interrupt architecture as well as some
* recent insights into OSS operational details.
*
* 990502 (jmt) - Major rewrite for new interrupt architecture as well as some
* recent insights into OSS operational details.
- * 990610 (jmt) - Now taking full
l
advantage of the OSS. Interrupts are mapped
+ * 990610 (jmt) - Now taking full advantage of the OSS. Interrupts are mapped
* to mostly match the A/UX interrupt scheme supported on the
* VIA side. Also added support for enabling the ISM irq again
* since we now have a functional IOP manager.
* to mostly match the A/UX interrupt scheme supported on the
* VIA side. Also added support for enabling the ISM irq again
* since we now have a functional IOP manager.
@@
-21,7
+21,6
@@
#include <linux/init.h>
#include <asm/bootinfo.h>
#include <linux/init.h>
#include <asm/bootinfo.h>
-#include <asm/machw.h>
#include <asm/macintosh.h>
#include <asm/macints.h>
#include <asm/mac_via.h>
#include <asm/macintosh.h>
#include <asm/macints.h>
#include <asm/mac_via.h>
@@
-30,11
+29,11
@@
int oss_present;
volatile struct mac_oss *oss;
int oss_present;
volatile struct mac_oss *oss;
-
irqreturn_t oss_irq(int, void *, struct pt_regs
*);
-
irqreturn_t oss_nubus_irq(int, void *, struct pt_regs
*);
+
static irqreturn_t oss_irq(int, void
*);
+
static irqreturn_t oss_nubus_irq(int, void
*);
-extern irqreturn_t via1_irq(int, void *
, struct pt_regs *
);
-extern irqreturn_t mac_scc_dispatch(int, void *
, struct pt_regs *
);
+extern irqreturn_t via1_irq(int, void *);
+extern irqreturn_t mac_scc_dispatch(int, void *);
/*
* Initialize the OSS
/*
* Initialize the OSS
@@
-92,7
+91,7
@@
void __init oss_nubus_init(void)
* and SCSI; everything else is routed to its own autovector IRQ.
*/
* and SCSI; everything else is routed to its own autovector IRQ.
*/
-
irqreturn_t oss_irq(int irq, void *dev_id, struct pt_regs *regs
)
+
static irqreturn_t oss_irq(int irq, void *dev_id
)
{
int events;
{
int events;
@@
-109,13
+108,11
@@
irqreturn_t oss_irq(int irq, void *dev_id, struct pt_regs *regs)
/* FIXME: how do you clear a pending IRQ? */
if (events & OSS_IP_SOUND) {
/* FIXME: how do you clear a pending IRQ? */
if (events & OSS_IP_SOUND) {
- /* FIXME: call sound handler */
oss->irq_pending &= ~OSS_IP_SOUND;
oss->irq_pending &= ~OSS_IP_SOUND;
+ /* FIXME: call sound handler */
} else if (events & OSS_IP_SCSI) {
} else if (events & OSS_IP_SCSI) {
- oss->irq_level[OSS_SCSI] = OSS_IRQLEV_DISABLED;
- m68k_handle_int(IRQ_MAC_SCSI, regs);
oss->irq_pending &= ~OSS_IP_SCSI;
oss->irq_pending &= ~OSS_IP_SCSI;
-
oss->irq_level[OSS_SCSI] = OSS_IRQLEV_SCSI
;
+
m68k_handle_int(IRQ_MAC_SCSI)
;
} else {
/* FIXME: error check here? */
}
} else {
/* FIXME: error check here? */
}
@@
-128,7
+125,7
@@
irqreturn_t oss_irq(int irq, void *dev_id, struct pt_regs *regs)
* Unlike the VIA/RBV this is on its own autovector interrupt level.
*/
* Unlike the VIA/RBV this is on its own autovector interrupt level.
*/
-
irqreturn_t oss_nubus_irq(int irq, void *dev_id, struct pt_regs *regs
)
+
static irqreturn_t oss_nubus_irq(int irq, void *dev_id
)
{
int events, irq_bit, i;
{
int events, irq_bit, i;
@@
-143,14
+140,16
@@
irqreturn_t oss_nubus_irq(int irq, void *dev_id, struct pt_regs *regs)
#endif
/* There are only six slots on the OSS, not seven */
#endif
/* There are only six slots on the OSS, not seven */
- for (i = 0, irq_bit = 1 ; i < 6 ; i++, irq_bit <<= 1) {
+ i = 6;
+ irq_bit = 0x40;
+ do {
+ --i;
+ irq_bit >>= 1;
if (events & irq_bit) {
if (events & irq_bit) {
- oss->irq_level[i] = OSS_IRQLEV_DISABLED;
- m68k_handle_int(NUBUS_SOURCE_BASE + i, regs);
oss->irq_pending &= ~irq_bit;
oss->irq_pending &= ~irq_bit;
-
oss->irq_level[i] = OSS_IRQLEV_NUBUS
;
+
m68k_handle_int(NUBUS_SOURCE_BASE + i)
;
}
}
- }
+ }
while(events & (irq_bit - 1));
return IRQ_HANDLED;
}
return IRQ_HANDLED;
}
@@
-190,7
+189,7
@@
void oss_irq_enable(int irq) {
break;
#ifdef DEBUG_IRQUSE
default:
break;
#ifdef DEBUG_IRQUSE
default:
- printk("%s unknown irq %d\n",
__FUNCTION
__, irq);
+ printk("%s unknown irq %d\n",
__func
__, irq);
break;
#endif
}
break;
#endif
}
@@
-230,7
+229,7
@@
void oss_irq_disable(int irq) {
break;
#ifdef DEBUG_IRQUSE
default:
break;
#ifdef DEBUG_IRQUSE
default:
- printk("%s unknown irq %d\n", __
FUNCTION
__, irq);
+ printk("%s unknown irq %d\n", __
func
__, irq);
break;
#endif
}
break;
#endif
}