At Fri, 14 May 2010 11:28:28 +0800, Wu Fengguang wrote:
When the static minor numbers collide because of too many devices, fall back to the reserved minor numbers 2 and 3.
This for example will allow Intel HDMI audio driver to create three PCM devices (index 3, 7, 8; the minor number of the last index will otherwise collide with the first record device).
The other option is to force enable CONFIG_SND_DYNAMIC_MINORS.
Signed-off-by: Wu Fengguang fengguang.wu@intel.com
Well, frankly, I don't see a big merit of doing this.
Most (all?) 2.6-based distros are using udev, thus CONFIG_SND_DYNAMIC_MINORS should be used there. The rest is for old distros or for some limited systems like embedded devices, and they won't need so much PCM devices.
Even if we do this, it doesn't make sense unless the user-space side creates the corresponding device node.
thanks,
Takashi
include/sound/minors.h | 4 +++- sound/core/sound.c | 10 ++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-)
--- drm-intel.orig/include/sound/minors.h 2010-05-13 10:06:52.000000000 +0800 +++ drm-intel/include/sound/minors.h 2010-05-13 10:10:06.000000000 +0800 @@ -35,7 +35,9 @@ #define SNDRV_MINOR_TIMER (SNDRV_MINOR_GLOBAL + 1 * 32)
#ifndef CONFIG_SND_DYNAMIC_MINORS
/* 2 - 3 (reserved) */
+#define SNDRV_MINOR_BACKUP1 2 +#define SNDRV_MINOR_BACKUP2 3 #define SNDRV_MINOR_HWDEP 4 /* 4 - 7 */ #define SNDRV_MINOR_RAWMIDI 8 /* 8 - 15 */ #define SNDRV_MINOR_PCM_PLAYBACK 16 /* 16 - 23 */ --- drm-intel.orig/sound/core/sound.c 2010-05-13 10:06:04.000000000 +0800 +++ drm-intel/sound/core/sound.c 2010-05-13 10:11:19.000000000 +0800 @@ -269,8 +269,14 @@ int snd_register_device_for_dev(int type minor = snd_find_free_minor(); #else minor = snd_kernel_minor(type, card, dev);
- if (minor >= 0 && snd_minors[minor])
minor = -EBUSY;
- if (minor >= 0) {
if (snd_minors[minor])
minor = SNDRV_MINOR_BACKUP1;
if (snd_minors[minor])
minor = SNDRV_MINOR_BACKUP2;
if (snd_minors[minor])
minor = -EBUSY;
- }
#endif if (minor < 0) { mutex_unlock(&sound_mutex);