alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/12] Cleanup card DAPM and control setup
@ 2014-03-12 14:27 Lars-Peter Clausen
  2014-03-12 14:27 ` [PATCH v2 01/12] ASoC: ams-delta: Fix compile error Lars-Peter Clausen
                   ` (11 more replies)
  0 siblings, 12 replies; 26+ messages in thread
From: Lars-Peter Clausen @ 2014-03-12 14:27 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood
  Cc: alsa-devel, Lars-Peter Clausen, Ryan Mallon, Vinod Koul,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula

This patch series converts all remaining machine drivers that still register
their controls and DAPM elements with the CODEC to registering them with the
card. The reason for doing this is to be able to remove the hack in the ASoC
core that un-sets the name_prefix of a CODEC before calling the init callback
for a DAI link. This comes from a time where it was not possible to register
controls or DAPM elements at a card level. And removing this hack makes going
forward with the componentisation easier and it also looks like the DAI
multi-CODEC patch could benefit from this as well.

The series depends on topic/pxa and topic/dapm

- Lars

Lars-Peter Clausen (12):
  ASoC: ams-delta: Fix compile error
  ASoC: ams-delta: Convert to table based DAPM and control setup
  ASoC: mfld_machine: Convert to table based DAPM and control setup
  ASoC: omap-abe-twl6040: Register machine level DMIC DAPM routes with
    the card
  ASoC: omap: rx51: Convert to table based control and DAPM setup
  ASoC: omap3pandora: Convert to table based DAPM setup
  ASoC: davinci-evm: Register machine level DAPM elements with the card
  ASoC: snappercl15: Convert to table based DAPM setup
  ASoC: s6105-ipcam: Convert to table based DAPM setup
  ASoC: pxa: magician: Convert to table based DAPM and control setup
  ASoC: pxa: tosa: Convert to table based DAPM and control setup
  ASoC: Remove name_prefix un-set during DAI link init hack

 sound/soc/cirrus/snappercl15.c    | 18 +++--------
 sound/soc/davinci/davinci-evm.c   | 22 +++++--------
 sound/soc/intel/mfld_machine.c    | 49 ++++++++++++-----------------
 sound/soc/omap/ams-delta.c        | 66 +++++++++++++--------------------------
 sound/soc/omap/omap-abe-twl6040.c |  3 +-
 sound/soc/omap/omap3pandora.c     | 31 ++++++------------
 sound/soc/omap/rx51.c             | 47 +++++-----------------------
 sound/soc/pxa/magician.c          | 34 +++++++-------------
 sound/soc/pxa/tosa.c              | 35 ++++++++-------------
 sound/soc/s6000/s6105-ipcam.c     | 28 ++++++-----------
 sound/soc/soc-core.c              |  7 +----
 11 files changed, 108 insertions(+), 232 deletions(-)

-- 
1.8.0

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [PATCH v2 01/12] ASoC: ams-delta: Fix compile error
  2014-03-12 14:27 [PATCH v2 00/12] Cleanup card DAPM and control setup Lars-Peter Clausen
@ 2014-03-12 14:27 ` Lars-Peter Clausen
  2014-03-12 14:27 ` [PATCH v2 02/12] ASoC: ams-delta: Convert to table based DAPM and control setup Lars-Peter Clausen
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 26+ messages in thread
From: Lars-Peter Clausen @ 2014-03-12 14:27 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood
  Cc: alsa-devel, Lars-Peter Clausen, Ryan Mallon, Vinod Koul,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula

snd_soc_dapm_mutex_unlock() wants a pointer to the DAPM context, not the CODEC.

Fixes: 03510ca07 ("ASoC: ams-delta: Update locking around use of DAPM pin API")
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 sound/soc/omap/ams-delta.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/omap/ams-delta.c b/sound/soc/omap/ams-delta.c
index 5750de1..14718cd 100644
--- a/sound/soc/omap/ams-delta.c
+++ b/sound/soc/omap/ams-delta.c
@@ -327,7 +327,7 @@ static void cx81801_close(struct tty_struct *tty)
 
 	snd_soc_dapm_sync_unlocked(dapm);
 
