ALSA: Fix limit of 8 PCM devices in SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE
authorPawel MOLL <pawel.moll@st.com>
Wed, 30 Jul 2008 11:46:40 +0000 (12:46 +0100)
committerJaroslav Kysela <perex@perex.cz>
Fri, 1 Aug 2008 11:37:15 +0000 (13:37 +0200)
commitf90c06a2b613eea24a77d56f24b084745c43713d
tree9a205486e526c9f5b696db96633e1a7ff7833a7c
parent030a07e441296c372f946cd4065b5d831d8dc40c
ALSA: Fix limit of 8 PCM devices in SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE

When compiled with CONFIG_SND_DYNAMIC_MINORS the ALSA core is fine
to have more than 8 PCM devices per card, except one place - the
SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE ioctl, which will not enumerate
devices > 7. This patch fixes the issue, changing the devices list
organisation.

Instead of adding new device to the tail, the list is now kept always
ordered (by card number, then device number). Thus, during enumeration,
it is easy to discover the fact that there is no more given card's
devices.

Additionally the device field of struct snd_pcm had to be changed to int,
as its "unsignednity" caused a lot of problems when comparing it to
potentially negative signed values. (-1 is 0xffffffff or even more then ;-)

Signed-off-by: Pawel Moll <pawel.moll@st.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
include/sound/minors.h
include/sound/pcm.h
sound/core/pcm.c
sound/core/sound.c