summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa/sound/soundcard.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/i386/isa/sound/soundcard.c')
-rw-r--r--sys/i386/isa/sound/soundcard.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/sys/i386/isa/sound/soundcard.c b/sys/i386/isa/sound/soundcard.c
index 52428b4..43649c0 100644
--- a/sys/i386/isa/sound/soundcard.c
+++ b/sys/i386/isa/sound/soundcard.c
@@ -130,6 +130,8 @@ struct isa_driver sscape_mssdriver = {sndprobe, sndattach, "sscape_mss"};
short ipri_to_irq(u_short ipri);
+static ointhand2_t sndintr;
+
u_long
get_time(void)
{
@@ -396,8 +398,27 @@ sndattach(struct isa_device * dev)
static int midi_initialized = 0;
static int seq_initialized = 0;
struct address_info hw_config;
+ char *dname;
void *tmp;
-
+
+ /* XXX this is probably incomplete. */
+ dname = dev->id_driver->name;
+ if (strcmp(dname, "css") == 0 || strcmp(dname, "gusxvi") == 0 ||
+ strcmp(dname, "mss") == 0)
+ dev->id_ointr = adintr;
+ if (strcmp(dname, "gus") == 0)
+ dev->id_ointr = gusintr;
+ if (strcmp(dname, "pas") == 0)
+ dev->id_ointr = pasintr;
+ if (strcmp(dname, "sb") == 0)
+ dev->id_ointr = sbintr;
+ if (strcmp(dname, "sscape_mss") == 0)
+ dev->id_ointr = sndintr;
+ if (strcmp(dname, "sscape") == 0 || strcmp(dname, "trix") == 0)
+ dev->id_ointr = sscapeintr;
+ if (strcmp(dname, "uart0") == 0)
+ dev->id_ointr = m6850intr;
+
unit = driver_to_voxunit(dev->id_driver);
hw_config.io_base = dev->id_iobase;
hw_config.irq = ipri_to_irq(dev->id_irq);
@@ -576,7 +597,7 @@ snd_set_irq_handler(int int_lvl, void (*hndlr) (int), sound_os_info * osp)
return 1;
}
-void
+static void
sndintr(int unit)
{
if ( (unit >= MAX_UNIT) || (irq_proc[unit] == NULL) )
OpenPOWER on IntegriCloud