ASoC: sam9g20_wm8731: Convert to table based DAPM setup
diff mbox

Message ID 1394290042-30883-1-git-send-email-lars@metafoo.de
State Accepted
Commit b0ffe9b1ab8705eeffa72feacd791ab6fdd2a06c
Headers show

Commit Message

Lars-Peter Clausen March 8, 2014, 2:47 p.m. UTC
Use table based setup to register the DAPM widgets and routes. This on one hand
makes the code a bit shorter and cleaner and on the other hand the board level
DAPM elements get registered in the card's DAPM context rather than in the
CODEC's DAPM context.

While we are at it also remove the snd_soc_dapm_enable_pin() in the init
callback. Pins are enabled by default.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 sound/soc/atmel/sam9g20_wm8731.c | 20 +++++++-------------
 1 file changed, 7 insertions(+), 13 deletions(-)

Comments

Bo Shen March 10, 2014, 3:42 a.m. UTC | #1
Hi Lars,

On 03/08/2014 10:47 PM, Lars-Peter Clausen wrote:
> Use table based setup to register the DAPM widgets and routes. This on one hand
> makes the code a bit shorter and cleaner and on the other hand the board level
> DAPM elements get registered in the card's DAPM context rather than in the
> CODEC's DAPM context.
>
> While we are at it also remove the snd_soc_dapm_enable_pin() in the init
> callback. Pins are enabled by default.
>
> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
> ---
>   sound/soc/atmel/sam9g20_wm8731.c | 20 +++++++-------------
>   1 file changed, 7 insertions(+), 13 deletions(-)

Thanks for your work.
Tested OK on sam9g20ek board with dt and non-dt kernel.

Tested-by: Bo Shen <voice.shen@atmel.com>
Acked-by: Bo Shen <voice.shen@atmel.com>

> diff --git a/sound/soc/atmel/sam9g20_wm8731.c b/sound/soc/atmel/sam9g20_wm8731.c
> index f15bff1..174bd54 100644
> --- a/sound/soc/atmel/sam9g20_wm8731.c
> +++ b/sound/soc/atmel/sam9g20_wm8731.c
> @@ -155,25 +155,14 @@ static int at91sam9g20ek_wm8731_init(struct snd_soc_pcm_runtime *rtd)
>   		return ret;
>   	}
>
> -	/* Add specific widgets */
> -	snd_soc_dapm_new_controls(dapm, at91sam9g20ek_dapm_widgets,
> -				  ARRAY_SIZE(at91sam9g20ek_dapm_widgets));
> -	/* Set up specific audio path interconnects */
> -	snd_soc_dapm_add_routes(dapm, intercon, ARRAY_SIZE(intercon));
> -
>   	/* not connected */
>   	snd_soc_dapm_nc_pin(dapm, "RLINEIN");
>   	snd_soc_dapm_nc_pin(dapm, "LLINEIN");
>
> -#ifdef ENABLE_MIC_INPUT
> -	snd_soc_dapm_enable_pin(dapm, "Int Mic");
> -#else
> -	snd_soc_dapm_nc_pin(dapm, "Int Mic");
> +#ifndef ENABLE_MIC_INPUT
> +	snd_soc_dapm_nc_pin(&rtd->card->dapm, "Int Mic");
>   #endif
>
> -	/* always connected */
> -	snd_soc_dapm_enable_pin(dapm, "Ext Spk");
> -
>   	return 0;
>   }
>
> @@ -194,6 +183,11 @@ static struct snd_soc_card snd_soc_at91sam9g20ek = {
>   	.dai_link = &at91sam9g20ek_dai,
>   	.num_links = 1,
>   	.set_bias_level = at91sam9g20ek_set_bias_level,
> +
> +	.dapm_widgets = at91sam9g20ek_dapm_widgets,
> +	.num_dapm_widgets = ARRAY_SIZE(at91sam9g20ek_dapm_widgets),
> +	.dapm_routes = intercon,
> +	.num_dapm_routes = ARRAY_SIZE(intercon),
>   };
>
>   static int at91sam9g20ek_audio_probe(struct platform_device *pdev)
>

Best Regards,
Bo Shen
Mark Brown March 10, 2014, 10:32 a.m. UTC | #2
On Sat, Mar 08, 2014 at 03:47:22PM +0100, Lars-Peter Clausen wrote:
> Use table based setup to register the DAPM widgets and routes. This on one hand
> makes the code a bit shorter and cleaner and on the other hand the board level
> DAPM elements get registered in the card's DAPM context rather than in the
> CODEC's DAPM context.

Applied, thanks.

Patch
diff mbox

diff --git a/sound/soc/atmel/sam9g20_wm8731.c b/sound/soc/atmel/sam9g20_wm8731.c
index f15bff1..174bd54 100644
--- a/sound/soc/atmel/sam9g20_wm8731.c
+++ b/sound/soc/atmel/sam9g20_wm8731.c
@@ -155,25 +155,14 @@  static int at91sam9g20ek_wm8731_init(struct snd_soc_pcm_runtime *rtd)
 		return ret;
 	}
 
-	/* Add specific widgets */
-	snd_soc_dapm_new_controls(dapm, at91sam9g20ek_dapm_widgets,
-				  ARRAY_SIZE(at91sam9g20ek_dapm_widgets));
-	/* Set up specific audio path interconnects */
-	snd_soc_dapm_add_routes(dapm, intercon, ARRAY_SIZE(intercon));
-
 	/* not connected */
 	snd_soc_dapm_nc_pin(dapm, "RLINEIN");
 	snd_soc_dapm_nc_pin(dapm, "LLINEIN");
 
-#ifdef ENABLE_MIC_INPUT
-	snd_soc_dapm_enable_pin(dapm, "Int Mic");
-#else
-	snd_soc_dapm_nc_pin(dapm, "Int Mic");
+#ifndef ENABLE_MIC_INPUT
+	snd_soc_dapm_nc_pin(&rtd->card->dapm, "Int Mic");
 #endif
 
-	/* always connected */
-	snd_soc_dapm_enable_pin(dapm, "Ext Spk");
-
 	return 0;
 }
 
@@ -194,6 +183,11 @@  static struct snd_soc_card snd_soc_at91sam9g20ek = {
 	.dai_link = &at91sam9g20ek_dai,
 	.num_links = 1,
 	.set_bias_level = at91sam9g20ek_set_bias_level,
+
+	.dapm_widgets = at91sam9g20ek_dapm_widgets,
+	.num_dapm_widgets = ARRAY_SIZE(at91sam9g20ek_dapm_widgets),
+	.dapm_routes = intercon,
+	.num_dapm_routes = ARRAY_SIZE(intercon),
 };
 
 static int at91sam9g20ek_audio_probe(struct platform_device *pdev)