APUS irq patch 2
Roman Zippel
zippel at linux-m68k.org
Fri Nov 2 10:34:28 EST 2001
Hi,
Here are some small changes to the APUS interrupt code:
- fix PCMCIA initialisation
- fix interrupt statistics
- fix prototype
bey, Roman
--- arch/ppc/amiga/amiints.c 2001/07/08 15:58:24 1.1.1.7
+++ arch/ppc/amiga/amiints.c 2001/08/24 19:17:27 1.7
@@ -115,7 +115,7 @@
/* turn off PCMCIA interrupts */
if (AMIGAHW_PRESENT(PCMCIA))
- pcmcia_disable_irq();
+ gayle.inten = GAYLE_IRQ_IDE;
/* turn off all interrupts... */
custom.intena = 0x7fff;
@@ -350,7 +350,7 @@
inline void amiga_do_irq(int irq, struct pt_regs *fp)
{
- kstat.irqs[0][SYS_IRQS + irq]++;
+ kstat.irqs[0][irq]++;
ami_irq_list[irq]->handler(irq, ami_irq_list[irq]->dev_id, fp);
}
@@ -358,7 +358,7 @@
{
irq_node_t *node;
- kstat.irqs[0][SYS_IRQS + irq]++;
+ kstat.irqs[0][irq]++;
custom.intreq = ami_intena_vals[irq];
@@ -489,7 +489,7 @@
if (!(node = ami_irq_list[i]))
continue;
len += sprintf(buf+len, "ami %2d: %10u ", i,
- kstat.irqs[0][SYS_IRQS + i]);
+ kstat.irqs[0][i]);
do {
if (node->flags & SA_INTERRUPT)
len += sprintf(buf+len, "F ");
--- arch/ppc/amiga/cia.c 2001/07/08 15:58:25 1.1.1.6
+++ arch/ppc/amiga/cia.c 2001/08/24 19:17:27 1.3
@@ -185,17 +185,16 @@
static void cia_handler(int irq, void *dev_id, struct pt_regs *fp)
{
struct ciabase *base = (struct ciabase *)dev_id;
- int mach_irq, i;
+ int i;
unsigned char ints;
- mach_irq = base->cia_irq;
- irq = SYS_IRQS + mach_irq;
+ irq = base->cia_irq;
ints = cia_set_irq_private(base, CIA_ICR_ALL);
custom.intreq = base->int_mask;
- for (i = 0; i < CIA_IRQS; i++, irq++, mach_irq++) {
+ for (i = 0; i < CIA_IRQS; i++, irq++) {
if (ints & 1) {
kstat.irqs[0][irq]++;
- base->irq_list[i].handler(mach_irq, base->irq_list[i].dev_id, fp);
+ base->irq_list[i].handler(irq, base->irq_list[i].dev_id, fp);
}
ints >>= 1;
}
@@ -229,7 +228,7 @@
j = base->cia_irq;
for (i = 0; i < CIA_IRQS; i++) {
len += sprintf(buf+len, "cia %2d: %10d ", j + i,
- kstat.irqs[0][SYS_IRQS + j + i]);
+ kstat.irqs[0][j + i]);
len += sprintf(buf+len, " ");
len += sprintf(buf+len, "%s\n", base->irq_list[i].devname);
}
--- include/asm-ppc/amigaints.h 2001/07/08 15:09:50 1.1.1.7
+++ include/asm-ppc/amigaints.h 2001/07/08 16:59:56 1.6
@@ -110,12 +110,8 @@
#define IF_DSKBLK 0x0002 /* diskblock DMA finished */
#define IF_TBE 0x0001 /* serial transmit buffer empty interrupt */
-struct irq_server {
- unsigned short count, reentrance;
-};
-
extern void amiga_do_irq(int irq, struct pt_regs *fp);
-extern void amiga_do_irq_list(int irq, struct pt_regs *fp, struct irq_server *server);
+extern void amiga_do_irq_list(int irq, struct pt_regs *fp);
/* CIA interrupt control register bits */
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-dev
mailing list