diff options
-rw-r--r-- | sound/usb/card.c | 4 | ||||
-rw-r--r-- | sound/usb/clock.c | 2 | ||||
-rw-r--r-- | sound/usb/usbaudio.h | 1 |
3 files changed, 6 insertions, 1 deletions
diff --git a/sound/usb/card.c b/sound/usb/card.c index 314e8a211c9a..5254b18cedcd 100644 --- a/sound/usb/card.c +++ b/sound/usb/card.c | |||
@@ -82,6 +82,7 @@ static int pid[SNDRV_CARDS] = { [0 ... (SNDRV_CARDS-1)] = -1 }; | |||
82 | static int nrpacks = 8; /* max. number of packets per urb */ | 82 | static int nrpacks = 8; /* max. number of packets per urb */ |
83 | static int device_setup[SNDRV_CARDS]; /* device parameter for this card */ | 83 | static int device_setup[SNDRV_CARDS]; /* device parameter for this card */ |
84 | static bool ignore_ctl_error; | 84 | static bool ignore_ctl_error; |
85 | static bool autoclock = true; | ||
85 | 86 | ||
86 | module_param_array(index, int, NULL, 0444); | 87 | module_param_array(index, int, NULL, 0444); |
87 | MODULE_PARM_DESC(index, "Index value for the USB audio adapter."); | 88 | MODULE_PARM_DESC(index, "Index value for the USB audio adapter."); |
@@ -100,6 +101,8 @@ MODULE_PARM_DESC(device_setup, "Specific device setup (if needed)."); | |||
100 | module_param(ignore_ctl_error, bool, 0444); | 101 | module_param(ignore_ctl_error, bool, 0444); |
101 | MODULE_PARM_DESC(ignore_ctl_error, | 102 | MODULE_PARM_DESC(ignore_ctl_error, |
102 | "Ignore errors from USB controller for mixer interfaces."); | 103 | "Ignore errors from USB controller for mixer interfaces."); |
104 | module_param(autoclock, bool, 0444); | ||
105 | MODULE_PARM_DESC(autoclock, "Enable auto-clock selection for UAC2 devices (default: yes)."); | ||
103 | 106 | ||
104 | /* | 107 | /* |
105 | * we keep the snd_usb_audio_t instances by ourselves for merging | 108 | * we keep the snd_usb_audio_t instances by ourselves for merging |
@@ -354,6 +357,7 @@ static int snd_usb_audio_create(struct usb_device *dev, int idx, | |||
354 | chip->card = card; | 357 | chip->card = card; |
355 | chip->setup = device_setup[idx]; | 358 | chip->setup = device_setup[idx]; |
356 | chip->nrpacks = nrpacks; | 359 | chip->nrpacks = nrpacks; |
360 | chip->autoclock = autoclock; | ||
357 | chip->probing = 1; | 361 | chip->probing = 1; |
358 | 362 | ||
359 | chip->usb_id = USB_ID(le16_to_cpu(dev->descriptor.idVendor), | 363 | chip->usb_id = USB_ID(le16_to_cpu(dev->descriptor.idVendor), |
diff --git a/sound/usb/clock.c b/sound/usb/clock.c index d7ab2d75aefd..e59d359b907c 100644 --- a/sound/usb/clock.c +++ b/sound/usb/clock.c | |||
@@ -217,7 +217,7 @@ static int __uac_clock_find_source(struct snd_usb_audio *chip, | |||
217 | cur = ret; | 217 | cur = ret; |
218 | ret = __uac_clock_find_source(chip, selector->baCSourceID[ret - 1], | 218 | ret = __uac_clock_find_source(chip, selector->baCSourceID[ret - 1], |
219 | visited, validate); | 219 | visited, validate); |
220 | if (!validate || ret > 0) | 220 | if (!validate || ret > 0 || !chip->autoclock) |
221 | return ret; | 221 | return ret; |
222 | 222 | ||
223 | /* The current clock source is invalid, try others. */ | 223 | /* The current clock source is invalid, try others. */ |
diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h index 1ac3fd9cc5a6..bc43bcaddf4d 100644 --- a/sound/usb/usbaudio.h +++ b/sound/usb/usbaudio.h | |||
@@ -56,6 +56,7 @@ struct snd_usb_audio { | |||
56 | 56 | ||
57 | int setup; /* from the 'device_setup' module param */ | 57 | int setup; /* from the 'device_setup' module param */ |
58 | int nrpacks; /* from the 'nrpacks' module param */ | 58 | int nrpacks; /* from the 'nrpacks' module param */ |
59 | bool autoclock; /* from the 'autoclock' module param */ | ||
59 | 60 | ||
60 | struct usb_host_interface *ctrl_intf; /* the audio control interface */ | 61 | struct usb_host_interface *ctrl_intf; /* the audio control interface */ |
61 | }; | 62 | }; |