All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime@cerno.tech>
To: Samuel Holland <samuel@sholland.org>
Cc: Mark Brown <broonie@kernel.org>,
	Liam Girdwood <lgirdwood@gmail.com>, Chen-Yu Tsai <wens@csie.org>,
	Jaroslav Kysela <perex@perex.cz>, Takashi Iwai <tiwai@suse.com>,
	Ondrej Jirman <megous@megous.com>,
	alsa-devel@alsa-project.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 20/25] ASoC: sun8i-codec: Protect the clock rate while streams are open
Date: Thu, 8 Oct 2020 15:02:41 +0200	[thread overview]
Message-ID: <20201008130241.uigiys7iv72hca7r@gilmour.lan> (raw)
In-Reply-To: <5ef4351f-e9ed-1a38-b79e-53e62a70437e@sholland.org>

[-- Attachment #1: Type: text/plain, Size: 4055 bytes --]

On Mon, Oct 05, 2020 at 11:43:51PM -0500, Samuel Holland wrote:
> On 10/5/20 7:01 AM, Maxime Ripard wrote:
> > On Wed, Sep 30, 2020 at 09:11:43PM -0500, Samuel Holland wrote:
> >> The codec's clock input is shared among all AIFs, and shared with other
> >> audio-related hardware in the SoC, including I2S and SPDIF controllers.
> >> To ensure sample rates selected by userspace or by codec2codec DAI links
> >> are maintained, the clock rate must be protected while it is in use.
> >>
> >> Signed-off-by: Samuel Holland <samuel@sholland.org>
> >> ---
> >>  sound/soc/sunxi/sun8i-codec.c | 25 ++++++++++++++++++++++---
> >>  1 file changed, 22 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/sound/soc/sunxi/sun8i-codec.c b/sound/soc/sunxi/sun8i-codec.c
> >> index 501af64d43a0..86065bee7cd3 100644
> >> --- a/sound/soc/sunxi/sun8i-codec.c
> >> +++ b/sound/soc/sunxi/sun8i-codec.c
> >> @@ -416,27 +416,32 @@ static int sun8i_codec_get_lrck_div_order(unsigned int slots,
> >>  	unsigned int div = slots * slot_width;
> >>  
> >>  	if (div < 16 || div > 256)
> >>  		return -EINVAL;
> >>  
> >>  	return order_base_2(div);
> >>  }
> >>  
> >> +static unsigned int sun8i_codec_get_sysclk_rate(unsigned int sample_rate)
> >> +{
> >> +	return sample_rate % 4000 ? 22579200 : 24576000;
> >> +}
> >> +
> >>  static int sun8i_codec_hw_params(struct snd_pcm_substream *substream,
> >>  				 struct snd_pcm_hw_params *params,
> >>  				 struct snd_soc_dai *dai)
> >>  {
> >>  	struct sun8i_codec *scodec = snd_soc_dai_get_drvdata(dai);
> >>  	struct sun8i_codec_aif *aif = &scodec->aifs[dai->id];
> >>  	unsigned int sample_rate = params_rate(params);
> >>  	unsigned int slots = aif->slots ?: params_channels(params);
> >>  	unsigned int slot_width = aif->slot_width ?: params_width(params);
> >> -	unsigned int sysclk_rate = clk_get_rate(scodec->clk_module);
> >> -	int lrck_div_order, word_size;
> >> +	unsigned int sysclk_rate = sun8i_codec_get_sysclk_rate(sample_rate);
> >> +	int lrck_div_order, ret, word_size;
> >>  	u8 bclk_div;
> >>  
> >>  	/* word size */
> >>  	switch (params_width(params)) {
> >>  	case 8:
> >>  		word_size = 0x0;
> >>  		break;
> >>  	case 16:
> >> @@ -466,17 +471,30 @@ static int sun8i_codec_hw_params(struct snd_pcm_substream *substream,
> >>  			   (lrck_div_order - 4) << SUN8I_AIF1CLK_CTRL_AIF1_LRCK_DIV);
> >>  
> >>  	/* BCLK divider (SYSCLK/BCLK ratio) */
> >>  	bclk_div = sun8i_codec_get_bclk_div(sysclk_rate, lrck_div_order, sample_rate);
> >>  	regmap_update_bits(scodec->regmap, SUN8I_AIF1CLK_CTRL,
> >>  			   SUN8I_AIF1CLK_CTRL_AIF1_BCLK_DIV_MASK,
> >>  			   bclk_div << SUN8I_AIF1CLK_CTRL_AIF1_BCLK_DIV);
> >>  
> >> -	if (!aif->open_streams) {
> >> +	/* SYSCLK rate */
> >> +	if (aif->open_streams) {
> >> +		ret = clk_set_rate(scodec->clk_module, sysclk_rate);
> >> +		if (ret < 0)
> >> +			return ret;
> >> +	} else {
> >> +		ret = clk_set_rate_exclusive(scodec->clk_module, sysclk_rate);
> > 
> > It's not really clear to me why we wouldn't want to always protect the
> > clock rate here?
> 
> From Documentation/sound/kernel-api/writing-an-alsa-driver.rst:
> 
>     hw_params callback
>     ...
>     Note that this and ``prepare`` callbacks may be called multiple
>     times per initialization. For example, the OSS emulation may call
>     these callbacks at each change via its ioctl.
> 
> Clock rate protection is reference counted, so we must only take one
> reference (or at least a known number of references) per stream.

Ah, right.

Can you add a comment to make that more obvious?

> >> +		if (ret == -EBUSY)
> >> +			dev_err(dai->dev, "%s: clock is busy! Sample rate %u Hz "
> >> +				"conflicts with other audio streams.\n",
> > 
> > This string creates a checkpatch warning.
> 
> I will put it on one line, though >100 columns is also a checkpatch warning.

Yeah, but in general having an error on a single line is more important.
That way you can then grep for that error message

Maxime

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Maxime Ripard <maxime@cerno.tech>
To: Samuel Holland <samuel@sholland.org>
Cc: Ondrej Jirman <megous@megous.com>,
	alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org,
	Takashi Iwai <tiwai@suse.com>,
	Liam Girdwood <lgirdwood@gmail.com>, Chen-Yu Tsai <wens@csie.org>,
	Mark Brown <broonie@kernel.org>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 20/25] ASoC: sun8i-codec: Protect the clock rate while streams are open
Date: Thu, 8 Oct 2020 15:02:41 +0200	[thread overview]
Message-ID: <20201008130241.uigiys7iv72hca7r@gilmour.lan> (raw)
In-Reply-To: <5ef4351f-e9ed-1a38-b79e-53e62a70437e@sholland.org>

[-- Attachment #1: Type: text/plain, Size: 4055 bytes --]

On Mon, Oct 05, 2020 at 11:43:51PM -0500, Samuel Holland wrote:
> On 10/5/20 7:01 AM, Maxime Ripard wrote:
> > On Wed, Sep 30, 2020 at 09:11:43PM -0500, Samuel Holland wrote:
> >> The codec's clock input is shared among all AIFs, and shared with other
> >> audio-related hardware in the SoC, including I2S and SPDIF controllers.
> >> To ensure sample rates selected by userspace or by codec2codec DAI links
> >> are maintained, the clock rate must be protected while it is in use.
> >>
> >> Signed-off-by: Samuel Holland <samuel@sholland.org>
> >> ---
> >>  sound/soc/sunxi/sun8i-codec.c | 25 ++++++++++++++++++++++---
> >>  1 file changed, 22 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/sound/soc/sunxi/sun8i-codec.c b/sound/soc/sunxi/sun8i-codec.c
> >> index 501af64d43a0..86065bee7cd3 100644
> >> --- a/sound/soc/sunxi/sun8i-codec.c
> >> +++ b/sound/soc/sunxi/sun8i-codec.c
> >> @@ -416,27 +416,32 @@ static int sun8i_codec_get_lrck_div_order(unsigned int slots,
> >>  	unsigned int div = slots * slot_width;
> >>  
> >>  	if (div < 16 || div > 256)
> >>  		return -EINVAL;
> >>  
> >>  	return order_base_2(div);
> >>  }
> >>  
> >> +static unsigned int sun8i_codec_get_sysclk_rate(unsigned int sample_rate)
> >> +{
> >> +	return sample_rate % 4000 ? 22579200 : 24576000;
> >> +}
> >> +
> >>  static int sun8i_codec_hw_params(struct snd_pcm_substream *substream,
> >>  				 struct snd_pcm_hw_params *params,
> >>  				 struct snd_soc_dai *dai)
> >>  {
> >>  	struct sun8i_codec *scodec = snd_soc_dai_get_drvdata(dai);
> >>  	struct sun8i_codec_aif *aif = &scodec->aifs[dai->id];
> >>  	unsigned int sample_rate = params_rate(params);
> >>  	unsigned int slots = aif->slots ?: params_channels(params);
> >>  	unsigned int slot_width = aif->slot_width ?: params_width(params);
> >> -	unsigned int sysclk_rate = clk_get_rate(scodec->clk_module);
> >> -	int lrck_div_order, word_size;
> >> +	unsigned int sysclk_rate = sun8i_codec_get_sysclk_rate(sample_rate);
> >> +	int lrck_div_order, ret, word_size;
> >>  	u8 bclk_div;
> >>  
> >>  	/* word size */
> >>  	switch (params_width(params)) {
> >>  	case 8:
> >>  		word_size = 0x0;
> >>  		break;
> >>  	case 16:
> >> @@ -466,17 +471,30 @@ static int sun8i_codec_hw_params(struct snd_pcm_substream *substream,
> >>  			   (lrck_div_order - 4) << SUN8I_AIF1CLK_CTRL_AIF1_LRCK_DIV);
> >>  
> >>  	/* BCLK divider (SYSCLK/BCLK ratio) */
> >>  	bclk_div = sun8i_codec_get_bclk_div(sysclk_rate, lrck_div_order, sample_rate);
> >>  	regmap_update_bits(scodec->regmap, SUN8I_AIF1CLK_CTRL,
> >>  			   SUN8I_AIF1CLK_CTRL_AIF1_BCLK_DIV_MASK,
> >>  			   bclk_div << SUN8I_AIF1CLK_CTRL_AIF1_BCLK_DIV);
> >>  
> >> -	if (!aif->open_streams) {
> >> +	/* SYSCLK rate */
> >> +	if (aif->open_streams) {
> >> +		ret = clk_set_rate(scodec->clk_module, sysclk_rate);
> >> +		if (ret < 0)
> >> +			return ret;
> >> +	} else {
> >> +		ret = clk_set_rate_exclusive(scodec->clk_module, sysclk_rate);
> > 
> > It's not really clear to me why we wouldn't want to always protect the
> > clock rate here?
> 
> From Documentation/sound/kernel-api/writing-an-alsa-driver.rst:
> 
>     hw_params callback
>     ...
>     Note that this and ``prepare`` callbacks may be called multiple
>     times per initialization. For example, the OSS emulation may call
>     these callbacks at each change via its ioctl.
> 
> Clock rate protection is reference counted, so we must only take one
> reference (or at least a known number of references) per stream.

Ah, right.

Can you add a comment to make that more obvious?

> >> +		if (ret == -EBUSY)
> >> +			dev_err(dai->dev, "%s: clock is busy! Sample rate %u Hz "
> >> +				"conflicts with other audio streams.\n",
> > 
> > This string creates a checkpatch warning.
> 
> I will put it on one line, though >100 columns is also a checkpatch warning.

Yeah, but in general having an error on a single line is more important.
That way you can then grep for that error message

Maxime

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Maxime Ripard <maxime@cerno.tech>
To: Samuel Holland <samuel@sholland.org>
Cc: Ondrej Jirman <megous@megous.com>,
	alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org,
	Takashi Iwai <tiwai@suse.com>,
	Liam Girdwood <lgirdwood@gmail.com>, Chen-Yu Tsai <wens@csie.org>,
	Mark Brown <broonie@kernel.org>, Jaroslav Kysela <perex@perex.cz>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 20/25] ASoC: sun8i-codec: Protect the clock rate while streams are open
Date: Thu, 8 Oct 2020 15:02:41 +0200	[thread overview]
Message-ID: <20201008130241.uigiys7iv72hca7r@gilmour.lan> (raw)
In-Reply-To: <5ef4351f-e9ed-1a38-b79e-53e62a70437e@sholland.org>


[-- Attachment #1.1: Type: text/plain, Size: 4055 bytes --]

On Mon, Oct 05, 2020 at 11:43:51PM -0500, Samuel Holland wrote:
> On 10/5/20 7:01 AM, Maxime Ripard wrote:
> > On Wed, Sep 30, 2020 at 09:11:43PM -0500, Samuel Holland wrote:
> >> The codec's clock input is shared among all AIFs, and shared with other
> >> audio-related hardware in the SoC, including I2S and SPDIF controllers.
> >> To ensure sample rates selected by userspace or by codec2codec DAI links
> >> are maintained, the clock rate must be protected while it is in use.
> >>
> >> Signed-off-by: Samuel Holland <samuel@sholland.org>
> >> ---
> >>  sound/soc/sunxi/sun8i-codec.c | 25 ++++++++++++++++++++++---
> >>  1 file changed, 22 insertions(+), 3 deletions(-)
> >>
> >> diff --git a/sound/soc/sunxi/sun8i-codec.c b/sound/soc/sunxi/sun8i-codec.c
> >> index 501af64d43a0..86065bee7cd3 100644
> >> --- a/sound/soc/sunxi/sun8i-codec.c
> >> +++ b/sound/soc/sunxi/sun8i-codec.c
> >> @@ -416,27 +416,32 @@ static int sun8i_codec_get_lrck_div_order(unsigned int slots,
> >>  	unsigned int div = slots * slot_width;
> >>  
> >>  	if (div < 16 || div > 256)
> >>  		return -EINVAL;
> >>  
> >>  	return order_base_2(div);
> >>  }
> >>  
> >> +static unsigned int sun8i_codec_get_sysclk_rate(unsigned int sample_rate)
> >> +{
> >> +	return sample_rate % 4000 ? 22579200 : 24576000;
> >> +}
> >> +
> >>  static int sun8i_codec_hw_params(struct snd_pcm_substream *substream,
> >>  				 struct snd_pcm_hw_params *params,
> >>  				 struct snd_soc_dai *dai)
> >>  {
> >>  	struct sun8i_codec *scodec = snd_soc_dai_get_drvdata(dai);
> >>  	struct sun8i_codec_aif *aif = &scodec->aifs[dai->id];
> >>  	unsigned int sample_rate = params_rate(params);
> >>  	unsigned int slots = aif->slots ?: params_channels(params);
> >>  	unsigned int slot_width = aif->slot_width ?: params_width(params);
> >> -	unsigned int sysclk_rate = clk_get_rate(scodec->clk_module);
> >> -	int lrck_div_order, word_size;
> >> +	unsigned int sysclk_rate = sun8i_codec_get_sysclk_rate(sample_rate);
> >> +	int lrck_div_order, ret, word_size;
> >>  	u8 bclk_div;
> >>  
> >>  	/* word size */
> >>  	switch (params_width(params)) {
> >>  	case 8:
> >>  		word_size = 0x0;
> >>  		break;
> >>  	case 16:
> >> @@ -466,17 +471,30 @@ static int sun8i_codec_hw_params(struct snd_pcm_substream *substream,
> >>  			   (lrck_div_order - 4) << SUN8I_AIF1CLK_CTRL_AIF1_LRCK_DIV);
> >>  
> >>  	/* BCLK divider (SYSCLK/BCLK ratio) */
> >>  	bclk_div = sun8i_codec_get_bclk_div(sysclk_rate, lrck_div_order, sample_rate);
> >>  	regmap_update_bits(scodec->regmap, SUN8I_AIF1CLK_CTRL,
> >>  			   SUN8I_AIF1CLK_CTRL_AIF1_BCLK_DIV_MASK,
> >>  			   bclk_div << SUN8I_AIF1CLK_CTRL_AIF1_BCLK_DIV);
> >>  
> >> -	if (!aif->open_streams) {
> >> +	/* SYSCLK rate */
> >> +	if (aif->open_streams) {
> >> +		ret = clk_set_rate(scodec->clk_module, sysclk_rate);
> >> +		if (ret < 0)
> >> +			return ret;
> >> +	} else {
> >> +		ret = clk_set_rate_exclusive(scodec->clk_module, sysclk_rate);
> > 
> > It's not really clear to me why we wouldn't want to always protect the
> > clock rate here?
> 
> From Documentation/sound/kernel-api/writing-an-alsa-driver.rst:
> 
>     hw_params callback
>     ...
>     Note that this and ``prepare`` callbacks may be called multiple
>     times per initialization. For example, the OSS emulation may call
>     these callbacks at each change via its ioctl.
> 
> Clock rate protection is reference counted, so we must only take one
> reference (or at least a known number of references) per stream.

Ah, right.

Can you add a comment to make that more obvious?

> >> +		if (ret == -EBUSY)
> >> +			dev_err(dai->dev, "%s: clock is busy! Sample rate %u Hz "
> >> +				"conflicts with other audio streams.\n",
> > 
> > This string creates a checkpatch warning.
> 
> I will put it on one line, though >100 columns is also a checkpatch warning.

Yeah, but in general having an error on a single line is more important.
That way you can then grep for that error message

Maxime

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2020-10-08 13:02 UTC|newest]

Thread overview: 181+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-01  2:11 [PATCH 00/25] ASoC: sun8i-codec: support for AIF2 and AIF3 Samuel Holland
2020-10-01  2:11 ` Samuel Holland
2020-10-01  2:11 ` Samuel Holland
2020-10-01  2:11 ` [PATCH 01/25] ASoC: sun8i-codec: Set up clock tree at probe time Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05  9:53   ` Maxime Ripard
2020-10-05  9:53     ` Maxime Ripard
2020-10-05  9:53     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 02/25] ASoC: sun8i-codec: Swap module clock/reset dependencies Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05  9:54   ` Maxime Ripard
2020-10-05  9:54     ` Maxime Ripard
2020-10-05  9:54     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 03/25] ASoC: sun8i-codec: Sort DAPM controls, widgets, and routes Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05  9:54   ` Maxime Ripard
2020-10-05  9:54     ` Maxime Ripard
2020-10-05  9:54     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 04/25] ASoC: sun8i-codec: Consistently name DAPM widgets " Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05  9:57   ` Maxime Ripard
2020-10-05  9:57     ` Maxime Ripard
2020-10-05  9:57     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 05/25] ASoC: sun8i-codec: Correct DAPM widget types Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05  9:57   ` Maxime Ripard
2020-10-05  9:57     ` Maxime Ripard
2020-10-05  9:57     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 06/25] ASoC: sun8i-codec: Fix AIF widget channel references Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 10:00   ` Maxime Ripard
2020-10-05 10:00     ` Maxime Ripard
2020-10-05 10:00     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 07/25] ASoC: sun8i-codec: Enable AIF mono/stereo control Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 10:00   ` Maxime Ripard
2020-10-05 10:00     ` Maxime Ripard
2020-10-05 10:00     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 08/25] ASoC: sun8i-codec: Use snd_soc_dai_get_drvdata Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 10:01   ` Maxime Ripard
2020-10-05 10:01     ` Maxime Ripard
2020-10-05 10:01     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 09/25] ASoC: sun8i-codec: Prepare to extend the DAI driver Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 11:24   ` Maxime Ripard
2020-10-05 11:24     ` Maxime Ripard
2020-10-05 11:24     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 10/25] ASoC: sun8i-codec: Program format before clock inversion Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 11:26   ` Maxime Ripard
2020-10-05 11:26     ` Maxime Ripard
2020-10-05 11:26     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 11/25] ASoC: sun8i-codec: Enable all supported clock inversions Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 11:30   ` Maxime Ripard
2020-10-05 11:30     ` Maxime Ripard
2020-10-05 11:30     ` Maxime Ripard
2020-10-06  4:29     ` Samuel Holland
2020-10-06  4:29       ` Samuel Holland
2020-10-06  4:29       ` Samuel Holland
2020-10-08 12:59       ` Maxime Ripard
2020-10-08 12:59         ` Maxime Ripard
2020-10-08 12:59         ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 12/25] ASoC: sun8i-codec: Program the correct word size Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 11:30   ` Maxime Ripard
2020-10-05 11:30     ` Maxime Ripard
2020-10-05 11:30     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 13/25] ASoC: sun8i-codec: Round up the LRCK divisor Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 11:31   ` Maxime Ripard
2020-10-05 11:31     ` Maxime Ripard
2020-10-05 11:31     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 14/25] ASoC: sun8i-codec: Correct the BCLK divisor calculation Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 11:34   ` Maxime Ripard
2020-10-05 11:34     ` Maxime Ripard
2020-10-05 11:34     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 15/25] ASoC: sun8i-codec: Support the TDM slot binding Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 11:34   ` Maxime Ripard
2020-10-05 11:34     ` Maxime Ripard
2020-10-05 11:34     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 16/25] ASoC: sun8i-codec: Enforce symmetric DAI parameters Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 11:39   ` Maxime Ripard
2020-10-05 11:39     ` Maxime Ripard
2020-10-05 11:39     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 17/25] ASoC: sun8i-codec: Enable all supported sample rates Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 11:39   ` Maxime Ripard
2020-10-05 11:39     ` Maxime Ripard
2020-10-05 11:39     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 18/25] ASoC: sun8i-codec: Automatically set the system sample rate Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 11:58   ` Maxime Ripard
2020-10-05 11:58     ` Maxime Ripard
2020-10-05 11:58     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 19/25] ASoC: sun8i-codec: Constrain to compatible sample rates Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 11:59   ` Maxime Ripard
2020-10-05 11:59     ` Maxime Ripard
2020-10-05 11:59     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 20/25] ASoC: sun8i-codec: Protect the clock rate while streams are open Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01 13:27   ` kernel test robot
2020-10-01 13:27     ` kernel test robot
2020-10-01 13:27     ` kernel test robot
2020-10-01 13:27     ` kernel test robot
2020-10-05 12:01   ` Maxime Ripard
2020-10-05 12:01     ` Maxime Ripard
2020-10-05 12:01     ` Maxime Ripard
2020-10-05 13:15     ` Chen-Yu Tsai
2020-10-05 13:15       ` Chen-Yu Tsai
2020-10-05 13:15       ` Chen-Yu Tsai
2020-10-06  4:46       ` Samuel Holland
2020-10-06  4:46         ` Samuel Holland
2020-10-06  4:46         ` Samuel Holland
2020-10-06  4:43     ` Samuel Holland
2020-10-06  4:43       ` Samuel Holland
2020-10-06  4:43       ` Samuel Holland
2020-10-08 13:02       ` Maxime Ripard [this message]
2020-10-08 13:02         ` Maxime Ripard
2020-10-08 13:02         ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 21/25] ASoC: sun8i-codec: Require an exact BCLK divisor match Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 12:01   ` Maxime Ripard
2020-10-05 12:01     ` Maxime Ripard
2020-10-05 12:01     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 22/25] ASoC: sun8i-codec: Enable all supported PCM formats Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 12:02   ` Maxime Ripard
2020-10-05 12:02     ` Maxime Ripard
2020-10-05 12:02     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 23/25] ASoC: sun8i-codec: Generalize AIF clock control Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 12:04   ` Maxime Ripard
2020-10-05 12:04     ` Maxime Ripard
2020-10-05 12:04     ` Maxime Ripard
2020-10-06  4:51     ` Samuel Holland
2020-10-06  4:51       ` Samuel Holland
2020-10-06  4:51       ` Samuel Holland
2020-10-12 11:17       ` Maxime Ripard
2020-10-12 11:17         ` Maxime Ripard
2020-10-12 11:17         ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 24/25] ASoC: sun8i-codec: Add a DAI, widgets, and routes for AIF2 Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 12:05   ` Maxime Ripard
2020-10-05 12:05     ` Maxime Ripard
2020-10-05 12:05     ` Maxime Ripard
2020-10-01  2:11 ` [PATCH 25/25] ASoC: sun8i-codec: Add a DAI, widgets, and routes for AIF3 Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-01  2:11   ` Samuel Holland
2020-10-05 17:54 ` [PATCH 00/25] ASoC: sun8i-codec: support for AIF2 and AIF3 Mark Brown
2020-10-05 17:54   ` Mark Brown
2020-10-05 17:54   ` Mark Brown

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=20201008130241.uigiys7iv72hca7r@gilmour.lan \
    --to=maxime@cerno.tech \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=megous@megous.com \
    --cc=perex@perex.cz \
    --cc=samuel@sholland.org \
    --cc=tiwai@suse.com \
    --cc=wens@csie.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.