diff mbox series

[v2] ASoC: nau8822: add spk boost and spk btl options

Message ID 20221014085253.73733-1-info@benjaminmarty.ch (mailing list archive)
State New, archived
Headers show
Series [v2] ASoC: nau8822: add spk boost and spk btl options | expand

Commit Message

Benjamin Marty Oct. 14, 2022, 8:52 a.m. UTC
These two options are required to use the Speaker output on this codec
to its full potential, when wiring up the Speaker in an BTL configuration.

The Speaker Boost flag is explained in the Datasheet on page 80.
The Speaker BTL flag is explained in the Datasheet on page 78.

Signed-off-by: Benjamin Marty <info@benjaminmarty.ch>
---
 sound/soc/codecs/nau8822.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Francesco Dolcini Oct. 14, 2022, 10:57 a.m. UTC | #1
On Fri, Oct 14, 2022 at 10:52:54AM +0200, Benjamin Marty wrote:
> diff --git a/sound/soc/codecs/nau8822.c b/sound/soc/codecs/nau8822.c
> index 1aef281a9972..812b8254f9a0 100644
> --- a/sound/soc/codecs/nau8822.c
> +++ b/sound/soc/codecs/nau8822.c
> @@ -379,6 +379,12 @@ static const struct snd_kcontrol_new nau8822_snd_controls[] = {
>  		NAU8822_REG_DAC_CONTROL, 5, 1, 0),
>  	SOC_SINGLE("ADC 128x Oversampling Switch",
>  		NAU8822_REG_ADC_CONTROL, 5, 1, 0),
<snip>
> +	SOC_SINGLE("Speaker BTL Configuration",
> +		NAU8822_REG_RIGHT_SPEAKER_CONTROL, 4, 1, 0),

We proposed the exact same change and it was not considered fine [1],
this is considered a system property and should be configured from
something like a device tree.

I would appreciate if you could add me in cc on any follow-up patch on
that, thanks.

Francesco

[1] https://lore.kernel.org/all/20220207153229.1285574-1-francesco.dolcini@toradex.com/
Mark Brown Oct. 14, 2022, 11:57 a.m. UTC | #2
On Fri, Oct 14, 2022 at 10:52:54AM +0200, Benjamin Marty wrote:

> The Speaker Boost flag is explained in the Datasheet on page 80.
> The Speaker BTL flag is explained in the Datasheet on page 78.

Not according to 

   https://www.nuvoton.com/resource-files/NAU8822LDataSheetRev1.9.pdf 

where the page numbers changed.  It's better to actually describe things
directly...  In any case, as Francesco said things that depend on the
physical design of the board should be in firmware description not user
controllable, users can't meaningfully change them at runtime and there
is only ever one correct setting for a given system.

> +	SOC_SINGLE("Speaker Gain Boost Control",
> +		NAU8822_REG_OUTPUT_CONTROL, 2, 1, 0),

This looks on the edge of what could be user controllable since while
the datasheet does recommend settings based on supply voltage it looks
like it's just a gain control so you could reasonably use it at runtime
in spite of what the datasheet recommends.  However if it is being
exposed it should end in Volume as per control-names.rst and ideally
have TLV information.

> +	SOC_SINGLE("Speaker BTL Configuration",
> +		NAU8822_REG_RIGHT_SPEAKER_CONTROL, 4, 1, 0),

Like Francesco says this should be done in firmware configuration since
especially in the case where there is a BTL speaker there really only is
one correct setting for the system.  I guess you might for some reason
want to invert the signal on a non-BTL system but it's hard to see what
the use case might be.
diff mbox series

Patch

diff --git a/sound/soc/codecs/nau8822.c b/sound/soc/codecs/nau8822.c
index 1aef281a9972..812b8254f9a0 100644
--- a/sound/soc/codecs/nau8822.c
+++ b/sound/soc/codecs/nau8822.c
@@ -379,6 +379,12 @@  static const struct snd_kcontrol_new nau8822_snd_controls[] = {
 		NAU8822_REG_DAC_CONTROL, 5, 1, 0),
 	SOC_SINGLE("ADC 128x Oversampling Switch",
 		NAU8822_REG_ADC_CONTROL, 5, 1, 0),
+
+	SOC_SINGLE("Speaker Gain Boost Control",
+		NAU8822_REG_OUTPUT_CONTROL, 2, 1, 0),
+
+	SOC_SINGLE("Speaker BTL Configuration",
+		NAU8822_REG_RIGHT_SPEAKER_CONTROL, 4, 1, 0),
 };
 
 /* LMAIN and RMAIN Mixer */