git.samba.org
/
sfrench
/
cifs-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[sfrench/cifs-2.6.git]
/
arch
/
m68k
/
mac
/
baboon.c
diff --git
a/arch/m68k/mac/baboon.c
b/arch/m68k/mac/baboon.c
index 6eaa881793d1064566b5dbdc65cba3a5c824aaec..673a1085984db4f9057935021c45a17bd20614fc 100644
(file)
--- a/
arch/m68k/mac/baboon.c
+++ b/
arch/m68k/mac/baboon.c
@@
-22,10
+22,10
@@
/* #define DEBUG_BABOON */
/* #define DEBUG_IRQS */
/* #define DEBUG_BABOON */
/* #define DEBUG_IRQS */
-int baboon_present
,baboon_active
;
+int baboon_present;
volatile struct baboon *baboon;
volatile struct baboon *baboon;
-irqreturn_t baboon_irq(int, void *
, struct pt_regs *
);
+irqreturn_t baboon_irq(int, void *);
#if 0
extern int macide_ack_intr(struct ata_channel *);
#if 0
extern int macide_ack_intr(struct ata_channel *);
@@
-45,7
+45,6
@@
void __init baboon_init(void)
baboon = (struct baboon *) BABOON_BASE;
baboon_present = 1;
baboon = (struct baboon *) BABOON_BASE;
baboon_present = 1;
- baboon_active = 0;
printk("Baboon detected at %p\n", baboon);
}
printk("Baboon detected at %p\n", baboon);
}
@@
-64,28
+63,30
@@
void __init baboon_register_interrupts(void)
* Baboon interrupt handler. This works a lot like a VIA.
*/
* Baboon interrupt handler. This works a lot like a VIA.
*/
-irqreturn_t baboon_irq(int irq, void *dev_id
, struct pt_regs *regs
)
+irqreturn_t baboon_irq(int irq, void *dev_id)
{
{
- int irq_bit,
i
;
+ int irq_bit,
irq_num
;
unsigned char events;
#ifdef DEBUG_IRQS
unsigned char events;
#ifdef DEBUG_IRQS
- printk("baboon_irq: mb_control %02X mb_ifr %02X mb_status %02X
active %02X
\n",
+ printk("baboon_irq: mb_control %02X mb_ifr %02X mb_status %02X\n",
(uint) baboon->mb_control, (uint) baboon->mb_ifr,
(uint) baboon->mb_control, (uint) baboon->mb_ifr,
- (uint) baboon->mb_status
, baboon_active
);
+ (uint) baboon->mb_status);
#endif
if (!(events = baboon->mb_ifr & 0x07))
return IRQ_NONE;
#endif
if (!(events = baboon->mb_ifr & 0x07))
return IRQ_NONE;
- for (i = 0, irq_bit = 1 ; i < 3 ; i++, irq_bit <<= 1) {
- if (events & irq_bit/* & baboon_active*/) {
- baboon_active &= ~irq_bit;
- m68k_handle_int(IRQ_BABOON_0 + i, regs);
- baboon_active |= irq_bit;
+ irq_num = IRQ_BABOON_0;
+ irq_bit = 1;
+ do {
+ if (events & irq_bit) {
baboon->mb_ifr &= ~irq_bit;
baboon->mb_ifr &= ~irq_bit;
+ m68k_handle_int(irq_num);
}
}
- }
+ irq_bit <<= 1;
+ irq_num++;
+ } while(events >= irq_bit);
#if 0
if (baboon->mb_ifr & 0x02) macide_ack_intr(NULL);
/* for now we need to smash all interrupts */
#if 0
if (baboon->mb_ifr & 0x02) macide_ack_intr(NULL);
/* for now we need to smash all interrupts */
@@
-95,21
+96,18
@@
irqreturn_t baboon_irq(int irq, void *dev_id, struct pt_regs *regs)
}
void baboon_irq_enable(int irq) {
}
void baboon_irq_enable(int irq) {
- int irq_idx = IRQ_IDX(irq);
-
#ifdef DEBUG_IRQUSE
printk("baboon_irq_enable(%d)\n", irq);
#endif
#ifdef DEBUG_IRQUSE
printk("baboon_irq_enable(%d)\n", irq);
#endif
- baboon_active |= (1 << irq_idx);
+ /* FIXME: figure out how to mask and unmask baboon interrupt sources */
+ enable_irq(IRQ_NUBUS_C);
}
void baboon_irq_disable(int irq) {
}
void baboon_irq_disable(int irq) {
- int irq_idx = IRQ_IDX(irq);
-
#ifdef DEBUG_IRQUSE
printk("baboon_irq_disable(%d)\n", irq);
#endif
#ifdef DEBUG_IRQUSE
printk("baboon_irq_disable(%d)\n", irq);
#endif
-
baboon_active &= ~(1 << irq_idx
);
+
disable_irq(IRQ_NUBUS_C
);
}
void baboon_irq_clear(int irq) {
}
void baboon_irq_clear(int irq) {