Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 14 Oct 1995 14:52:33 -0400
From:      "Johanan L. Codona" <codona@planet.net>
To:        freebsd-current@FreeBSD.ORG
Subject:   kern/647      Sound cards fail to work
Message-ID:  <199510141852.OAA16645@rustic>

next in thread | raw e-mail | index | archive | help
Hi,

This is my first attempt to "pitch in" and find bugs on the list.
Since my soundcard (SB16) hasn't worked since 2.0, I thought I would
try to discover why.

My System:

I am running on a Pentium with 16 MB and the relevant part of my
config file is:

controller	snd0
device sb0      at isa? port 0x220 irq 7 conflicts drq 1 vector sbintr
device sbxvi0   at isa? drq 5
device sbmidi0  at isa? port 0x330
device opl0     at isa? port 0x388

Note that this configuration works fine under DOS/Windows. (B-o)

The symptoms: 

On sending a sound to any sound device (audio, dsp, dsp16), the first
part of the sound plays and then stops and the sending process hangs.

I suspect that the problem is that the interrupt handler never gets
called and the driver only plays one buffer of data.  This is further
supported by noting that in isa/sound/sb_dsp.c the interrupt handler
is set and freed by calling the functions:

int sb_get_irq (void)
void sb_free_irq (void)

which in turn call

snd_set_irq_handler(sbc_irq, sbintr) and 
snd_release_irq (sbc_irq).

It seems that isa/sound/soundcard.c just stubs out these functions:

int
snd_set_irq_handler (int interrupt_level, void(*hndlr)(int))
{
  return 1;
}

void
snd_release_irq(int vect)
{
}

I haven't tried to fix this yet, but it seems that a call to
something like register_intr() is required.

Am I right, or am I missing something basic?

-- 
Johanan L. Codona 
The Stekas Group
codona@planet.net



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199510141852.OAA16645>