[3/3] ASoC: nau8810: add aux input control, available on NAU8812
diff mbox series

Message ID 20191115160819.15557-4-m.felsch@pengutronix.de
State New
Headers show
Series
  • Add NAU8812 support
Related show

Commit Message

Marco Felsch Nov. 15, 2019, 4:08 p.m. UTC
From: Thomas Fehrenbacher <thomas.fehrenbacher@siedle.de>

This commit adds the support to control the aux-port on the nau8812
devices. We don't need to differentiate the aux-port registers since
those bitfields are set to '0' on the nau8810 devices [1,2].

[1] http://www.nuvoton.com/resource-files/NAU8810_Datasheet_Rev_2.8.pdf
[2] http://www.nuvoton.com/resource-files/NAU8812DatasheetRev2.7.pdf

Signed-off-by: Thomas Fehrenbacher <thomas.fehrenbacher@siedle.de>
[m.felsch@pengutronix.de: add commit message]
Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
---
 sound/soc/codecs/nau8810.c | 7 +++++++
 sound/soc/codecs/nau8810.h | 2 ++
 2 files changed, 9 insertions(+)

Comments

Mark Brown Nov. 15, 2019, 4:12 p.m. UTC | #1
On Fri, Nov 15, 2019 at 05:08:19PM +0100, Marco Felsch wrote:

> This commit adds the support to control the aux-port on the nau8812
> devices. We don't need to differentiate the aux-port registers since
> those bitfields are set to '0' on the nau8810 devices [1,2].

It'd still be better to only register these controls if the device isn't
a nau8812 so that userspace doesn't see them.
Marco Felsch Nov. 15, 2019, 4:20 p.m. UTC | #2
Hi Mark,

On 19-11-15 16:12, Mark Brown wrote:
> On Fri, Nov 15, 2019 at 05:08:19PM +0100, Marco Felsch wrote:
> 
> > This commit adds the support to control the aux-port on the nau8812
> > devices. We don't need to differentiate the aux-port registers since
> > those bitfields are set to '0' on the nau8810 devices [1,2].
> 
> It'd still be better to only register these controls if the device isn't
> a nau8812 so that userspace doesn't see them.

That's the thing I tought about 10min.. Imagine that: You have an
embedded device with a very good codec driver (all codec controlls are
available) but the hw-guys didn't connect all the in-/outputs. So
switching those controls are useless too. IMHO this is exactly the same
thing here.

Regards,
  Marco
Mark Brown Nov. 15, 2019, 5:14 p.m. UTC | #3
On Fri, Nov 15, 2019 at 05:20:53PM +0100, Marco Felsch wrote:
> On 19-11-15 16:12, Mark Brown wrote:

> > It'd still be better to only register these controls if the device isn't
> > a nau8812 so that userspace doesn't see them.

> That's the thing I tought about 10min.. Imagine that: You have an
> embedded device with a very good codec driver (all codec controlls are
> available) but the hw-guys didn't connect all the in-/outputs. So
> switching those controls are useless too. IMHO this is exactly the same
> thing here.

We do have the start of facilities to mask out unreachable controls
already (a machine driver could use them manually as things stand).  If
we ever get the graph API done properly that work is more likely to get
finished.
AS50 KCHsu0 Nov. 16, 2019, 1:43 a.m. UTC | #4
Marco Felsch 於 2019/11/16 上午 12:08 寫道:
> From: Thomas Fehrenbacher <thomas.fehrenbacher@siedle.de>
>
> This commit adds the support to control the aux-port on the nau8812
> devices. We don't need to differentiate the aux-port registers since
> those bitfields are set to '0' on the nau8810 devices [1,2].
>
> [1] http://www.nuvoton.com/resource-files/NAU8810_Datasheet_Rev_2.8.pdf
> [2] http://www.nuvoton.com/resource-files/NAU8812DatasheetRev2.7.pdf
>
> Signed-off-by: Thomas Fehrenbacher <thomas.fehrenbacher@siedle.de>
> [m.felsch@pengutronix.de: add commit message]
> Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
> ---
>   sound/soc/codecs/nau8810.c | 7 +++++++
>   sound/soc/codecs/nau8810.h | 2 ++
>   2 files changed, 9 insertions(+)
>
> diff --git a/sound/soc/codecs/nau8810.c b/sound/soc/codecs/nau8810.c
> index a32a4a8d5f50..b1024d24d413 100644
> --- a/sound/soc/codecs/nau8810.c
> +++ b/sound/soc/codecs/nau8810.c
> @@ -351,6 +351,9 @@ static const struct snd_kcontrol_new nau8810_snd_controls[] = {
>   NAU8810_DACOS_SFT, 1, 0),
>   SOC_SINGLE("ADC Oversampling Rate(128x) Switch", NAU8810_REG_ADC,
>   NAU8810_ADCOS_SFT, 1, 0),
> +
> +SOC_SINGLE("AUX Input Enable Switch", NAU8810_REG_POWER1,
> +NAU8810_AUX_EN_SFT, 1, 0),
>   };
>


