Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: chihhao chen <chihhao.chen@mediatek.com>
Cc: alsa-devel@alsa-project.org
Subject: Re: missing sound on kernel-5.15
Date: Mon, 29 Aug 2022 20:15:33 +0200	[thread overview]
Message-ID: <87r10y9are.wl-tiwai@suse.de> (raw)
In-Reply-To: <87a67nb5yc.wl-tiwai@suse.de>

On Mon, 29 Aug 2022 14:16:27 +0200,
Takashi Iwai wrote:
> 
> On Mon, 29 Aug 2022 10:50:58 +0200,
> chihhao chen wrote:
> > 
> > Hi Takashi,
> > 
> > Yes.
> > 
> > To issue SAMPLING_FREQ_CONTROL USB request two times is root cause of
> > this issue.
> 
> Hm, is it a UAC1 device?  Such a device should work with multiple
> SAMPLING_FREQ_CONTROL invocations, but some device might be not
> tolerant or buggy...  The multiple init_sample_rate() invocations may
> happen with the older kernel under certain situations, so maybe we
> need a different fix.
> 
> How about the patch like below?

It's missing the clearance for suspend/resume.
The revised patch is below.


Takashi

-- 8< --
diff --git a/sound/usb/card.h b/sound/usb/card.h
index ca75f2206170..507cd62f0ff8 100644
--- a/sound/usb/card.h
+++ b/sound/usb/card.h
@@ -134,6 +134,7 @@ struct snd_usb_endpoint {
 	/* for hw constraints */
 	const struct audioformat *cur_audiofmt;
 	unsigned int cur_rate;
+	unsigned int cur_rate_setup;
 	snd_pcm_format_t cur_format;
 	unsigned int cur_channels;
 	unsigned int cur_frame_bytes;
diff --git a/sound/usb/endpoint.c b/sound/usb/endpoint.c
index 0d7b73bf7945..58ca1f920972 100644
--- a/sound/usb/endpoint.c
+++ b/sound/usb/endpoint.c
@@ -806,6 +806,7 @@ snd_usb_endpoint_open(struct snd_usb_audio *chip,
 		ep->cur_audiofmt = fp;
 		ep->cur_channels = fp->channels;
 		ep->cur_rate = params_rate(params);
+		ep->cur_rate_setup = 0;
 		ep->cur_format = params_format(params);
 		ep->cur_frame_bytes = snd_pcm_format_physical_width(ep->cur_format) *
 			ep->cur_channels / 8;
@@ -928,6 +929,7 @@ void snd_usb_endpoint_close(struct snd_usb_audio *chip,
 		ep->altsetting = 0;
 		ep->cur_audiofmt = NULL;
 		ep->cur_rate = 0;
+		ep->cur_rate_setup = 0;
 		ep->iface_ref = NULL;
 		ep->clock_ref = NULL;
 		usb_audio_dbg(chip, "EP 0x%x closed\n", ep->ep_num);
@@ -943,6 +945,7 @@ void snd_usb_endpoint_suspend(struct snd_usb_endpoint *ep)
 		ep->iface_ref->need_setup = true;
 	if (ep->clock_ref)
 		ep->clock_ref->rate = 0;
+	ep->cur_rate_setup = 0;
 }
 
 /*
@@ -1356,6 +1359,9 @@ static int init_sample_rate(struct snd_usb_audio *chip,
 	struct snd_usb_clock_ref *clock = ep->clock_ref;
 	int err;
 
+	if (ep->cur_rate == ep->cur_rate_setup)
+		return 0;
+
 	if (clock) {
 		if (atomic_read(&clock->locked))
 			return 0;
@@ -1374,6 +1380,7 @@ static int init_sample_rate(struct snd_usb_audio *chip,
 
 	if (clock)
 		clock->rate = ep->cur_rate;
+	ep->cur_rate_setup = ep->cur_rate;
 	return 0;
 }
 

  reply	other threads:[~2022-08-29 18:16 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-22  8:06 missing sound on kernel-5.15 chihhao chen
2022-08-22 11:57 ` Geraldo Nascimento
2022-08-29  7:56   ` chihhao chen
2022-08-29  8:06     ` Takashi Iwai
2022-08-29  8:50       ` chihhao chen
2022-08-29 12:16         ` Takashi Iwai
2022-08-29 18:15           ` Takashi Iwai [this message]
2022-08-30  5:54             ` Takashi Iwai
2022-08-30  6:02               ` Takashi Iwai
2022-08-30  6:13               ` chihhao chen
2022-08-30  7:02                 ` Takashi Iwai
2022-08-30  8:08                   ` chihhao chen
2022-08-30  8:24                     ` Takashi Iwai
2022-08-31  3:39                       ` chihhao chen
2022-08-31  5:18                         ` Takashi Iwai
2022-08-31  7:03                           ` chihhao chen
2022-08-31  8:04                             ` Takashi Iwai
2022-08-31  9:26                               ` chihhao chen
2022-08-31 10:48                                 ` Takashi Iwai
2022-08-31 13:16                                   ` chihhao chen
2022-08-31 13:40                                     ` Takashi Iwai
2022-09-01  5:50                                       ` chihhao chen
2022-09-01  7:51                                         ` Takashi Iwai
2022-09-01  8:28                                           ` Takashi Iwai
2022-09-01 10:06                                             ` chihhao chen
2022-09-01 10:25                                               ` Takashi Iwai
2022-11-11  7:58                                                 ` Chihhao Chen (陳志豪)
     [not found] <1661150747490509987-webhooks-bot@alsa-project.org>
2022-08-22  6:45 ` GitHub issues - opened

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87r10y9are.wl-tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=chihhao.chen@mediatek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox