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 314e8a211c9..5254b18cedc 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 };  static int nrpacks = 8;		/* max. number of packets per urb */  static int device_setup[SNDRV_CARDS]; /* device parameter for this card */  static bool ignore_ctl_error; +static bool autoclock = true;  module_param_array(index, int, NULL, 0444);  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).");  module_param(ignore_ctl_error, bool, 0444);  MODULE_PARM_DESC(ignore_ctl_error,  		 "Ignore errors from USB controller for mixer interfaces."); +module_param(autoclock, bool, 0444); +MODULE_PARM_DESC(autoclock, "Enable auto-clock selection for UAC2 devices (default: yes).");  /*   * 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,  	chip->card = card;  	chip->setup = device_setup[idx];  	chip->nrpacks = nrpacks; +	chip->autoclock = autoclock;  	chip->probing = 1;  	chip->usb_id = USB_ID(le16_to_cpu(dev->descriptor.idVendor), diff --git a/sound/usb/clock.c b/sound/usb/clock.c index d7ab2d75aef..e59d359b907 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,  		cur = ret;  		ret = __uac_clock_find_source(chip, selector->baCSourceID[ret - 1],  					       visited, validate); -		if (!validate || ret > 0) +		if (!validate || ret > 0 || !chip->autoclock)  			return ret;  		/* The current clock source is invalid, try others. */ diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h index 1ac3fd9cc5a..bc43bcaddf4 100644 --- a/sound/usb/usbaudio.h +++ b/sound/usb/usbaudio.h @@ -56,6 +56,7 @@ struct snd_usb_audio {  	int setup;			/* from the 'device_setup' module param */  	int nrpacks;			/* from the 'nrpacks' module param */ +	bool autoclock;			/* from the 'autoclock' module param */  	struct usb_host_interface *ctrl_intf;	/* the audio control interface */  };  |