The power control has to move to the nau8810_dapm_widgets.

The DAPM can just control the power switch of AUXI dynamically.


>   /* Speaker Output Mixer */
> @@ -383,6 +386,8 @@ static const struct snd_kcontrol_new nau8810_inpga[] = {
>   NAU8810_NMICPGA_SFT, 1, 0),
>   SOC_DAPM_SINGLE("MicP Switch", NAU8810_REG_INPUT_SIGNAL,
>   NAU8810_PMICPGA_SFT, 1, 0),
> +SOC_DAPM_SINGLE("AUX Switch", NAU8810_REG_INPUT_SIGNAL,
> +NAU8810_AUXPGA_SFT, 1, 0),
>   };
>
>   /* Loopback Switch */
> @@ -436,6 +441,7 @@ static const struct snd_soc_dapm_widget nau8810_dapm_widgets[] = {
>
>   SND_SOC_DAPM_INPUT("MICN"),
>   SND_SOC_DAPM_INPUT("MICP"),
> +SND_SOC_DAPM_INPUT("AUX"),
>   SND_SOC_DAPM_OUTPUT("MONOOUT"),
>   SND_SOC_DAPM_OUTPUT("SPKOUTP"),
>   SND_SOC_DAPM_OUTPUT("SPKOUTN"),
> @@ -470,6 +476,7 @@ static const struct snd_soc_dapm_route nau8810_dapm_routes[] = {
>   {"Input PGA", NULL, "Mic Bias"},
>   {"Input PGA", "MicN Switch", "MICN"},
>   {"Input PGA", "MicP Switch", "MICP"},
> +{"Input PGA", "AUX Switch", "AUX"},
>
>   /* Digital Looptack */
>   {"Digital Loopback", "Switch", "ADC"},
> diff --git a/sound/soc/codecs/nau8810.h b/sound/soc/codecs/nau8810.h
> index 1ada31883dc6..7b5ecad173d3 100644
> --- a/sound/soc/codecs/nau8810.h
> +++ b/sound/soc/codecs/nau8810.h
> @@ -69,6 +69,7 @@
>
>   /* NAU8810_REG_POWER1 (0x1) */
>   #define NAU8810_DCBUF_EN(0x1 << 8)
> +#define NAU8810_AUX_EN_SFT6
>   #define NAU8810_PLL_EN_SFT5
>   #define NAU8810_MICBIAS_EN_SFT4
>   #define NAU8810_ABIAS_EN(0x1 << 3)
> @@ -229,6 +230,7 @@
>   /* NAU8810_REG_INPUT_SIGNAL (0x2C) */
>   #define NAU8810_PMICPGA_SFT0
>   #define NAU8810_NMICPGA_SFT1
> +#define NAU8810_AUXPGA_SFT2
>
>   /* NAU8810_REG_PGAGAIN (0x2D) */
>   #define NAU8810_PGAGAIN_SFT0
Marco Felsch Nov. 18, 2019, 6:46 a.m. UTC | #5
Hi,

On 19-11-16 01:43, AS50 KCHsu0 wrote:
> 
> Marco Felsch 於 2019/11/16 上午 12:08 寫道:
> > From: Thomas Fehrenbacher <thomas.fehrenbacher@siedle.de>
> >
> > This commit adds the support to control the aux-port on the nau8812
> > devices. We don't need to differentiate the aux-port registers since
> > those bitfields are set to '0' on the nau8810 devices [1,2].
> >
> > [1] http://www.nuvoton.com/resource-files/NAU8810_Datasheet_Rev_2.8.pdf
> > [2] http://www.nuvoton.com/resource-files/NAU8812DatasheetRev2.7.pdf
> >
> > Signed-off-by: Thomas Fehrenbacher <thomas.fehrenbacher@siedle.de>
> > [m.felsch@pengutronix.de: add commit message]
> > Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
> > ---
> >   sound/soc/codecs/nau8810.c | 7 +++++++
> >   sound/soc/codecs/nau8810.h | 2 ++
> >   2 files changed, 9 insertions(+)
> >
> > diff --git a/sound/soc/codecs/nau8810.c b/sound/soc/codecs/nau8810.c
> > index a32a4a8d5f50..b1024d24d413 100644
> > --- a/sound/soc/codecs/nau8810.c
> > +++ b/sound/soc/codecs/nau8810.c
> > @@ -351,6 +351,9 @@ static const struct snd_kcontrol_new nau8810_snd_controls[] = {
> >   NAU8810_DACOS_SFT, 1, 0),
> >   SOC_SINGLE("ADC Oversampling Rate(128x) Switch", NAU8810_REG_ADC,
> >   NAU8810_ADCOS_SFT, 1, 0),
> > +
> > +SOC_SINGLE("AUX Input Enable Switch", NAU8810_REG_POWER1,
> > +NAU8810_AUX_EN_SFT, 1, 0),
> >   };
> >
> 
> 
> The power control has to move to the nau8810_dapm_widgets.
> 
> The DAPM can just control the power switch of AUXI dynamically.

Okay, thanks for covering that. I will prepare a v2 with your and Mark's
feedback.

Regards,
  Marco

> >   /* Speaker Output Mixer */
> > @@ -383,6 +386,8 @@ static const struct snd_kcontrol_new nau8810_inpga[] = {
> >   NAU8810_NMICPGA_SFT, 1, 0),
> >   SOC_DAPM_SINGLE("MicP Switch", NAU8810_REG_INPUT_SIGNAL,
> >   NAU8810_PMICPGA_SFT, 1, 0),
> > +SOC_DAPM_SINGLE("AUX Switch", NAU8810_REG_INPUT_SIGNAL,
> > +NAU8810_AUXPGA_SFT, 1, 0),
> >   };
> >
> >   /* Loopback Switch */
> > @@ -436,6 +441,7 @@ static const struct snd_soc_dapm_widget nau8810_dapm_widgets[] = {
> >
> >   SND_SOC_DAPM_INPUT("MICN"),
> >   SND_SOC_DAPM_INPUT("MICP"),
> > +SND_SOC_DAPM_INPUT("AUX"),
> >   SND_SOC_DAPM_OUTPUT("MONOOUT"),
> >   SND_SOC_DAPM_OUTPUT("SPKOUTP"),
> >   SND_SOC_DAPM_OUTPUT("SPKOUTN"),
> > @@ -470,6 +476,7 @@ static const struct snd_soc_dapm_route nau8810_dapm_routes[] = {
> >   {"Input PGA", NULL, "Mic Bias"},
> >   {"Input PGA", "MicN Switch", "MICN"},
> >   {"Input PGA", "MicP Switch", "MICP"},
> > +{"Input PGA", "AUX Switch", "AUX"},
> >
> >   /* Digital Looptack */
> >   {"Digital Loopback", "Switch", "ADC"},
> > diff --git a/sound/soc/codecs/nau8810.h b/sound/soc/codecs/nau8810.h
> > index 1ada31883dc6..7b5ecad173d3 100644
> > --- a/sound/soc/codecs/nau8810.h
> > +++ b/sound/soc/codecs/nau8810.h
> > @@ -69,6 +69,7 @@
> >
> >   /* NAU8810_REG_POWER1 (0x1) */
> >   #define NAU8810_DCBUF_EN(0x1 << 8)
> > +#define NAU8810_AUX_EN_SFT6
> >   #define NAU8810_PLL_EN_SFT5
> >   #define NAU8810_MICBIAS_EN_SFT4
> >   #define NAU8810_ABIAS_EN(0x1 << 3)
> > @@ -229,6 +230,7 @@
> >   /* NAU8810_REG_INPUT_SIGNAL (0x2C) */
> >   #define NAU8810_PMICPGA_SFT0
> >   #define NAU8810_NMICPGA_SFT1
> > +#define NAU8810_AUXPGA_SFT2
> >
> >   /* NAU8810_REG_PGAGAIN (0x2D) */
> >   #define NAU8810_PGAGAIN_SFT0
> ________________________________
> ________________________________
>  The privileged confidential information contained in this email is intended for use only by the addressees as indicated by the original sender of this email. If you are not the addressee indicated in this email or are not responsible for delivery of the email to such a person, please kindly reply to the sender indicating this fact and delete all copies of it from your computer and network server immediately. Your cooperation is highly appreciated. It is advised that any unauthorized use of confidential information of Nuvoton is strictly prohibited; and any information in this email irrelevant to the official business of Nuvoton shall be deemed as neither given nor endorsed by Nuvoton.

Patch
diff mbox series

diff --git a/sound/soc/codecs/nau8810.c b/sound/soc/codecs/nau8810.c
index a32a4a8d5f50..b1024d24d413 100644
--- a/sound/soc/codecs/nau8810.c
+++ b/sound/soc/codecs/nau8810.c
@@ -351,6 +351,9 @@  static const struct snd_kcontrol_new nau8810_snd_controls[] = {
 		NAU8810_DACOS_SFT, 1, 0),
 	SOC_SINGLE("ADC Oversampling Rate(128x) Switch", NAU8810_REG_ADC,
 		NAU8810_ADCOS_SFT, 1, 0),
+
+	SOC_SINGLE("AUX Input Enable Switch", NAU8810_REG_POWER1,
+		NAU8810_AUX_EN_SFT, 1, 0),
 };
 
 /* Speaker Output Mixer */
@@ -383,6 +386,8 @@  static const struct snd_kcontrol_new nau8810_inpga[] = {
 		NAU8810_NMICPGA_SFT, 1, 0),
 	SOC_DAPM_SINGLE("MicP Switch", NAU8810_REG_INPUT_SIGNAL,
 		NAU8810_PMICPGA_SFT, 1, 0),
+	SOC_DAPM_SINGLE("AUX Switch", NAU8810_REG_INPUT_SIGNAL,
+		NAU8810_AUXPGA_SFT, 1, 0),
 };
 
 /* Loopback Switch */
