2022-12-14 05:20:21

by David Rau

[permalink] [raw]
Subject: [PATCH 2/2] ASoC: da7213: Add support for mono, set frame width to 32 when possible

This adds the DAI mono mode support and set the frame width to 32

Signed-off-by: Piotr Wojtaszczyk <[email protected]>
Tested-by: David Rau <[email protected]>
Signed-off-by: David Rau <[email protected]>
---
sound/soc/codecs/da7213.c | 30 ++++++++++++++++++++++++++++--
sound/soc/codecs/da7213.h | 3 +++
2 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/sound/soc/codecs/da7213.c b/sound/soc/codecs/da7213.c
index 544ccbcfc884..0068780fe0a7 100644
--- a/sound/soc/codecs/da7213.c
+++ b/sound/soc/codecs/da7213.c
@@ -1157,13 +1157,31 @@ static int da7213_hw_params(struct snd_pcm_substream *substream,
{
struct snd_soc_component *component = dai->component;
struct da7213_priv *da7213 = snd_soc_component_get_drvdata(component);
+ u8 dai_clk_mode = DA7213_DAI_BCLKS_PER_WCLK_64;
u8 dai_ctrl = 0;
u8 fs;

+ /* Set channels */
+ switch (params_channels(params)) {
+ case 1:
+ if (da7213->fmt != DA7213_DAI_FORMAT_DSP) {
+ dev_err(component->dev, "Mono supported only in DSP mode\n");
+ return -EINVAL;
+ }
+ dai_ctrl |= DA7213_DAI_MONO_MODE_EN;
+ break;
+ case 2:
+ dai_ctrl &= ~(DA7213_DAI_MONO_MODE_EN);
+ break;
+ default:
+ return -EINVAL;
+ }
+
/* Set DAI format */
switch (params_width(params)) {
case 16:
dai_ctrl |= DA7213_DAI_WORD_LENGTH_S16_LE;
+ dai_clk_mode = DA7213_DAI_BCLKS_PER_WCLK_32; /* 32bit for 1ch and 2ch */
break;
case 20:
dai_ctrl |= DA7213_DAI_WORD_LENGTH_S20_LE;
@@ -1224,8 +1242,11 @@ static int da7213_hw_params(struct snd_pcm_substream *substream,
return -EINVAL;
}

- snd_soc_component_update_bits(component, DA7213_DAI_CTRL, DA7213_DAI_WORD_LENGTH_MASK,
- dai_ctrl);
+ snd_soc_component_update_bits(component, DA7213_DAI_CLK_MODE,
+ DA7213_DAI_BCLKS_PER_WCLK_MASK, dai_clk_mode);
+
+ snd_soc_component_update_bits(component, DA7213_DAI_CTRL,
+ DA7213_DAI_WORD_LENGTH_MASK | DA7213_DAI_MONO_MODE_MASK, dai_ctrl);
snd_soc_component_write(component, DA7213_SR, fs);

return 0;
@@ -1300,19 +1321,24 @@ static int da7213_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt)
switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
case SND_SOC_DAIFMT_I2S:
dai_ctrl |= DA7213_DAI_FORMAT_I2S_MODE;
+ da7213->fmt = DA7213_DAI_FORMAT_I2S_MODE;
break;
case SND_SOC_DAIFMT_LEFT_J:
dai_ctrl |= DA7213_DAI_FORMAT_LEFT_J;
+ da7213->fmt = DA7213_DAI_FORMAT_LEFT_J;
break;
case SND_SOC_DAIFMT_RIGHT_J:
dai_ctrl |= DA7213_DAI_FORMAT_RIGHT_J;
+ da7213->fmt = DA7213_DAI_FORMAT_RIGHT_J;
break;
case SND_SOC_DAI_FORMAT_DSP_A: /* L data MSB after FRM LRC */
dai_ctrl |= DA7213_DAI_FORMAT_DSP;
dai_offset = 1;
+ da7213->fmt = DA7213_DAI_FORMAT_DSP;
break;
case SND_SOC_DAI_FORMAT_DSP_B: /* L data MSB during FRM LRC */
dai_ctrl |= DA7213_DAI_FORMAT_DSP;
+ da7213->fmt = DA7213_DAI_FORMAT_DSP;
break;
default:
return -EINVAL;
diff --git a/sound/soc/codecs/da7213.h b/sound/soc/codecs/da7213.h
index 97ccf0ddd2be..4ca9cfdea06d 100644
--- a/sound/soc/codecs/da7213.h
+++ b/sound/soc/codecs/da7213.h
@@ -195,6 +195,8 @@
#define DA7213_DAI_WORD_LENGTH_S24_LE (0x2 << 2)
#define DA7213_DAI_WORD_LENGTH_S32_LE (0x3 << 2)
#define DA7213_DAI_WORD_LENGTH_MASK (0x3 << 2)
+#define DA7213_DAI_MONO_MODE_EN (0x1 << 4)
+#define DA7213_DAI_MONO_MODE_MASK (0x1 << 4)
#define DA7213_DAI_EN_SHIFT 7

/* DA7213_DIG_ROUTING_DAI = 0x21 */
@@ -542,6 +544,7 @@ struct da7213_priv {
bool alc_en;
bool fixed_clk_auto_pll;
struct da7213_platform_data *pdata;
+ int fmt;
};

#endif /* _DA7213_H */
--
2.17.1


2022-12-14 15:01:23

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH 2/2] ASoC: da7213: Add support for mono, set frame width to 32 when possible

On Wed, Dec 14, 2022 at 04:40:58AM +0000, David Rau wrote:
> This adds the DAI mono mode support and set the frame width to 32
>
> Signed-off-by: Piotr Wojtaszczyk <[email protected]>
> Tested-by: David Rau <[email protected]>
> Signed-off-by: David Rau <[email protected]>

I only have patch 2 here, what's the story with dependencies?


Attachments:
(No filename) (394.00 B)
signature.asc (499.00 B)
Download all attachments

2022-12-14 15:17:24

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH 2/2] ASoC: da7213: Add support for mono, set frame width to 32 when possible