-	snd_soc_dapm_mutex_unlock(codec);
+	snd_soc_dapm_mutex_unlock(dapm);
 }
 
 /* Line discipline .hangup() */
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 02/12] ASoC: ams-delta: Convert to table based DAPM and control setup
  2014-03-12 14:27 [PATCH v2 00/12] Cleanup card DAPM and control setup Lars-Peter Clausen
  2014-03-12 14:27 ` [PATCH v2 01/12] ASoC: ams-delta: Fix compile error Lars-Peter Clausen
@ 2014-03-12 14:27 ` Lars-Peter Clausen
  2014-03-21 18:03   ` Mark Brown
  2014-03-12 14:27 ` [PATCH v2 03/12] ASoC: mfld_machine: " Lars-Peter Clausen
                   ` (9 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Lars-Peter Clausen @ 2014-03-12 14:27 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood
  Cc: alsa-devel, Lars-Peter Clausen, Ryan Mallon, Vinod Koul,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula

Use table based setup to register the controls and 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.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 sound/soc/omap/ams-delta.c | 64 +++++++++++++++-------------------------------
 1 file changed, 21 insertions(+), 43 deletions(-)

diff --git a/sound/soc/omap/ams-delta.c b/sound/soc/omap/ams-delta.c
index 14718cd..46d83f4 100644
--- a/sound/soc/omap/ams-delta.c
+++ b/sound/soc/omap/ams-delta.c
@@ -38,7 +38,6 @@
 #include "omap-mcbsp.h"
 #include "../codecs/cx20442.h"
 
-
 /* Board specific DAPM widgets */
 static const struct snd_soc_dapm_widget ams_delta_dapm_widgets[] = {
 	/* Handset */
@@ -90,17 +89,23 @@ static const unsigned short ams_delta_audio_mode_pins[] = {
 
 static unsigned short ams_delta_audio_agc;
 
+/*
+ * Used for passing a codec structure pointer
+ * from the board initialization code to the tty line discipline.
+ */
+static struct snd_soc_codec *cx20442_codec;
+
 static int ams_delta_set_audio_mode(struct snd_kcontrol *kcontrol,
 					struct snd_ctl_elem_value *ucontrol)
 {
-	struct snd_soc_codec *codec =  snd_kcontrol_chip(kcontrol);
-	struct snd_soc_dapm_context *dapm = &codec->dapm;
+	struct snd_soc_card *card = snd_kcontrol_chip(kcontrol);
+	struct snd_soc_dapm_context *dapm = &card->dapm;
 	struct soc_enum *control = (struct soc_enum *)kcontrol->private_value;
 	unsigned short pins;
 	int pin, changed = 0;
 
 	/* Refuse any mode changes if we are not able to control the codec. */
-	if (!codec->hw_write)
+	if (!cx20442_codec->hw_write)
 		return -EUNATCH;
 
 	if (ucontrol->value.enumerated.item[0] >= control->max)
@@ -166,8 +171,8 @@ static int ams_delta_set_audio_mode(struct snd_kcontrol *kcontrol,
 static int ams_delta_get_audio_mode(struct snd_kcontrol *kcontrol,
 					struct snd_ctl_elem_value *ucontrol)
 {
-	struct snd_soc_codec *codec =  snd_kcontrol_chip(kcontrol);
-	struct snd_soc_dapm_context *dapm = &codec->dapm;
+	struct snd_soc_card *card = snd_kcontrol_chip(kcontrol);
+	struct snd_soc_dapm_context *dapm = &card->dapm;
 	unsigned short pins, mode;
 
 	pins = ((snd_soc_dapm_get_pin_status(dapm, "Mouthpiece") <<
@@ -272,12 +277,6 @@ static void cx81801_timeout(unsigned long data)
 		ams_delta_latch2_write(AMS_DELTA_LATCH2_MODEM_CODEC, 0);
 }
 
-/*
- * Used for passing a codec structure pointer
- * from the board initialization code to the tty line discipline.
- */
-static struct snd_soc_codec *cx20442_codec;
-
 /* Line discipline .open() */
 static int cx81801_open(struct tty_struct *tty)
 {
@@ -304,7 +303,7 @@ static int cx81801_open(struct tty_struct *tty)
 static void cx81801_close(struct tty_struct *tty)
 {
 	struct snd_soc_codec *codec = tty->disc_data;
-	struct snd_soc_dapm_context *dapm = &codec->dapm;
+	struct snd_soc_dapm_context *dapm = &codec->card->dapm;
 
 	del_timer_sync(&cx81801_timer);
 
@@ -477,15 +476,14 @@ static void ams_delta_shutdown(struct snd_pcm_substream *substream)
 
 static int ams_delta_cx20442_init(struct snd_soc_pcm_runtime *rtd)
 {
-	struct snd_soc_codec *codec = rtd->codec;
-	struct snd_soc_dapm_context *dapm = &codec->dapm;
 	struct snd_soc_dai *codec_dai = rtd->codec_dai;
 	struct snd_soc_card *card = rtd->card;
+	struct snd_soc_dapm_context *dapm = &card->dapm;
 	int ret;
 	/* Codec is ready, now add/activate board specific controls */
 
 	/* Store a pointer to the codec structure for tty ldisc use */
-	cx20442_codec = codec;
+	cx20442_codec = rtd->codec;
 
 	/* Set up digital mute if not provided by the codec */
 	if (!codec_dai->driver->ops) {
@@ -522,25 +520,6 @@ static int ams_delta_cx20442_init(struct snd_soc_pcm_runtime *rtd)
 		return 0;
 	}
 
-	/* Add board specific DAPM widgets and routes */
-	ret = snd_soc_dapm_new_controls(dapm, ams_delta_dapm_widgets,
-					ARRAY_SIZE(ams_delta_dapm_widgets));
-	if (ret) {
-		dev_warn(card->dev,
-				"Failed to register DAPM controls, "
-				"will continue without any.\n");
-		return 0;
-	}
-
-	ret = snd_soc_dapm_add_routes(dapm, ams_delta_audio_map,
-					ARRAY_SIZE(ams_delta_audio_map));
-	if (ret) {
-		dev_warn(card->dev,
-				"Failed to set up DAPM routes, "
-				"will continue with codec default map.\n");
-		return 0;
-	}
-
 	/* Set up initial pin constellation */
 	snd_soc_dapm_disable_pin(dapm, "Mouthpiece");
 	snd_soc_dapm_enable_pin(dapm, "Earpiece");
@@ -549,14 +528,6 @@ static int ams_delta_cx20442_init(struct snd_soc_pcm_runtime *rtd)
 	snd_soc_dapm_disable_pin(dapm, "AGCIN");
 	snd_soc_dapm_disable_pin(dapm, "AGCOUT");
 
-	/* Add virtual switch */
-	ret = snd_soc_add_codec_controls(codec, ams_delta_audio_controls,
-					ARRAY_SIZE(ams_delta_audio_controls));
-	if (ret)
-		dev_warn(card->dev,
-				"Failed to register audio mode control, "
-				"will continue without it.\n");
-
 	return 0;
 }
 
@@ -578,6 +549,13 @@ static struct snd_soc_card ams_delta_audio_card = {
 	.owner = THIS_MODULE,
 	.dai_link = &ams_delta_dai_link,
 	.num_links = 1,
+
+	.controls = ams_delta_audio_controls,
+	.num_controls = ARRAY_SIZE(ams_delta_audio_controls),
+	.dapm_widgets = ams_delta_dapm_widgets,
+	.num_dapm_widgets = ARRAY_SIZE(ams_delta_dapm_widgets),
+	.dapm_routes = ams_delta_audio_map,
+	.num_dapm_routes = ARRAY_SIZE(ams_delta_audio_map),
 };
 
 /* Module init/exit */
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 03/12] ASoC: mfld_machine: Convert to table based DAPM and control setup
  2014-03-12 14:27 [PATCH v2 00/12] Cleanup card DAPM and control setup Lars-Peter Clausen
  2014-03-12 14:27 ` [PATCH v2 01/12] ASoC: ams-delta: Fix compile error Lars-Peter Clausen
  2014-03-12 14:27 ` [PATCH v2 02/12] ASoC: ams-delta: Convert to table based DAPM and control setup Lars-Peter Clausen
@ 2014-03-12 14:27 ` Lars-Peter Clausen
  2014-03-21 18:04   ` Mark Brown
  2014-03-12 14:27 ` [PATCH v2 04/12] ASoC: omap-abe-twl6040: Register machine level DMIC DAPM routes with the card Lars-Peter Clausen
                   ` (8 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Lars-Peter Clausen @ 2014-03-12 14:27 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood
  Cc: alsa-devel, Lars-Peter Clausen, Ryan Mallon, Vinod Koul,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula

Use table based setup to register the controls and DAPM widgets and routes.
This on one hand makes the code a bit 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.

The mfld_machine driver is a bit special in that it directly writes to one of
the CODEC registers from one of the control handlers. Previous to this patch it
was able to get a pointer to the CODEC from the control, since the control was
registered with the CODEC. This won't be possible anymore once the control is
registered with the card. Since there are already global variables in the driver
accessed in the same function the patch adds a global variable that holds a
pointer to the CODEC and uses that.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 sound/soc/intel/mfld_machine.c | 49 +++++++++++++++++-------------------------
 1 file changed, 20 insertions(+), 29 deletions(-)

diff --git a/sound/soc/intel/mfld_machine.c b/sound/soc/intel/mfld_machine.c
index 0cef32e..4616942 100644
--- a/sound/soc/intel/mfld_machine.c
+++ b/sound/soc/intel/mfld_machine.c
@@ -53,6 +53,7 @@ enum soc_mic_bias_zones {
 
 static unsigned int	hs_switch;
 static unsigned int	lo_dac;
+static struct snd_soc_codec *mfld_codec;
 
 struct mfld_mc_private {
 	void __iomem *int_base;
@@ -100,8 +101,8 @@ static int headset_get_switch(struct snd_kcontrol *kcontrol,
 static int headset_set_switch(struct snd_kcontrol *kcontrol,
 	struct snd_ctl_elem_value *ucontrol)
 {
-	struct snd_soc_codec *codec =  snd_kcontrol_chip(kcontrol);
-	struct snd_soc_dapm_context *dapm = &codec->dapm;
+	struct snd_soc_card *card = snd_kcontrol_chip(kcontrol);
+	struct snd_soc_dapm_context *dapm = &card->dapm;
 
 	if (ucontrol->value.integer.value[0] == hs_switch)
 		return 0;
@@ -127,10 +128,8 @@ static int headset_set_switch(struct snd_kcontrol *kcontrol,
 	return 0;
 }
 
-static void lo_enable_out_pins(struct snd_soc_codec *codec)
+static void lo_enable_out_pins(struct snd_soc_dapm_context *dapm)
 {
-	struct snd_soc_dapm_context *dapm = &codec->dapm;
-
 	snd_soc_dapm_enable_pin_unlocked(dapm, "IHFOUTL");
 	snd_soc_dapm_enable_pin_unlocked(dapm, "IHFOUTR");
 	snd_soc_dapm_enable_pin_unlocked(dapm, "LINEOUTL");
@@ -156,8 +155,8 @@ static int lo_get_switch(struct snd_kcontrol *kcontrol,
 static int lo_set_switch(struct snd_kcontrol *kcontrol,
 	struct snd_ctl_elem_value *ucontrol)
 {
-	struct snd_soc_codec *codec =  snd_kcontrol_chip(kcontrol);
-	struct snd_soc_dapm_context *dapm = &codec->dapm;
+	struct snd_soc_card *card = snd_kcontrol_chip(kcontrol);
+	struct snd_soc_dapm_context *dapm = &card->dapm;
 
 	if (ucontrol->value.integer.value[0] == lo_dac)
 		return 0;
@@ -167,35 +166,35 @@ static int lo_set_switch(struct snd_kcontrol *kcontrol,
 	/* we dont want to work with last state of lineout so just enable all
 	 * pins and then disable pins not required
 	 */
-	lo_enable_out_pins(codec);
+	lo_enable_out_pins(dapm);
 
 	switch (ucontrol->value.integer.value[0]) {
 	case 0:
 		pr_debug("set vibra path\n");
 		snd_soc_dapm_disable_pin_unlocked(dapm, "VIB1OUT");
 		snd_soc_dapm_disable_pin_unlocked(dapm, "VIB2OUT");
-		snd_soc_update_bits(codec, SN95031_LOCTL, 0x66, 0);
+		snd_soc_update_bits(mfld_codec, SN95031_LOCTL, 0x66, 0);
 		break;
 
 	case 1:
 		pr_debug("set hs  path\n");
 		snd_soc_dapm_disable_pin_unlocked(dapm, "Headphones");
 		snd_soc_dapm_disable_pin_unlocked(dapm, "EPOUT");
-		snd_soc_update_bits(codec, SN95031_LOCTL, 0x66, 0x22);
+		snd_soc_update_bits(mfld_codec, SN95031_LOCTL, 0x66, 0x22);
 		break;
 
 	case 2:
 		pr_debug("set spkr path\n");
 		snd_soc_dapm_disable_pin_unlocked(dapm, "IHFOUTL");
 		snd_soc_dapm_disable_pin_unlocked(dapm, "IHFOUTR");
-		snd_soc_update_bits(codec, SN95031_LOCTL, 0x66, 0x44);
+		snd_soc_update_bits(mfld_codec, SN95031_LOCTL, 0x66, 0x44);
 		break;
 
 	case 3:
 		pr_debug("set null path\n");
 		snd_soc_dapm_disable_pin_unlocked(dapm, "LINEOUTL");
 		snd_soc_dapm_disable_pin_unlocked(dapm, "LINEOUTR");
-		snd_soc_update_bits(codec, SN95031_LOCTL, 0x66, 0x66);
+		snd_soc_update_bits(mfld_codec, SN95031_LOCTL, 0x66, 0x66);
 		break;
 	}
 
@@ -238,26 +237,11 @@ static void mfld_jack_check(unsigned int intr_status)
 
 static int mfld_init(struct snd_soc_pcm_runtime *runtime)
 {
-	struct snd_soc_codec *codec = runtime->codec;
-	struct snd_soc_dapm_context *dapm = &codec->dapm;
+	struct snd_soc_dapm_context *dapm = &runtime->card->dapm;
 	int ret_val;
 
-	/* Add jack sense widgets */
-	snd_soc_dapm_new_controls(dapm, mfld_widgets, ARRAY_SIZE(mfld_widgets));
-
-	/* Set up the map */
-	snd_soc_dapm_add_routes(dapm, mfld_map, ARRAY_SIZE(mfld_map));
+	mfld_codec = runtime->codec;
 
-	/* always connected */
-	snd_soc_dapm_enable_pin(dapm, "Headphones");
-	snd_soc_dapm_enable_pin(dapm, "Mic");
-
-	ret_val = snd_soc_add_codec_controls(codec, mfld_snd_controls,
-				ARRAY_SIZE(mfld_snd_controls));
-	if (ret_val) {
-		pr_err("soc_add_controls failed %d", ret_val);
-		return ret_val;
-	}
 	/* default is earpiece pin, userspace sets it explcitly */
 	snd_soc_dapm_disable_pin(dapm, "Headphones");
 	/* default is lineout NC, userspace sets it explcitly */
@@ -352,6 +336,13 @@ static struct snd_soc_card snd_soc_card_mfld = {
 	.owner = THIS_MODULE,
 	.dai_link = mfld_msic_dailink,
 	.num_links = ARRAY_SIZE(mfld_msic_dailink),
+
+	.controls = mfld_snd_controls,
+	.num_controls = ARRAY_SIZE(mfld_snd_controls),
+	.dapm_widgets = mfld_widgets,
+	.num_dapm_widgets = ARRAY_SIZE(mfld_widgets),
+	.dapm_routes = mfld_map,
+	.num_dapm_routes = ARRAY_SIZE(mfld_map),
 };
 
 static irqreturn_t snd_mfld_jack_intr_handler(int irq, void *dev)
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 04/12] ASoC: omap-abe-twl6040: Register machine level DMIC DAPM routes with the card
  2014-03-12 14:27 [PATCH v2 00/12] Cleanup card DAPM and control setup Lars-Peter Clausen
                   ` (2 preceding siblings ...)
  2014-03-12 14:27 ` [PATCH v2 03/12] ASoC: mfld_machine: " Lars-Peter Clausen
@ 2014-03-12 14:27 ` Lars-Peter Clausen
  2014-03-13 10:06   ` Peter Ujfalusi
  2014-03-13 19:10   ` Mark Brown
  2014-03-12 14:27 ` [PATCH v2 05/12] ASoC: omap: rx51: Convert to table based control and DAPM setup Lars-Peter Clausen
                   ` (7 subsequent siblings)
  11 siblings, 2 replies; 26+ messages in thread
