Alsa-devel
Threads by month
- ----- 2025 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- 8 participants
- 51273 discussions
hello, my linux is ubuntu with Linux bob-laptop 2.6.22-14-generic #1
SMP Sun Oct 14 23:05:12 GMT 2007 i686 GNU/Linux.
now the problem is that,no sound comes out when i use ubuntu.
i have google some pages, and followed the steps as they said. But i
turns out that my sound card is still not working. At the end of this
email,
i send you some inf. about my sound card. And my laptop model is Lenovo
F41.
Could you please help me? thanks a million!!
bob@bob-laptop:~$ aplay -l
**** PLAYBACK硬件设备列表 ****
卡 0: Intel [HDA Intel], 设备 0: ALC262 Analog [ALC262 Analog]
子设备: 1/1
子设备:#0: subdevice #0
卡 0: Intel [HDA Intel], 设备 1: ALC262 Digital [ALC262 Digital]
子设备: 1/1
子设备:#0: subdevice #0
卡 0: Intel [HDA Intel], 设备 6: Si3054 Modem [Si3054 Modem]
子设备: 1/1
子设备:#0: subdevice #0
bob@bob-laptop:~$ lspci -vv|grep Audio
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio
Controller (rev 03)
bob@bob-laptop:~$ cat /proc/asound/cards
0 [Intel ]: HDA-Intel - HDA Intel
HDA Intel at 0xf8300000 irq 22
bob@bob-laptop:~$ lsmod|grep snd
snd_hda_intel 263712 1
snd_pcm_oss 44672 0
snd_mixer_oss 17664 1 snd_pcm_oss
snd_pcm 80388 2 snd_hda_intel,snd_pcm_oss
snd_seq_dummy 4740 0
snd_seq_oss 33152 0
snd_seq_midi 9600 0
snd_rawmidi 25728 1 snd_seq_midi
snd_seq_midi_event 8448 2 snd_seq_oss,snd_seq_midi
snd_seq 53232 6
snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event
snd_timer 24324 2 snd_pcm,snd_seq
snd_seq_device 9228 5
snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_rawmidi,snd_seq
snd 54660 11
snd_hda_intel,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_seq_oss,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
soundcore 8800 1 snd
snd_page_alloc 11400 2 snd_hda_intel,snd_pcm
bob@bob-laptop:~$ cat /proc/asound/version
Advanced Linux Sound Architecture Driver Version 1.0.14 (Thu May 31
09:03:25 2007 UTC).
___________________________________________________________
进入雅虎游戏嘉年华,赢取液晶显示器!
http://cn.mail.yahoo.com/promo/carnival07/
2
1
At Wed, 21 Nov 2007 16:27:52 -0500,
Tim wrote:
>
> On Wednesday 21 November 2007 06:01:22 am you wrote:
> > At Wed, 21 Nov 2007 01:58:41 -0500,
> >
> > terminator356(a)users.sourceforge.net wrote:
> > > After 2 years I've finally traced and fixed a problem
> > > which was preventing me from using anything after
> > > ALSA 1.0.9b !
> > >
> > > In ALSA lib 1.0.9b:
> > > pcm/pcm_generic.c:
> > > int snd_pcm_generic_channel_info()
> > > {
> > > snd_pcm_generic_t *generic = pcm->private_data;
> > > return snd_pcm_channel_info(generic->slave, info);
> > > }
> > >
> > > But in ALSA lib 1.0.15:
> > > pcm/pcm_generic.c:
> > > int snd_pcm_generic_channel_info()
> > > {
> > > snd_pcm_generic_t *generic = pcm->private_data;
> > > if (pcm->mmap_shadow) {
> > > /* No own buffer is required - the plugin won't change
> > > * the data on the buffer, or do safely on-the-place
> > > * conversion
> > > */
> > > return snd_pcm_channel_info(generic->slave, info);
> > > } else {
> > > // Tim: TESTED: This is now called instead of the other
> > > one! /* Allocate own buffer */
> > > return snd_pcm_channel_info_shm(pcm, info, -1);
> > > }
> > > }
> > >
> > > My multi PCM consists of a plughw:0,2 and a hw:1,0
> > > In ALSA 1.0.9b, all five PCMs ALSA creates for this arrangement
> > > create their areas with mmap(). And it works.
> > > But in ALSA 1.0.15 my hw:1,0 and its multi PCM areas are
> > > created with mmap(), and my plughw:0,2 and its PCMs areas
> > > are created with malloc().
> > > Can't hear/record any sound from the plughw:0,2 part of the multi.
> > >
> > > I have verified that ALSA 1.0.15 is copying the plughw:0,2 HW PCM
> > > areas to its LINEAR PCM areas, but NOT finally to its multi PCM areas.
> > > It just copies all zeros.
> > > That's the reason I hear/record no sound from the plughw:0,2 part
> > > of the multi PCM.
> > > So I reverted the function's code back to 1.0.9b and presto!
> > > It works now, the same as in ALSA 1.0.9b
> > >
> > > So please tell me, am I missing something?
> >
> > Well, first of all, could you elaborate what is the real problem you
> > are facing? Judging from your description above, it sounds like a
> > clear bug, but I'm not sure where to start.
> >
> > In addition to the detailed bug description, a testcase program would
> > be greatly helpful.
> >
>
> OK. First, here's my simple testing .asoundrc :
> pcm.multi_rec {
> type multi;
> slaves.a.pcm "hw:1,0";
> slaves.a.channels 12;
> slaves.b.pcm "plughw:0,2";
> slaves.b.channels 16;
> bindings.0.slave a;
> bindings.0.channel 4;
> bindings.1.slave b;
> bindings.1.channel 10;
> }
> ctl.multi_rec {
> type hw;
> card 0;
> }
>
> The two cards are SBLive! (emu10k1) and Delta1010LT (ice1712).
>
> And here is the command line I run:
> arecord -I -v -t wav -c2 -r 48000 -f S32_LE -Dmulti_rec -d 3 \
> --buffer-size 128 arecord-multi-ice-emu.wav
>
> My problem is under ALSA 1.0.15 no sound is recorded from slave 'b' -
> (the plughw:0,2 channel).
> When I look at the two generated wav files, the first has data, and the second
> has all zeros.
>
> So as I said before, I found that ALSA is copying data from the
> plughw:0,2 HW PCM area to its LINEAR PCM area (i.e. the actual conversion
> is taking place), but then somehow the data is not finally copied to its
> multi slave b PCM area - just all zeros are copied.
> Hence all zeros are stored in the second wav file.
>
> But with ALSA 1.0.9b, since all the areas are allocated with mmap(),
> it works fine. It is only after ALSA 1.0.9b, that I get the problem.
> Because ALSA 1.0.15 is allocating both the plughw:0,2 LINEAR PCM area
> and multi slave slave b's PCM area with malloc().
> It seems ALSA doesn't want to copy to areas created with malloc().
OK, point taken.
The problem is that the multi plugin creates unnecessary local buffer.
It works somehow when the slave is a hw, but it doesn't for other
types.
Try the patch below. This should fix the problem. Now the multi
plugin just shadows the slave buffers via mmap.
> > > Should I add something more to my .asoundrc ?
> > > I see that besides {type multi ... }, there is a {type share ...}
> > > defined. *** Does the 'share' have any use here? Can't find any docs on
> > > it.
> >
> > The share type is used only for share plugin, so you can ignore it.
> >
> > > Also:
> > > Yes, I can see now, why you made this code change.
> > > mmap() has limits, so you switched over to malloc().
> > > Those limits force the user to use small buffers
> > > and/or reduce the number of channels created.
> >
> > No, mmap was never used between plugins. It was only for the hw layer
> > even in the earlier verson. In the earlier version, SHM was used
> > instead. But, the plugin buffer is referred only locally, so it makes
> > no sense to use SHM for that. That's why now it was switched to
> > malloc. (snd_pcm_channel_info_shm() is a rest of the old behavior,
> > and thus its name is confusing...)
> >
> My point was this:
> Under ALSA 1.0.9b, (and with my fix to ALSA 1.0.15 to force it to use
> mmap() always - see above), if I run:
> arecord -I -v -t wav -c2 -r 48000 -f S32_LE -Dmulti_rec -d 3 \
> --buffer-size 128 arecord-multi-ice-emu.wav
> it will run. But if I run
> arecord -I -v -t wav -c2 -r 48000 -f S32_LE -Dmulti_rec -d 3 \
> --buffer-size 256 arecord-multi-ice-emu.wav
> it fails with "mmap() failed: Invalid argument".
> I quadrupled the available locked memory with a line in
> /etc/security/limits.conf
> * - memlock 128
> but the second command line still fails.
> What am I doing wrong? How can I increase mmap() limits?
It must be irrelevant now...
Takashi
diff -r 3539f279ec38 src/pcm/pcm_multi.c
--- a/src/pcm/pcm_multi.c Wed Nov 21 12:19:43 2007 +0100
+++ b/src/pcm/pcm_multi.c Fri Nov 23 14:40:39 2007 +0100
@@ -690,13 +690,43 @@ static snd_pcm_sframes_t snd_pcm_multi_m
return size;
}
-static int snd_pcm_multi_mmap(snd_pcm_t *pcm ATTRIBUTE_UNUSED)
+static int snd_pcm_multi_munmap(snd_pcm_t *pcm)
{
+ free(pcm->mmap_channels);
+ free(pcm->running_areas);
+ pcm->mmap_channels = NULL;
+ pcm->running_areas = NULL;
return 0;
}
-static int snd_pcm_multi_munmap(snd_pcm_t *pcm ATTRIBUTE_UNUSED)
+static int snd_pcm_multi_mmap(snd_pcm_t *pcm)
{
+ snd_pcm_multi_t *multi = pcm->private_data;
+ unsigned int c;
+
+ pcm->mmap_channels = calloc(pcm->channels,
+ sizeof(pcm->mmap_channels[0]));
+ pcm->running_areas = calloc(pcm->channels,
+ sizeof(pcm->running_areas[0]));
+ if (!pcm->mmap_channels || !pcm->running_areas) {
+ snd_pcm_multi_munmap(pcm);
+ return -ENOMEM;
+ }
+
+ /* Copy the slave mmapped buffer data */
+ for (c = 0; c < pcm->channels; c++) {
+ snd_pcm_multi_channel_t *chan = &multi->channels[c];
+ snd_pcm_t *slave;
+ if (chan->slave_idx < 0) {
+ snd_pcm_multi_munmap(pcm);
+ return -ENXIO;
+ }
+ slave = multi->slaves[chan->slave_idx].pcm;
+ pcm->mmap_channels[c] =
+ slave->mmap_channels[chan->slave_channel];
+ pcm->running_areas[c] =
+ slave->running_areas[chan->slave_channel];
+ }
return 0;
}
@@ -850,6 +880,7 @@ int snd_pcm_multi_open(snd_pcm_t **pcmp,
return err;
}
pcm->mmap_rw = 1;
+ pcm->mmap_shadow = 1; /* has own mmap method */
pcm->ops = &snd_pcm_multi_ops;
pcm->fast_ops = &snd_pcm_multi_fast_ops;
pcm->private_data = multi;
3
9

