If there are two or more USB audio devices connected to a computer, it is
impossible to specify module parameters (snd_id/index/enable) for a specific
device because the device order depends on the order they are plugged in or
switched on.
This patch adds parameters snd_vid/snd_pid to reserve a device index for a
specific device.
--
Clemens
Index: alsa-kernel/usb/usbaudio.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/usb/usbaudio.c,v
retrieving revision 1.3
diff -u -r1.3 usbaudio.c
--- alsa-kernel/usb/usbaudio.c 26 Aug 2002 16:05:43 -0000 1.3
+++ alsa-kernel/usb/usbaudio.c 2 Sep 2002 16:07:48 -0000
@@ -53,6 +53,8 @@
static int snd_index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-MAX */
static char *snd_id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* ID for this card */
static int snd_enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; /* Enable this card */
+static int snd_vid[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = -1 }; /* Vendor ID for
+this card */
+static int snd_pid[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = -1 }; /* Product ID for
+this card */
MODULE_PARM(snd_index, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
MODULE_PARM_DESC(snd_index, "Index value for the USB audio adapter.");
@@ -63,6 +65,12 @@
MODULE_PARM(snd_enable, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
MODULE_PARM_DESC(snd_enable, "Enable USB audio adapter.");
MODULE_PARM_SYNTAX(snd_enable, SNDRV_ENABLE_DESC);
+MODULE_PARM(snd_vid, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+MODULE_PARM_DESC(snd_vid, "Vendor ID for the USB audio device.");
+MODULE_PARM_SYNTAX(snd_vid, SNDRV_ENABLED ",allows:{{-1,0xffff}},base:16");
+MODULE_PARM(snd_pid, "1-" __MODULE_STRING(SNDRV_CARDS) "i");
+MODULE_PARM_DESC(snd_pid, "Product ID for the USB audio device.");
+MODULE_PARM_SYNTAX(snd_pid, SNDRV_ENABLED ",allows:{{-1,0xffff}},base:16");
/*
@@ -2043,7 +2051,9 @@
* now look for an empty slot and create a new card instance
*/
for (i = 0; i < SNDRV_CARDS; i++)
- if (snd_enable[i] && ! usb_chip[i]) {
+ if (snd_enable[i] && ! usb_chip[i] &&
+ (snd_vid[i] == -1 || snd_vid[i] ==
+dev->descriptor.idVendor) &&
+ (snd_pid[i] == -1 || snd_pid[i] ==
+dev->descriptor.idProduct)) {
card = snd_card_new(snd_index[i], snd_id[i],
THIS_MODULE, 0);
if (card == NULL) {
snd_printk(KERN_ERR "cannot create a card
instance %d\n", i);
Index: alsa-driver/INSTALL
===================================================================
RCS file: /cvsroot/alsa/alsa-driver/INSTALL,v
retrieving revision 1.132
diff -u -r1.132 INSTALL
--- alsa-driver/INSTALL 3 Jul 2002 13:44:32 -0000 1.132
+++ alsa-driver/INSTALL 2 Sep 2002 16:07:58 -0000
@@ -812,18 +812,10 @@
Module snd-usb-audio.o
----------------------
- Module for USB audio devices.
+ Module for USB audio and USB MIDI devices.
- This module supports up to 8 cards, autoprobe and hotplugging.
-
- Module snd-usb-midi.o
- ---------------------
-
- Module for MIDI devices connected to a USB port.
-
- snd_int_transfer - transfer type for MIDI input
- 0 = bulk transfers (default)
- 1 = interrupt transfers, if supported by the device
+ snd_vid - Vendor ID for the device (optional)
+ snd_pid - Product ID for the device (optional)
This module supports up to 8 cards, autoprobe and hotplugging.
-------------------------------------------------------
This sf.net email is sponsored by: OSDN - Tired of that same old
cell phone? Get a new here for FREE!
https://www.inphonic.com/r.asp?r=sourceforge1&refcode1=vs3390
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel