]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
ALSA: usb-audio: Change the semantics of the enable option
authorTamaki Nishino <otamachan@gmail.com>
Thu, 30 Nov 2017 11:27:52 +0000 (20:27 +0900)
committerTakashi Iwai <tiwai@suse.de>
Thu, 30 Nov 2017 15:31:53 +0000 (16:31 +0100)
This patch changes the semantics of the enable option for snd-usb-audio
in order to allow users to disable a device specified by either or both
of the vendor id and the product id.

Signed-off-by: Tamaki Nishino <otamachan@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/card.c

index 23d1d23aefec375c2c857f090f4920894e4bc7f8..8018d56cfecc4a8bb7699ba7191f4b14f592257a 100644 (file)
@@ -585,15 +585,24 @@ static int usb_audio_probe(struct usb_interface *intf,
                 * now look for an empty slot and create a new card instance
                 */
                for (i = 0; i < SNDRV_CARDS; i++)
-                       if (enable[i] && ! usb_chip[i] &&
+                       if (!usb_chip[i] &&
                            (vid[i] == -1 || vid[i] == USB_ID_VENDOR(id)) &&
                            (pid[i] == -1 || pid[i] == USB_ID_PRODUCT(id))) {
-                               err = snd_usb_audio_create(intf, dev, i, quirk,
-                                                          id, &chip);
-                               if (err < 0)
+                               if (enable[i]) {
+                                       err = snd_usb_audio_create(intf, dev, i, quirk,
+                                                                  id, &chip);
+                                       if (err < 0)
+                                               goto __error;
+                                       chip->pm_intf = intf;
+                                       break;
+                               } else if (vid[i] != -1 || pid[i] != -1) {
+                                       dev_info(&dev->dev,
+                                                "device (%04x:%04x) is disabled\n",
+                                                USB_ID_VENDOR(id),
+                                                USB_ID_PRODUCT(id));
+                                       err = -ENOENT;
                                        goto __error;
-                               chip->pm_intf = intf;
-                               break;
+                               }
                        }
                if (!chip) {
                        dev_err(&dev->dev, "no available usb audio device\n");