@@ -436,6 +441,7 @@  static const struct snd_soc_dapm_widget nau8810_dapm_widgets[] = {
 
 	SND_SOC_DAPM_INPUT("MICN"),
 	SND_SOC_DAPM_INPUT("MICP"),
+	SND_SOC_DAPM_INPUT("AUX"),
 	SND_SOC_DAPM_OUTPUT("MONOOUT"),
 	SND_SOC_DAPM_OUTPUT("SPKOUTP"),
 	SND_SOC_DAPM_OUTPUT("SPKOUTN"),
@@ -470,6 +476,7 @@  static const struct snd_soc_dapm_route nau8810_dapm_routes[] = {
 	{"Input PGA", NULL, "Mic Bias"},
 	{"Input PGA", "MicN Switch", "MICN"},
 	{"Input PGA", "MicP Switch", "MICP"},
+	{"Input PGA", "AUX Switch", "AUX"},
 
 	/* Digital Looptack */
 	{"Digital Loopback", "Switch", "ADC"},
diff --git a/sound/soc/codecs/nau8810.h b/sound/soc/codecs/nau8810.h
index 1ada31883dc6..7b5ecad173d3 100644
--- a/sound/soc/codecs/nau8810.h
+++ b/sound/soc/codecs/nau8810.h
@@ -69,6 +69,7 @@ 
 
 /* NAU8810_REG_POWER1 (0x1) */
 #define NAU8810_DCBUF_EN		(0x1 << 8)
+#define NAU8810_AUX_EN_SFT		6
 #define NAU8810_PLL_EN_SFT		5
 #define NAU8810_MICBIAS_EN_SFT	4
 #define NAU8810_ABIAS_EN		(0x1 << 3)
@@ -229,6 +230,7 @@ 
 /* NAU8810_REG_INPUT_SIGNAL (0x2C) */
 #define NAU8810_PMICPGA_SFT		0
 #define NAU8810_NMICPGA_SFT		1
+#define NAU8810_AUXPGA_SFT		2
 
 /* NAU8810_REG_PGAGAIN (0x2D) */
 #define NAU8810_PGAGAIN_SFT		0