On Wed, Dec 14, 2022 at 03:31:26PM +0100, Piotr Wojtaszczyk wrote:
> It was a single patch, with no deps.
>

It's flagged as patch 2/2?

> On Wed, Dec 14, 2022 at 3:21 PM Mark Brown <[email protected]> wrote:

Please don't top post, reply in line with needed context. This allows
readers to readily follow the flow of conversation and understand what
you are talking about and also helps ensure that everything in the
discussion is being addressed.


Attachments:
(No filename) (464.00 B)
signature.asc (499.00 B)
Download all attachments

2022-12-14 16:52:27

by Piotr Wojtaszczyk

[permalink] [raw]
Subject: Re: [PATCH 2/2] ASoC: da7213: Add support for mono, set frame width to 32 when possible

On Wed, Dec 14, 2022 at 3:56 PM Mark Brown <[email protected]> wrote:
>
> On Wed, Dec 14, 2022 at 03:31:26PM +0100, Piotr Wojtaszczyk wrote:
> > It was a single patch, with no deps.
> >
>
> It's flagged as patch 2/2?

That's wrong tag, initially I submitted this as a single patch to
`[email protected]` and now it comes on LKML after
testing by David Rau.

--
Piotr Wojtaszczyk
Timesys

2022-12-19 18:23:14

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH 2/2] ASoC: da7213: Add support for mono, set frame width to 32 when possible

On Mon, Dec 19, 2022 at 03:52:52AM +0000, David.Rau.opensource wrote:

> Is there anything I should modify or correct to make this commit move forward?

This is a new feature and we're in the merge window so no new features
will be applied at the minute. Please wait till after the merge window.

Please don't top post, reply in line with needed context. This allows
readers to readily follow the flow of conversation and understand what
you are talking about and also helps ensure that everything in the
discussion is being addressed.


Attachments:
(No filename) (549.00 B)
signature.asc (499.00 B)
Download all attachments

2022-12-27 12:28:41

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH 2/2] ASoC: da7213: Add support for mono, set frame width to 32 when possible

On Wed, 14 Dec 2022 04:40:58 +0000, David Rau wrote:
> This adds the DAI mono mode support and set the frame width to 32
>
>

Applied to

https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[2/2] ASoC: da7213: Add support for mono, set frame width to 32 when possible
commit: c89e652e84f636354213aae42490c7f77a0eadde

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark