diff options
author | Takashi Iwai <tiwai@suse.de> | 2022-05-16 12:48:07 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2022-05-16 12:49:03 +0200 |
commit | c11117b634f4f832c4420d3cf41c44227f140ce1 (patch) | |
tree | e5f1db89edb15c8c82bb7efad9fd8c4090ef3498 /sound/usb/card.c | |
parent | 00f87ec74c3c09628889173b0f594cfc01e74157 (diff) | |
download | linux-c11117b634f4f832c4420d3cf41c44227f140ce1.tar.gz |
ALSA: usb-audio: Refcount multiple accesses on the single clock
When a clock source is connected to multiple nodes / endpoints, the
current USB-audio driver tries to set up at each time one of them is
configured. Although it reads the current rate and updates only if it
differs, some devices seem unhappy with this behavior and spew the
errors when reading/updating the rate unnecessarily.
This patch tries to reduce the redundant clock setup by introducing a
refcount for each clock source. When the stream is actually running,
a clock rate is "locked", and it bypasses the clock and/or refuse to
change any longer.
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=215934
Link: https://lore.kernel.org/r/20220516104807.16482-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/usb/card.c')
-rw-r--r-- | sound/usb/card.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sound/usb/card.c b/sound/usb/card.c index 376962291c4d..0fff96a5d3ab 100644 --- a/sound/usb/card.c +++ b/sound/usb/card.c @@ -635,6 +635,7 @@ static int snd_usb_audio_create(struct usb_interface *intf, INIT_LIST_HEAD(&chip->pcm_list); INIT_LIST_HEAD(&chip->ep_list); INIT_LIST_HEAD(&chip->iface_ref_list); + INIT_LIST_HEAD(&chip->clock_ref_list); INIT_LIST_HEAD(&chip->midi_list); INIT_LIST_HEAD(&chip->mixer_list); |