From: Lars-Peter Clausen @ 2014-03-12 14:27 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood
  Cc: alsa-devel, Lars-Peter Clausen, Ryan Mallon, Vinod Koul,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula

Machine level DAPM widgets and routes should be registered in the card's DAPM
context, rather than in the CODEC's context.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>

---
Changes since v1:
	* Only register DMIC DAPM routes with the card, do not join the two routes
	  tables into one.
---
 sound/soc/omap/omap-abe-twl6040.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/sound/soc/omap/omap-abe-twl6040.c b/sound/soc/omap/omap-abe-twl6040.c
index ebb1390..024dafc 100644
--- a/sound/soc/omap/omap-abe-twl6040.c
+++ b/sound/soc/omap/omap-abe-twl6040.c
@@ -203,8 +203,7 @@ static const struct snd_soc_dapm_route dmic_audio_map[] = {
 
 static int omap_abe_dmic_init(struct snd_soc_pcm_runtime *rtd)
 {
-	struct snd_soc_codec *codec = rtd->codec;
-	struct snd_soc_dapm_context *dapm = &codec->dapm;
+	struct snd_soc_dapm_context *dapm = &rtd->card->dapm;
 
 	return snd_soc_dapm_add_routes(dapm, dmic_audio_map,
 				ARRAY_SIZE(dmic_audio_map));
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 05/12] ASoC: omap: rx51: Convert to table based control and DAPM setup
  2014-03-12 14:27 [PATCH v2 00/12] Cleanup card DAPM and control setup Lars-Peter Clausen
                   ` (3 preceding siblings ...)
  2014-03-12 14:27 ` [PATCH v2 04/12] ASoC: omap-abe-twl6040: Register machine level DMIC DAPM routes with the card Lars-Peter Clausen
@ 2014-03-12 14:27 ` Lars-Peter Clausen
  2014-03-21 18:03   ` Mark Brown
  2014-03-12 14:27 ` [PATCH v2 06/12] ASoC: omap3pandora: Convert to table based " Lars-Peter Clausen
                   ` (6 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Lars-Peter Clausen @ 2014-03-12 14:27 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood
  Cc: alsa-devel, Lars-Peter Clausen, Ryan Mallon, Vinod Koul,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula

Use table based setup to register the controls and 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.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 sound/soc/omap/rx51.c | 47 +++++++----------------------------------------
 1 file changed, 7 insertions(+), 40 deletions(-)

diff --git a/sound/soc/omap/rx51.c b/sound/soc/omap/rx51.c
index 7fb3d4b..2b46411 100644
--- a/sound/soc/omap/rx51.c
+++ b/sound/soc/omap/rx51.c
@@ -237,9 +237,6 @@ static const struct snd_soc_dapm_widget aic34_dapm_widgets[] = {
 	SND_SOC_DAPM_HP("Headphone Jack", rx51_hp_event),
 	SND_SOC_DAPM_MIC("HS Mic", NULL),
 	SND_SOC_DAPM_LINE("FM Transmitter", NULL),
-};
-
-static const struct snd_soc_dapm_widget aic34_dapm_widgetsb[] = {
 	SND_SOC_DAPM_SPK("Earphone", NULL),
 };
 
@@ -253,9 +250,7 @@ static const struct snd_soc_dapm_route audio_map[] = {
 
 	{"DMic Rate 64", NULL, "Mic Bias"},
 	{"Mic Bias", NULL, "DMic"},
-};
 
-static const struct snd_soc_dapm_route audio_mapb[] = {
 	{"b LINE2R", NULL, "MONO_LOUT"},
 	{"Earphone", NULL, "b HPLOUT"},
 
@@ -281,9 +276,6 @@ static const struct snd_kcontrol_new aic34_rx51_controls[] = {
 	SOC_ENUM_EXT("Jack Function", rx51_enum[2],
 		     rx51_get_jack, rx51_set_jack),
 	SOC_DAPM_PIN_SWITCH("FM Transmitter"),
-};
-
-static const struct snd_kcontrol_new aic34_rx51_controlsb[] = {
 	SOC_DAPM_PIN_SWITCH("Earphone"),
 };
 
@@ -298,19 +290,6 @@ static int rx51_aic34_init(struct snd_soc_pcm_runtime *rtd)
 	snd_soc_dapm_nc_pin(dapm, "MIC3R");
 	snd_soc_dapm_nc_pin(dapm, "LINE1R");
 
-	/* Add RX-51 specific controls */
-	err = snd_soc_add_card_controls(rtd->card, aic34_rx51_controls,
-				   ARRAY_SIZE(aic34_rx51_controls));
-	if (err < 0)
-		return err;
-
-	/* Add RX-51 specific widgets */
-	snd_soc_dapm_new_controls(dapm, aic34_dapm_widgets,
-				  ARRAY_SIZE(aic34_dapm_widgets));
-
-	/* Set up RX-51 specific audio path audio_map */
-	snd_soc_dapm_add_routes(dapm, audio_map, ARRAY_SIZE(audio_map));
-
 	err = tpa6130a2_add_controls(codec);
 	if (err < 0)
 		return err;
@@ -333,24 +312,6 @@ static int rx51_aic34_init(struct snd_soc_pcm_runtime *rtd)
 	return err;
 }
 
-static int rx51_aic34b_init(struct snd_soc_dapm_context *dapm)
-{
-	int err;
-
-	err = snd_soc_add_card_controls(dapm->card, aic34_rx51_controlsb,
-				   ARRAY_SIZE(aic34_rx51_controlsb));
-	if (err < 0)
-		return err;
-
-	err = snd_soc_dapm_new_controls(dapm, aic34_dapm_widgetsb,
-					ARRAY_SIZE(aic34_dapm_widgetsb));
-	if (err < 0)
-		return 0;
-
-	return snd_soc_dapm_add_routes(dapm, audio_mapb,
-				       ARRAY_SIZE(audio_mapb));
-}
-
 /* Digital audio interface glue - connects codec <--> CPU */
 static struct snd_soc_dai_link rx51_dai[] = {
 	{
@@ -371,7 +332,6 @@ static struct snd_soc_aux_dev rx51_aux_dev[] = {
 	{
 		.name = "TLV320AIC34b",
 		.codec_name = "tlv320aic3x-codec.2-0019",
-		.init = rx51_aic34b_init,
 	},
 };
 
@@ -392,6 +352,13 @@ static struct snd_soc_card rx51_sound_card = {
 	.num_aux_devs = ARRAY_SIZE(rx51_aux_dev),
 	.codec_conf = rx51_codec_conf,
 	.num_configs = ARRAY_SIZE(rx51_codec_conf),
+
+	.controls = aic34_rx51_controls,
+	.num_controls = ARRAY_SIZE(aic34_rx51_controls),
+	.dapm_widgets = aic34_dapm_widgets,
+	.num_dapm_widgets = ARRAY_SIZE(aic34_dapm_widgets),
+	.dapm_routes = audio_map,
+	.num_dapm_routes = ARRAY_SIZE(audio_map),
 };
 
 static struct platform_device *rx51_snd_device;
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 06/12] ASoC: omap3pandora: Convert to table based DAPM setup
  2014-03-12 14:27 [PATCH v2 00/12] Cleanup card DAPM and control setup Lars-Peter Clausen
                   ` (4 preceding siblings ...)
  2014-03-12 14:27 ` [PATCH v2 05/12] ASoC: omap: rx51: Convert to table based control and DAPM setup Lars-Peter Clausen
@ 2014-03-12 14:27 ` Lars-Peter Clausen
  2014-03-21 18:04   ` Mark Brown
  2014-03-12 14:27 ` [PATCH v2 07/12] ASoC: davinci-evm: Register machine level DAPM elements with the card Lars-Peter Clausen
                   ` (5 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Lars-Peter Clausen @ 2014-03-12 14:27 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood
  Cc: alsa-devel, Lars-Peter Clausen, Ryan Mallon, Vinod Koul,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula

Use table based setup to register the controls and 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.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 sound/soc/omap/omap3pandora.c | 31 +++++++++----------------------
 1 file changed, 9 insertions(+), 22 deletions(-)

diff --git a/sound/soc/omap/omap3pandora.c b/sound/soc/omap/omap3pandora.c
index cf604a2..02181bb 100644
--- a/sound/soc/omap/omap3pandora.c
+++ b/sound/soc/omap/omap3pandora.c
@@ -121,7 +121,7 @@ static int omap3pandora_hp_event(struct snd_soc_dapm_widget *w,
  *  |A| <~~clk~~+
  *  |P| <--- TWL4030 <--------- Line In and MICs
  */
-static const struct snd_soc_dapm_widget omap3pandora_out_dapm_widgets[] = {
+static const struct snd_soc_dapm_widget omap3pandora_dapm_widgets[] = {
 	SND_SOC_DAPM_DAC_E("PCM DAC", "HiFi Playback", SND_SOC_NOPM,
 			   0, 0, omap3pandora_dac_event,
 			   SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),
@@ -130,22 +130,18 @@ static const struct snd_soc_dapm_widget omap3pandora_out_dapm_widgets[] = {
 			   SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),
 	SND_SOC_DAPM_HP("Headphone Jack", NULL),
 	SND_SOC_DAPM_LINE("Line Out", NULL),
-};
 
-static const struct snd_soc_dapm_widget omap3pandora_in_dapm_widgets[] = {
 	SND_SOC_DAPM_MIC("Mic (internal)", NULL),
 	SND_SOC_DAPM_MIC("Mic (external)", NULL),
 	SND_SOC_DAPM_LINE("Line In", NULL),
 };
 
-static const struct snd_soc_dapm_route omap3pandora_out_map[] = {
+static const struct snd_soc_dapm_route omap3pandora_map[] = {
 	{"PCM DAC", NULL, "APLL Enable"},
 	{"Headphone Amplifier", NULL, "PCM DAC"},
 	{"Line Out", NULL, "PCM DAC"},
 	{"Headphone Jack", NULL, "Headphone Amplifier"},
-};
 
-static const struct snd_soc_dapm_route omap3pandora_in_map[] = {
 	{"AUXL", NULL, "Line In"},
 	{"AUXR", NULL, "Line In"},
 
@@ -160,7 +156,6 @@ static int omap3pandora_out_init(struct snd_soc_pcm_runtime *rtd)
 {
 	struct snd_soc_codec *codec = rtd->codec;
 	struct snd_soc_dapm_context *dapm = &codec->dapm;
-	int ret;
 
 	/* All TWL4030 output pins are floating */
 	snd_soc_dapm_nc_pin(dapm, "EARPIECE");
@@ -174,20 +169,13 @@ static int omap3pandora_out_init(struct snd_soc_pcm_runtime *rtd)
 	snd_soc_dapm_nc_pin(dapm, "HFR");
 	snd_soc_dapm_nc_pin(dapm, "VIBRA");
 
-	ret = snd_soc_dapm_new_controls(dapm, omap3pandora_out_dapm_widgets,
-				ARRAY_SIZE(omap3pandora_out_dapm_widgets));
-	if (ret < 0)
-		return ret;
-
-	return snd_soc_dapm_add_routes(dapm, omap3pandora_out_map,
-		ARRAY_SIZE(omap3pandora_out_map));
+	return 0;
 }
 
 static int omap3pandora_in_init(struct snd_soc_pcm_runtime *rtd)
 {
 	struct snd_soc_codec *codec = rtd->codec;
 	struct snd_soc_dapm_context *dapm = &codec->dapm;
-	int ret;
 
 	/* Not comnnected */
 	snd_soc_dapm_nc_pin(dapm, "HSMIC");
@@ -195,13 +183,7 @@ static int omap3pandora_in_init(struct snd_soc_pcm_runtime *rtd)
 	snd_soc_dapm_nc_pin(dapm, "DIGIMIC0");
 	snd_soc_dapm_nc_pin(dapm, "DIGIMIC1");
 
-	ret = snd_soc_dapm_new_controls(dapm, omap3pandora_in_dapm_widgets,
-				ARRAY_SIZE(omap3pandora_in_dapm_widgets));
-	if (ret < 0)
-		return ret;
-
-	return snd_soc_dapm_add_routes(dapm, omap3pandora_in_map,
-		ARRAY_SIZE(omap3pandora_in_map));
+	return 0;
 }
 
 static struct snd_soc_ops omap3pandora_ops = {
@@ -241,6 +223,11 @@ static struct snd_soc_card snd_soc_card_omap3pandora = {
 	.owner = THIS_MODULE,
 	.dai_link = omap3pandora_dai,
 	.num_links = ARRAY_SIZE(omap3pandora_dai),
+
+	.dapm_widgets = omap3pandora_dapm_widgets,
+	.num_dapm_widgets = ARRAY_SIZE(omap3pandora_dapm_widgets),
+	.dapm_routes = omap3pandora_map,
+	.num_dapm_routes = ARRAY_SIZE(omap3pandora_map),
 };
 
 static struct platform_device *omap3pandora_snd_device;
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 07/12] ASoC: davinci-evm: Register machine level DAPM elements with the card
  2014-03-12 14:27 [PATCH v2 00/12] Cleanup card DAPM and control setup Lars-Peter Clausen
                   ` (5 preceding siblings ...)
  2014-03-12 14:27 ` [PATCH v2 06/12] ASoC: omap3pandora: Convert to table based " Lars-Peter Clausen
@ 2014-03-12 14:27 ` Lars-Peter Clausen
  2014-03-13 10:07   ` Peter Ujfalusi
  2014-03-13 19:11   ` Mark Brown
  2014-03-12 14:27 ` [PATCH v2 08/12] ASoC: snappercl15: Convert to table based DAPM setup Lars-Peter Clausen
                   ` (4 subsequent siblings)
  11 siblings, 2 replies; 26+ messages in thread
From: Lars-Peter Clausen @ 2014-03-12 14:27 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood
  Cc: alsa-devel, Lars-Peter Clausen, Ryan Mallon, Vinod Koul,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula

Machine level DAPM widgets and routes should be registered in the card's DAPM
context, rather than in the CODEC's context.

While we are at it also drop the snd_soc_dapm_enable_pin() calls, since pins are
enabled by default and also turn the snd_soc_dapm_disable_pin() calls into
snd_soc_dapm_nc_pin() calls for unconnected pins.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
Changes since v1:
	* Remove snd_soc_dapm_enable_pin() calls
	* Change snd_soc_dapm_disable_pin() calles into snd_soc_dapm_nc_pin()
---
 sound/soc/davinci/davinci-evm.c | 22 ++++++++--------------
 1 file changed, 8 insertions(+), 14 deletions(-)

diff --git a/sound/soc/davinci/davinci-evm.c b/sound/soc/davinci/davinci-evm.c
index 70ff377..9c296f7 100644
--- a/sound/soc/davinci/davinci-evm.c
+++ b/sound/soc/davinci/davinci-evm.c
@@ -95,35 +95,29 @@ static const struct snd_soc_dapm_route audio_map[] = {
 /* Logic for a aic3x as connected on a davinci-evm */
 static int evm_aic3x_init(struct snd_soc_pcm_runtime *rtd)
 {
+	struct snd_soc_card *card = rtd->card;
 	struct snd_soc_codec *codec = rtd->codec;
-	struct snd_soc_dapm_context *dapm = &codec->dapm;
 	struct device_node *np = codec->card->dev->of_node;
 	int ret;
 
 	/* Add davinci-evm specific widgets */
-	snd_soc_dapm_new_controls(dapm, aic3x_dapm_widgets,
+	snd_soc_dapm_new_controls(&card->dapm, aic3x_dapm_widgets,
 				  ARRAY_SIZE(aic3x_dapm_widgets));
 
 	if (np) {
-		ret = snd_soc_of_parse_audio_routing(codec->card,
-							"ti,audio-routing");
+		ret = snd_soc_of_parse_audio_routing(card, "ti,audio-routing");
 		if (ret)
 			return ret;
 	} else {
 		/* Set up davinci-evm specific audio path audio_map */
-		snd_soc_dapm_add_routes(dapm, audio_map, ARRAY_SIZE(audio_map));
+		snd_soc_dapm_add_routes(&card->dapm, audio_map,
+					ARRAY_SIZE(audio_map));
 	}
 
 	/* not connected */
-	snd_soc_dapm_disable_pin(dapm, "MONO_LOUT");
-	snd_soc_dapm_disable_pin(dapm, "HPLCOM");
-	snd_soc_dapm_disable_pin(dapm, "HPRCOM");
-
-	/* always connected */
-	snd_soc_dapm_enable_pin(dapm, "Headphone Jack");
-	snd_soc_dapm_enable_pin(dapm, "Line Out");
-	snd_soc_dapm_enable_pin(dapm, "Mic Jack");
-	snd_soc_dapm_enable_pin(dapm, "Line In");
+	snd_soc_dapm_nc_pin(&codec->dapm, "MONO_LOUT");
+	snd_soc_dapm_nc_pin(&codec->dapm, "HPLCOM");
+	snd_soc_dapm_nc_pin(&codec->dapm, "HPRCOM");
 
 	return 0;
 }
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 08/12] ASoC: snappercl15: Convert to table based DAPM setup
  2014-03-12 14:27 [PATCH v2 00/12] Cleanup card DAPM and control setup Lars-Peter Clausen
                   ` (6 preceding siblings ...)
  2014-03-12 14:27 ` [PATCH v2 07/12] ASoC: davinci-evm: Register machine level DAPM elements with the card Lars-Peter Clausen
@ 2014-03-12 14:27 ` Lars-Peter Clausen
  2014-03-13  9:38   ` Mark Brown
  2014-03-12 14:27 ` [PATCH v2 09/12] ASoC: s6105-ipcam: " Lars-Peter Clausen
                   ` (3 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Lars-Peter Clausen @ 2014-03-12 14:27 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood
  Cc: alsa-devel, Lars-Peter Clausen, Ryan Mallon, Vinod Koul,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula

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.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 sound/soc/cirrus/snappercl15.c | 18 +++++-------------
 1 file changed, 5 insertions(+), 13 deletions(-)

diff --git a/sound/soc/cirrus/snappercl15.c b/sound/soc/cirrus/snappercl15.c
index 29238a7..5b68b10 100644
--- a/sound/soc/cirrus/snappercl15.c
+++ b/sound/soc/cirrus/snappercl15.c
@@ -65,18 +65,6 @@ static const struct snd_soc_dapm_route audio_map[] = {
 	{"MICIN", NULL, "Mic Jack"},
 };
 
-static int snappercl15_tlv320aic23_init(struct snd_soc_pcm_runtime *rtd)
-{
-	struct snd_soc_codec *codec = rtd->codec;
-	struct snd_soc_dapm_context *dapm = &codec->dapm;
-
-	snd_soc_dapm_new_controls(dapm, tlv320aic23_dapm_widgets,
-				  ARRAY_SIZE(tlv320aic23_dapm_widgets));
-
-	snd_soc_dapm_add_routes(dapm, audio_map, ARRAY_SIZE(audio_map));
-	return 0;
-}
-
 static struct snd_soc_dai_link snappercl15_dai = {
 	.name		= "tlv320aic23",
 	.stream_name	= "AIC23",
@@ -84,7 +72,6 @@ static struct snd_soc_dai_link snappercl15_dai = {
 	.codec_dai_name	= "tlv320aic23-hifi",
 	.codec_name	= "tlv320aic23-codec.0-001a",
 	.platform_name	= "ep93xx-i2s",
-	.init		= snappercl15_tlv320aic23_init,
 	.dai_fmt	= SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_IF |
 			  SND_SOC_DAIFMT_CBS_CFS,
 	.ops		= &snappercl15_ops,
@@ -95,6 +82,11 @@ static struct snd_soc_card snd_soc_snappercl15 = {
 	.owner		= THIS_MODULE,
 	.dai_link	= &snappercl15_dai,
 	.num_links	= 1,
+
+	.dapm_widgets		= tlv320aic23_dapm_widgets,
+	.num_dapm_widgets	= ARRAY_SIZE(tlv320aic23_dapm_widgets),
+	.dapm_routes		= audio_map,
+	.num_dapm_routes	= ARRAY_SIZE(audio_map),
 };
 
 static int snappercl15_probe(struct platform_device *pdev)
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 09/12] ASoC: s6105-ipcam: Convert to table based DAPM setup
  2014-03-12 14:27 [PATCH v2 00/12] Cleanup card DAPM and control setup Lars-Peter Clausen
                   ` (7 preceding siblings ...)
  2014-03-12 14:27 ` [PATCH v2 08/12] ASoC: snappercl15: Convert to table based DAPM setup Lars-Peter Clausen
@ 2014-03-12 14:27 ` Lars-Peter Clausen
  2014-03-13 11:43   ` Mark Brown
  2014-03-12 14:27 ` [PATCH v2 10/12] ASoC: pxa: magician: Convert to table based DAPM and control setup Lars-Peter Clausen
                   ` (2 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: Lars-Peter Clausen @ 2014-03-12 14:27 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood
  Cc: alsa-devel, Lars-Peter Clausen, Ryan Mallon, Vinod Koul,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula

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, since pins are enabled by default. Also drop the snd_soc_dapm_sync()
calls, since they are ignored by the core anyway until the card has been fully
instantiated.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 sound/soc/s6000/s6105-ipcam.c | 28 ++++++++++------------------
 1 file changed, 10 insertions(+), 18 deletions(-)

diff --git a/sound/soc/s6000/s6105-ipcam.c b/sound/soc/s6000/s6105-ipcam.c
index 945e8ab..0b21d1d 100644
--- a/sound/soc/s6000/s6105-ipcam.c
+++ b/sound/soc/s6000/s6105-ipcam.c
@@ -104,8 +104,8 @@ static int output_type_get(struct snd_kcontrol *kcontrol,
 static int output_type_put(struct snd_kcontrol *kcontrol,
 			   struct snd_ctl_elem_value *ucontrol)
 {
-	struct snd_soc_codec *codec = kcontrol->private_data;
-	struct snd_soc_dapm_context *dapm = &codec->dapm;
+	struct snd_soc_card *card = kcontrol->private_data;
+	struct snd_soc_dapm_context *dapm = &card->dapm;
 	unsigned int val = (ucontrol->value.enumerated.item[0] != 0);
 	char *differential = "Audio Out Differential";
 	char *stereo = "Audio Out Stereo";
@@ -137,13 +137,7 @@ static int s6105_aic3x_init(struct snd_soc_pcm_runtime *rtd)
 {
 	struct snd_soc_codec *codec = rtd->codec;
 	struct snd_soc_dapm_context *dapm = &codec->dapm;
-
-	/* Add s6105 specific widgets */
-	snd_soc_dapm_new_controls(dapm, aic3x_dapm_widgets,
-				  ARRAY_SIZE(aic3x_dapm_widgets));
-
-	/* Set up s6105 specific audio path audio_map */
-	snd_soc_dapm_add_routes(dapm, audio_map, ARRAY_SIZE(audio_map));
+	struct snd_soc_card *card = rtd->card;
 
 	/* not present */
 	snd_soc_dapm_nc_pin(dapm, "MONO_LOUT");
@@ -157,17 +151,10 @@ static int s6105_aic3x_init(struct snd_soc_pcm_runtime *rtd)
 	snd_soc_dapm_nc_pin(dapm, "RLOUT");
 	snd_soc_dapm_nc_pin(dapm, "HPRCOM");
 
-	/* always connected */
-	snd_soc_dapm_enable_pin(dapm, "Audio In");
-
 	/* must correspond to audio_out_mux.private_value initializer */
-	snd_soc_dapm_disable_pin(dapm, "Audio Out Differential");
-	snd_soc_dapm_sync(dapm);
-	snd_soc_dapm_enable_pin(dapm, "Audio Out Stereo");
-
-	snd_soc_dapm_sync(dapm);
+	snd_soc_dapm_disable_pin(&card->dapm, "Audio Out Differential");
 
-	snd_ctl_add(codec->card->snd_card, snd_ctl_new1(&audio_out_mux, codec));
+	snd_ctl_add(card->snd_card, snd_ctl_new1(&audio_out_mux, card));
 
 	return 0;
 }
@@ -190,6 +177,11 @@ static struct snd_soc_card snd_soc_card_s6105 = {
 	.owner = THIS_MODULE,
 	.dai_link = &s6105_dai,
 	.num_links = 1,
+
+	.dapm_widgets = aic3x_dapm_widgets,
+	.num_dapm_widgets = ARRAY_SIZE(aic3x_dapm_widgets),
+	.dapm_routes = audio_map,
+	.num_dapm_routes = ARRAY_SIZE(audio_map),
 };
 
 static struct s6000_snd_platform_data s6105_snd_data __initdata = {
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 10/12] ASoC: pxa: magician: Convert to table based DAPM and control setup
  2014-03-12 14:27 [PATCH v2 00/12] Cleanup card DAPM and control setup Lars-Peter Clausen
                   ` (8 preceding siblings ...)
  2014-03-12 14:27 ` [PATCH v2 09/12] ASoC: s6105-ipcam: " Lars-Peter Clausen
@ 2014-03-12 14:27 ` Lars-Peter Clausen
  2014-03-13  9:41   ` Mark Brown
  2014-03-12 14:27 ` [PATCH v2 11/12] ASoC: pxa: tosa: " Lars-Peter Clausen
  2014-03-12 14:27 ` [PATCH v2 12/12] ASoC: Remove name_prefix unset during DAI link init hack Lars-Peter Clausen
  11 siblings, 1 reply; 26+ messages in thread
From: Lars-Peter Clausen @ 2014-03-12 14:27 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood
  Cc: alsa-devel, Lars-Peter Clausen, Ryan Mallon, Vinod Koul,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula

Use table based setup to register the controls and 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.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 sound/soc/pxa/magician.c | 34 ++++++++++++----------------------
 1 file changed, 12 insertions(+), 22 deletions(-)

diff --git a/sound/soc/pxa/magician.c b/sound/soc/pxa/magician.c
index 41ab6678..259e048 100644
--- a/sound/soc/pxa/magician.c
+++ b/sound/soc/pxa/magician.c
@@ -41,9 +41,8 @@ static int magician_hp_switch;
 static int magician_spk_switch = 1;
 static int magician_in_sel = MAGICIAN_MIC;
 
-static void magician_ext_control(struct snd_soc_codec *codec)
+static void magician_ext_control(struct snd_soc_dapm_context *dapm)
 {
-	struct snd_soc_dapm_context *dapm = &codec->dapm;
 
 	snd_soc_dapm_mutex_lock(dapm);
 
@@ -75,10 +74,9 @@ static void magician_ext_control(struct snd_soc_codec *codec)
 static int magician_startup(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_codec *codec = rtd->codec;
 
 	/* check the jack status at stream startup */
-	magician_ext_control(codec);
+	magician_ext_control(&rtd->card->dapm);
 
 	return 0;
 }
@@ -277,13 +275,13 @@ static int magician_get_hp(struct snd_kcontrol *kcontrol,
 static int magician_set_hp(struct snd_kcontrol *kcontrol,
 			     struct snd_ctl_elem_value *ucontrol)
 {
-	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+	struct snd_soc_card *card = snd_kcontrol_chip(kcontrol);
 
 	if (magician_hp_switch == ucontrol->value.integer.value[0])
 		return 0;
 
 	magician_hp_switch = ucontrol->value.integer.value[0];
-	magician_ext_control(codec);
+	magician_ext_control(&card->dapm);
 	return 1;
 }
 
@@ -297,13 +295,13 @@ static int magician_get_spk(struct snd_kcontrol *kcontrol,
 static int magician_set_spk(struct snd_kcontrol *kcontrol,
 			    struct snd_ctl_elem_value *ucontrol)
 {
-	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
+	struct snd_soc_card *card = snd_kcontrol_chip(kcontrol);
 
 	if (magician_spk_switch == ucontrol->value.integer.value[0])
 		return 0;
 
 	magician_spk_switch = ucontrol->value.integer.value[0];
-	magician_ext_control(codec);
+	magician_ext_control(&card->dapm);
 	return 1;
 }
 
@@ -400,7 +398,6 @@ static int magician_uda1380_init(struct snd_soc_pcm_runtime *rtd)
 {
 	struct snd_soc_codec *codec = rtd->codec;
 	struct snd_soc_dapm_context *dapm = &codec->dapm;
-	int err;
 
 	/* NC codec pins */
 	snd_soc_dapm_nc_pin(dapm, "VOUTLHP");
@@ -410,19 +407,6 @@ static int magician_uda1380_init(struct snd_soc_pcm_runtime *rtd)
 	snd_soc_dapm_nc_pin(dapm, "VINL");
 	snd_soc_dapm_nc_pin(dapm, "VINR");
 
-	/* Add magician specific controls */
-	err = snd_soc_add_codec_controls(codec, uda1380_magician_controls,
-				ARRAY_SIZE(uda1380_magician_controls));
-	if (err < 0)
-		return err;
-
-	/* Add magician specific widgets */
-	snd_soc_dapm_new_controls(dapm, uda1380_dapm_widgets,
-				  ARRAY_SIZE(uda1380_dapm_widgets));
-
-	/* Set up magician specific audio path interconnects */
-	snd_soc_dapm_add_routes(dapm, audio_map, ARRAY_SIZE(audio_map));
-
 	return 0;
 }
 
@@ -456,6 +440,12 @@ static struct snd_soc_card snd_soc_card_magician = {
 	.dai_link = magician_dai,
 	.num_links = ARRAY_SIZE(magician_dai),
 
+	.controls = uda1380_magician_controls,
+	.num_controls = ARRAY_SIZE(uda1380_magician_controls),
+	.dapm_widgets = uda1380_dapm_widgets,
+	.num_dapm_widgets = ARRAY_SIZE(uda1380_dapm_widgets),
+	.dapm_routes = audio_map,
+	.num_dapm_routes = ARRAY_SIZE(audio_map),
 };
 
 static struct platform_device *magician_snd_device;
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 11/12] ASoC: pxa: tosa: Convert to table based DAPM and control setup
  2014-03-12 14:27 [PATCH v2 00/12] Cleanup card DAPM and control setup Lars-Peter Clausen
                   ` (9 preceding siblings ...)
  2014-03-12 14:27 ` [PATCH v2 10/12] ASoC: pxa: magician: Convert to table based DAPM and control setup Lars-Peter Clausen
@ 2014-03-12 14:27 ` Lars-Peter Clausen
  2014-03-13  9:41   ` Mark Brown
  2014-03-12 14:27 ` [PATCH v2 12/12] ASoC: Remove name_prefix unset during DAI link init hack Lars-Peter Clausen
  11 siblings, 1 reply; 26+ messages in thread
From: Lars-Peter Clausen @ 2014-03-12 14:27 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood
  Cc: alsa-devel, Lars-Peter Clausen, Ryan Mallon, Vinod Koul,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula

Use table based setup to register the controls and 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.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 sound/soc/pxa/tosa.c | 35 +++++++++++++----------------------
 1 file changed, 13 insertions(+), 22 deletions(-)

diff --git a/sound/soc/pxa/tosa.c b/sound/soc/pxa/tosa.c
index cead165..4a956d1 100644
--- a/sound/soc/pxa/tosa.c
+++ b/sound/soc/pxa/tosa.c
@@ -44,9 +44,8 @@
 static int tosa_jack_func;
 static int tosa_spk_func;
 
-static void tosa_ext_control(struct snd_soc_codec *codec)
+static void tosa_ext_control(struct snd_soc_dapm_context *dapm)
 {
-	struct snd_soc_dapm_context *dapm = &codec->dapm;
 
 	snd_soc_dapm_mutex_lock(dapm);
 
@@ -82,10 +81,9 @@ static void tosa_ext_control(struct snd_soc_codec *codec)
 static int tosa_startup(struct snd_pcm_substream *substream)
 {
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_codec *codec = rtd->codec;
 
 	/* check the jack status at stream startup */
-	tosa_ext_control(codec);
+	tosa_ext_control(&rtd->card->dapm);
 
 	return 0;
 }
@@ -104,13 +102,13 @@ static int tosa_get_jack(struct snd_kcontrol *kcontrol,
 static int tosa_set_jack(struct snd_kcontrol *kcontrol,
 	struct snd_ctl_elem_value *ucontrol)
 {
-	struct snd_soc_codec *codec =  snd_kcontrol_chip(kcontrol);
+	struct snd_soc_card *card = snd_kcontrol_chip(kcontrol);
 
 	if (tosa_jack_func == ucontrol->value.integer.value[0])
 		return 0;
 
 	tosa_jack_func = ucontrol->value.integer.value[0];
-	tosa_ext_control(codec);
+	tosa_ext_control(&card->dapm);
 	return 1;
 }
 
@@ -124,13 +122,13 @@ static int tosa_get_spk(struct snd_kcontrol *kcontrol,
 static int tosa_set_spk(struct snd_kcontrol *kcontrol,
 	struct snd_ctl_elem_value *ucontrol)
 {
-	struct snd_soc_codec *codec =  snd_kcontrol_chip(kcontrol);
+	struct snd_soc_card *card = snd_kcontrol_chip(kcontrol);
 
 	if (tosa_spk_func == ucontrol->value.integer.value[0])
 		return 0;
 
 	tosa_spk_func = ucontrol->value.integer.value[0];
-	tosa_ext_control(codec);
+	tosa_ext_control(&card->dapm);
 	return 1;
 }
 
@@ -191,24 +189,10 @@ static int tosa_ac97_init(struct snd_soc_pcm_runtime *rtd)
 {
 	struct snd_soc_codec *codec = rtd->codec;
 	struct snd_soc_dapm_context *dapm = &codec->dapm;
-	int err;
 
 	snd_soc_dapm_nc_pin(dapm, "OUT3");
 	snd_soc_dapm_nc_pin(dapm, "MONOOUT");
 
-	/* add tosa specific controls */
-	err = snd_soc_add_codec_controls(codec, tosa_controls,
-				ARRAY_SIZE(tosa_controls));
-	if (err < 0)
-		return err;
-
-	/* add tosa specific widgets */
-	snd_soc_dapm_new_controls(dapm, tosa_dapm_widgets,
-				  ARRAY_SIZE(tosa_dapm_widgets));
-
-	/* set up tosa specific audio path audio_map */
-	snd_soc_dapm_add_routes(dapm, audio_map, ARRAY_SIZE(audio_map));
-
 	return 0;
 }
 
@@ -239,6 +223,13 @@ static struct snd_soc_card tosa = {
 	.owner = THIS_MODULE,
 	.dai_link = tosa_dai,
 	.num_links = ARRAY_SIZE(tosa_dai),
+
+	.controls = tosa_controls,
+	.num_controls = ARRAY_SIZE(tosa_controls),
+	.dapm_widgets = tosa_dapm_widgets,
+	.num_dapm_widgets = ARRAY_SIZE(tosa_dapm_widgets),
+	.dapm_routes = audio_map,
+	.num_dapm_routes = ARRAY_SIZE(audio_map),
 };
 
 static int tosa_probe(struct platform_device *pdev)
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [PATCH v2 12/12] ASoC: Remove name_prefix unset during DAI link init hack
  2014-03-12 14:27 [PATCH v2 00/12] Cleanup card DAPM and control setup Lars-Peter Clausen
                   ` (10 preceding siblings ...)
  2014-03-12 14:27 ` [PATCH v2 11/12] ASoC: pxa: tosa: " Lars-Peter Clausen
@ 2014-03-12 14:27 ` Lars-Peter Clausen
  2014-03-25 12:53   ` Mark Brown
  11 siblings, 1 reply; 26+ messages in thread
From: Lars-Peter Clausen @ 2014-03-12 14:27 UTC (permalink / raw)
  To: Mark Brown, Liam Girdwood
  Cc: alsa-devel, Lars-Peter Clausen, Ryan Mallon, Vinod Koul,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula

Before we had card level support for DAPM and controls machine drivers would
register their controls and DAPM elements with the CODEC. This required us to
temporarily unset the name_prefix of a CODEC during the rtd init callback to
avoid the machine level controls getting the CODEC's prefix. Now that all
machine drivers properly register their machine level controls and DAPM elements
with the card rather than with the CODEC we can drop the hack that sets the
CODEC's name_prefix to NULL while calling the DAI link or AUX dev init callback.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
---
 sound/soc/soc-core.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index fe1df50..30d5df0 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1246,7 +1246,7 @@ static int soc_post_component_init(struct snd_soc_card *card,
 	struct snd_soc_dai_link *dai_link = NULL;
 	struct snd_soc_aux_dev *aux_dev = NULL;
 	struct snd_soc_pcm_runtime *rtd;
-	const char *temp, *name;
+	const char *name;
 	int ret = 0;
 
 	if (!dailess) {
@@ -1260,10 +1260,6 @@ static int soc_post_component_init(struct snd_soc_card *card,
 	}
 	rtd->card = card;
 
-	/* machine controls, routes and widgets are not prefixed */
-	temp = codec->name_prefix;
-	codec->name_prefix = NULL;
-
 	/* do machine specific initialization */
 	if (!dailess && dai_link->init)
 		ret = dai_link->init(rtd);
@@ -1273,7 +1269,6 @@ static int soc_post_component_init(struct snd_soc_card *card,
 		dev_err(card->dev, "ASoC: failed to init %s: %d\n", name, ret);
 		return ret;
 	}
-	codec->name_prefix = temp;
 
 	/* register the rtd device */
 	rtd->codec = codec;
-- 
1.8.0

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 08/12] ASoC: snappercl15: Convert to table based DAPM setup
  2014-03-12 14:27 ` [PATCH v2 08/12] ASoC: snappercl15: Convert to table based DAPM setup Lars-Peter Clausen
@ 2014-03-13  9:38   ` Mark Brown
  0 siblings, 0 replies; 26+ messages in thread
From: Mark Brown @ 2014-03-13  9:38 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: alsa-devel, Ryan Mallon, Vinod Koul, Liam Girdwood,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula


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

On Wed, Mar 12, 2014 at 03:27:36PM +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.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 10/12] ASoC: pxa: magician: Convert to table based DAPM and control setup
  2014-03-12 14:27 ` [PATCH v2 10/12] ASoC: pxa: magician: Convert to table based DAPM and control setup Lars-Peter Clausen
@ 2014-03-13  9:41   ` Mark Brown
  0 siblings, 0 replies; 26+ messages in thread
From: Mark Brown @ 2014-03-13  9:41 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: alsa-devel, Ryan Mallon, Vinod Koul, Liam Girdwood,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula


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

On Wed, Mar 12, 2014 at 03:27:38PM +0100, Lars-Peter Clausen wrote:
> Use table based setup to register the controls and 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

Applied, thanks.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 11/12] ASoC: pxa: tosa: Convert to table based DAPM and control setup
  2014-03-12 14:27 ` [PATCH v2 11/12] ASoC: pxa: tosa: " Lars-Peter Clausen
@ 2014-03-13  9:41   ` Mark Brown
  0 siblings, 0 replies; 26+ messages in thread
From: Mark Brown @ 2014-03-13  9:41 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: alsa-devel, Ryan Mallon, Vinod Koul, Liam Girdwood,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula


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

On Wed, Mar 12, 2014 at 03:27:39PM +0100, Lars-Peter Clausen wrote:
> Use table based setup to register the controls and 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

Applied, thanks.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 04/12] ASoC: omap-abe-twl6040: Register machine level DMIC DAPM routes with the card
  2014-03-12 14:27 ` [PATCH v2 04/12] ASoC: omap-abe-twl6040: Register machine level DMIC DAPM routes with the card Lars-Peter Clausen
@ 2014-03-13 10:06   ` Peter Ujfalusi
  2014-03-13 19:10   ` Mark Brown
  1 sibling, 0 replies; 26+ messages in thread
From: Peter Ujfalusi @ 2014-03-13 10:06 UTC (permalink / raw)
  To: Lars-Peter Clausen, Mark Brown, Liam Girdwood
  Cc: alsa-devel, Ryan Mallon, Vinod Koul, Daniel Glöckner,
	Benoit Cousson, Jarkko Nikula

On 03/12/2014 04:27 PM, Lars-Peter Clausen wrote:
> Machine level DAPM widgets and routes should be registered in the card's DAPM
> context, rather than in the CODEC's context.
> 
> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>

Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

> 
> ---
> Changes since v1:
> 	* Only register DMIC DAPM routes with the card, do not join the two routes
> 	  tables into one.
> ---
>  sound/soc/omap/omap-abe-twl6040.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/sound/soc/omap/omap-abe-twl6040.c b/sound/soc/omap/omap-abe-twl6040.c
> index ebb1390..024dafc 100644
> --- a/sound/soc/omap/omap-abe-twl6040.c
> +++ b/sound/soc/omap/omap-abe-twl6040.c
> @@ -203,8 +203,7 @@ static const struct snd_soc_dapm_route dmic_audio_map[] = {
>  
>  static int omap_abe_dmic_init(struct snd_soc_pcm_runtime *rtd)
>  {
> -	struct snd_soc_codec *codec = rtd->codec;
> -	struct snd_soc_dapm_context *dapm = &codec->dapm;
> +	struct snd_soc_dapm_context *dapm = &rtd->card->dapm;
>  
>  	return snd_soc_dapm_add_routes(dapm, dmic_audio_map,
>  				ARRAY_SIZE(dmic_audio_map));
> 


-- 
Péter

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 07/12] ASoC: davinci-evm: Register machine level DAPM elements with the card
  2014-03-12 14:27 ` [PATCH v2 07/12] ASoC: davinci-evm: Register machine level DAPM elements with the card Lars-Peter Clausen
@ 2014-03-13 10:07   ` Peter Ujfalusi
  2014-03-13 19:11   ` Mark Brown
  1 sibling, 0 replies; 26+ messages in thread
From: Peter Ujfalusi @ 2014-03-13 10:07 UTC (permalink / raw)
  To: Lars-Peter Clausen, Mark Brown, Liam Girdwood
  Cc: alsa-devel, Ryan Mallon, Vinod Koul, Daniel Glöckner,
	Benoit Cousson, Jarkko Nikula

On 03/12/2014 04:27 PM, Lars-Peter Clausen wrote:
> Machine level DAPM widgets and routes should be registered in the card's DAPM
> context, rather than in the CODEC's context.
> 
> While we are at it also drop the snd_soc_dapm_enable_pin() calls, since pins are
> enabled by default and also turn the snd_soc_dapm_disable_pin() calls into
> snd_soc_dapm_nc_pin() calls for unconnected pins.
> 
> Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>

Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com>

> ---
> Changes since v1:
> 	* Remove snd_soc_dapm_enable_pin() calls
> 	* Change snd_soc_dapm_disable_pin() calles into snd_soc_dapm_nc_pin()
> ---
>  sound/soc/davinci/davinci-evm.c | 22 ++++++++--------------
>  1 file changed, 8 insertions(+), 14 deletions(-)
> 
> diff --git a/sound/soc/davinci/davinci-evm.c b/sound/soc/davinci/davinci-evm.c
> index 70ff377..9c296f7 100644
> --- a/sound/soc/davinci/davinci-evm.c
> +++ b/sound/soc/davinci/davinci-evm.c
> @@ -95,35 +95,29 @@ static const struct snd_soc_dapm_route audio_map[] = {
>  /* Logic for a aic3x as connected on a davinci-evm */
>  static int evm_aic3x_init(struct snd_soc_pcm_runtime *rtd)
>  {
> +	struct snd_soc_card *card = rtd->card;
>  	struct snd_soc_codec *codec = rtd->codec;
> -	struct snd_soc_dapm_context *dapm = &codec->dapm;
>  	struct device_node *np = codec->card->dev->of_node;
>  	int ret;
>  
>  	/* Add davinci-evm specific widgets */
> -	snd_soc_dapm_new_controls(dapm, aic3x_dapm_widgets,
> +	snd_soc_dapm_new_controls(&card->dapm, aic3x_dapm_widgets,
>  				  ARRAY_SIZE(aic3x_dapm_widgets));
>  
>  	if (np) {
> -		ret = snd_soc_of_parse_audio_routing(codec->card,
> -							"ti,audio-routing");
> +		ret = snd_soc_of_parse_audio_routing(card, "ti,audio-routing");
>  		if (ret)
>  			return ret;
>  	} else {
>  		/* Set up davinci-evm specific audio path audio_map */
> -		snd_soc_dapm_add_routes(dapm, audio_map, ARRAY_SIZE(audio_map));
> +		snd_soc_dapm_add_routes(&card->dapm, audio_map,
> +					ARRAY_SIZE(audio_map));
>  	}
>  
>  	/* not connected */
> -	snd_soc_dapm_disable_pin(dapm, "MONO_LOUT");
> -	snd_soc_dapm_disable_pin(dapm, "HPLCOM");
> -	snd_soc_dapm_disable_pin(dapm, "HPRCOM");
> -
> -	/* always connected */
> -	snd_soc_dapm_enable_pin(dapm, "Headphone Jack");
> -	snd_soc_dapm_enable_pin(dapm, "Line Out");
> -	snd_soc_dapm_enable_pin(dapm, "Mic Jack");
> -	snd_soc_dapm_enable_pin(dapm, "Line In");
> +	snd_soc_dapm_nc_pin(&codec->dapm, "MONO_LOUT");
> +	snd_soc_dapm_nc_pin(&codec->dapm, "HPLCOM");
> +	snd_soc_dapm_nc_pin(&codec->dapm, "HPRCOM");
>  
>  	return 0;
>  }
> 


-- 
Péter

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 09/12] ASoC: s6105-ipcam: Convert to table based DAPM setup
  2014-03-12 14:27 ` [PATCH v2 09/12] ASoC: s6105-ipcam: " Lars-Peter Clausen
@ 2014-03-13 11:43   ` Mark Brown
  0 siblings, 0 replies; 26+ messages in thread
From: Mark Brown @ 2014-03-13 11:43 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: alsa-devel, Ryan Mallon, Vinod Koul, Liam Girdwood,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula


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

On Wed, Mar 12, 2014 at 03:27:37PM +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.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 04/12] ASoC: omap-abe-twl6040: Register machine level DMIC DAPM routes with the card
  2014-03-12 14:27 ` [PATCH v2 04/12] ASoC: omap-abe-twl6040: Register machine level DMIC DAPM routes with the card Lars-Peter Clausen
  2014-03-13 10:06   ` Peter Ujfalusi
@ 2014-03-13 19:10   ` Mark Brown
  1 sibling, 0 replies; 26+ messages in thread
From: Mark Brown @ 2014-03-13 19:10 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: alsa-devel, Ryan Mallon, Vinod Koul, Liam Girdwood,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula


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

On Wed, Mar 12, 2014 at 03:27:32PM +0100, Lars-Peter Clausen wrote:
> Machine level DAPM widgets and routes should be registered in the card's DAPM
> context, rather than in the CODEC's context.

Applied, thanks.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 07/12] ASoC: davinci-evm: Register machine level DAPM elements with the card
  2014-03-12 14:27 ` [PATCH v2 07/12] ASoC: davinci-evm: Register machine level DAPM elements with the card Lars-Peter Clausen
  2014-03-13 10:07   ` Peter Ujfalusi
@ 2014-03-13 19:11   ` Mark Brown
  1 sibling, 0 replies; 26+ messages in thread
From: Mark Brown @ 2014-03-13 19:11 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: alsa-devel, Ryan Mallon, Vinod Koul, Liam Girdwood,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula


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

On Wed, Mar 12, 2014 at 03:27:35PM +0100, Lars-Peter Clausen wrote:
> Machine level DAPM widgets and routes should be registered in the card's DAPM
> context, rather than in the CODEC's context.

Applied, thanks.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 02/12] ASoC: ams-delta: Convert to table based DAPM and control setup
  2014-03-12 14:27 ` [PATCH v2 02/12] ASoC: ams-delta: Convert to table based DAPM and control setup Lars-Peter Clausen
@ 2014-03-21 18:03   ` Mark Brown
  0 siblings, 0 replies; 26+ messages in thread
From: Mark Brown @ 2014-03-21 18:03 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: alsa-devel, Ryan Mallon, Vinod Koul, Liam Girdwood,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula


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

On Wed, Mar 12, 2014 at 03:27:30PM +0100, Lars-Peter Clausen wrote:
> Use table based setup to register the controls and 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.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 05/12] ASoC: omap: rx51: Convert to table based control and DAPM setup
  2014-03-12 14:27 ` [PATCH v2 05/12] ASoC: omap: rx51: Convert to table based control and DAPM setup Lars-Peter Clausen
@ 2014-03-21 18:03   ` Mark Brown
  0 siblings, 0 replies; 26+ messages in thread
From: Mark Brown @ 2014-03-21 18:03 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: alsa-devel, Ryan Mallon, Vinod Koul, Liam Girdwood,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula


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

On Wed, Mar 12, 2014 at 03:27:33PM +0100, Lars-Peter Clausen wrote:
> Use table based setup to register the controls and 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.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 06/12] ASoC: omap3pandora: Convert to table based DAPM setup
  2014-03-12 14:27 ` [PATCH v2 06/12] ASoC: omap3pandora: Convert to table based " Lars-Peter Clausen
@ 2014-03-21 18:04   ` Mark Brown
  0 siblings, 0 replies; 26+ messages in thread
From: Mark Brown @ 2014-03-21 18:04 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: alsa-devel, Ryan Mallon, Vinod Koul, Liam Girdwood,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula


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

On Wed, Mar 12, 2014 at 03:27:34PM +0100, Lars-Peter Clausen wrote:
> Use table based setup to register the controls and 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.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 03/12] ASoC: mfld_machine: Convert to table based DAPM and control setup
  2014-03-12 14:27 ` [PATCH v2 03/12] ASoC: mfld_machine: " Lars-Peter Clausen
@ 2014-03-21 18:04   ` Mark Brown
  0 siblings, 0 replies; 26+ messages in thread
From: Mark Brown @ 2014-03-21 18:04 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: alsa-devel, Ryan Mallon, Vinod Koul, Liam Girdwood,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula


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

On Wed, Mar 12, 2014 at 03:27:31PM +0100, Lars-Peter Clausen wrote:
> Use table based setup to register the controls and DAPM widgets and routes.
> This on one hand makes the code a bit 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.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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



^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [PATCH v2 12/12] ASoC: Remove name_prefix unset during DAI link init hack
  2014-03-12 14:27 ` [PATCH v2 12/12] ASoC: Remove name_prefix unset during DAI link init hack Lars-Peter Clausen
@ 2014-03-25 12:53   ` Mark Brown
  0 siblings, 0 replies; 26+ messages in thread
From: Mark Brown @ 2014-03-25 12:53 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: alsa-devel, Ryan Mallon, Vinod Koul, Liam Girdwood,
	Peter Ujfalusi, Daniel Glöckner, Benoit Cousson,
	Jarkko Nikula


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

On Wed, Mar 12, 2014 at 03:27:40PM +0100, Lars-Peter Clausen wrote:
> Before we had card level support for DAPM and controls machine drivers would
> register their controls and DAPM elements with the CODEC. This required us to
> temporarily unset the name_prefix of a CODEC during the rtd init callback to

Applied, thanks.

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

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



^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2014-03-25 12:53 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-03-12 14:27 [PATCH v2 00/12] Cleanup card DAPM and control setup Lars-Peter Clausen
2014-03-12 14:27 ` [PATCH v2 01/12] ASoC: ams-delta: Fix compile error Lars-Peter Clausen
2014-03-12 14:27 ` [PATCH v2 02/12] ASoC: ams-delta: Convert to table based DAPM and control setup Lars-Peter Clausen
2014-03-21 18:03   ` Mark Brown
2014-03-12 14:27 ` [PATCH v2 03/12] ASoC: mfld_machine: " Lars-Peter Clausen
2014-03-21 18:04   ` Mark Brown
2014-03-12 14:27 ` [PATCH v2 04/12] ASoC: omap-abe-twl6040: Register machine level DMIC DAPM routes with the card Lars-Peter Clausen
2014-03-13 10:06   ` Peter Ujfalusi
2014-03-13 19:10   ` Mark Brown
2014-03-12 14:27 ` [PATCH v2 05/12] ASoC: omap: rx51: Convert to table based control and DAPM setup Lars-Peter Clausen
2014-03-21 18:03   ` Mark Brown
2014-03-12 14:27 ` [PATCH v2 06/12] ASoC: omap3pandora: Convert to table based " Lars-Peter Clausen
2014-03-21 18:04   ` Mark Brown
2014-03-12 14:27 ` [PATCH v2 07/12] ASoC: davinci-evm: Register machine level DAPM elements with the card Lars-Peter Clausen
2014-03-13 10:07   ` Peter Ujfalusi
2014-03-13 19:11   ` Mark Brown
2014-03-12 14:27 ` [PATCH v2 08/12] ASoC: snappercl15: Convert to table based DAPM setup Lars-Peter Clausen
2014-03-13  9:38   ` Mark Brown
2014-03-12 14:27 ` [PATCH v2 09/12] ASoC: s6105-ipcam: " Lars-Peter Clausen
2014-03-13 11:43   ` Mark Brown
2014-03-12 14:27 ` [PATCH v2 10/12] ASoC: pxa: magician: Convert to table based DAPM and control setup Lars-Peter Clausen
2014-03-13  9:41   ` Mark Brown
2014-03-12 14:27 ` [PATCH v2 11/12] ASoC: pxa: tosa: " Lars-Peter Clausen
2014-03-13  9:41   ` Mark Brown
2014-03-12 14:27 ` [PATCH v2 12/12] ASoC: Remove name_prefix unset during DAI link init hack Lars-Peter Clausen
2014-03-25 12:53   ` Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).