01 Dec '07
Hi,
I have a webcam which has microphone-only USB audio capability. However, not only has this device
stopped recording anything but it has also vanished from the "arecord -L" list and appeared in the
"aplay -L" one instead:
$ arecord -L
default:CARD=Audigy2
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
Default Audio Device
front:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
Front speakers
rear:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
Rear speakers
center_lfe:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
Center and Subwoofer speakers
side:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
Side speakers
surround40:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
4.0 Surround output to Front and Rear speakers
surround41:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
IEC958 (S/PDIF) Digital Audio Output
null
Discard all samples (playback) or generate zero samples (capture)
and:
$ aplay -L
default:CARD=Audigy2
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
Default Audio Device
front:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
Front speakers
rear:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
Rear speakers
center_lfe:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
Center and Subwoofer speakers
side:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
Side speakers
surround40:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
4.0 Surround output to Front and Rear speakers
surround41:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Audigy2,DEV=0
Audigy 2 ZS [SB0353], ADC Capture/Standard PCM Playback
IEC958 (S/PDIF) Digital Audio Output
null
Discard all samples (playback) or generate zero samples (capture)
default:CARD=WebCam
USB Device 0x46d:0x8b4, USB Audio
Default Audio Device
front:CARD=WebCam,DEV=0
USB Device 0x46d:0x8b4, USB Audio
Front speakers
surround40:CARD=WebCam,DEV=0
USB Device 0x46d:0x8b4, USB Audio
4.0 Surround output to Front and Rear speakers
surround41:CARD=WebCam,DEV=0
USB Device 0x46d:0x8b4, USB Audio
4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=WebCam,DEV=0
USB Device 0x46d:0x8b4, USB Audio
5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=WebCam,DEV=0
USB Device 0x46d:0x8b4, USB Audio
5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=WebCam,DEV=0
USB Device 0x46d:0x8b4, USB Audio
7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=WebCam,DEV=0
USB Device 0x46d:0x8b4, USB Audio
IEC958 (S/PDIF) Digital Audio Output
Here is my .asoundrc file:
ctl.Audigy2 {
type hw
card 0
}
pcm.Audigy2 {
type plug
slave {
pcm "hw:0,0"
}
}
ctl.webcam {
type hw
card 1
}
pcm.webcam {
type plug
slave {
pcm "hw:1,0"
}
}
and here is what /proc/asound looks like:
]$ ls -als /proc/asound/
total 0
0 dr-xr-xr-x 6 root root 0 2007-12-01 15:55 .
0 dr-xr-xr-x 172 root root 0 2007-12-01 14:37 ..
0 lrwxrwxrwx 1 root root 5 2007-12-01 15:55 Audigy2 -> card0
0 dr-xr-xr-x 11 root root 0 2007-12-01 15:55 card0
0 dr-xr-xr-x 3 root root 0 2007-12-01 15:55 card1
0 -r--r--r-- 1 root root 0 2007-12-01 15:55 cards
0 -r--r--r-- 1 root root 0 2007-12-01 15:55 devices
0 -r--r--r-- 1 root root 0 2007-12-01 15:55 hwdep
0 -r--r--r-- 1 root root 0 2007-12-01 15:55 modules
0 dr-xr-xr-x 2 root root 0 2007-12-01 15:55 oss
0 -r--r--r-- 1 root root 0 2007-12-01 15:55 pcm
0 dr-xr-xr-x 2 root root 0 2007-12-01 15:55 seq
0 -r--r--r-- 1 root root 0 2007-12-01 15:55 timers
0 -r--r--r-- 1 root root 0 2007-12-01 15:55 version
0 lrwxrwxrwx 1 root root 5 2007-12-01 15:55 WebCam -> card1
This happens with both Fedora 7 and Fedora 8. Could there be a problem with the snd-usb-audio
kernel module, please?
Cheers,
Chris
___________________________________________________________
Yahoo! Answers - Got a question? Someone out there knows the answer. Try it
now.
http://uk.answers.yahoo.com/
1
0
On Thu, 22 Nov 2007, Takashi Iwai wrote:
> At Wed, 21 Nov 2007 20:14:34 +0100 (CET),
> Jaroslav Kysela wrote:
> >
> > On Wed, 21 Nov 2007, Rene Herman wrote:
> >
> > > On 21-11-07 17:54, Takashi Iwai wrote:
> > >
> > > > What about the plan to move alsa-devel to vger?
> > > > Shouldn't we do that soon?
> > >
> > > Jaroslav hasn't yet pointed alsa-devel(a)alsa-project.org at vger.
> > > It's a little unfortunate that David wouldn't just transfer
> > > subscriptions as it seems that's where things stalled again. Given
> > > our still recent move from sourceforge it really should be okay to
> > > just move everyone over.
> > >
> > > I noticed that the entirety of people thanking David for setting up
> > > the list consisted of alsa-devel moderators, you and me, and I
> > > suspect most other subscribers don't feel there's actually much
> > > wrong with things as they are today and mostly consider moving again
> > > a nuisance. The one other reaction to the move was a slightly
> > > annoyed reaction about the re-subscribing...
> >
> > I'm playing with idea to redirect alsa-devel(a)alsa-project.org to vger and
> > leave current mailing list (which is subscribed to vger now too). So every
> > e-mail to this list will go through vger, and resubscription will be only
> > choice of subscriber. Opinions?
>
> A couple of things:
>
> - the official address (on kernel tree and wiki) should be vger, not
> alsa-project.org, and promote to re-subscribe.
Changing e-mail address of list is something I don't want.
The official e-mail address for alsa-devel mailing list was always
alsa-devel(a)alsa-project.org (even in time when this list was on
sourceforge). Unfortunately, vger mailing list does not accept simple
redirected e-mails from alsa-devel(a)alsa-project.org so I postponed any
actions.
> - open alsa-project.org list again. I'll stop list admin works.
I tried to count some statistics and at the time spamassassin and
mailman filtering rules catch 92% of spam messages coming to alsa-devel.
Unfortunately remaining 8% means 20 spam messages daily (without
moderation). Could moderators confirm this value?
Jaroslav
-----
Jaroslav Kysela <perex(a)perex.cz>
Linux Kernel Sound Maintainer
ALSA Project
3
7
Hi Takashi.
This removes the pnp_resource_change use from the ALSA ISAPnP drivers. In
2.4 these were useful in providing an easy path to setting the resources,
but in 2.6 they retain function as a layering violation only.
This makes for a nice cleanup (-550 lines) of ALSA but moreover, ALSA is the
only remaining user of pnp_init_resource_table(), pnp_resource_change() and
pnp_manual_config_dev() (and, in fact, of "struct pnp_resource_table") in
the tree outide of drivers/pnp itself meaning it makes for more cleanup
potential inside the PnP layer.
Thomas Renninger acked their removal from that side, you did from the ALSA
side (CC list just copied from that thread).
Against current alsa-kernel HG. Many more potential cleanups in there, but
this _only_ removes the pnp_resource_change code. Compile tested against
current alsa-kernel HG and compile- and use-tested against 2.6.23.x (few
offsets).
Signed-off-by: Rene Herman <rene.herman(a)gmail.com>
Documentation/ALSA-Configuration.txt | 35 ------------
isa/ad1816a/ad1816a.c | 55 ++-----------------
isa/als100.c | 49 ----------------
isa/azt2320.c | 50 -----------------
isa/cmi8330.c | 42 +-------------
isa/cs423x/cs4236.c | 101
+++++++----------------------------
isa/dt019x.c | 48 +---------------
isa/es18xx.c | 58 +++-----------------
isa/gus/interwave.c | 39 +------------
isa/opl3sa2.c | 36 ------------
isa/opti9xx/opti92x-ad1848.c | 50 +----------------
isa/sb/es968.c | 27 ---------
isa/sb/sb16.c | 39 -------------
isa/wavefront/wavefront.c | 55 +------------------
14 files changed, 65 insertions(+), 619 deletions(-)
diff --git a/Documentation/ALSA-Configuration.txt b/Documentation/ALSA-Configuration.txt
--- a/Documentation/ALSA-Configuration.txt
+++ b/Documentation/ALSA-Configuration.txt
@@ -150,13 +150,6 @@ Prior to version 0.9.0rc4 options had a
Module for sound cards based on Analog Devices AD1816A/AD1815 ISA chips.
- port - port # for AD1816A chip (PnP setup)
- mpu_port - port # for MPU-401 UART (PnP setup)
- fm_port - port # for OPL3 (PnP setup)
- irq - IRQ # for AD1816A chip (PnP setup)
- mpu_irq - IRQ # for MPU-401 UART (PnP setup)
- dma1 - first DMA # for AD1816A chip (PnP setup)
- dma2 - second DMA # for AD1816A chip (PnP setup)
clockfreq - Clock frequency for AD1816A chip (default = 0, 33000Hz)
This module supports multiple cards, autoprobe and PnP.
@@ -203,14 +196,6 @@ Prior to version 0.9.0rc4 options had a
Module for sound cards based on Avance Logic ALS100/ALS120 ISA chips.
- port - port # for ALS100 (SB16) chip (PnP setup)
- irq - IRQ # for ALS100 (SB16) chip (PnP setup)
- dma8 - 8-bit DMA # for ALS100 (SB16) chip (PnP setup)
- dma16 - 16-bit DMA # for ALS100 (SB16) chip (PnP setup)
- mpu_port - port # for MPU-401 UART (PnP setup)
- mpu_irq - IRQ # for MPU-401 (PnP setup)
- fm_port - port # for OPL3 FM (PnP setup)
-
This module supports multiple cards, autoprobe and PnP.
The power-management is supported.
@@ -304,15 +289,6 @@ Prior to version 0.9.0rc4 options had a
Module for sound cards based on Aztech System AZT2320 ISA chip (PnP only).
- port - port # for AZT2320 chip (PnP setup)
- wss_port - port # for WSS (PnP setup)
- mpu_port - port # for MPU-401 UART (PnP setup)
- fm_port - FM port # for AZT2320 chip (PnP setup)
- irq - IRQ # for AZT2320 (WSS) chip (PnP setup)
- mpu_irq - IRQ # for MPU-401 UART (PnP setup)
- dma1 - 1st DMA # for AZT2320 (WSS) chip (PnP setup)
- dma2 - 2nd DMA # for AZT2320 (WSS) chip (PnP setup)
-
This module supports multiple cards, PnP and autoprobe.
The power-management is supported.
@@ -504,13 +480,6 @@ Prior to version 0.9.0rc4 options had a
Module for Diamond Technologies DT-019X / Avance Logic ALS-007 (PnP
only)
-
- port - Port # (PnP setup)
- mpu_port - Port # for MPU-401 (PnP setup)
- fm_port - Port # for FM OPL-3 (PnP setup)
- irq - IRQ # (PnP setup)
- mpu_irq - IRQ # for MPU-401 (PnP setup)
- dma8 - DMA # (PnP setup)
This module supports multiple cards. This module is enabled only with
ISA PnP support.
@@ -609,10 +578,6 @@ Prior to version 0.9.0rc4 options had a
Module for sound cards based on ESS ES968 chip (PnP only).
- port - port # for ES968 (SB8) chip (PnP setup)
- irq - IRQ # for ES968 (SB8) chip (PnP setup)
- dma1 - DMA # for ES968 (SB8) chip (PnP setup)
-
This module supports multiple cards, PnP and autoprobe.
The power-management is supported.
diff --git a/isa/ad1816a/ad1816a.c b/isa/ad1816a/ad1816a.c
--- a/isa/ad1816a/ad1816a.c
+++ b/isa/ad1816a/ad1816a.c
@@ -61,20 +61,6 @@ MODULE_PARM_DESC(id, "ID string for ad18
MODULE_PARM_DESC(id, "ID string for ad1816a based soundcard.");
module_param_array(enable, bool, NULL, 0444);
MODULE_PARM_DESC(enable, "Enable ad1816a based soundcard.");
-module_param_array(port, long, NULL, 0444);
-MODULE_PARM_DESC(port, "Port # for ad1816a driver.");
-module_param_array(mpu_port, long, NULL, 0444);
-MODULE_PARM_DESC(mpu_port, "MPU-401 port # for ad1816a driver.");
-module_param_array(fm_port, long, NULL, 0444);
-MODULE_PARM_DESC(fm_port, "FM port # for ad1816a driver.");
-module_param_array(irq, int, NULL, 0444);
-MODULE_PARM_DESC(irq, "IRQ # for ad1816a driver.");
-module_param_array(mpu_irq, int, NULL, 0444);
-MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for ad1816a driver.");
-module_param_array(dma1, int, NULL, 0444);
-MODULE_PARM_DESC(dma1, "1st DMA # for ad1816a driver.");
-module_param_array(dma2, int, NULL, 0444);
-MODULE_PARM_DESC(dma2, "2nd DMA # for ad1816a driver.");
module_param_array(clockfreq, int, NULL, 0444);
MODULE_PARM_DESC(clockfreq, "Clock frequency for ad1816a driver (default = 0).");
@@ -117,16 +103,12 @@ static int __devinit snd_card_ad1816a_pn
const struct pnp_card_device_id *id)
{
struct pnp_dev *pdev;
- struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL);
int err;
- if (!cfg)
- return -ENOMEM;
acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL);
- if (acard->dev == NULL) {
- kfree(cfg);
+ if (acard->dev == NULL)
return -EBUSY;
- }
+
acard->devmpu = pnp_request_card_device(card, id->devs[1].id, NULL);
if (acard->devmpu == NULL) {
mpu_port[dev] = -1;
@@ -134,25 +116,10 @@ static int __devinit snd_card_ad1816a_pn
}
pdev = acard->dev;
- pnp_init_resource_table(cfg);
-
- if (port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[2], port[dev], 16);
- if (fm_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[1], fm_port[dev], 4);
- if (dma1[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1);
- if (dma2[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[1], dma2[dev], 1);
- if (irq[dev] != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
-
- if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
- snd_printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n");
+
err = pnp_activate_dev(pdev);
if (err < 0) {
printk(KERN_ERR PFX "AUDIO PnP configure failure\n");
- kfree(cfg);
return -EBUSY;
}
@@ -162,20 +129,11 @@ static int __devinit snd_card_ad1816a_pn
dma2[dev] = pnp_dma(pdev, 1);
irq[dev] = pnp_irq(pdev, 0);
- if (acard->devmpu == NULL) {
- kfree(cfg);
+ if (acard->devmpu == NULL)
return 0;
- }
+
pdev = acard->devmpu;
- pnp_init_resource_table(cfg);
-
- if (mpu_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], mpu_port[dev], 2);
- if (mpu_irq[dev] != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], mpu_irq[dev], 1);
-
- if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
- snd_printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n");
+
err = pnp_activate_dev(pdev);
if (err < 0) {
printk(KERN_ERR PFX "MPU401 PnP configure failure\n");
@@ -186,7 +144,6 @@ static int __devinit snd_card_ad1816a_pn
mpu_irq[dev] = pnp_irq(pdev, 0);
}
- kfree(cfg);
return 0;
}
diff --git a/isa/als100.c b/isa/als100.c
--- a/isa/als100.c
+++ b/isa/als100.c
@@ -63,20 +63,6 @@ MODULE_PARM_DESC(id, "ID string for als1
MODULE_PARM_DESC(id, "ID string for als100 based soundcard.");
module_param_array(enable, bool, NULL, 0444);
MODULE_PARM_DESC(enable, "Enable als100 based soundcard.");
-module_param_array(port, long, NULL, 0444);
-MODULE_PARM_DESC(port, "Port # for als100 driver.");
-module_param_array(mpu_port, long, NULL, 0444);
-MODULE_PARM_DESC(mpu_port, "MPU-401 port # for als100 driver.");
-module_param_array(fm_port, long, NULL, 0444);
-MODULE_PARM_DESC(fm_port, "FM port # for als100 driver.");
-module_param_array(irq, int, NULL, 0444);
-MODULE_PARM_DESC(irq, "IRQ # for als100 driver.");
-module_param_array(mpu_irq, int, NULL, 0444);
-MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for als100 driver.");
-module_param_array(dma8, int, NULL, 0444);
-MODULE_PARM_DESC(dma8, "8-bit DMA # for als100 driver.");
-module_param_array(dma16, int, NULL, 0444);
-MODULE_PARM_DESC(dma16, "16-bit DMA # for als100 driver.");
struct snd_card_als100 {
int dev_no;
@@ -111,38 +97,20 @@ static int __devinit snd_card_als100_pnp
const struct pnp_card_device_id *id)
{
struct pnp_dev *pdev;
- struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL);
int err;
- if (!cfg)
- return -ENOMEM;
acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL);
- if (acard->dev == NULL) {
- kfree(cfg);
+ if (acard->dev == NULL)
return -ENODEV;
- }
+
acard->devmpu = pnp_request_card_device(card, id->devs[1].id, acard->dev);
acard->devopl = pnp_request_card_device(card, id->devs[2].id, acard->dev);
pdev = acard->dev;
- pnp_init_resource_table(cfg);
-
- /* override resources */
- if (port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], port[dev], 16);
- if (dma8[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[0], dma8[dev], 1);
- if (dma16[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[1], dma16[dev], 1);
- if (irq[dev] != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
- if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
- snd_printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0) {
snd_printk(KERN_ERR PFX "AUDIO pnp configure failure\n");
- kfree(cfg);
return err;
}
port[dev] = pnp_port_start(pdev, 0);
@@ -152,13 +120,6 @@ static int __devinit snd_card_als100_pnp
pdev = acard->devmpu;
if (pdev != NULL) {
- pnp_init_resource_table(cfg);
- if (mpu_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], mpu_port[dev], 2);
- if (mpu_irq[dev] != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], mpu_irq[dev], 1);
- if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- snd_printk(KERN_ERR PFX "MPU401 the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0)
goto __mpu_error;
@@ -176,11 +137,6 @@ static int __devinit snd_card_als100_pnp
pdev = acard->devopl;
if (pdev != NULL) {
- pnp_init_resource_table(cfg);
- if (fm_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], fm_port[dev], 4);
- if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- snd_printk(KERN_ERR PFX "OPL3 the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0)
goto __fm_error;
@@ -195,7 +151,6 @@ static int __devinit snd_card_als100_pnp
fm_port[dev] = -1;
}
- kfree(cfg);
return 0;
}
diff --git a/isa/azt2320.c b/isa/azt2320.c
--- a/isa/azt2320.c
+++ b/isa/azt2320.c
@@ -72,22 +72,6 @@ MODULE_PARM_DESC(id, "ID string for azt2
MODULE_PARM_DESC(id, "ID string for azt2320 based soundcard.");
module_param_array(enable, bool, NULL, 0444);
MODULE_PARM_DESC(enable, "Enable azt2320 based soundcard.");
-module_param_array(port, long, NULL, 0444);
-MODULE_PARM_DESC(port, "Port # for azt2320 driver.");
-module_param_array(wss_port, long, NULL, 0444);
-MODULE_PARM_DESC(wss_port, "WSS Port # for azt2320 driver.");
-module_param_array(mpu_port, long, NULL, 0444);
-MODULE_PARM_DESC(mpu_port, "MPU-401 port # for azt2320 driver.");
-module_param_array(fm_port, long, NULL, 0444);
-MODULE_PARM_DESC(fm_port, "FM port # for azt2320 driver.");
-module_param_array(irq, int, NULL, 0444);
-MODULE_PARM_DESC(irq, "IRQ # for azt2320 driver.");
-module_param_array(mpu_irq, int, NULL, 0444);
-MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for azt2320 driver.");
-module_param_array(dma1, int, NULL, 0444);
-MODULE_PARM_DESC(dma1, "1st DMA # for azt2320 driver.");
-module_param_array(dma2, int, NULL, 0444);
-MODULE_PARM_DESC(dma2, "2nd DMA # for azt2320 driver.");
struct snd_card_azt2320 {
int dev_no;
@@ -121,43 +105,19 @@ static int __devinit snd_card_azt2320_pn
const struct pnp_card_device_id *id)
{
struct pnp_dev *pdev;
- struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
int err;
- if (!cfg)
- return -ENOMEM;
-
acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL);
- if (acard->dev == NULL) {
- kfree(cfg);
+ if (acard->dev == NULL)
return -ENODEV;
- }
acard->devmpu = pnp_request_card_device(card, id->devs[1].id, NULL);
pdev = acard->dev;
- pnp_init_resource_table(cfg);
-
- /* override resources */
- if (port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], port[dev], 16);
- if (fm_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[1], fm_port[dev], 4);
- if (wss_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[2], wss_port[dev], 4);
- if (dma1[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1);
- if (dma2[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[1], dma2[dev], 1);
- if (irq[dev] != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
- if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- snd_printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0) {
snd_printk(KERN_ERR PFX "AUDIO pnp configure failure\n");
- kfree(cfg);
return err;
}
port[dev] = pnp_port_start(pdev, 0);
@@ -169,13 +129,6 @@ static int __devinit snd_card_azt2320_pn
pdev = acard->devmpu;
if (pdev != NULL) {
- pnp_init_resource_table(cfg);
- if (mpu_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], mpu_port[dev], 2);
- if (mpu_irq[dev] != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], mpu_irq[dev], 1);
- if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- snd_printk(KERN_ERR PFX "MPU401 the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0)
goto __mpu_error;
@@ -191,7 +144,6 @@ static int __devinit snd_card_azt2320_pn
mpu_port[dev] = -1;
}
- kfree (cfg);
return 0;
}
diff --git a/isa/cmi8330.c b/isa/cmi8330.c
--- a/isa/cmi8330.c
+++ b/isa/cmi8330.c
@@ -286,39 +286,21 @@ static int __devinit snd_cmi8330_pnp(int
const struct pnp_card_device_id *id)
{
struct pnp_dev *pdev;
- struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
int err;
- if (!cfg)
- return -ENOMEM;
acard->cap = pnp_request_card_device(card, id->devs[0].id, NULL);
- if (acard->cap == NULL) {
- kfree(cfg);
+ if (acard->cap == NULL)
return -EBUSY;
- }
+
acard->play = pnp_request_card_device(card, id->devs[1].id, NULL);
- if (acard->play == NULL) {
- kfree(cfg);
+ if (acard->play == NULL)
return -EBUSY;
- }
pdev = acard->cap;
- pnp_init_resource_table(cfg);
- /* allocate AD1848 resources */
- if (wssport[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], wssport[dev], 8);
- if (wssdma[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[0], wssdma[dev], 1);
- if (wssirq[dev] != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], wssirq[dev], 1);
-
- err = pnp_manual_config_dev(pdev, cfg, 0);
- if (err < 0)
- snd_printk(KERN_ERR "CMI8330/C3D (AD1848) PnP manual resources are invalid, using auto config\n");
+
err = pnp_activate_dev(pdev);
if (err < 0) {
snd_printk(KERN_ERR "CMI8330/C3D (AD1848) PnP configure failure\n");
- kfree(cfg);
return -EBUSY;
}
wssport[dev] = pnp_port_start(pdev, 0);
@@ -327,23 +309,10 @@ static int __devinit snd_cmi8330_pnp(int
/* allocate SB16 resources */
pdev = acard->play;
- pnp_init_resource_table(cfg);
- if (sbport[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], sbport[dev], 16);
- if (sbdma8[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[0], sbdma8[dev], 1);
- if (sbdma16[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[1], sbdma16[dev], 1);
- if (sbirq[dev] != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], sbirq[dev], 1);
-
- err = pnp_manual_config_dev(pdev, cfg, 0);
- if (err < 0)
- snd_printk(KERN_ERR "CMI8330/C3D (SB16) PnP manual resources are invalid, using auto config\n");
+
err = pnp_activate_dev(pdev);
if (err < 0) {
snd_printk(KERN_ERR "CMI8330/C3D (SB16) PnP configure failure\n");
- kfree(cfg);
return -EBUSY;
}
sbport[dev] = pnp_port_start(pdev, 0);
@@ -351,7 +320,6 @@ static int __devinit snd_cmi8330_pnp(int
sbdma16[dev] = pnp_dma(pdev, 1);
sbirq[dev] = pnp_irq(pdev, 0);
- kfree(cfg);
return 0;
}
#endif
diff --git a/isa/cs423x/cs4236.c b/isa/cs423x/cs4236.c
--- a/isa/cs423x/cs4236.c
+++ b/isa/cs423x/cs4236.c
@@ -270,29 +270,9 @@ MODULE_DEVICE_TABLE(pnp_card, snd_cs423x
MODULE_DEVICE_TABLE(pnp_card, snd_cs423x_pnpids);
/* WSS initialization */
-static int __devinit snd_cs423x_pnp_init_wss(int dev, struct pnp_dev *pdev,
- struct pnp_resource_table *cfg)
-{
- int err;
-
- pnp_init_resource_table(cfg);
- if (port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], port[dev], 4);
- if (fm_port[dev] != SNDRV_AUTO_PORT && fm_port[dev] > 0)
- pnp_resource_change(&cfg->port_resource[1], fm_port[dev], 4);
- if (sb_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[2], sb_port[dev], 16);
- if (irq[dev] != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
- if (dma1[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1);
- if (dma2[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[1], dma2[dev] < 0 ? 4 : dma2[dev], 1);
- err = pnp_manual_config_dev(pdev, cfg, 0);
- if (err < 0)
- snd_printk(KERN_ERR IDENT " WSS PnP manual resources are invalid, using auto config\n");
- err = pnp_activate_dev(pdev);
- if (err < 0) {
+static int __devinit snd_cs423x_pnp_init_wss(int dev, struct pnp_dev *pdev)
+{
+ if (pnp_activate_dev(pdev) < 0) {
printk(KERN_ERR IDENT " WSS PnP configure failed for WSS (out of resources?)\n");
return -EBUSY;
}
@@ -311,19 +291,9 @@ static int __devinit snd_cs423x_pnp_init
}
/* CTRL initialization */
-static int __devinit snd_cs423x_pnp_init_ctrl(int dev, struct pnp_dev *pdev,
- struct pnp_resource_table *cfg)
-{
- int err;
-
- pnp_init_resource_table(cfg);
- if (cport[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], cport[dev], 8);
- err = pnp_manual_config_dev(pdev, cfg, 0);
- if (err < 0)
- snd_printk(KERN_ERR IDENT " CTRL PnP manual resources are invalid, using auto config\n");
- err = pnp_activate_dev(pdev);
- if (err < 0) {
+static int __devinit snd_cs423x_pnp_init_ctrl(int dev, struct pnp_dev *pdev)
+{
+ if (pnp_activate_dev(pdev) < 0) {
printk(KERN_ERR IDENT " CTRL PnP configure failed for WSS (out of resources?)\n");
return -EBUSY;
}
@@ -333,21 +303,9 @@ static int __devinit snd_cs423x_pnp_init
}
/* MPU initialization */
-static int __devinit snd_cs423x_pnp_init_mpu(int dev, struct pnp_dev *pdev,
- struct pnp_resource_table *cfg)
-{
- int err;
-
- pnp_init_resource_table(cfg);
- if (mpu_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], mpu_port[dev], 2);
- if (mpu_irq[dev] != SNDRV_AUTO_IRQ && mpu_irq[dev] >= 0)
- pnp_resource_change(&cfg->irq_resource[0], mpu_irq[dev], 1);
- err = pnp_manual_config_dev(pdev, cfg, 0);
- if (err < 0)
- snd_printk(KERN_ERR IDENT " MPU401 PnP manual resources are invalid, using auto config\n");
- err = pnp_activate_dev(pdev);
- if (err < 0) {
+static int __devinit snd_cs423x_pnp_init_mpu(int dev, struct pnp_dev *pdev)
+{
+ if (pnp_activate_dev(pdev) < 0) {
printk(KERN_ERR IDENT " MPU401 PnP configure failed for WSS (out of resources?)\n");
mpu_port[dev] = SNDRV_AUTO_PORT;
mpu_irq[dev] = SNDRV_AUTO_IRQ;
@@ -368,15 +326,8 @@ static int __devinit snd_card_cs4232_pnp
static int __devinit snd_card_cs4232_pnp(int dev, struct snd_card_cs4236 *acard,
struct pnp_dev *pdev)
{
- struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL);
-
- if (!cfg)
- return -ENOMEM;
- if (snd_cs423x_pnp_init_wss(dev, acard->wss, cfg) < 0) {
- kfree(cfg);
+ if (snd_cs423x_pnp_init_wss(dev, acard->wss) < 0)
return -EBUSY;
- }
- kfree(cfg);
cport[dev] = -1;
return 0;
}
@@ -386,43 +337,33 @@ static int __devinit snd_card_cs423x_pnp
struct pnp_card_link *card,
const struct pnp_card_device_id *id)
{
- struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL);
-
- if (!cfg)
- return -ENOMEM;
-
acard->wss = pnp_request_card_device(card, id->devs[0].id, NULL);
if (acard->wss == NULL)
- goto error;
+ return -EBUSY;
acard->ctrl = pnp_request_card_device(card, id->devs[1].id, NULL);
if (acard->ctrl == NULL)
- goto error;
+ return -EBUSY;
if (id->devs[2].id[0]) {
acard->mpu = pnp_request_card_device(card, id->devs[2].id, NULL);
if (acard->mpu == NULL)
- goto error;
+ return -EBUSY;
}
/* WSS initialization */
- if (snd_cs423x_pnp_init_wss(dev, acard->wss, cfg) < 0)
- goto error;
+ if (snd_cs423x_pnp_init_wss(dev, acard->wss) < 0)
+ return -EBUSY;
/* CTRL initialization */
if (acard->ctrl && cport[dev] > 0) {
- if (snd_cs423x_pnp_init_ctrl(dev, acard->ctrl, cfg) < 0)
- goto error;
+ if (snd_cs423x_pnp_init_ctrl(dev, acard->ctrl) < 0)
+ return -EBUSY;
}
/* MPU initialization */
if (acard->mpu && mpu_port[dev] > 0) {
- if (snd_cs423x_pnp_init_mpu(dev, acard->mpu, cfg) < 0)
- goto error;
- }
- kfree(cfg);
- return 0;
-
- error:
- kfree(cfg);
- return -EBUSY;
+ if (snd_cs423x_pnp_init_mpu(dev, acard->mpu) < 0)
+ return -EBUSY;
+ }
+ return 0;
}
#endif /* CONFIG_PNP */
diff --git a/isa/dt019x.c b/isa/dt019x.c
--- a/isa/dt019x.c
+++ b/isa/dt019x.c
@@ -56,18 +56,6 @@ MODULE_PARM_DESC(id, "ID string for DT-0
MODULE_PARM_DESC(id, "ID string for DT-019X based soundcard.");
module_param_array(enable, bool, NULL, 0444);
MODULE_PARM_DESC(enable, "Enable DT-019X based soundcard.");
-module_param_array(port, long, NULL, 0444);
-MODULE_PARM_DESC(port, "Port # for dt019x driver.");
-module_param_array(mpu_port, long, NULL, 0444);
-MODULE_PARM_DESC(mpu_port, "MPU-401 port # for dt019x driver.");
-module_param_array(fm_port, long, NULL, 0444);
-MODULE_PARM_DESC(fm_port, "FM port # for dt019x driver.");
-module_param_array(irq, int, NULL, 0444);
-MODULE_PARM_DESC(irq, "IRQ # for dt019x driver.");
-module_param_array(mpu_irq, int, NULL, 0444);
-MODULE_PARM_DESC(mpu_irq, "MPU-401 IRQ # for dt019x driver.");
-module_param_array(dma8, int, NULL, 0444);
-MODULE_PARM_DESC(dma8, "8-bit DMA # for dt019x driver.");
struct snd_card_dt019x {
struct pnp_dev *dev;
@@ -95,36 +83,20 @@ static int __devinit snd_card_dt019x_pnp
const struct pnp_card_device_id *pid)
{
struct pnp_dev *pdev;
- struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
int err;
- if (!cfg)
- return -ENOMEM;
-
acard->dev = pnp_request_card_device(card, pid->devs[0].id, NULL);
- if (acard->dev == NULL) {
- kfree (cfg);
+ if (acard->dev == NULL)
return -ENODEV;
- }
+
acard->devmpu = pnp_request_card_device(card, pid->devs[1].id, NULL);
acard->devopl = pnp_request_card_device(card, pid->devs[2].id, NULL);
pdev = acard->dev;
- pnp_init_resource_table(cfg);
-
- if (port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], port[dev], 16);
- if (dma8[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[0], dma8[dev], 1);
- if (irq[dev] != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
-
- if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- snd_printk(KERN_ERR PFX "DT-019X AUDIO the requested resources are invalid, using auto config\n");
+
err = pnp_activate_dev(pdev);
if (err < 0) {
snd_printk(KERN_ERR PFX "DT-019X AUDIO pnp configure failure\n");
- kfree(cfg);
return err;
}
@@ -135,15 +107,7 @@ static int __devinit snd_card_dt019x_pnp
port[dev],irq[dev],dma8[dev]);
pdev = acard->devmpu;
-
if (pdev != NULL) {
- pnp_init_resource_table(cfg);
- if (mpu_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], mpu_port[dev], 2);
- if (mpu_irq[dev] != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], mpu_irq[dev], 1);
- if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- snd_printk(KERN_ERR PFX "DT-019X MPU401 the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0) {
pnp_release_card_device(pdev);
@@ -162,11 +126,6 @@ static int __devinit snd_card_dt019x_pnp
pdev = acard->devopl;
if (pdev != NULL) {
- pnp_init_resource_table(cfg);
- if (fm_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], fm_port[dev], 4);
- if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- snd_printk(KERN_ERR PFX "DT-019X OPL3 the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0) {
pnp_release_card_device(pdev);
@@ -181,7 +140,6 @@ static int __devinit snd_card_dt019x_pnp
fm_port[dev] = -1;
}
- kfree(cfg);
return 0;
}
diff --git a/isa/es18xx.c b/isa/es18xx.c
--- a/isa/es18xx.c
+++ b/isa/es18xx.c
@@ -2035,31 +2035,9 @@ MODULE_DEVICE_TABLE(pnp, snd_audiodrive_
MODULE_DEVICE_TABLE(pnp, snd_audiodrive_pnpbiosids);
/* PnP main device initialization */
-static int __devinit snd_audiodrive_pnp_init_main(int dev, struct pnp_dev *pdev,
- struct pnp_resource_table *cfg)
-{
- int err;
-
- pnp_init_resource_table(cfg);
- if (port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], port[dev], 16);
- if (fm_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[1], fm_port[dev], 4);
- if (mpu_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[2], mpu_port[dev], 2);
- if (dma1[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1);
- if (dma2[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[1], dma2[dev], 1);
- if (irq[dev] != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
- if (pnp_device_is_isapnp(pdev)) {
- err = pnp_manual_config_dev(pdev, cfg, 0);
- if (err < 0)
- snd_printk(KERN_ERR PFX "PnP manual resources are invalid, using auto config\n");
- }
- err = pnp_activate_dev(pdev);
- if (err < 0) {
+static int __devinit snd_audiodrive_pnp_init_main(int dev, struct pnp_dev *pdev)
+{
+ if (pnp_activate_dev(pdev) < 0) {
snd_printk(KERN_ERR PFX "PnP configure failure (out of resources?)\n");
return -EBUSY;
}
@@ -2087,16 +2065,9 @@ static int __devinit snd_audiodrive_pnp(
static int __devinit snd_audiodrive_pnp(int dev, struct snd_audiodrive *acard,
struct pnp_dev *pdev)
{
- struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
-
- if (!cfg)
- return -ENOMEM;
acard->dev = pdev;
- if (snd_audiodrive_pnp_init_main(dev, acard->dev, cfg) < 0) {
- kfree(cfg);
+ if (snd_audiodrive_pnp_init_main(dev, acard->dev) < 0)
return -EBUSY;
- }
- kfree(cfg);
return 0;
}
@@ -2125,33 +2096,24 @@ static int __devinit snd_audiodrive_pnpc
struct pnp_card_link *card,
const struct pnp_card_device_id *id)
{
- struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
-
- if (!cfg)
- return -ENOMEM;
acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL);
- if (acard->dev == NULL) {
- kfree(cfg);
+ if (acard->dev == NULL)
return -EBUSY;
- }
+
acard->devc = pnp_request_card_device(card, id->devs[1].id, NULL);
- if (acard->devc == NULL) {
- kfree(cfg);
+ if (acard->devc == NULL)
return -EBUSY;
- }
+
/* Control port initialization */
if (pnp_activate_dev(acard->devc) < 0) {
- kfree(cfg);
snd_printk(KERN_ERR PFX "PnP control configure failure (out of resources?)\n");
return -EAGAIN;
}
snd_printdd("pnp: port=0x%llx\n",
(unsigned long long)pnp_port_start(acard->devc, 0));
- if (snd_audiodrive_pnp_init_main(dev, acard->dev, cfg) < 0) {
- kfree(cfg);
+ if (snd_audiodrive_pnp_init_main(dev, acard->dev) < 0)
return -EBUSY;
- }
- kfree(cfg);
+
return 0;
}
#endif /* CONFIG_PNP */
diff --git a/isa/gus/interwave.c b/isa/gus/interwave.c
--- a/isa/gus/interwave.c
+++ b/isa/gus/interwave.c
@@ -560,50 +560,27 @@ static int __devinit snd_interwave_pnp(i
const struct pnp_card_device_id *id)
{
struct pnp_dev *pdev;
- struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
int err;
- if (!cfg)
- return -ENOMEM;
iwcard->dev = pnp_request_card_device(card, id->devs[0].id, NULL);
- if (iwcard->dev == NULL) {
- kfree(cfg);
+ if (iwcard->dev == NULL)
return -EBUSY;
- }
+
#ifdef SNDRV_STB
iwcard->devtc = pnp_request_card_device(card, id->devs[1].id, NULL);
- if (iwcard->devtc == NULL) {
- kfree(cfg);
+ if (iwcard->devtc == NULL)
return -EBUSY;
- }
#endif
/* Synth & Codec initialization */
pdev = iwcard->dev;
- pnp_init_resource_table(cfg);
- if (port[dev] != SNDRV_AUTO_PORT) {
- pnp_resource_change(&cfg->port_resource[0], port[dev], 16);
- pnp_resource_change(&cfg->port_resource[1], port[dev] + 0x100, 12);
- pnp_resource_change(&cfg->port_resource[2], port[dev] + 0x10c, 4);
- }
- if (dma1[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1);
- if (dma2[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[1], dma2[dev], 1);
- if (dma2[dev] < 0)
- pnp_resource_change(&cfg->dma_resource[1], 4, 1);
- if (irq[dev] != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
- if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
- snd_printk(KERN_ERR "InterWave - Synth - the requested resources are invalid, using auto config\n");
+
err = pnp_activate_dev(pdev);
if (err < 0) {
- kfree(cfg);
snd_printk(KERN_ERR "InterWave PnP configure failure (out of resources?)\n");
return err;
}
if (pnp_port_start(pdev, 0) + 0x100 != pnp_port_start(pdev, 1) ||
pnp_port_start(pdev, 0) + 0x10c != pnp_port_start(pdev, 2)) {
- kfree(cfg);
snd_printk(KERN_ERR "PnP configure failure (wrong ports)\n");
return -ENOENT;
}
@@ -620,21 +597,15 @@ static int __devinit snd_interwave_pnp(i
#ifdef SNDRV_STB
/* Tone Control initialization */
pdev = iwcard->devtc;
- pnp_init_resource_table(cfg);
- if (port_tc[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], port_tc[dev], 1);
- if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
- snd_printk(KERN_ERR "InterWave - ToneControl - the requested resources are invalid, using auto config\n");
+
err = pnp_activate_dev(pdev);
if (err < 0) {
- kfree(cfg);
snd_printk(KERN_ERR "InterWave ToneControl PnP configure failure (out of resources?)\n");
return err;
}
port_tc[dev] = pnp_port_start(pdev, 0);
snd_printdd("isapnp IW: tone control port=0x%lx\n", port_tc[dev]);
#endif
- kfree(cfg);
return 0;
}
#endif /* CONFIG_PNP */
diff --git a/isa/opl3sa2.c b/isa/opl3sa2.c
--- a/isa/opl3sa2.c
+++ b/isa/opl3sa2.c
@@ -610,39 +610,8 @@ static int __devinit snd_opl3sa2_pnp(int
static int __devinit snd_opl3sa2_pnp(int dev, struct snd_opl3sa2 *chip,
struct pnp_dev *pdev)
{
- struct pnp_resource_table * cfg;
- int err;
-
- cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
- if (!cfg) {
- snd_printk(KERN_ERR PFX "cannot allocate pnp cfg\n");
- return -ENOMEM;
- }
- /* PnP initialization */
- pnp_init_resource_table(cfg);
- if (sb_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], sb_port[dev], 16);
- if (wss_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[1], wss_port[dev], 8);
- if (fm_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[2], fm_port[dev], 4);
- if (midi_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[3], midi_port[dev], 2);
- if (port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[4], port[dev], 2);
- if (dma1[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1);
- if (dma2[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[1], dma2[dev], 1);
- if (irq[dev] != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
- err = pnp_manual_config_dev(pdev, cfg, 0);
- if (err < 0)
- snd_printk(KERN_WARNING "PnP manual resources are invalid, using auto config\n");
- err = pnp_activate_dev(pdev);
- if (err < 0) {
- kfree(cfg);
- snd_printk(KERN_ERR "PnP configure failure (out of resources?) err = %d\n", err);
+ if (pnp_activate_dev(pdev) < 0) {
+ snd_printk(KERN_ERR "PnP configure failure (out of resources?)\n");
return -EBUSY;
}
sb_port[dev] = pnp_port_start(pdev, 0);
@@ -657,7 +626,6 @@ static int __devinit snd_opl3sa2_pnp(int
pnp_device_is_pnpbios(pdev) ? "BIOS" : "ISA", sb_port[dev], wss_port[dev], fm_port[dev], midi_port[dev]);
snd_printdd("%sPnP OPL3-SA: control port=0x%lx, dma1=%i, dma2=%i, irq=%i\n",
pnp_device_is_pnpbios(pdev) ? "BIOS" : "ISA", port[dev], dma1[dev], dma2[dev], irq[dev]);
- kfree(cfg);
return 0;
}
#endif /* CONFIG_PNP */
diff --git a/isa/opti9xx/opti92x-ad1848.c b/isa/opti9xx/opti92x-ad1848.c
--- a/isa/opti9xx/opti92x-ad1848.c
+++ b/isa/opti9xx/opti92x-ad1848.c
@@ -1690,53 +1690,19 @@ static int __devinit snd_card_opti9xx_pn
const struct pnp_card_device_id *pid)
{
struct pnp_dev *pdev;
- struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL);
int err;
- if (!cfg)
- return -ENOMEM;
chip->dev = pnp_request_card_device(card, pid->devs[0].id, NULL);
- if (chip->dev == NULL) {
- kfree(cfg);
+ if (chip->dev == NULL)
return -EBUSY;
- }
+
chip->devmpu = pnp_request_card_device(card, pid->devs[1].id, NULL);
pdev = chip->dev;
- pnp_init_resource_table(cfg);
-
-#ifdef OPTi93X
- if (port != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], port + 4, 4);
-#else
- if (pid->driver_data != 0x0924 && port != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[1], port, 4);
-#endif /* OPTi93X */
- if (irq != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], irq, 1);
- if (dma1 != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[0], dma1, 1);
-#if defined(CS4231) || defined(OPTi93X)
- if (dma2 != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[1], dma2, 1);
-#else
-#ifdef snd_opti9xx_fixup_dma2
- snd_opti9xx_fixup_dma2(pdev);
-#endif
-#endif /* CS4231 || OPTi93X */
-#ifdef OPTi93X
- if (fm_port > 0 && fm_port != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[1], fm_port, 4);
-#else
- if (fm_port > 0 && fm_port != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[2], fm_port, 4);
-#endif
- if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
- snd_printk(KERN_ERR "AUDIO the requested resources are invalid, using auto config\n");
+
err = pnp_activate_dev(pdev);
if (err < 0) {
snd_printk(KERN_ERR "AUDIO pnp configure failure: %d\n", err);
- kfree(cfg);
return err;
}
@@ -1756,15 +1722,6 @@ static int __devinit snd_card_opti9xx_pn
pdev = chip->devmpu;
if (pdev && mpu_port > 0) {
- pnp_init_resource_table(cfg);
-
- if (mpu_port != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], mpu_port, 2);
- if (mpu_irq != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], mpu_irq, 1);
-
- if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
- snd_printk(KERN_ERR "AUDIO the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0) {
snd_printk(KERN_ERR "AUDIO pnp configure failure\n");
@@ -1775,7 +1732,6 @@ static int __devinit snd_card_opti9xx_pn
mpu_irq = pnp_irq(pdev, 0);
}
}
- kfree(cfg);
return pid->driver_data;
}
#endif /* CONFIG_PNP */
diff --git a/isa/sb/es968.c b/isa/sb/es968.c
--- a/isa/sb/es968.c
+++ b/isa/sb/es968.c
@@ -49,12 +49,6 @@ MODULE_PARM_DESC(id, "ID string for es96
MODULE_PARM_DESC(id, "ID string for es968 based soundcard.");
module_param_array(enable, bool, NULL, 0444);
MODULE_PARM_DESC(enable, "Enable es968 based soundcard.");
-module_param_array(port, long, NULL, 0444);
-MODULE_PARM_DESC(port, "Port # for es968 driver.");
-module_param_array(irq, int, NULL, 0444);
-MODULE_PARM_DESC(irq, "IRQ # for es968 driver.");
-module_param_array(dma8, int, NULL, 0444);
-MODULE_PARM_DESC(dma8, "8-bit DMA # for es968 driver.");
struct snd_card_es968 {
struct pnp_dev *dev;
@@ -86,40 +80,23 @@ static int __devinit snd_card_es968_pnp(
const struct pnp_card_device_id *id)
{
struct pnp_dev *pdev;
- struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL);
int err;
- if (!cfg)
- return -ENOMEM;
+
acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL);
- if (acard->dev == NULL) {
- kfree(cfg);
+ if (acard->dev == NULL)
return -ENODEV;
- }
pdev = acard->dev;
- pnp_init_resource_table(cfg);
-
- /* override resources */
- if (port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], port[dev], 16);
- if (dma8[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[0], dma8[dev], 1);
- if (irq[dev] != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
- if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- snd_printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0) {
snd_printk(KERN_ERR PFX "AUDIO pnp configure failure\n");
- kfree(cfg);
return err;
}
port[dev] = pnp_port_start(pdev, 0);
dma8[dev] = pnp_dma(pdev, 1);
irq[dev] = pnp_irq(pdev, 0);
- kfree(cfg);
return 0;
}
diff --git a/isa/sb/sb16.c b/isa/sb/sb16.c
--- a/isa/sb/sb16.c
+++ b/isa/sb/sb16.c
@@ -257,44 +257,21 @@ static int __devinit snd_card_sb16_pnp(i
const struct pnp_card_device_id *id)
{
struct pnp_dev *pdev;
- struct pnp_resource_table * cfg = kmalloc(sizeof(struct pnp_resource_table), GFP_KERNEL);
int err;
- if (!cfg)
- return -ENOMEM;
acard->dev = pnp_request_card_device(card, id->devs[0].id, NULL);
- if (acard->dev == NULL) {
- kfree(cfg);
+ if (acard->dev == NULL)
return -ENODEV;
- }
+
#ifdef SNDRV_SBAWE_EMU8000
acard->devwt = pnp_request_card_device(card, id->devs[1].id, acard->dev);
#endif
/* Audio initialization */
pdev = acard->dev;
- pnp_init_resource_table(cfg);
-
- /* override resources */
-
- if (port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], port[dev], 16);
- if (mpu_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[1], mpu_port[dev], 2);
- if (fm_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[2], fm_port[dev], 4);
- if (dma8[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[0], dma8[dev], 1);
- if (dma16[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[1], dma16[dev], 1);
- if (irq[dev] != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], irq[dev], 1);
- if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
- snd_printk(KERN_ERR PFX "AUDIO the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0) {
snd_printk(KERN_ERR PFX "AUDIO pnp configure failure\n");
- kfree(cfg);
return err;
}
port[dev] = pnp_port_start(pdev, 0);
@@ -311,17 +288,6 @@ static int __devinit snd_card_sb16_pnp(i
/* WaveTable initialization */
pdev = acard->devwt;
if (pdev != NULL) {
- pnp_init_resource_table(cfg);
-
- /* override resources */
-
- if (awe_port[dev] != SNDRV_AUTO_PORT) {
- pnp_resource_change(&cfg->port_resource[0], awe_port[dev], 4);
- pnp_resource_change(&cfg->port_resource[1], awe_port[dev] + 0x400, 4);
- pnp_resource_change(&cfg->port_resource[2], awe_port[dev] + 0x800, 4);
- }
- if ((pnp_manual_config_dev(pdev, cfg, 0)) < 0)
- snd_printk(KERN_ERR PFX "WaveTable the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0) {
goto __wt_error;
@@ -339,7 +305,6 @@ __wt_error:
awe_port[dev] = -1;
}
#endif
- kfree(cfg);
return 0;
}
diff --git a/isa/wavefront/wavefront.c b/isa/wavefront/wavefront.c
--- a/isa/wavefront/wavefront.c
+++ b/isa/wavefront/wavefront.c
@@ -104,21 +104,15 @@ snd_wavefront_pnp (int dev, snd_wavefron
const struct pnp_card_device_id *id)
{
struct pnp_dev *pdev;
- struct pnp_resource_table *cfg = kmalloc(sizeof(*cfg), GFP_KERNEL);
int err;
- if (!cfg)
- return -ENOMEM;
-
/* Check for each logical device. */
/* CS4232 chip (aka "windows sound system") is logical device 0 */
acard->wss = pnp_request_card_device(card, id->devs[0].id, NULL);
- if (acard->wss == NULL) {
- kfree(cfg);
+ if (acard->wss == NULL)
return -EBUSY;
- }
/* there is a game port at logical device 1, but we ignore it completely */
@@ -133,25 +127,19 @@ snd_wavefront_pnp (int dev, snd_wavefron
if (use_cs4232_midi[dev]) {
acard->mpu = pnp_request_card_device(card, id->devs[2].id, NULL);
- if (acard->mpu == NULL) {
- kfree(cfg);
+ if (acard->mpu == NULL)
return -EBUSY;
- }
}
/* The ICS2115 synth is logical device 4 */
acard->synth = pnp_request_card_device(card, id->devs[3].id, NULL);
- if (acard->synth == NULL) {
- kfree(cfg);
+ if (acard->synth == NULL)
return -EBUSY;
- }
/* PCM/FM initialization */
pdev = acard->wss;
-
- pnp_init_resource_table(cfg);
/* An interesting note from the Tropez+ FAQ:
@@ -165,23 +153,9 @@ snd_wavefront_pnp (int dev, snd_wavefron
*/
- if (cs4232_pcm_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], cs4232_pcm_port[dev], 4);
- if (fm_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[1], fm_port[dev], 4);
- if (dma1[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[0], dma1[dev], 1);
- if (dma2[dev] != SNDRV_AUTO_DMA)
- pnp_resource_change(&cfg->dma_resource[1], dma2[dev], 1);
- if (cs4232_pcm_irq[dev] != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->irq_resource[0], cs4232_pcm_irq[dev], 1);
-
- if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
- snd_printk(KERN_ERR "PnP WSS the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0) {
snd_printk(KERN_ERR "PnP WSS pnp configure failure\n");
- kfree(cfg);
return err;
}
@@ -195,22 +169,9 @@ snd_wavefront_pnp (int dev, snd_wavefron
pdev = acard->synth;
- pnp_init_resource_table(cfg);
-
- if (ics2115_port[dev] != SNDRV_AUTO_PORT) {
- pnp_resource_change(&cfg->port_resource[0], ics2115_port[dev], 16);
- }
-
- if (ics2115_port[dev] != SNDRV_AUTO_IRQ) {
- pnp_resource_change(&cfg->irq_resource[0], ics2115_irq[dev], 1);
- }
-
- if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
- snd_printk(KERN_ERR "PnP ICS2115 the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0) {
snd_printk(KERN_ERR "PnP ICS2115 pnp configure failure\n");
- kfree(cfg);
return err;
}
@@ -226,15 +187,6 @@ snd_wavefront_pnp (int dev, snd_wavefron
pdev = acard->mpu;
- pnp_init_resource_table(cfg);
-
- if (cs4232_mpu_port[dev] != SNDRV_AUTO_PORT)
- pnp_resource_change(&cfg->port_resource[0], cs4232_mpu_port[dev], 2);
- if (cs4232_mpu_irq[dev] != SNDRV_AUTO_IRQ)
- pnp_resource_change(&cfg->port_resource[0], cs4232_mpu_irq[dev], 1);
-
- if (pnp_manual_config_dev(pdev, cfg, 0) < 0)
- snd_printk(KERN_ERR "PnP MPU401 the requested resources are invalid, using auto config\n");
err = pnp_activate_dev(pdev);
if (err < 0) {
snd_printk(KERN_ERR "PnP MPU401 pnp configure failure\n");
@@ -258,7 +210,6 @@ snd_wavefront_pnp (int dev, snd_wavefron
ics2115_port[dev],
ics2115_irq[dev]);
- kfree(cfg);
return 0;
}
6
19
Hello Luis, and Alsa list,
I recently got an Edirol UA-4FX. It works just fine as a generic USB
Audio device. I've written up all the details at
http://alsa.opensrc.org/index.php/Edirol_UA-4FX (shamelessly stolen
from the Edirol_UA-25 page).
The the UA-4FX needs a patch to usbaudio.c create_ua700_ua25_quirk()
and usbquirks.h, and then it has full support. (MIDI I/O, sample rates
up to 96 kHz) I've made an attempt, mostly to get it working on my
machine. Can you review it?
Thanks,
David
2
3
Hi,
during the discussions with LSB guys, it turned out that the current
ALSA-lib has many exported symbols that are not actually considered to
be public.
I fixed these unneeded exports in the HG tree. If you find some
problems with this change, please let me know.
thanks,
Takashi
1
0
Hi,
I've talked with some people workiong on LSB about the possibility to
put libasound as a part of the next LSB (surprisingly, they would like
it more than I). I proposed that we should define the minimal set at
first as the standard instead of taking all existing API functions.
An interesting input was that they did some statistics and counted the
actual used functions/variables in ALSA API over distros. The data
is attached below. I just put the number of apps and functions there
to simplify. (It includes __* functions that are actaully internal
ones, and I'm wondering why their numbers are so high. Anyway, they
shouldn't be a part of standard.)
So, first, just take a look at it. You'll see how many functions are
not actually used at all.
What I'd like to do now are:
- create a list of "standard" functions to be passed to LSB
- clean up and actually drop some non-used functions
- remove some functions from export list (in Versions file)
I'll try to create a list. Basically it'll be almost as same as the
list of functions with count > 0, plus some related ones.
Then, let's discuss and clean up...
BTW, regarding Versions. The versioned symbols for newly added
functions seem not set properly as expected. We have entries
ALSA_0.9 {
global:
__snd_*;
_snd_*;
snd_*;
local:
*;
};
and thus the rest functions after this all belong to ALSA_0.9 in the
end (except for functions explicitly defined with obsolete macros in
pcm.c). It means, we'll need to stick with ALSA_0.9 tag no matter
which version is added. Only if the function API is changed and
double definitions are needed, we'll tag to another version...
Oh well.
Takashi
AppUsage Iname
36 snd_pcm_hw_params_set_format
36 snd_pcm_hw_params_set_access
36 snd_pcm_hw_params_any
36 snd_pcm_open
36 snd_pcm_hw_params
36 snd_pcm_prepare
35 snd_strerror
35 snd_pcm_close
35 snd_pcm_writei
34 snd_pcm_hw_params_set_channels
29 snd_pcm_sw_params_current
28 snd_pcm_sw_params
28 snd_pcm_sw_params_set_start_threshold
27 snd_pcm_readi
25 snd_pcm_drop
24 snd_pcm_avail_update
23 snd_pcm_state
23 snd_pcm_resume
22 snd_ctl_open
22 snd_ctl_close
22 snd_card_next
22 snd_pcm_sw_params_set_avail_min
22 snd_pcm_start
21 snd_ctl_pcm_next_device
21 snd_pcm_hw_params_malloc
20 snd_pcm_hw_params_free
20 snd_pcm_nonblock
19 snd_pcm_pause
19 snd_pcm_info_set_stream
19 snd_ctl_pcm_info
19 snd_pcm_info_get_name
19 snd_pcm_status
19 snd_pcm_info_set_device
18 snd_pcm_hw_params_set_rate_near
18 snd_pcm_sw_params_set_xfer_align
18 snd_pcm_info_set_subdevice
17 snd_ctl_card_info_get_name
17 snd_ctl_card_info
17 snd_pcm_hw_params_sizeof
16 snd_pcm_hw_params_get_format_mask
16 snd_pcm_status_get_avail
16 snd_pcm_hw_params_set_period_size_near
16 snd_pcm_format_physical_width
16 snd_lib_error_set_handler
16 snd_pcm_format_mask_test
15 snd_pcm_sw_params_free
15 snd_pcm_info_free
15 snd_ctl_card_info_get_id
15 snd_pcm_sw_params_malloc
15 snd_pcm_info_malloc
14 snd_pcm_format_mask_malloc
14 snd_pcm_sw_params_sizeof
14 snd_seq_set_client_name
14 snd_seq_open
14 snd_pcm_format_mask_free
13 snd_pcm_format_width
13 snd_pcm_format_big_endian
13 snd_pcm_format_linear
13 snd_pcm_build_linear_format
13 snd_ctl_card_info_free
13 snd_pcm_info_get_id
13 snd_seq_create_simple_port
13 snd_seq_close
13 snd_ctl_card_info_malloc
13 snd_pcm_status_free
13 snd_pcm_format_signed
13 snd_pcm_info_get_subdevices_count
13 snd_pcm_status_malloc
13 __snd_pcm_hw_params_set_tick_time_last
13 __snd_pcm_hw_params_get_period_time
13 __snd_pcm_hw_params_get_periods
13 __snd_pcm_hw_params_set_access_last
13 __snd_pcm_hw_params_set_buffer_size_near
13 __snd_pcm_hw_params_get_periods_max
13 __snd_pcm_hw_params_get_period_size_min
13 __snd_pcm_hw_params_set_format_last
13 __snd_pcm_hw_params_set_period_time_first
13 __snd_pcm_hw_params_set_period_time_last
13 __snd_pcm_hw_params_set_channels_last
13 __snd_pcm_hw_params_get_tick_time_min
13 __snd_pcm_hw_params_set_buffer_size_first
13 __snd_pcm_hw_params_get_period_time_max
13 __snd_pcm_hw_params_get_tick_time_max
13 __snd_pcm_hw_params_get_rate
13 __snd_pcm_hw_params_get_subformat
13 __snd_pcm_hw_params_get_tick_time
13 __snd_pcm_hw_params_get_rate_max
13 __snd_pcm_hw_params_get_period_size
13 __snd_pcm_hw_params_set_periods_first
13 __snd_pcm_hw_params_get_access
13 __snd_pcm_hw_params_set_rate_near
13 __snd_pcm_hw_params_set_buffer_size_last
13 __snd_pcm_hw_params_set_tick_time_first
13 __snd_pcm_hw_params_get_periods_min
13 __snd_pcm_hw_params_get_rate_min
13 __snd_pcm_hw_params_set_channels_first
13 __snd_pcm_hw_params_get_channels_max
13 __snd_pcm_hw_params_get_buffer_time_min
13 __snd_pcm_hw_params_get_period_size_max
13 __snd_pcm_hw_params_get_channels_min
13 __snd_pcm_hw_params_get_buffer_time_max
13 __snd_pcm_hw_params_get_buffer_size_max
13 __snd_pcm_hw_params_get_buffer_size
13 __snd_pcm_hw_params_get_buffer_time
13 __snd_pcm_hw_params_get_period_time_min
13 __snd_pcm_hw_params_set_format_first
13 __snd_pcm_hw_params_set_period_size_first
13 __snd_pcm_hw_params_get_channels
13 __snd_pcm_hw_params_set_rate_last
13 __snd_pcm_hw_params_get_format
13 __snd_pcm_hw_params_set_buffer_time_near
13 __snd_pcm_hw_params_get_buffer_size_min
13 __snd_pcm_hw_params_set_channels_near
13 __snd_pcm_hw_params_set_subformat_last
13 __snd_pcm_hw_params_set_subformat_first
13 __snd_pcm_hw_params_set_rate_first
13 __snd_pcm_hw_params_set_period_size_last
13 __snd_pcm_hw_params_set_period_size_near
13 __snd_pcm_hw_params_set_period_time_near
13 __snd_pcm_hw_params_set_tick_time_near
13 __snd_pcm_hw_params_set_periods_near
13 __snd_pcm_hw_params_set_buffer_time_last
13 __snd_pcm_hw_params_set_periods_last
13 __snd_pcm_hw_params_set_buffer_time_first
11 snd_seq_event_input
11 snd_pcm_drain
11 snd_pcm_hw_params_get_buffer_size
10 snd_mixer_selem_get_playback_volume
10 snd_mixer_selem_register
10 snd_mixer_attach
10 snd_mixer_selem_get_playback_volume_range
10 snd_pcm_hw_params_set_periods_near
10 snd_pcm_hw_params_get_period_size
10 snd_mixer_open
10 snd_mixer_load
10 snd_mixer_close
9 snd_mixer_elem_next
9 snd_mixer_selem_has_playback_volume
9 snd_pcm_delay
9 snd_rawmidi_read
9 snd_seq_client_id
9 snd_rawmidi_close
9 snd_mixer_selem_has_playback_switch
9 snd_midi_event_new
9 snd_mixer_first_elem
9 snd_rawmidi_open
8 snd_pcm_hw_params_get_rate
8 snd_seq_poll_descriptors
8 snd_mixer_selem_set_playback_switch_all
8 snd_mixer_selem_get_name
8 snd_mixer_selem_get_capture_volume
8 snd_rawmidi_write
8 snd_mixer_selem_set_playback_volume
8 snd_seq_port_info_sizeof
8 snd_mixer_selem_has_capture_volume
8 snd_mixer_selem_has_capture_switch
8 snd_midi_event_free
8 snd_mixer_selem_set_capture_switch_all
8 snd_rawmidi_nonblock
7 snd_rawmidi_info_free
7 snd_seq_client_info_sizeof
7 snd_pcm_sw_params_set_silence_size
7 snd_rawmidi_info_malloc
7 snd_ctl_rawmidi_info
7 snd_rawmidi_info_get_name
7 snd_midi_event_encode_byte
7 snd_ctl_rawmidi_next_device
7 snd_rawmidi_info_set_device
7 snd_seq_port_info_set_port
7 snd_rawmidi_info_set_stream
7 snd_pcm_hw_params_set_buffer_size_near
7 snd_rawmidi_info_set_subdevice
7 snd_rawmidi_info_get_id
7 snd_rawmidi_info_get_subdevices_count
7 snd_mixer_selem_get_capture_volume_range
7 snd_mixer_selem_is_playback_mono
7 snd_pcm_sw_params_set_stop_threshold
7 snd_pcm_hw_params_can_pause
6 snd_ctl_card_info_get_mixername
6 snd_seq_free_event
6 snd_pcm_hw_params_set_buffer_time_near
6 snd_pcm_hw_params_get_channels_max
6 snd_seq_poll_descriptors_count
6 snd_mixer_selem_get_capture_switch
6 snd_pcm_sw_params_set_silence_threshold
6 snd_mixer_selem_has_playback_channel
6 snd_pcm_status_sizeof
6 snd_pcm_hw_params_set_period_time_near
6 snd_mixer_selem_set_capture_volume
6 snd_config_search
6 snd_mixer_selem_channel_name
6 snd_seq_query_next_port
6 snd_pcm_info_sizeof
6 snd_pcm_hw_params_get_channels_min
6 snd_pcm_hw_params_set_rate
6 snd_mixer_selem_get_playback_switch
6 snd_mixer_selem_is_capture_mono
6 snd_seq_port_info_set_client
6 snd_mixer_selem_is_active
6 snd_mixer_selem_has_capture_channel
6 snd_pcm_hw_params_test_format
6 snd_config_update
5 snd_seq_port_subscribe_set_sender
5 snd_seq_port_subscribe_set_dest
5 snd_config_iterator_end
5 snd_config_iterator_next
5 snd_seq_port_info_get_name
5 snd_seq_port_info_get_capability
5 snd_config_iterator_first
5 snd_seq_connect_to
5 snd_pcm_hw_params_get_channels
5 snd_pcm_hw_params_get_buffer_size_min
5 snd_seq_subscribe_port
5 snd_pcm_hw_params_get_period_size_min
5 snd_seq_port_info_get_addr
5 snd_seq_event_input_pending
5 snd_seq_query_next_client
5 snd_seq_event_output
5 snd_config_iterator_entry
5 snd_seq_client_info_get_client
5 snd_seq_drain_output
5 snd_seq_client_info_set_client
5 snd_config_get_string
5 snd_seq_port_info_get_port
4 snd_pcm_hw_params_get_buffer_size_max
4 snd_pcm_hw_params_get_rate_min
4 snd_pcm_bytes_to_frames
4 snd_ctl_card_info_sizeof
4 snd_pcm_hw_params_get_rate_max
4 snd_pcm_hw_params_can_resume
4 snd_card_get_name
4 snd_pcm_hw_params_get_period_size_max
4 snd_pcm_frames_to_bytes
4 snd_pcm_status_get_trigger_tstamp
4 snd_pcm_wait
3 snd_pcm_poll_descriptors
3 snd_pcm_hw_params_is_double
3 snd_pcm_hw_params_is_batch
3 snd_pcm_hw_params_get_tick_time
3 snd_pcm_hw_params_can_sync_start
3 snd_pcm_status_get_state
3 snd_seq_port_info_set_name
3 snd_pcm_hw_params_get_periods_max
3 snd_pcm_hw_params_get_period_time
3 snd_async_add_pcm_handler
3 snd_seq_port_subscribe_sizeof
3 snd_pcm_mmap_commit
3 snd_pcm_hw_params_test_rate
3 snd_pcm_hw_params_get_access
3 snd_pcm_hw_params_can_overrange
3 snd_pcm_writen
3 snd_pcm_hw_params_get_format
3 snd_pcm_hw_params_is_half_duplex
3 snd_seq_event_output_direct
3 snd_pcm_hw_params_is_joint_duplex
3 snd_seq_connect_from
3 snd_pcm_hw_params_get_buffer_time
3 snd_config_get_id
3 snd_seq_client_info_get_name
3 snd_pcm_mmap_begin
3 snd_seq_port_info_set_capability
3 snd_pcm_hw_params_can_mmap_sample_resolution
3 snd_pcm_poll_descriptors_count
3 snd_pcm_link
3 snd_config
3 snd_pcm_hw_params_get_periods
3 snd_pcm_hw_params_set_channels_near
3 snd_pcm_hw_params_test_access
3 snd_pcm_hw_params_is_block_transfer
3 snd_pcm_hw_params_set_rate_resample
2 snd_seq_disconnect_from
2 snd_config_get_type
2 snd_mixer_selem_id_sizeof
2 snd_pcm_hw_params_get_period_time_max
2 snd_pcm_poll_descriptors_revents
2 snd_seq_delete_simple_port
2 snd_pcm_access_mask_test
2 snd_ctl_elem_value_clear
2 snd_config_get_integer
2 snd_pcm_access_name
2 snd_seq_port_info_get_client
2 snd_ctl_elem_value_set_integer
2 snd_mixer_selem_id_get_name
2 snd_pcm_mmap_readi
2 snd_ctl_elem_info_is_readable
2 snd_hctl_close
2 snd_ctl_elem_info_malloc
2 snd_pcm_mmap_writei
2 snd_ctl_name
2 snd_hwdep_close
2 snd_hwdep_open
2 snd_hwdep_info
2 snd_pcm_hw_params_get_access_mask
2 snd_pcm_format_set_silence
2 snd_hctl_load
2 snd_hctl_find_elem
2 snd_hctl_free
2 snd_pcm_sw_params_set_tstamp_mode
2 snd_pcm_hw_params_get_periods_min
2 snd_pcm_hw_params_test_channels
2 snd_pcm_sw_params_set_xrun_mode
2 snd_ctl_elem_value_get_integer
2 snd_pcm_hw_params_get_tick_time_max
2 snd_async_handler_get_callback_private
2 snd_hctl_open
2 snd_pcm_hw_params_get_tick_time_min
2 snd_pcm_readn
2 snd_seq_unsubscribe_port
2 snd_hctl_elem_info
2 snd_pcm_access_mask_sizeof
2 snd_seq_disconnect_to
2 snd_pcm_hw_params_dump
2 snd_pcm_hw_params_get_period_time_min
2 snd_pcm_rewind
2 snd_seq_client_info_get_type
2 snd_pcm_hw_params_copy
2 snd_seq_create_port
2 snd_pcm_type
2 snd_hwdep_info_sizeof
2 snd_hctl_elem_write
2 snd_ctl_elem_value_free
2 snd_ctl_elem_info_get_count
2 snd_pcm_hw_params_set_period_size
2 snd_seq_port_info_get_type
2 snd_ctl_elem_id_set_name
2 snd_ctl_elem_id_clear
2 snd_ctl_elem_info_free
2 snd_pcm_hwsync
2 snd_pcm_info
2 snd_seq_port_info_set_type
2 snd_mixer_selem_set_playback_volume_all
2 snd_ctl_elem_info_clear
2 snd_pcm_state_name
2 snd_pcm_sw_params_get_boundary
2 snd_hctl_elem_read
2 snd_ctl_elem_id_malloc
2 snd_ctl_elem_id_set_interface
2 snd_pcm_format_mask_sizeof
2 snd_ctl_elem_id_free
2 snd_rawmidi_poll_descriptors_count
2 snd_rawmidi_poll_descriptors
2 snd_pcm_hw_params_get_buffer_time_max
2 snd_midi_event_decode
2 snd_pcm_format_cpu_endian
2 snd_ctl_elem_value_malloc
2 snd_mixer_selem_set_capture_volume_all
2 snd_ctl_elem_info_get_step
2 snd_seq_port_subscribe_free
2 snd_output_stdio_attach
2 snd_ctl_elem_info_get_min
2 snd_seq_port_subscribe_malloc
2 snd_mixer_selem_id_get_index
2 snd_pcm_status_get_tstamp
2 snd_pcm_hw_params_get_buffer_time_min
2 snd_pcm_format_name
2 snd_ctl_elem_info_get_max
1 snd_seq_port_subscribe_copy
1 snd_pcm_sw_params_set_sleep_min
1 snd_timer_info_get_resolution
1 snd_ctl_hwdep_next_device
1 snd_midi_event_init
1 snd_mixer_selem_get_id
1 snd_pcm_forward
1 snd_pcm_hw_params_test_period_size
1 snd_mixer_find_selem
1 snd_config_add
1 snd_pcm_areas_silence
1 snd_timer_poll_descriptors_count
1 snd_pcm_hw_free
1 snd_timer_params_set_ticks
1 snd_seq_poll_descriptors_revents
1 snd_seq_port_info_free
1 snd_pcm_hw_params_get_sbits
1 snd_seq_query_subscribe_set_root
1 snd_pcm_format_description
1 snd_pcm_status_dump
1 snd_pcm_sw_params_dump
1 snd_seq_get_client_info
1 snd_seq_query_subscribe_get_root
1 snd_timer_params_set_auto_start
1 snd_timer_params
1 snd_timer_open
1 snd_mixer_selem_id_set_name
1 snd_pcm_area_copy
1 snd_rawmidi_poll_descriptors_revents
1 snd_timer_read
1 snd_timer_id_malloc
1 snd_seq_port_subscribe_get_exclusive
1 snd_mixer_selem_has_common_volume
1 snd_timer_params_get_ticks
1 snd_seq_alloc_queue
1 snd_asoundlib_version
1 snd_seq_port_info_set_port_specified
1 snd_timer_close
1 snd_mixer_detach
1 snd_timer_info_malloc
1 snd_seq_client_info_set_name
1 snd_seq_port_subscribe_get_sender
1 snd_seq_query_subscribe_get_addr
1 snd_seq_query_subscribe_get_queue
1 snd_seq_port_subscribe_get_time_real
1 snd_seq_port_subscribe_set_exclusive
1 snd_config_substitute
1 snd_seq_query_subscribe_get_time_real
1 snd_timer_stop
1 snd_timer_info
1 snd_seq_query_subscribe_get_exclusive
1 snd_output_close
1 snd_seq_port_subscribe_get_time_update
1 snd_seq_port_subscribe_set_time_update
1 snd_seq_port_subscribe_get_dest
1 snd_timer_params_malloc
1 snd_seq_port_subscribe_get_queue
1 snd_config_copy
1 snd_seq_query_subscribe_get_index
1 snd_seq_set_client_info
1 snd_seq_port_subscribe_set_queue
1 snd_seq_port_info_malloc
1 snd_config_get_ascii
1 snd_seq_queue_tempo_set_ppq
1 snd_seq_query_subscribe_set_type
1 snd_pcm_hw_params_get_rate_numden
1 snd_midi_event_reset_encode
1 snd_seq_queue_tempo_sizeof
1 snd_pcm_open_lconf
1 snd_ctl_hwdep_info
1 snd_pcm_hw_params_get_subformat
1 snd_pcm_hw_params_set_periods
1 snd_seq_query_subscribe_sizeof
1 snd_mixer_elem_get_type
1 snd_seq_query_subscribe_get_time_update
1 snd_seq_query_subscribe_set_index
1 snd_config_search_alias_hooks
1 snd_card_get_longname
1 snd_config_imake_integer
1 snd_seq_query_port_subscribers
1 snd_seq_queue_tempo_set_tempo
1 snd_config_update_free_global
1 snd_hwdep_info_set_device
1 snd_seq_get_any_client_info
1 snd_pcm_dump
1 snd_seq_set_port_info
1 snd_seq_get_port_info
1 snd_mixer_selem_has_playback_switch_joined
1 snd_hwdep_poll_descriptors
1 snd_pcm_format_size
1 snd_seq_delete_port
1 snd_seq_control_queue
1 snd_seq_event_length
1 snd_config_delete
1 snd_mixer_selem_id_set_index
1 snd_pcm_hw_params_set_periods_min
1 snd_seq_port_info_set_midi_channels
1 snd_mixer_selem_has_playback_volume_joined
1 snd_seq_free_queue
1 snd_hwdep_ioctl
1 snd_pcm_hw_params_set_periods_integer
1 snd_seq_parse_address
1 snd_timer_poll_descriptors
1 snd_async_del_handler
1 snd_pcm_status_get_avail_max
1 snd_seq_get_any_port_info
1 snd_hwdep_info_get_iface
1 snd_mixer_selem_set_playback_switch
1 snd_seq_port_subscribe_set_time_real
1 snd_timer_start
1 snd_hwdep_info_get_name
1 snd_midi_event_encode
1 snd_pcm_status_get_delay
1 snd_hwdep_read
1 snd_seq_set_queue_tempo
0 snd_instr_header_get_id
0 snd_pcm_unlink
0 snd_pcm_hw_params_set_access_first
0 snd_ctl_rawmidi_prefer_subdevice
0 snd_pcm_hw_params_test_buffer_size
0 snd_pcm_info_get_subdevices_avail
0 snd_pcm_sw_params_get_silence_size
0 snd_ctl_elem_list_malloc
0 snd_output_buffer_open
0 snd_pcm_samples_to_bytes
0 snd_pcm_null_open
0 snd_pcm_hook_get_private
0 snd_pcm_status_get_htstamp
0 snd_ctl_elem_value_get_bytes
0 snd_ctl_elem_list_set_offset
0 snd_ctl_elem_value_get_name
0 snd_timer_params_set_early_event
0 snd_pcm_meter_get_rate
0 snd_config_save
0 snd_pcm_meter_get_boundary
0 snd_pcm_meter_get_bufsize
0 snd_seq_remove_events_get_queue
0 snd_pcm_mulaw_open
0 snd_hwdep_info_get_id
0 snd_hctl_elem_prev
0 snd_pcm_info_get_sync
0 snd_config_search_definition
0 snd_pcm_multi_open
0 snd_pcm_meter_search_scope
0 snd_hwdep_dsp_status_get_dsp_loaded
0 snd_ctl_event_elem_get_numid
0 snd_hctl_poll_descriptors
0 snd_pcm_mmap_writen
0 snd_mixer_elem_empty
0 snd_pcm_info_get_device
0 snd_instr_header_get_alias
0 snd_pcm_hw_params_set_period_size_max
0 snd_pcm_hw_params_set_period_size_integer
0 snd_pcm_hw_params_set_period_size_first
0 snd_pcm_hw_params_set_buffer_time_min
0 snd_pcm_hw_params_get_fifo_size
0 snd_mixer_elem_get_callback_private
0 snd_ctl_elem_info_set_id
0 snd_pcm_hw_params_set_format_last
0 snd_seq_port_info_get_timestamp_real
0 snd_pcm_hw_params_set_period_time_min
0 snd_pcm_scope_set_name
0 snd_seq_set_client_pool
0 snd_pcm_hw_params_set_periods_last
0 snd_pcm_hw_params_set_periods_first
0 snd_pcm_hw_params_set_period_time_minmax
0 snd_pcm_hw_params_set_period_time_max
0 snd_pcm_hw_params_set_period_size_minmax
0 snd_pcm_hw_params_set_period_size_min
0 snd_pcm_hw_params_set_period_time_last
0 snd_pcm_hw_params_set_period_time_first
0 snd_pcm_hw_params_set_period_time
0 snd_config_get_integer64
0 snd_pcm_hw_params_set_access_last
0 snd_pcm_meter_get_now
0 snd_pcm_hw_params_set_buffer_size_last
0 snd_pcm_hw_open_fd
0 snd_pcm_hw_params_set_buffer_size
0 snd_seq_reset_pool_input
0 snd_ctl_card_info_get_card
0 snd_pcm_hw_params_get_subformat_mask
0 snd_ctl_elem_remove
0 snd_pcm_scope_s16_get_channel_buffer
0 snd_timer_query_next_device
0 snd_pcm_hw_params_set_channels_first
0 snd_pcm_hw_params_set_buffer_time_minmax
0 snd_pcm_hw_params_set_buffer_time_max
0 snd_pcm_scope_set_ops
0 snd_pcm_hw_params_set_channels_min
0 snd_pcm_hw_params_set_channels_last
0 snd_ctl_elem_info_set_interface
0 snd_pcm_hw_params_set_buffer_size_min
0 snd_pcm_hw_params_set_buffer_size_max
0 snd_hctl_elem_get_index
0 snd_pcm_hw_params_set_buffer_time_first
0 snd_pcm_hw_params_set_buffer_time
0 snd_pcm_hw_params_test_tick_time
0 snd_pcm_hw_params_test_subformat
0 snd_seq_get_input_buffer_size
0 snd_pcm_info_copy
0 snd_dlclose
0 snd_config_get_bool
0 snd_pcm_hw_params_set_buffer_size_first
0 snd_seq_queue_timer_get_type
0 snd_ctl_elem_info_get_device
0 snd_instr_fm_convert_from_stream
0 snd_pcm_hw_open
0 snd_pcm_hw_params_test_period_time
0 snd_ctl_poll_descriptors_revents
0 snd_pcm_hook_get_pcm
0 snd_pcm_info_get_stream
0 snd_pcm_info_get_subdevice
0 snd_ctl_elem_value_set_enumerated
0 snd_pcm_info_get_subclass
0 snd_pcm_info_get_class
0 snd_ctl_elem_value_set_name
0 snd_pcm_hw_params_set_period_size_last
0 snd_pcm_hook_set_private
0 snd_pcm_hooks_open
0 snd_pcm_hw_params_set_format_mask
0 snd_pcm_hw_params_set_subformat_first
0 snd_timer_query_open_lconf
0 snd_pcm_hw_params_set_rate_minmax
0 snd_hctl_elem_get_subdevice
0 snd_instr_header_set_name
0 snd_pcm_hw_params_set_subformat_mask
0 snd_ctl_elem_info_get_index
0 snd_pcm_hw_params_set_periods_minmax
0 snd_ctl_elem_list_get_numid
0 snd_pcm_hw_params_set_rate_max
0 snd_pcm_hw_params_set_rate_last
0 snd_pcm_hw_params_set_rate_first
0 snd_pcm_format_silence_64
0 snd_ctl_elem_info_is_locked
0 snd_input_gets
0 snd_pcm_iec958_open
0 snd_pcm_name
0 snd_pcm_hw_params_test_buffer_time
0 snd_pcm_hw_params_set_tick_time_max
0 snd_ctl_elem_info_is_volatile
0 snd_pcm_hw_params_set_tick_time_first
0 snd_pcm_hw_params_set_tick_time_near
0 snd_seq_client_info_get_event_lost
0 snd_pcm_hw_params_set_tick_time_minmax
0 snd_seq_queue_tempo_set_skew
0 snd_seq_queue_timer_free
0 snd_seq_queue_timer_get_queue
0 snd_ctl_event_clear
0 snd_seq_queue_timer_copy
0 snd_seq_queue_timer_set_id
0 snd_seq_queue_timer_set_resolution
0 snd_seq_queue_timer_get_resolution
0 snd_seq_port_info_copy
0 snd_seq_queue_status_get_status
0 snd_seq_queue_tempo_copy
0 snd_seq_queue_tempo_free
0 snd_seq_queue_status_get_tick_time
0 snd_seq_queue_status_malloc
0 snd_seq_queue_tempo_get_skew_base
0 snd_seq_queue_tempo_get_tempo
0 snd_seq_queue_tempo_get_ppq
0 snd_seq_queue_tempo_get_skew
0 snd_seq_remove_events_get_time
0 snd_seq_remove_events_set_condition
0 snd_seq_remove_events_set_dest
0 snd_seq_remove_events_malloc
0 snd_config_searchva
0 snd_seq_remove_events_set_tag
0 snd_timer_info_get_ticks
0 snd_seq_remove_events_set_event_type
0 snd_seq_type
0 snd_seq_queue_timer_set_type
0 snd_seq_remove_events_free
0 snd_seq_queue_timer_sizeof
0 snd_seq_remove_events
0 snd_hwdep_dsp_status_malloc
0 snd_seq_remove_events_get_event_type
0 snd_seq_remove_events_get_tag
0 snd_seq_remove_events_get_condition
0 snd_ctl_event_elem_get_index
0 snd_pcm_format_mask_copy
0 snd_instr_iwffff_open
0 snd_seq_query_named_queue
0 snd_config_set_string
0 snd_config_test_id
0 snd_seq_query_subscribe_get_port
0 snd_mixer_poll_descriptors_revents
0 snd_seq_query_subscribe_get_client
0 snd_seq_query_subscribe_get_num_subs
0 snd_seq_port_info_get_synth_voices
0 snd_seq_port_info_set_addr
0 snd_seq_port_info_set_midi_voices
0 snd_seq_port_info_get_timestamp_queue
0 snd_seq_port_info_get_timestamping
0 snd_seq_client_pool_get_output_room
0 snd_seq_port_info_set_timestamp_real
0 snd_timer_params_get_queue_size
0 snd_seq_port_info_set_synth_voices
0 snd_seq_queue_info_get_queue
0 snd_pcm_access_mask_empty
0 snd_seq_queue_info_set_owner
0 snd_seq_queue_info_malloc
0 snd_seq_queue_info_set_flags
0 snd_seq_queue_status_free
0 snd_seq_queue_status_get_events
0 snd_seq_queue_info_sizeof
0 snd_instr_fm_convert_to_stream
0 snd_seq_query_subscribe_get_type
0 snd_rawmidi_params_sizeof
0 snd_seq_queue_info_copy
0 snd_seq_extract_output
0 snd_seq_query_subscribe_set_client
0 snd_seq_queue_info_get_name
0 snd_pcm_dsnoop_open
0 snd_seq_queue_info_get_flags
0 snd_seq_queue_info_get_locked
0 snd_timer_open_lconf
0 snd_timer_params_free
0 snd_timer_info_sizeof
0 snd_timer_name
0 snd_timer_params_set_exclusive
0 snd_timer_params_set_queue_size
0 snd_timer_params_get_auto_start
0 snd_timer_params_get_early_event
0 snd_timer_id_set_card
0 snd_timer_id_set_subdevice
0 snd_timer_id_sizeof
0 snd_timer_id_set_class
0 snd_timer_id_set_sclass
0 snd_timer_info_get_card
0 snd_timer_info_get_name
0 snd_instr_simple_convert_to_stream
0 snd_rawmidi_status_get_avail
0 snd_instr_iwffff_load
0 snd_timer_status_get_resolution
0 snd_config_imake_string
0 snd_timer_status_get_overrun
0 snd_timer_status_get_queue
0 snd_timer_type
0 snd_user_file
0 snd_timer_status_malloc
0 snd_timer_status_sizeof
0 snd_timer_params_sizeof
0 snd_timer_query_params
0 snd_timer_query_status
0 snd_timer_poll_descriptors_revents
0 snd_timer_query_close
0 snd_rawmidi_open_lconf
0 snd_timer_status_free
0 snd_seq_port_info_set_timestamp_queue
0 snd_timer_status
0 snd_seq_set_input_buffer_size
0 snd_ctl_elem_value_get_interface
0 snd_seq_system_info
0 snd_seq_set_queue_info
0 snd_timer_id_set_device
0 snd_seq_system_info_get_clients
0 snd_ctl_elem_value_set_device
0 snd_seq_system_info_free
0 snd_seq_system_info_get_channels
0 snd_seq_remove_events_set_time
0 snd_seq_set_bit
0 snd_seq_set_client_event_filter
0 snd_seq_remove_events_sizeof
0 snd_seq_reset_pool_output
0 snd_ctl_elem_value_copy
0 snd_seq_set_client_pool_output_room
0 snd_pcm_hw_params_set_format_first
0 snd_hctl_poll_descriptors_count
0 snd_spcm_init_duplex
0 snd_seq_remove_events_copy
0 snd_pcm_sw_params_get_start_threshold
0 snd_spcm_init_get_params
0 snd_ctl_elem_info_get_step64
0 snd_timer_id_get_device
0 snd_timer_id_get_sclass
0 snd_timer_id_free
0 snd_timer_id_get_class
0 snd_seq_system_info_get_cur_queues
0 snd_pcm_dshare_open
0 snd_seq_system_info_sizeof
0 snd_seq_system_info_get_ports
0 snd_seq_system_info_get_queues
0 snd_seq_port_info_get_port_specified
0 snd_shm_area_share
0 snd_seq_remove_events_set_queue
0 snd_seq_client_pool_set_input_pool
0 snd_ctl_elem_info_set_name
0 snd_pcm_tstamp_mode_name
0 snd_pcm_type_name
0 snd_async_add_ctl_handler
0 snd_timer_query_info
0 snd_rawmidi_drain
0 snd_dlopen
0 snd_ctl_elem_value_set_byte
0 snd_ctl_elem_list_get_id
0 snd_pcm_sw_params_get_avail_min
0 snd_pcm_sw_params_get_sleep_min
0 snd_pcm_sw_params_get_stop_threshold
0 snd_timer_params_copy
0 snd_pcm_sw_params_get_silence_threshold
0 snd_ctl_elem_iface_name
0 snd_config_hook_load_for_all_cards
0 snd_pcm_sw_params_get_tstamp_mode
0 snd_pcm_sw_params_get_xfer_align
0 snd_mixer_get_count
0 snd_rawmidi_name
0 snd_timer_status_copy
0 snd_mixer_get_callback_private
0 _snd_pcm_file_open
0 snd_rawmidi_params_get_avail_min
0 snd_shm_area_create
0 snd_rawmidi_params_copy
0 snd_rawmidi_params_current
0 snd_input_ungetc
0 snd_rawmidi_info_get_card
0 snd_rawmidi_info_get_device
0 snd_rawmidi_info
0 snd_ctl_elem_value_set_numid
0 snd_rawmidi_info_get_subdevice_name
0 snd_rawmidi_info_get_subdevices_avail
0 snd_pcm_status_get_overrange
0 snd_rawmidi_info_get_stream
0 snd_pcm_scope_get_name
0 snd_pcm_scope_s16_open
0 snd_pcm_scope_set_callback_private
0 snd_pcm_scope_malloc
0 snd_seq_client_pool_get_input_free
0 snd_pcm_shm_open
0 snd_ctl_elem_value_get_index
0 snd_pcm_hw_params_set_channels_minmax
0 snd_seq_queue_status_sizeof
0 snd_rawmidi_info_sizeof
0 snd_seq_remove_events_get_channel
0 snd_pcm_reset
0 snd_hctl_set_compare
0 snd_seq_query_subscribe_malloc
0 snd_pcm_route_open
0 snd_pcm_scope_get_callback_private
0 snd_pcm_route_determine_ttable
0 snd_pcm_route_load_ttable
0 snd_pcm_subformat_description
0 snd_pcm_subformat_mask_free
0 snd_timer_status_get_timestamp
0 snd_pcm_subformat_mask_any
0 snd_pcm_subformat_mask_copy
0 snd_pcm_subformat_mask_test
0 snd_pcm_sw_params_copy
0 snd_pcm_subformat_mask_set
0 snd_pcm_area_silence
0 snd_pcm_start_mode_name
0 snd_timer_params_get_exclusive
0 snd_mixer_poll_descriptors_count
0 snd_pcm_status_copy
0 snd_sctl_free
0 snd_pcm_stream
0 snd_ctl_elem_info_get_name
0 snd_pcm_status_get_trigger_htstamp
0 _snd_pcm_hw_open
0 snd_pcm_subformat_mask_none
0 snd_seq_queue_timer_get_id
0 snd_seq_drop_output
0 snd_seq_drop_output_buffer
0 snd_seq_event_types
0 snd_hctl_elem_get_interface
0 snd_seq_event_output_pending
0 snd_seq_event_types
0 snd_seq_client_pool_get_output_pool
0 snd_seq_client_pool_set_output_pool
0 snd_ctl_elem_read
0 snd_hctl_async
0 snd_seq_drop_input_buffer
0 snd_ctl_elem_info_sizeof
0 snd_seq_drop_input
0 snd_seq_client_pool_sizeof
0 snd_instr_header_copy
0 snd_seq_name
0 snd_pcm_subformat_name
0 snd_seq_queue_timer_malloc
0 snd_instr_fm_free
0 snd_seq_query_subscribe_copy
0 snd_seq_port_info_get_midi_voices
0 snd_seq_port_info_get_read_use
0 snd_mixer_elem_detach
0 snd_output_buffer_string
0 snd_seq_set_output_buffer_size
0 snd_seq_get_output_buffer_size
0 snd_seq_get_port_subscription
0 snd_seq_get_bit
0 snd_func_private_card_driver
0 snd_seq_get_queue_timer
0 snd_mixer_elem_remove
0 snd_seq_get_queue_status
0 snd_hwdep_dsp_image_free
0 snd_rawmidi_status_free
0 snd_rawmidi_status_get_xruns
0 snd_rawmidi_status_malloc
0 snd_timer_info_free
0 snd_rawmidi_status_get_tstamp
0 snd_sctl_build
0 snd_sctl_install
0 snd_rawmidi_stream
0 snd_rawmidi_type
0 snd_rawmidi_params_get_buffer_size
0 snd_rawmidi_params_set_buffer_size
0 snd_rawmidi_params_set_no_active_sensing
0 snd_rawmidi_params_get_no_active_sensing
0 snd_rawmidi_params_set_avail_min
0 snd_rawmidi_status
0 snd_rawmidi_status_copy
0 snd_seq_query_subscribe_set_port
0 snd_timer_query_open
0 snd_seq_client_info_set_broadcast_filter
0 snd_timer_status_get_lost
0 snd_seq_client_pool_copy
0 snd_seq_client_info_set_error_bounce
0 snd_seq_client_info_set_event_filter
0 snd_seq_client_pool_get_input_pool
0 snd_seq_client_pool_get_output_free
0 snd_seq_client_pool_free
0 snd_seq_client_pool_get_client
0 snd_sctl_remove
0 snd_seq_queue_info_free
0 snd_seq_client_info_free
0 snd_ctl_elem_id_get_subdevice
0 snd_seq_change_bit
0 snd_rawmidi_info_get_flags
0 snd_ctl_elem_info_is_indirect
0 snd_timer_params_set_filter
0 snd_pcm_format_silence_16
0 snd_ctl_event_copy
0 snd_ctl_event_elem_get_device
0 snd_ctl_elem_value_sizeof
0 snd_ctl_elem_write
0 snd_seq_remove_events_get_dest
0 snd_ctl_event_elem_get_name
0 snd_ctl_event_elem_get_subdevice
0 snd_ctl_event_elem_get_interface
0 snd_ctl_event_elem_get_mask
0 snd_config_imake_real
0 snd_ctl_elem_value_set_iec958
0 snd_seq_system_info_get_cur_clients
0 snd_hctl_nonblock
0 snd_seq_queue_status_get_queue
0 snd_config_expand
0 snd_ctl_elem_value_set_subdevice
0 snd_ctl_elem_value_set_integer64
0 snd_ctl_elem_value_set_interface
0 snd_pcm_hw_params_set_periods_max
0 snd_ctl_wait
0 snd_seq_queue_tempo_malloc
0 snd_pcm_hook_add
0 snd_ctl_set_power_state
0 snd_dlsym
0 snd_func_card_id
0 snd_hwdep_dsp_status_copy
0 snd_pcm_hw_params_set_rate_min
0 snd_ctl_elem_list_get_subdevice
0 snd_ctl_event_sizeof
0 snd_ctl_event_type_name
0 snd_ctl_event_get_type
0 snd_ctl_elem_id_set_subdevice
0 snd_mixer_selem_set_enum_item
0 snd_ctl_pcm_prefer_subdevice
0 snd_ctl_poll_descriptors
0 snd_ctl_get_power_state
0 snd_ctl_open_lconf
0 snd_midi_event_no_status
0 snd_ctl_elem_list_get_index
0 snd_ctl_elem_list_get_interface
0 snd_ctl_elem_list_get_count
0 snd_ctl_elem_list_get_device
0 snd_ctl_elem_list_get_name
0 snd_ctl_elem_list_get_used
0 snd_hctl_get_count
0 snd_func_refer
0 snd_func_card_driver
0 snd_timer_info_get_id
0 snd_ctl_elem_info_set_numid
0 snd_ctl_elem_id_set_index
0 snd_ctl_elem_info_set_index
0 snd_ctl_elem_list_alloc_space
0 snd_pcm_hw_params_set_buffer_time_last
0 snd_ctl_elem_list_free_space
0 snd_ctl_elem_list_clear
0 snd_ctl_elem_list_copy
0 snd_ctl_elem_list_sizeof
0 snd_ctl_elem_value_get_enumerated
0 snd_ctl_elem_value_get_id
0 snd_timer_params_get_filter
0 snd_ctl_elem_value_get_device
0 snd_ctl_elem_value_get_integer64
0 snd_ctl_elem_value_get_subdevice
0 snd_ctl_elem_value_set_boolean
0 snd_seq_client_info_copy
0 snd_ctl_elem_value_get_numid
0 snd_ctl_elem_set_bytes
0 snd_hwdep_poll_descriptors_revents
0 snd_ctl_elem_lock
0 snd_seq_client_pool_set_output_room
0 snd_ctl_elem_type_name
0 snd_seq_set_client_pool_input
0 snd_ctl_event_malloc
0 snd_ctl_elem_unlock
0 snd_seq_queue_status_get_real_time
0 snd_input_stdio_open
0 snd_hwdep_name
0 snd_hwdep_dsp_image_set_length
0 snd_hwdep_info_malloc
0 snd_hwdep_open_lconf
0 snd_pcm_sw_params_get_xrun_mode
0 snd_input_buffer_open
0 snd_mixer_selem_has_capture_switch_exclusive
0 snd_rawmidi_info_copy
0 snd_pcm_mmap_readn
0 snd_hwdep_dsp_status_get_id
0 snd_hwdep_dsp_status_free
0 snd_hwdep_dsp_status_get_chip_ready
0 snd_hwdep_dsp_status_get_num_dsps
0 snd_hwdep_info_free
0 snd_hwdep_info_get_card
0 snd_hwdep_dsp_status_get_version
0 snd_hwdep_dsp_status_sizeof
0 snd_input_close
0 snd_pcm_hw_params_set_subformat
0 snd_instr_header_get_name
0 snd_instr_header_get_follow_alias
0 snd_instr_header_get_format
0 snd_instr_header_get_type
0 snd_instr_header_set_cmd
0 snd_config_make_compound
0 snd_instr_header_set_alias
0 snd_instr_header_set_cluster
0 snd_pcm_hw_params_test_periods
0 snd_seq_queue_status_copy
0 snd_hctl_first_elem
0 snd_input_scanf
0 snd_seq_nonblock
0 snd_pcm_access_mask_malloc
0 snd_instr_header_get_data
0 snd_instr_header_free
0 snd_instr_header_get_cluster
0 snd_func_concat
0 snd_pcm_subformat_mask_empty
0 snd_hctl_elem_next
0 snd_hctl_elem_get_name
0 snd_hctl_elem_get_numid
0 snd_hwdep_dsp_load
0 snd_hctl_handle_events
0 snd_hctl_get_callback_private
0 snd_hctl_elem_set_callback
0 snd_hctl_elem_set_callback_private
0 snd_ctl_elem_id_get_numid
0 snd_hctl_compare_fast
0 snd_func_datadir
0 snd_func_igetenv
0 snd_hctl_ctl
0 snd_mixer_selem_get_enum_item
0 snd_pcm_rate_open
0 snd_hctl_elem_get_hctl
0 snd_hctl_elem_get_id
0 snd_hctl_last_elem
0 snd_hwdep_dsp_image_get_index
0 snd_hwdep_dsp_image_get_length
0 snd_seq_get_queue_tempo
0 snd_hwdep_dsp_image_get_image
0 snd_hwdep_dsp_image_malloc
0 snd_hwdep_dsp_image_set_name
0 snd_hwdep_dsp_image_sizeof
0 snd_hwdep_dsp_image_set_image
0 snd_hwdep_dsp_image_set_index
0 snd_hctl_open_ctl
0 snd_config_make
0 snd_pcm_access_mask_reset
0 snd_hctl_name
0 snd_hctl_poll_descriptors_revents
0 snd_hctl_wait
0 snd_hwdep_dsp_image_copy
0 snd_hctl_set_callback
0 snd_card_get_index
0 _snd_pcm_route_open
0 _snd_pcm_share_open
0 _snd_pcm_mulaw_open
0 _snd_pcm_multi_open
0 _snd_pcm_shm_open
0 snd_pcm_hw_params_set_tick_time
0 snd_seq_set_queue_usage
0 snd_config_set_pointer
0 snd_ctl_elem_info_set_item
0 _snd_pcm_hooks_open
0 snd_hwdep_type
0 snd_seq_system_info_copy
0 _snd_pcm_hook_ctl_elems_install
0 snd_hwdep_nonblock
0 _snd_pcm_linear_open
0 snd_ctl_type
0 _snd_pcm_iec958_open
0 snd_ctl_elem_info_set_device
0 snd_async_handler_get_ctl
0 snd_pcm_info_get_card
0 snd_config_get_ctl_iface
0 snd_config_delete_compound_members
0 snd_config_evaluate
0 snd_config_get_bool_ascii
0 snd_config_get_ireal
0 snd_ctl_card_info_get_longname
0 snd_config_get_ctl_iface_ascii
0 snd_ctl_card_info_clear
0 snd_rawmidi_params_free
0 snd_hctl_set_callback_private
0 snd_async_handler_get_fd
0 snd_async_handler_get_signo
0 snd_seq_queue_info_set_locked
0 snd_output_printf
0 snd_config_make_pointer
0 snd_card_load
0 snd_timer_continue
0 snd_mixer_elem_value
0 snd_ctl_subscribe_events
0 snd_timer_nonblock
0 snd_seq_queue_tempo_get_queue
0 snd_ctl_elem_info_get_subdevice
0 snd_timer_id_get_subdevice
0 snd_instr_header_get_len
0 snd_pcm_info_get_subdevice_name
0 snd_async_handler_get_pcm
0 snd_seq_get_client_pool
0 snd_hwdep_info_copy
0 snd_seq_set_queue_timer
0 snd_config_set_id
0 snd_hctl_elem_get_device
0 snd_pcm_file_open
0 snd_instr_header_malloc
0 snd_seq_open_lconf
0 snd_ctl_elem_id_get_device
0 snd_async_add_handler
0 snd_mixer_selem_has_capture_switch_joined
0 snd_timer_id_get_card
0 snd_seq_sync_output_queue
0 snd_ctl_nonblock
0 snd_hctl_elem_get_callback_private
0 _snd_pcm_alaw_open
0 _snd_pcm_dmix_open
0 _snd_pcm_dshare_open
0 _snd_pcm_asym_open
0 _snd_pcm_copy_open
0 snd_seq_client_info_get_num_ports
0 snd_pcm_hw_params_set_tick_time_min
0 snd_config_searchv
0 snd_seq_event_output_buffer
0 snd_ctl_poll_descriptors_count
0 snd_ctl_elem_value_set_index
0 snd_pcm_meter_add_scope
0 _snd_pcm_null_open
0 snd_mixer_selem_get_enum_items
0 snd_seq_port_info_set_timestamping
0 snd_ctl_elem_id_set_numid
0 snd_seq_alloc_named_queue
0 snd_ctl_elem_id_set_device
0 snd_ctl_elem_value_get_boolean
0 snd_ctl_elem_info
0 snd_seq_port_info_get_write_use
0 snd_pcm_format_float
0 snd_hwdep_write
0 snd_hwdep_info_get_device
0 snd_ctl_read
0 snd_rawmidi_info_get_subdevice
0 snd_ctl_elem_list
0 snd_ctl_elem_id_copy
0 snd_ctl_elem_id_get_name
0 snd_seq_client_pool_malloc
0 snd_ctl_elem_id_get_index
0 snd_ctl_elem_id_get_interface
0 snd_ctl_elem_info_copy
0 snd_ctl_elem_info_get_owner
0 snd_ctl_elem_info_get_type
0 snd_seq_client_info_get_error_bounce
0 snd_ctl_elem_info_get_numid
0 snd_ctl_elem_info_is_inactive
0 snd_ctl_elem_info_is_writable
0 _snd_pcm_ladspa_open
0 snd_ctl_elem_info_is_owner
0 snd_pcm_hw_params_set_tick_time_last
0 snd_ctl_elem_info_get_id
0 snd_ctl_elem_info_get_interface
0 snd_ctl_elem_info_get_dimension
0 snd_ctl_elem_info_get_dimensions
0 snd_ctl_elem_info_get_item_name
0 snd_ctl_elem_info_get_max64
0 snd_ctl_elem_info_get_min64
0 snd_ctl_elem_info_get_items
0 snd_mixer_last_elem
0 snd_config_get_pointer
0 snd_func_getenv
0 snd_instr_header_set_follow_alias
0 snd_config_load
0 snd_config_load_override
0 snd_config_make_integer
0 snd_config_make_string
0 snd_config_remove
0 snd_config_make_integer64
0 snd_instr_iwffff_convert_from_stream
0 snd_config_hook_load
0 snd_pcm_meter_get_channels
0 snd_config_get_real
0 snd_config_get_type_ascii
0 snd_config_imake_integer64
0 snd_pcm_subformat_mask_reset
0 snd_pcm_subformat_mask_malloc
0 snd_config_imake_pointer
0 snd_ctl_elem_value_set_id
0 snd_spcm_init
0 snd_config_top
0 snd_config_update_free
0 snd_config_set_integer64
0 snd_config_set_real
0 snd_seq_set_client_pool_output
0 snd_ctl_card_info_copy
0 snd_ctl_card_info_get_driver
0 snd_config_update_r
0 snd_pcm_hw_params_set_access_mask
0 snd_config_searcha
0 snd_config_searcha_hooks
0 snd_config_search_alias
0 snd_config_search_hooks
0 snd_seq_remove_events_set_channel
0 snd_input_getc
0 snd_config_set_integer
0 snd_config_searchva_hooks
0 snd_pcm_ladspa_open
0 snd_mixer_selem_id_copy
0 snd_pcm_share_open
0 snd_pcm_hw_params_set_subformat_last
0 snd_mixer_elem_prev
0 snd_mixer_selem_id_malloc
0 snd_mixer_selem_id_free
0 snd_ctl_elem_info_set_subdevice
0 snd_seq_client_info_malloc
0 snd_mixer_selem_get_index
0 snd_mixer_selem_has_common_switch
0 snd_mixer_selem_has_capture_volume_joined
0 snd_hwdep_poll_descriptors_count
0 snd_mixer_set_compare
0 snd_mixer_set_callback_private
0 snd_mixer_selem_set_playback_volume_range
0 snd_output_flush
0 snd_seq_port_info_get_midi_channels
0 snd_mixer_wait
0 snd_func_private_string
0 snd_mixer_selem_set_capture_switch
0 snd_mixer_selem_is_enumerated
0 snd_ctl_event_free
0 snd_input_stdio_attach
0 snd_mixer_selem_set_capture_volume_range
0 snd_mixer_selem_get_enum_item_name
0 snd_pcm_format_mask_none
0 snd_mixer_elem_attach
0 snd_mixer_elem_add
0 snd_seq_get_queue_usage
0 snd_seq_client_info_get_event_filter
0 snd_mixer_elem_info
0 snd_seq_queue_tempo_set_skew_base
0 snd_mixer_class_register
0 snd_pcm_dump_sw_setup
0 snd_mixer_class_unregister
0 snd_pcm_hw_params_current
0 snd_pcm_hw_params_set_buffer_size_minmax
0 snd_pcm_sw_params_get_start_mode
0 snd_shm_area_destroy
0 snd_pcm_hw_params_get_min_align
0 snd_ctl_elem_list_free
0 snd_rawmidi_status_sizeof
0 snd_mixer_selem_get_capture_group
0 snd_pcm_linear_open
0 snd_mixer_elem_set_callback_private
0 snd_mixer_elem_set_callback
0 snd_mixer_poll_descriptors
0 snd_mixer_handle_events
0 snd_mixer_free
0 snd_pcm_sw_params_set_start_mode
0 snd_hwdep_dsp_status
0 snd_seq_create_queue
0 snd_pcm_dump_setup
0 snd_ctl_card_info_get_components
0 snd_pcm_hw_params_set_channels_max
0 snd_ctl_elem_value_get_iec958
0 snd_seq_system_info_malloc
0 _snd_pcm_rate_open
0 snd_output_puts
0 snd_pcm_dump_hw_setup
0 snd_seq_queue_info_get_owner
0 snd_seq_get_queue_info
0 snd_pcm_stream_name
0 snd_pcm_format_silence
0 snd_pcm_xrun_mode_name
0 snd_pcm_format_value
0 snd_pcm_format_unsigned
0 snd_pcm_format_silence_32
0 snd_pcm_format_mask_any
0 snd_pcm_format_little_endian
0 snd_ctl_elem_id_sizeof
0 snd_pcm_format_mask_set
0 snd_pcm_format_mask_reset
0 snd_pcm_format_mask_empty
0 snd_timer_id_copy
0 snd_pcm_access_mask_none
0 snd_instr_header_get_cmd
0 snd_pcm_access_mask_free
0 snd_pcm_adpcm_open
0 snd_ctl_event_elem_get_id
0 snd_pcm_access_mask_set
0 snd_output_vprintf
0 snd_rawmidi_drop
0 snd_output_putc
0 snd_seq_queue_info_set_name
0 snd_pcm_access_mask_copy
0 snd_pcm_access_mask_any
0 snd_pcm_copy_open
0 snd_pcm_bytes_to_samples
0 _snd_pcm_adpcm_open
0 snd_seq_client_info_get_broadcast_filter
0 snd_pcm_dmix_open
0 snd_ctl_elem_value_get_byte
0 snd_pcm_alaw_open
0 snd_output_stdio_open
0 snd_rawmidi_params_malloc
0 snd_pcm_areas_copy
0 snd_pcm_subformat_mask_sizeof
0 snd_hwdep_dsp_image_get_name
0 snd_midi_event_reset_decode
0 snd_mixer_set_callback
0 snd_instr_iwffff_close
0 snd_instr_simple_convert_from_stream
0 _snd_pcm_dsnoop_open
0 snd_config_make_real
0 snd_instr_header_set_len
0 snd_instr_header_set_id
0 snd_instr_header_set_format
0 snd_instr_header_sizeof
0 snd_instr_header_set_type
0 snd_midi_event_resize_buffer
0 snd_instr_iwffff_open_rom_file
0 snd_instr_iwffff_open_rom
0 snd_pcm_hook_remove
0 snd_instr_simple_free
0 snd_timer_info_copy
0 snd_lib_error
0 snd_rawmidi_params
0 snd_instr_iwffff_convert_to_stream
0 snd_timer_info_is_slave
0 snd_seq_query_subscribe_free
0 snd_instr_iwffff_free
0 snd_config_set_ascii
0 snd_pcm_direct_shm_discard
0 snd_pcm_direct_check_interleave
0 snd_pcm_plugin_undo_read_generic
0 snd_pcm_direct_server_discard
0 snd_pcm_hw_param_get
0 snd_pcm_plugin_undo_write_generic
0 __snd_pcm_forward
0 snd_rawmidi_hw_ops
0 __snd_pcm_sw_params_get_tstamp_mode
0 snd_pcm_direct_initialize_slave
0 snd_pcm_hw_param_refine_multiple
0 snd_interval_refine_last
0 snd_pcm_direct_hw_refine
0 snd_pcm_direct_poll_revents
0 snd_pcm_direct_server_create
0 _snd_hwdep_hw_open
0 snd_interval_mulkdiv
0 snd_rawmidi_virtual_open
0 snd_pcm_hw_param_set_max
0 snd_pcm_hw_param_set_mask
0 _snd_func_private_card_driver_dlsym_config_evaluate_001
0 __snd_hwdep_hw_open_dlsym_hwdep_001
0 snd_pcm_direct_semaphore_create_or_connect
0 snd_pcm_direct_client_discard
0 snd_rawmidi_virtual_ops
0 _snd_timer_query_hw_open
0 __snd_pcm_multi_open_dlsym_pcm_001
0 __snd_pcm_hooks_open_dlsym_pcm_001
0 snd_pcm_direct_shm_create_or_connect
0 __snd_pcm_hook_ctl_elems_install_dlsym_pcm_001
0 snd_pcm_hw_param_set_last
0 snd_atomic_read_wait
0 snd_pcm_hw_param_set_near
0 snd_pcm_slave_conf
0 _snd_pcm_boundary
0 __snd_pcm_adpcm_open_dlsym_pcm_001
0 snd_pcm_direct_initialize_poll_fd
0 __snd_ctl_shm_open_dlsym_control_001
0 __snd_timer_params_set_filter
0 snd_pcm_open_slave
0 __snd_pcm_asym_open_dlsym_pcm_001
0 _snd_pcm_hw_param_set_max
0 __snd_pcm_alaw_open_dlsym_pcm_001
0 __snd_ctl_hw_open_dlsym_control_001
0 snd_interval_add
0 snd_pcm_hw_param_get_min
0 snd_interval_div
0 snd_hwdep_hw_open
0 snd_timer_query_hw_open
0 snd_pcm_adpcm_decode
0 __snd_pcm_sw_params_get_silence_threshold
0 snd_pcm_new
0 _snd_pcm_mmap_hw_ptr
0 __snd_pcm_copy_open_dlsym_pcm_001
0 snd_pcm_direct_async
0 __snd_pcm_hw_open_dlsym_pcm_001
0 __snd_timer_query_info
0 snd_pcm_plugin_fast_ops
0 snd_pcm_direct_client_connect
0 __snd_pcm_shm_open_dlsym_pcm_001
0 snd_pcm_plug_open
0 snd_pcm_areas_from_buf
0 _snd_pcm_hw_param_set_interval
0 snd_pcm_linear_get_index
0 snd_pcm_areas_from_bufs
0 snd_pcm_async
0 __snd_pcm_dmix_open_dlsym_pcm_001
0 snd_pcm_read_mmap
0 snd_pcm_channel_info_shm
0 _snd_rawmidi_virtual_open
0 _snd_ctl_poll_descriptor
0 __snd_timer_query_status
0 __snd_timer_query_params
0 _snd_ctl_hw_open
0 _snd_config_hook_load_dlsym_config_hook_001
0 snd_pcm_direct_mmap
0 snd_pcm_set_appl_ptr
0 __snd_timer_query_hw_open_dlsym_timer_query_001
0 snd_timer_hw_open
0 _snd_func_private_string_dlsym_config_evaluate_001
0 _snd_func_datadir_dlsym_config_evaluate_001
0 __snd_pcm_mulaw_open_dlsym_pcm_001
0 _snd_func_private_pcm_subdevice_dlsym_config_evaluate_001
0 _snd_func_pcm_id_dlsym_config_evaluate_001
0 __snd_pcm_null_open_dlsym_pcm_001
0 __snd_pcm_plug_open_dlsym_pcm_001
0 snd_shm_area_destructor
0 snd_pcm_linear_get32_index
0 snd_pcm_direct_info
0 __snd_pcm_sw_params_get_silence_size
0 __snd_pcm_sw_params_get_start_threshold
0 __snd_pcm_sw_params_get_sleep_min
0 __snd_pcm_share_open_dlsym_pcm_001
0 __snd_timer_params_get_exclusive
0 __snd_pcm_sw_params_get_avail_min
0 __snd_pcm_status_get_trigger_htstamp
0 __snd_timer_params_set_exclusive
0 __snd_timer_hw_open_dlsym_timer_001
0 snd_pcm_mulaw_encode
0 snd_pcm_alaw_decode
0 snd_pcm_hw_param_always_eq
0 snd_pcm_hw_refine
0 __snd_pcm_sw_params_get_stop_threshold
0 __snd_rawmidi_hw_open_dlsym_rawmidi_001
0 snd_pcm_conf_generic_id
0 snd_pcm_hw_param_never_eq
0 _snd_seq_hw_open
0 snd_pcm_hw_param_get_max
0 snd_pcm_hw_param_name
0 snd_pcm_mmap_appl_forward
0 _snd_pcm_hw_params_refine
0 _snd_pcm_hw_param_refine
0 snd_pcm_hw_param_get_mask
0 _snd_pcm_hw_param_set_minmax
0 snd_pcm_hw_param_set_integer
0 snd_pcm_hw_param_set
0 snd_pcm_set_hw_ptr
0 snd_pcm_hw_param_set_first
0 _snd_rawmidi_hw_open
0 _snd_pcm_plug_open
0 __snd_seq_hw_open_dlsym_seq_001
0 snd_pcm_direct_sw_params
0 _snd_pcm_poll_descriptor
0 __snd_pcm_ladspa_open_dlsym_pcm_001
0 _snd_func_getenv_dlsym_config_evaluate_001
0 __snd_pcm_hw_params_set_access_first
0 snd_pcm_hw_param_dump
0 __snd_pcm_meter_open_dlsym_pcm_001
0 _snd_func_refer_dlsym_config_evaluate_001
0 snd_pcm_read_areas
0 __snd_pcm_route_open_dlsym_pcm_001
0 __snd_pcm_iec958_open_dlsym_pcm_001
0 __snd_pcm_dshare_open_dlsym_pcm_001
0 snd_pcm_adpcm_encode
0 _snd_pcm_hw_params_any
0 _snd_pcm_hw_param_set_min
0 _snd_pcm_hw_param_set_empty
0 _snd_pcm_hw_param_set
0 _snd_pcm_hw_param_set_mask
0 snd_pcm_hw_param_empty
0 snd_pcm_plugin_init
0 _snd_func_igetenv_dlsym_config_evaluate_001
0 snd_is_local
0 _snd_config_hook_load_for_all_cards_dlsym_config_hook_001
0 snd_interval_refine_min
0 snd_pcm_munmap
0 snd_interval_refine_set
0 snd_pcm_hw_param_set_minmax
0 snd_rawmidi_hw_open
0 snd_receive_fd
0 snd_pcm_direct_parse_bindings
0 snd_ctl_hw_ops
0 snd_ctl_hw_open
0 __snd_pcm_rate_open_dlsym_pcm_001
0 __snd_ctl_elem_info_get_dimensions
0 _snd_ctl_shm_open
0 snd_interval_refine_max
0 snd_pcm_meter_open
0 __snd_rawmidi_virtual_open_dlsym_rawmidi_001
0 snd_pcm_hw_param_get_interval
0 snd_pcm_write_areas
0 snd_pcm_direct_hw_params
0 snd_ctl_new
0 _snd_func_card_id_dlsym_config_evaluate_001
0 _snd_func_card_driver_dlsym_config_evaluate_001
0 snd_pcm_link_hw_ptr
0 snd_pcm_unlink_hw_ptr
0 __snd_ctl_elem_info_get_dimension
0 __snd_pcm_sw_params_get_xfer_align
0 snd_pcm_linear_convert_index
0 snd_pcm_direct_hw_free
0 __snd_timer_params_get_filter
0 snd_interval_sub
0 snd_ctl_async
0 _snd_timer_hw_open
0 snd_pcm_linear_getput
0 snd_pcm_unlink_appl_ptr
0 snd_pcm_linear_put_index
0 snd_pcm_direct_channel_info
0 snd_seq_create_event
0 __snd_pcm_status_get_htstamp
0 snd_send_fd
0 snd_pcm_linear_put32_index
0 snd_interval_muldiv
0 snd_pcm_write_mmap
0 snd_pcm_linear_convert
0 snd_pcm_hw_fast_tstamp
0 snd_pcm_hw_refine_soft
0 snd_pcm_hw_param_refine_near
0 snd_pcm_mmap_hw_forward
0 snd_pcm_direct_munmap
0 snd_determine_driver
0 snd_interval_refine
0 snd_pcm_free
0 snd_pcm_link_appl_ptr
0 snd_pcm_hw_params_slave
0 snd_pcm_hw_param_set_min
0 snd_pcm_hw_refine_slave
0 snd_pcm_mmap_hw_backward
0 snd_interval_refine_first
0 snd_interval_mul
0 snd_pcm_hw_param_any
0 snd_pcm_direct_nonblock
0 snd_func_private_pcm_subdevice
0 snd_func_pcm_id
0 __snd_pcm_type_name
0 snd_pcm_mulaw_decode
0 snd_interval_print
0 __snd_pcm_linear_open_dlsym_pcm_001
0 snd_interval_muldivk
0 snd_pcm_alaw_encode
0 __snd_pcm_dsnoop_open_dlsym_pcm_001
0 snd_seq_hw_open
0 _snd_func_concat_dlsym_config_evaluate_001
0 _snd_pcm_meter_open
0 snd_seq_hw_ops
0 snd_ctl_shm_ops
0 snd_pcm_mmap
0 __snd_pcm_file_open_dlsym_pcm_001
0 snd_pcm_mmap_appl_backward
0 snd_ctl_shm_open
0 snd_timer_async
0 snd_pcm_lfloat_open
0 _snd_pcm_lfloat_open
0 snd_pcm_lfloat_convert_integer_float
0 snd_pcm_lfloat_convert_float_integer
0 snd_pcm_lfloat_put_s32_index
0 __snd_pcm_lfloat_open_dlsym_pcm_001
0 snd_pcm_lfloat_get_s32_index
0 snd_ctl_elem_add_integer64
0 snd_pcm_softvol_open
0 _snd_pcm_softvol_open
0 snd_ctl_elem_add_integer
0 snd_ctl_elem_add_iec958
0 snd_ctl_elem_info_is_user
0 snd_ctl_elem_add_boolean
0 __snd_pcm_softvol_open_dlsym_pcm_001
0 snd_timer_ginfo_get_name
0 snd_timer_ginfo_get_resolution
0 snd_pcm_ioplug_set_param_minmax
0 snd_timer_ginfo_get_resolution_max
0 snd_pcm_ioplug_reinit_status
0 snd_async_handler_get_timer
0 snd_async_add_timer_handler
0 snd_pcm_ioplug_set_param_list
0 snd_timer_ginfo_get_card
0 snd_pcm_ioplug_params_reset
0 snd_err_msg
0 snd_timer_ginfo_malloc
0 snd_timer_ginfo_get_tid
0 snd_timer_ginfo_copy
0 snd_timer_ginfo_get_clients
0 snd_pcm_hw_params_set_export_buffer
0 snd_pcm_ioplug_delete
0 snd_pcm_ioplug_mmap_areas
0 snd_timer_ginfo_get_id
0 snd_timer_ginfo_set_tid
0 snd_timer_ginfo_get_flags
0 snd_pcm_ioplug_create
0 snd_pcm_extplug_create
0 snd_pcm_extplug_params_reset
0 snd_timer_ginfo_sizeof
0 snd_pcm_extplug_delete
0 snd_pcm_extplug_set_param_minmax
0 snd_pcm_hw_params_get_rate_resample
0 snd_timer_ginfo_get_resolution_min
0 snd_pcm_extplug_set_slave_param_list
0 snd_names_list
0 snd_pcm_extplug_set_param_list
0 snd_names_list_free
0 snd_timer_ginfo_free
0 snd_pcm_hw_params_get_export_buffer
0 snd_pcm_parse_control_id
0 snd_pcm_extplug_set_slave_param_minmax
0 snd_pcm_generic_rewind
0 snd_pcm_generic_sw_params
0 snd_pcm_generic_start
0 snd_pcm_direct_set_timer_params
0 snd_dlobj_cache_add
0 snd_pcm_generic_link
0 snd_ext_parm_set_minmax
0 snd_pcm_generic_state
0 snd_pcm_generic_writei
0 snd_pcm_generic_mmap
0 snd_pcm_generic_async
0 snd_pcm_generic_info
0 snd_pcm_direct_clear_timer_queue
0 snd_pcm_generic_drain
0 snd_pcm_generic_drop
0 snd_pcm_generic_close
0 snd_pcm_generic_hw_free
0 snd_pcm_generic_nonblock
0 snd_pcm_generic_munmap
0 snd_pcm_generic_hw_refine
0 snd_pcm_generic_hw_params
0 snd_pcm_generic_forward
0 snd_pcm_generic_writen
0 snd_ext_parm_clear
0 snd_pcm_generic_readi
0 snd_ext_parm_mask_refine
0 snd_dlobj_cache_cleanup
0 snd_dlobj_cache_lookup
0 snd_pcm_generic_channel_info
0 snd_pcm_generic_poll_descriptors
0 snd_pcm_generic_hwsync
0 snd_pcm_generic_prepare
0 snd_pcm_generic_avail_update
0 snd_ext_parm_set_list
0 snd_pcm_generic_poll_descriptors_count
0 snd_pcm_generic_status
0 snd_pcm_generic_readn
0 snd_pcm_generic_resume
0 snd_pcm_generic_pause
0 snd_interval_list
0 snd_pcm_generic_delay
0 snd_ext_parm_interval_refine
0 snd_pcm_generic_reset
0 snd_pcm_generic_unlink
0 snd_pcm_generic_poll_revents
0 snd_pcm_generic_mmap_commit
0 snd_pcm_direct_timer_stop
0 snd_pcm_wait_nocheck
0 snd_mixer_sbasic_get_private
0 snd_mixer_class_get_mixer
0 snd_mixer_get_hctl
0 snd_mixer_class_set_private_free
0 snd_mixer_class_copy
0 snd_mixer_elem_free
0 snd_mixer_simple_basic_register
0 snd_mixer_class_get_private
0 snd_mixer_selem_set_playback_dB_all
0 snd_mixer_class_get_event
0 snd_mixer_selem_is_enum_capture
0 snd_mixer_sbasic_set_private
0 snd_mixer_class_free
0 snd_mixer_sbasic_set_private_free
0 snd_mixer_selem_set_playback_dB
0 snd_mixer_elem_get_private
0 snd_mixer_class_sizeof
0 snd_mixer_elem_new
0 snd_mixer_selem_get_capture_dB_range
0 snd_mixer_class_get_compare
0 snd_mixer_selem_get_playback_dB_range
0 snd_mixer_sbasic_info
0 snd_mixer_class_set_event
0 snd_mixer_selem_get_capture_dB
0 snd_mixer_class_set_compare
0 snd_mixer_simple_none_register
0 snd_mixer_selem_set_capture_dB_all
0 snd_mixer_selem_is_enum_playback
0 snd_ctl_ext_delete
0 snd_mixer_selem_set_capture_dB
0 snd_mixer_class_set_private
0 snd_mixer_detach_hctl
0 snd_mixer_attach_hctl
0 snd_mixer_class_malloc
0 snd_mixer_selem_get_playback_dB
0 snd_ctl_ext_create
0 snd_pcm_direct_resume
0 _snd_func_pcm_args_by_class_dlsym_config_evaluate_001
0 snd_func_pcm_args_by_class
0 snd_pcm_direct_open_secondary_client
0 snd_mixer_selem_compare
0 snd_pcm_recover
0 snd_pcm_set_params
0 snd_pcm_get_params
0 snd_pcm_direct_parse_open_conf
0 _snd_seq_open_lconf
0 snd_config_check_hop
0 snd_config_set_hop
0 snd_pcm_generic_link_fd
0 _snd_pcm_link_descriptors
0 snd_pcm_generic_link2
0 snd_pcm_rate_get_default_converter
0 snd_hctl_elem_tlv_read
0 snd_ctl_elem_tlv_write
0 snd_ctl_elem_tlv_command
0 snd_hctl_elem_tlv_write
0 snd_ctl_elem_info_is_tlv_commandable
0 snd_ctl_elem_info_is_tlv_writable
0 snd_ctl_elem_info_is_tlv_readable
0 snd_hctl_elem_tlv_command
0 snd_ctl_elem_tlv_read
0 _snd_pcm_rate_linear_open
0 snd_pcm_direct_initialize_secondary_slave
4
6

[alsa-devel] Some drivers don't create all necessary sysfs symlinks
by Lennart Poettering 30 Nov '07
by Lennart Poettering 30 Nov '07
30 Nov '07
Hi!
Apparently not all ALSA drivers set the "device" symlink
properly. This creates problems with HAL which then is unable to
manage permissions to those files properly. One example of such a
driver is EMU10K1X.
For more information, see:
https://bugzilla.redhat.com/show_bug.cgi?id=370821#c26
Also reported on the ALSA BTS:
https://bugtrack.alsa-project.org/alsa-bug/view.php?id=3575
Lennart
--
Lennart Poettering Red Hat, Inc.
lennart [at] poettering [dot] net ICQ# 11060553
http://0pointer.net/lennart/ GnuPG 0x1A015CC4
2
3
Hi All:
Im having problems while using mplayer 1.0 to play music based on alsa 1.0.15.
Im using an ARM9 system and montavista linux 2.6.18.
Here's what the problem is and what's modified in the mplayer.conf:
***************************************************************************************************************
/ $ mplayer /tmp/a.wav
MPlayer 1.0rc2-4.2.0 (C) 2000-2007 MPlayer Team
CPU: ARM
115 audio & 237 video codecs
Playing /tmp/a.wav.
Audio file file format detected.
==========================================================================
Opening audio decoder: [pcm] Uncompressed PCM audio decoder
AUDIO: 44100 Hz, 2 ch, s16le, 1411.2 kbit/100.00% (ratio: 176400->176400)
Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)
==========================================================================
[AO_ALSA] alsa-lib: conf.c:2699:(snd_config_hooks_call) Cannot open shared
library (null)
[AO_ALSA] alsa-lib: conf.c:3076:(snd_config_update_r) hooks failed,
removing configuration
[AO_ALSA] Playback open error: No such file or directory
Could not open/initialize audio device -> no sound.
Audio: no sound
Video: no video
Exiting... (End of file)
*****************************************************************************************************************
/etc/mplayer/mplayer.conf
##################
# audio settings #
##################
# Specify default audio driver (see -ao help for a list).
ao=alsa
# Use SDL audio driver with the esd subdriver by default.
#ao = sdl:esd
# Specify the mixer device.
#mixer = /dev/mixer
# Resample the sound to 44100Hz with the lavcresample audio filter.
#af=lavcresample=44100
****************************************************************************************************************
Can anybody tell me what going wrong with this?
Thanks in advance!
semiyd
_________________________________________________________________
Connect to the next generation of MSN Messenger
http://imagine-msn.com/messenger/launch80/default.aspx?locale=en-us&source=…
2
1