Allow platform specific isa interrupt setup & teardown routines in

preparation for sable/lynx support
This commit is contained in:
Andrew Gallatin 2000-05-28 02:40:53 +00:00
parent 72741b445a
commit 521ff6f1b9
2 changed files with 16 additions and 1 deletions

View File

@ -47,6 +47,7 @@
*
*/
struct device; /* XXX */
struct resource; /* XXX */
extern struct platform {
/*
@ -75,6 +76,10 @@ extern struct platform {
void (*pci_intr_disable) __P((int));
void (*pci_intr_enable) __P((int));
int (*pci_setup_ide_intr) __P((int chan, void (*fn)(void*), void *arg));
int (*isa_setup_intr) __P((struct device *, struct device *,
struct resource *, int, void *, void *, void **));
int (*isa_teardown_intr) __P((struct device *, struct device *,
struct resource *, void *));
} platform;
/*

View File

@ -42,6 +42,7 @@
#include <machine/intr.h>
#include <machine/intrcnt.h>
#include <machine/resource.h>
#include <machine/cpuconf.h>
static struct rman isa_irq_rman;
static struct rman isa_drq_rman;
@ -298,7 +299,11 @@ isa_setup_intr(device_t dev, device_t child,
{
struct isa_intr *ii;
int error;
if (platform.isa_setup_intr)
return platform.isa_setup_intr(dev, child, irq, flags,
intr, arg, cookiep);
error = rman_activate_resource(irq);
if (error)
return error;
@ -334,6 +339,11 @@ isa_teardown_intr(device_t dev, device_t child,
{
struct isa_intr *ii = cookie;
if (platform.isa_teardown_intr) {
platform.isa_teardown_intr(dev, child, irq, cookie);
return 0;
}
alpha_teardown_intr(ii->ih);
isa_intr_disable(irq->r_start);