* [PATCH] asoc: core - refactored DAPM pin control API.
@ 2008-07-04 14:07 Liam Girdwood
2008-07-04 15:02 ` Takashi Iwai
0 siblings, 1 reply; 5+ messages in thread
From: Liam Girdwood @ 2008-07-04 14:07 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel
Refactored snd_soc_dapm_set_endpoint() to snd_soc_dapm_enable_pin() and
snd_soc_dapm_disable_pin().
Renamed snd_soc_dapm_sync_endpoints() to snd_soc_dapm_sync().
Renamed snd_soc_dapm_get_endpoint_status() to
snd_soc_dapm_get_pin_status().
Signed-off-by: Liam Girdwood <lg@opensource.wolfsonmicro.com>
---
include/sound/soc-dapm.h | 11 ++--
sound/soc/at91/eti_b1_wm8731.c | 10 ++--
sound/soc/codecs/tlv320aic3x.c | 4 +-
sound/soc/davinci/davinci-evm.c | 16 +++---
sound/soc/omap/n810.c | 21 ++++--
sound/soc/pxa/corgi.c | 42 +++++++------
sound/soc/pxa/poodle.c | 24 ++++----
sound/soc/pxa/spitz.c | 62 ++++++++++----------
sound/soc/pxa/tosa.c | 30 +++++----
sound/soc/s3c24xx/neo1973_wm8753.c | 116 ++++++++++++++++++------------------
sound/soc/sh/exmmb-ac97.c | 2 +-
sound/soc/sh/exmmb-i2s.c | 2 +-
sound/soc/sh/sh7760-ac97.c | 2 +-
sound/soc/soc-dapm.c | 81 ++++++++++++++++---------
14 files changed, 227 insertions(+), 196 deletions(-)
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h
index f8223fa..64adbe5 100644
--- a/include/sound/soc-dapm.h
+++ b/include/sound/soc-dapm.h
@@ -227,12 +227,11 @@ int snd_soc_dapm_set_bias_level(struct snd_soc_device *socdev,
/* dapm sys fs - used by the core */
int snd_soc_dapm_sys_add(struct device *dev);
-/* dapm audio endpoint control */
-int snd_soc_dapm_set_endpoint(struct snd_soc_codec *codec,
- char *pin, int status);
-int snd_soc_dapm_get_endpoint_status(struct snd_soc_codec *codec,
- char *pin);
-int snd_soc_dapm_sync_endpoints(struct snd_soc_codec *codec);
+/* dapm audio pin control and status */
+int snd_soc_dapm_enable_pin(struct snd_soc_codec *codec, char *pin);
+int snd_soc_dapm_disable_pin(struct snd_soc_codec *codec, char *pin);
+int snd_soc_dapm_get_pin_status(struct snd_soc_codec *codec, char *pin);
+int snd_soc_dapm_sync(struct snd_soc_codec *codec);
/* dapm widget types */
enum snd_soc_dapm_type {
diff --git a/sound/soc/at91/eti_b1_wm8731.c b/sound/soc/at91/eti_b1_wm8731.c
index 83614dd..c8b6bc2 100644
--- a/sound/soc/at91/eti_b1_wm8731.c
+++ b/sound/soc/at91/eti_b1_wm8731.c
@@ -216,14 +216,14 @@ static int eti_b1_wm8731_init(struct snd_soc_codec *codec)
snd_soc_dapm_add_route(codec, intercon, ARRAY_SIZE(intercon));
/* not connected */
- snd_soc_dapm_set_endpoint(codec, "RLINEIN", 0);
- snd_soc_dapm_set_endpoint(codec, "LLINEIN", 0);
+ snd_soc_dapm_disable_pin(codec, "RLINEIN");
+ snd_soc_dapm_disable_pin(codec, "LLINEIN");
/* always connected */
- snd_soc_dapm_set_endpoint(codec, "Int Mic", 1);
- snd_soc_dapm_set_endpoint(codec, "Ext Spk", 1);
+ snd_soc_dapm_enable_pin(codec, "Int Mic");
+ snd_soc_dapm_enable_pin(codec, "Ext Spk");
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c
index 528c26a..b735ddb 100644
--- a/sound/soc/codecs/tlv320aic3x.c
+++ b/sound/soc/codecs/tlv320aic3x.c
@@ -29,7 +29,7 @@
* ---------------------------------------
*
* Hence the machine layer should disable unsupported inputs/outputs by
- * snd_soc_dapm_set_endpoint(codec, "MONO_LOUT", 0), etc.
+ * snd_soc_dapm_disable_pin(codec, "MONO_LOUT"), etc.
*/
#include <linux/module.h>
@@ -206,7 +206,7 @@ static int snd_soc_dapm_put_volsw_aic3x(struct snd_kcontrol *kcontrol,
}
if (found)
- snd_soc_dapm_sync_endpoints(widget->codec);
+ snd_soc_dapm_sync(widget->codec);
}
ret = snd_soc_update_bits(widget->codec, reg, val_mask, val);
diff --git a/sound/soc/davinci/davinci-evm.c b/sound/soc/davinci/davinci-evm.c
index 4c70a0e..091eae3 100644
--- a/sound/soc/davinci/davinci-evm.c
+++ b/sound/soc/davinci/davinci-evm.c
@@ -103,17 +103,17 @@ static int evm_aic3x_init(struct snd_soc_codec *codec)
snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
/* not connected */
- snd_soc_dapm_set_endpoint(codec, "MONO_LOUT", 0);
- snd_soc_dapm_set_endpoint(codec, "HPLCOM", 0);
- snd_soc_dapm_set_endpoint(codec, "HPRCOM", 0);
+ snd_soc_dapm_disable_pin(codec, "MONO_LOUT");
+ snd_soc_dapm_disable_pin(codec, "HPLCOM");
+ snd_soc_dapm_disable_pin(codec, "HPRCOM");
/* always connected */
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 1);
- snd_soc_dapm_set_endpoint(codec, "Line Out", 1);
- snd_soc_dapm_set_endpoint(codec, "Mic Jack", 1);
- snd_soc_dapm_set_endpoint(codec, "Line In", 1);
+ snd_soc_dapm_enable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_enable_pin(codec, "Line Out");
+ snd_soc_dapm_enable_pin(codec, "Mic Jack");
+ snd_soc_dapm_enable_pin(codec, "Line In");
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/omap/n810.c b/sound/soc/omap/n810.c
index c168a64..182d690 100644
--- a/sound/soc/omap/n810.c
+++ b/sound/soc/omap/n810.c
@@ -49,10 +49,17 @@ static int n810_jack_func;
static void n810_ext_control(struct snd_soc_codec *codec)
{
- snd_soc_dapm_set_endpoint(codec, "Ext Spk", n810_spk_func);
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", n810_jack_func);
+ if (n810_spk_func)
+ snd_soc_dapm_enable_pin(codec, "Ext Spk");
+ else
+ snd_soc_dapm_disable_pin(codec, "Ext Spk");
+
+ if (n810_jack_func)
+ snd_soc_dapm_enable_pin(codec, "Headphone Jack");
+ else
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
}
static int n810_startup(struct snd_pcm_substream *substream)
@@ -204,9 +211,9 @@ static int n810_aic33_init(struct snd_soc_codec *codec)
int i, err;
/* Not connected */
- snd_soc_dapm_set_endpoint(codec, "MONO_LOUT", 0);
- snd_soc_dapm_set_endpoint(codec, "HPLCOM", 0);
- snd_soc_dapm_set_endpoint(codec, "HPRCOM", 0);
+ snd_soc_dapm_disable_pin(codec, "MONO_LOUT");
+ snd_soc_dapm_disable_pin(codec, "HPLCOM");
+ snd_soc_dapm_disable_pin(codec, "HPRCOM");
/* Add N810 specific controls */
for (i = 0; i < ARRAY_SIZE(aic33_n810_controls); i++) {
@@ -223,7 +230,7 @@ static int n810_aic33_init(struct snd_soc_codec *codec)
/* Set up N810 specific audio path audio_map */
snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/pxa/corgi.c b/sound/soc/pxa/corgi.c
index edeea63..db18ef6 100644
--- a/sound/soc/pxa/corgi.c
+++ b/sound/soc/pxa/corgi.c
@@ -50,47 +50,51 @@ static int corgi_spk_func;
static void corgi_ext_control(struct snd_soc_codec *codec)
{
- int spk = 0, mic = 0, line = 0, hp = 0, hs = 0;
-
/* set up jack connection */
switch (corgi_jack_func) {
case CORGI_HP:
- hp = 1;
/* set = unmute headphone */
set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
+ snd_soc_dapm_disable_pin(codec, "Mic Jack");
+ snd_soc_dapm_disable_pin(codec, "Line Jack");
+ snd_soc_dapm_enable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_disable_pin(codec, "Headset Jack");
break;
case CORGI_MIC:
- mic = 1;
/* reset = mute headphone */
reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
+ snd_soc_dapm_enable_pin(codec, "Mic Jack");
+ snd_soc_dapm_disable_pin(codec, "Line Jack");
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_disable_pin(codec, "Headset Jack");
break;
case CORGI_LINE:
- line = 1;
reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
+ snd_soc_dapm_disable_pin(codec, "Mic Jack");
+ snd_soc_dapm_enable_pin(codec, "Line Jack");
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_disable_pin(codec, "Headset Jack");
break;
case CORGI_HEADSET:
- hs = 1;
- mic = 1;
reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
+ snd_soc_dapm_enable_pin(codec, "Mic Jack");
+ snd_soc_dapm_disable_pin(codec, "Line Jack");
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_enable_pin(codec, "Headset Jack");
break;
}
if (corgi_spk_func == CORGI_SPK_ON)
- spk = 1;
-
- /* set the enpoints to their new connetion states */
- snd_soc_dapm_set_endpoint(codec, "Ext Spk", spk);
- snd_soc_dapm_set_endpoint(codec, "Mic Jack", mic);
- snd_soc_dapm_set_endpoint(codec, "Line Jack", line);
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", hp);
- snd_soc_dapm_set_endpoint(codec, "Headset Jack", hs);
+ snd_soc_dapm_enable_pin(codec, "Ext Spk");
+ else
+ snd_soc_dapm_disable_pin(codec, "Ext Spk");
/* signal a DAPM event */
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
}
static int corgi_startup(struct snd_pcm_substream *substream)
@@ -285,8 +289,8 @@ static int corgi_wm8731_init(struct snd_soc_codec *codec)
{
int i, err;
- snd_soc_dapm_set_endpoint(codec, "LLINEIN", 0);
- snd_soc_dapm_set_endpoint(codec, "RLINEIN", 0);
+ snd_soc_dapm_disable_pin(codec, "LLINEIN");
+ snd_soc_dapm_disable_pin(codec, "RLINEIN");
/* Add corgi specific controls */
for (i = 0; i < ARRAY_SIZE(wm8731_corgi_controls); i++) {
@@ -303,7 +307,7 @@ static int corgi_wm8731_init(struct snd_soc_codec *codec)
/* Set up corgi specific audio path audio_map */
snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/pxa/poodle.c b/sound/soc/pxa/poodle.c
index 810f1fe..36cbf69 100644
--- a/sound/soc/pxa/poodle.c
+++ b/sound/soc/pxa/poodle.c
@@ -48,8 +48,6 @@ static int poodle_spk_func;
static void poodle_ext_control(struct snd_soc_codec *codec)
{
- int spk = 0;
-
/* set up jack connection */
if (poodle_jack_func == POODLE_HP) {
/* set = unmute headphone */
@@ -57,23 +55,23 @@ static void poodle_ext_control(struct snd_soc_codec *codec)
POODLE_LOCOMO_GPIO_MUTE_L, 1);
locomo_gpio_write(&poodle_locomo_device.dev,
POODLE_LOCOMO_GPIO_MUTE_R, 1);
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 1);
+ snd_soc_dapm_enable_pin(codec, "Headphone Jack");
} else {
locomo_gpio_write(&poodle_locomo_device.dev,
POODLE_LOCOMO_GPIO_MUTE_L, 0);
locomo_gpio_write(&poodle_locomo_device.dev,
POODLE_LOCOMO_GPIO_MUTE_R, 0);
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
}
- if (poodle_spk_func == POODLE_SPK_ON)
- spk = 1;
-
/* set the enpoints to their new connetion states */
- snd_soc_dapm_set_endpoint(codec, "Ext Spk", spk);
+ if (poodle_spk_func == POODLE_SPK_ON)
+ snd_soc_dapm_enable_pin(codec, "Ext Spk");
+ else
+ snd_soc_dapm_disable_pin(codec, "Ext Spk");
/* signal a DAPM event */
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
}
static int poodle_startup(struct snd_pcm_substream *substream)
@@ -248,9 +246,9 @@ static int poodle_wm8731_init(struct snd_soc_codec *codec)
{
int i, err;
- snd_soc_dapm_set_endpoint(codec, "LLINEIN", 0);
- snd_soc_dapm_set_endpoint(codec, "RLINEIN", 0);
- snd_soc_dapm_set_endpoint(codec, "MICIN", 1);
+ snd_soc_dapm_disable_pin(codec, "LLINEIN");
+ snd_soc_dapm_disable_pin(codec, "RLINEIN");
+ snd_soc_dapm_enable_pin(codec, "MICIN");
/* Add poodle specific controls */
for (i = 0; i < ARRAY_SIZE(wm8731_poodle_controls); i++) {
@@ -267,7 +265,7 @@ static int poodle_wm8731_init(struct snd_soc_codec *codec)
/* Set up poodle specific audio path audio_map */
snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/pxa/spitz.c b/sound/soc/pxa/spitz.c
index 092b5c7..ec18163 100644
--- a/sound/soc/pxa/spitz.c
+++ b/sound/soc/pxa/spitz.c
@@ -51,60 +51,60 @@ static int spitz_spk_func;
static void spitz_ext_control(struct snd_soc_codec *codec)
{
if (spitz_spk_func == SPITZ_SPK_ON)
- snd_soc_dapm_set_endpoint(codec, "Ext Spk", 1);
+ snd_soc_dapm_enable_pin(codec, "Ext Spk");
else
- snd_soc_dapm_set_endpoint(codec, "Ext Spk", 0);
+ snd_soc_dapm_disable_pin(codec, "Ext Spk");
/* set up jack connection */
switch (spitz_jack_func) {
case SPITZ_HP:
/* enable and unmute hp jack, disable mic bias */
- snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Mic Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 1);
+ snd_soc_dapm_disable_pin(codec, "Headset Jack");
+ snd_soc_dapm_disable_pin(codec, "Mic Jack");
+ snd_soc_dapm_disable_pin(codec, "Line Jack");
+ snd_soc_dapm_enable_pin(codec, "Headphone Jack");
set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
break;
case SPITZ_MIC:
/* enable mic jack and bias, mute hp */
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Mic Jack", 1);
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_disable_pin(codec, "Headset Jack");
+ snd_soc_dapm_disable_pin(codec, "Line Jack");
+ snd_soc_dapm_enable_pin(codec, "Mic Jack");
reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
break;
case SPITZ_LINE:
/* enable line jack, disable mic bias and mute hp */
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Mic Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Line Jack", 1);
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_disable_pin(codec, "Headset Jack");
+ snd_soc_dapm_disable_pin(codec, "Mic Jack");
+ snd_soc_dapm_enable_pin(codec, "Line Jack");
reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
break;
case SPITZ_HEADSET:
/* enable and unmute headset jack enable mic bias, mute L hp */
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Mic Jack", 1);
- snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Jack", 1);
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_enable_pin(codec, "Mic Jack");
+ snd_soc_dapm_disable_pin(codec, "Line Jack");
+ snd_soc_dapm_enable_pin(codec, "Headset Jack");
reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
break;
case SPITZ_HP_OFF:
/* jack removed, everything off */
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Mic Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_disable_pin(codec, "Headset Jack");
+ snd_soc_dapm_disable_pin(codec, "Mic Jack");
+ snd_soc_dapm_disable_pin(codec, "Line Jack");
reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
break;
}
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
}
static int spitz_startup(struct snd_pcm_substream *substream)
@@ -291,13 +291,13 @@ static int spitz_wm8750_init(struct snd_soc_codec *codec)
int i, err;
/* NC codec pins */
- snd_soc_dapm_set_endpoint(codec, "RINPUT1", 0);
- snd_soc_dapm_set_endpoint(codec, "LINPUT2", 0);
- snd_soc_dapm_set_endpoint(codec, "RINPUT2", 0);
- snd_soc_dapm_set_endpoint(codec, "LINPUT3", 0);
- snd_soc_dapm_set_endpoint(codec, "RINPUT3", 0);
- snd_soc_dapm_set_endpoint(codec, "OUT3", 0);
- snd_soc_dapm_set_endpoint(codec, "MONO", 0);
+ snd_soc_dapm_disable_pin(codec, "RINPUT1");
+ snd_soc_dapm_disable_pin(codec, "LINPUT2");
+ snd_soc_dapm_disable_pin(codec, "RINPUT2");
+ snd_soc_dapm_disable_pin(codec, "LINPUT3");
+ snd_soc_dapm_disable_pin(codec, "RINPUT3");
+ snd_soc_dapm_disable_pin(codec, "OUT3");
+ snd_soc_dapm_disable_pin(codec, "MONO");
/* Add spitz specific controls */
for (i = 0; i < ARRAY_SIZE(wm8750_spitz_controls); i++) {
@@ -314,7 +314,7 @@ static int spitz_wm8750_init(struct snd_soc_codec *codec)
/* Set up spitz specific audio paths */
snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/pxa/tosa.c b/sound/soc/pxa/tosa.c
index 465ff0f..dba7689 100644
--- a/sound/soc/pxa/tosa.c
+++ b/sound/soc/pxa/tosa.c
@@ -52,29 +52,31 @@ static int tosa_spk_func;
static void tosa_ext_control(struct snd_soc_codec *codec)
{
- int spk = 0, mic_int = 0, hp = 0, hs = 0;
-
/* set up jack connection */
switch (tosa_jack_func) {
case TOSA_HP:
- hp = 1;
+ snd_soc_dapm_disable_pin(codec, "Mic (Internal)");
+ snd_soc_dapm_enable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_disable_pin(codec, "Headset Jack");
break;
case TOSA_MIC_INT:
- mic_int = 1;
+ snd_soc_dapm_enable_pin(codec, "Mic (Internal)");
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_disable_pin(codec, "Headset Jack");
break;
case TOSA_HEADSET:
- hs = 1;
+ snd_soc_dapm_disable_pin(codec, "Mic (Internal)");
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_enable_pin(codec, "Headset Jack");
break;
}
if (tosa_spk_func == TOSA_SPK_ON)
- spk = 1;
+ snd_soc_dapm_enable_pin(codec, "Speaker");
+ else
+ snd_soc_dapm_disable_pin(codec, "Speaker");
- snd_soc_dapm_set_endpoint(codec, "Speaker", spk);
- snd_soc_dapm_set_endpoint(codec, "Mic (Internal)", mic_int);
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", hp);
- snd_soc_dapm_set_endpoint(codec, "Headset Jack", hs);
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
}
static int tosa_startup(struct snd_pcm_substream *substream)
@@ -191,8 +193,8 @@ static int tosa_ac97_init(struct snd_soc_codec *codec)
{
int i, err;
- snd_soc_dapm_set_endpoint(codec, "OUT3", 0);
- snd_soc_dapm_set_endpoint(codec, "MONOOUT", 0);
+ snd_soc_dapm_disable_pin(codec, "OUT3");
+ snd_soc_dapm_disable_pin(codec, "MONOOUT");
/* add tosa specific controls */
for (i = 0; i < ARRAY_SIZE(tosa_controls); i++) {
@@ -209,7 +211,7 @@ static int tosa_ac97_init(struct snd_soc_codec *codec)
/* set up tosa specific audio path audio_map */
snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/s3c24xx/neo1973_wm8753.c b/sound/soc/s3c24xx/neo1973_wm8753.c
index 3485123..f053e85 100644
--- a/sound/soc/s3c24xx/neo1973_wm8753.c
+++ b/sound/soc/s3c24xx/neo1973_wm8753.c
@@ -250,77 +250,77 @@ static int set_scenario_endpoints(struct snd_soc_codec *codec, int scenario)
switch (neo1973_scenario) {
case NEO_AUDIO_OFF:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
+ snd_soc_dapm_disable_pin(codec, "Audio Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line In");
+ snd_soc_dapm_disable_pin(codec, "Headset Mic");
+ snd_soc_dapm_disable_pin(codec, "Call Mic");
break;
case NEO_GSM_CALL_AUDIO_HANDSET:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 1);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 1);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 1);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 1);
+ snd_soc_dapm_enable_pin(codec, "Audio Out");
+ snd_soc_dapm_enable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_enable_pin(codec, "GSM Line In");
+ snd_soc_dapm_disable_pin(codec, "Headset Mic");
+ snd_soc_dapm_enable_pin(codec, "Call Mic");
break;
case NEO_GSM_CALL_AUDIO_HEADSET:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 1);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 1);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 1);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 1);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
+ snd_soc_dapm_enable_pin(codec, "Audio Out");
+ snd_soc_dapm_enable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_enable_pin(codec, "GSM Line In");
+ snd_soc_dapm_enable_pin(codec, "Headset Mic");
+ snd_soc_dapm_disable_pin(codec, "Call Mic");
break;
case NEO_GSM_CALL_AUDIO_BLUETOOTH:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 1);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 1);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
+ snd_soc_dapm_disable_pin(codec, "Audio Out");
+ snd_soc_dapm_enable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_enable_pin(codec, "GSM Line In");
+ snd_soc_dapm_disable_pin(codec, "Headset Mic");
+ snd_soc_dapm_disable_pin(codec, "Call Mic");
break;
case NEO_STEREO_TO_SPEAKERS:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 1);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
+ snd_soc_dapm_enable_pin(codec, "Audio Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line In");
+ snd_soc_dapm_disable_pin(codec, "Headset Mic");
+ snd_soc_dapm_disable_pin(codec, "Call Mic");
break;
case NEO_STEREO_TO_HEADPHONES:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 1);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
+ snd_soc_dapm_enable_pin(codec, "Audio Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line In");
+ snd_soc_dapm_disable_pin(codec, "Headset Mic");
+ snd_soc_dapm_disable_pin(codec, "Call Mic");
break;
case NEO_CAPTURE_HANDSET:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 1);
+ snd_soc_dapm_disable_pin(codec, "Audio Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line In");
+ snd_soc_dapm_disable_pin(codec, "Headset Mic");
+ snd_soc_dapm_enable_pin(codec, "Call Mic");
break;
case NEO_CAPTURE_HEADSET:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 1);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
+ snd_soc_dapm_disable_pin(codec, "Audio Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line In");
+ snd_soc_dapm_enable_pin(codec, "Headset Mic");
+ snd_soc_dapm_disable_pin(codec, "Call Mic");
break;
case NEO_CAPTURE_BLUETOOTH:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
+ snd_soc_dapm_disable_pin(codec, "Audio Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line In");
+ snd_soc_dapm_disable_pin(codec, "Headset Mic");
+ snd_soc_dapm_disable_pin(codec, "Call Mic");
break;
default:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
+ snd_soc_dapm_disable_pin(codec, "Audio Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line In");
+ snd_soc_dapm_disable_pin(codec, "Headset Mic");
+ snd_soc_dapm_disable_pin(codec, "Call Mic");
}
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
@@ -511,12 +511,12 @@ static int neo1973_wm8753_init(struct snd_soc_codec *codec)
DBG("Entered %s\n", __func__);
/* set up NC codec pins */
- snd_soc_dapm_set_endpoint(codec, "LOUT2", 0);
- snd_soc_dapm_set_endpoint(codec, "ROUT2", 0);
- snd_soc_dapm_set_endpoint(codec, "OUT3", 0);
- snd_soc_dapm_set_endpoint(codec, "OUT4", 0);
- snd_soc_dapm_set_endpoint(codec, "LINE1", 0);
- snd_soc_dapm_set_endpoint(codec, "LINE2", 0);
+ snd_soc_dapm_disable_pin(codec, "LOUT2");
+ snd_soc_dapm_disable_pin(codec, "ROUT2");
+ snd_soc_dapm_disable_pin(codec, "OUT3");
+ snd_soc_dapm_disable_pin(codec, "OUT4");
+ snd_soc_dapm_disable_pin(codec, "LINE1");
+ snd_soc_dapm_disable_pin(codec, "LINE2");
/* set endpoints to default mode */
@@ -539,7 +539,7 @@ static int neo1973_wm8753_init(struct snd_soc_codec *codec)
err = snd_soc_dapm_add_routes(codec, dapm_routes,
ARRAY_SIZE(dapm_routes));
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/sh/exmmb-ac97.c b/sound/soc/sh/exmmb-ac97.c
index e8d710f..b0b4a20 100644
--- a/sound/soc/sh/exmmb-ac97.c
+++ b/sound/soc/sh/exmmb-ac97.c
@@ -46,7 +46,7 @@ static int exm7760_ac97_machine_init(struct snd_soc_codec *codec)
{
MSG("machine_init() enter\n");
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
MSG("machine_init() leave\n");
return 0;
diff --git a/sound/soc/sh/exmmb-i2s.c b/sound/soc/sh/exmmb-i2s.c
index db1341e..f253f94 100644
--- a/sound/soc/sh/exmmb-i2s.c
+++ b/sound/soc/sh/exmmb-i2s.c
@@ -116,7 +116,7 @@ static int exm7760_i2s_machine_init(struct snd_soc_codec *codec)
cs4251x_gpio_mode(codec, CS4251X_RXP_6,
CS4251X_GPIO_MODE_GPOLOW, 0, 0);
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/sh/sh7760-ac97.c b/sound/soc/sh/sh7760-ac97.c
index 2f91de8..846d1b3 100644
--- a/sound/soc/sh/sh7760-ac97.c
+++ b/sound/soc/sh/sh7760-ac97.c
@@ -25,7 +25,7 @@ extern struct snd_soc_platform sh7760_soc_platform;
static int machine_init(struct snd_soc_codec *codec)
{
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 9e83357..0813c08 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -857,8 +857,25 @@ static void dapm_free_widgets(struct snd_soc_codec *codec)
}
}
+static int snd_soc_dapm_set_pin(struct snd_soc_codec *codec,
+ char *pin, int status)
+{
+ struct snd_soc_dapm_widget *w;
+
+ list_for_each_entry(w, &codec->dapm_widgets, list) {
+ if (!strcmp(w->name, pin)) {
+ dbg("dapm: %s: pin %s\n", codec->name, pin);
+ w->connected = status;
+ return 0;
+ }
+ }
+
+ dbg("dapm: %s: configuring unknown pin %s\n", codec->name, pin);
+ return -EINVAL;
+}
+
/**
- * snd_soc_dapm_sync_endpoints - scan and power dapm paths
+ * snd_soc_dapm_sync - scan and power dapm paths
* @codec: audio codec
*
* Walks all dapm audio paths and powers widgets according to their
@@ -866,11 +883,11 @@ static void dapm_free_widgets(struct snd_soc_codec *codec)
*
* Returns 0 for success.
*/
-int snd_soc_dapm_sync_endpoints(struct snd_soc_codec *codec)
+int snd_soc_dapm_sync(struct snd_soc_codec *codec)
{
return dapm_power_widgets(codec, SND_SOC_DAPM_STREAM_NOP);
}
-EXPORT_SYMBOL_GPL(snd_soc_dapm_sync_endpoints);
+EXPORT_SYMBOL_GPL(snd_soc_dapm_sync);
static int snd_soc_dapm_add_route(struct snd_soc_codec *codec,
const char *sink, const char *control, const char *source)
@@ -1418,53 +1435,57 @@ int snd_soc_dapm_set_bias_level(struct snd_soc_device *socdev,
}
/**
- * snd_soc_dapm_set_endpoint - set audio endpoint status
- * @codec: audio codec
- * @endpoint: audio signal endpoint (or start point)
- * @status: point status
- *
- * Set audio endpoint status - connected or disconnected.
+ * snd_soc_dapm_enable_pin - enable pin.
+ * @snd_soc_codec: SoC codec
+ * @pin: pin name
*
- * Returns 0 for success else error.
+ * Enables input/output pin and it's parents or children widgets iff there is
+ * a valid audio route and active audio stream.
+ * NOTE: snd_soc_dapm_sync() needs to be called after this for DAPM to
+ * do any widget power switching.
*/
-int snd_soc_dapm_set_endpoint(struct snd_soc_codec *codec,
- char *endpoint, int status)
+int snd_soc_dapm_enable_pin(struct snd_soc_codec *codec, char *pin)
{
- struct snd_soc_dapm_widget *w;
-
- list_for_each_entry(w, &codec->dapm_widgets, list) {
- if (!strcmp(w->name, endpoint)) {
- w->connected = status;
- return 0;
- }
- }
+ return snd_soc_dapm_set_pin(codec, pin, 1);
+}
+EXPORT_SYMBOL_GPL(snd_soc_dapm_enable_pin);
- return -ENODEV;
+/**
+ * snd_soc_dapm_disable_pin - disable pin.
+ * @codec: SoC codec
+ * @pin: pin name
+ *
+ * Disables input/output pin and it's parents or children widgets.
+ * NOTE: snd_soc_dapm_sync() needs to be called after this for DAPM to
+ * do any widget power switching.
+ */
+int snd_soc_dapm_disable_pin(struct snd_soc_codec *codec, char *pin)
+{
+ return snd_soc_dapm_set_pin(codec, pin, 0);
}
-EXPORT_SYMBOL_GPL(snd_soc_dapm_set_endpoint);
+EXPORT_SYMBOL_GPL(snd_soc_dapm_disable_pin);
/**
- * snd_soc_dapm_get_endpoint_status - get audio endpoint status
+ * snd_soc_dapm_get_pin_status - get audio pin status
* @codec: audio codec
- * @endpoint: audio signal endpoint (or start point)
+ * @pin: audio signal pin endpoint (or start point)
*
- * Get audio endpoint status - connected or disconnected.
+ * Get audio pin status - connected or disconnected.
*
- * Returns status
+ * Returns 1 for connected otherwise 0.
*/
-int snd_soc_dapm_get_endpoint_status(struct snd_soc_codec *codec,
- char *endpoint)
+int snd_soc_dapm_get_pin_status(struct snd_soc_codec *codec, char *pin)
{
struct snd_soc_dapm_widget *w;
list_for_each_entry(w, &codec->dapm_widgets, list) {
- if (!strcmp(w->name, endpoint))
+ if (!strcmp(w->name, pin))
return w->connected;
}
return 0;
}
-EXPORT_SYMBOL_GPL(snd_soc_dapm_get_endpoint_status);
+EXPORT_SYMBOL_GPL(snd_soc_dapm_get_pin_status);
/**
* snd_soc_dapm_free - free dapm resources
--
1.5.4.2
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH] asoc: core - refactored DAPM pin control API.
2008-07-04 14:07 [PATCH] asoc: core - refactored DAPM pin control API Liam Girdwood
@ 2008-07-04 15:02 ` Takashi Iwai
2008-07-04 17:38 ` Liam Girdwood
0 siblings, 1 reply; 5+ messages in thread
From: Takashi Iwai @ 2008-07-04 15:02 UTC (permalink / raw)
To: Liam Girdwood; +Cc: alsa-devel
At Fri, 04 Jul 2008 15:07:29 +0100,
Liam Girdwood wrote:
>
> Refactored snd_soc_dapm_set_endpoint() to snd_soc_dapm_enable_pin() and
> snd_soc_dapm_disable_pin().
>
> Renamed snd_soc_dapm_sync_endpoints() to snd_soc_dapm_sync().
> Renamed snd_soc_dapm_get_endpoint_status() to
> snd_soc_dapm_get_pin_status().
>
> Signed-off-by: Liam Girdwood <lg@opensource.wolfsonmicro.com>
This doesn't apply correctly (e.g. soc/sh/exmmb-is2.c doesn't exist).
Is it for ASoC v1?
thanks,
Takashi
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] asoc: core - refactored DAPM pin control API.
2008-07-04 15:02 ` Takashi Iwai
@ 2008-07-04 17:38 ` Liam Girdwood
2008-07-07 12:35 ` Liam Girdwood
0 siblings, 1 reply; 5+ messages in thread
From: Liam Girdwood @ 2008-07-04 17:38 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel
On Fri, 2008-07-04 at 17:02 +0200, Takashi Iwai wrote:
> At Fri, 04 Jul 2008 15:07:29 +0100,
> Liam Girdwood wrote:
> >
> > Refactored snd_soc_dapm_set_endpoint() to snd_soc_dapm_enable_pin() and
> > snd_soc_dapm_disable_pin().
> >
> > Renamed snd_soc_dapm_sync_endpoints() to snd_soc_dapm_sync().
> > Renamed snd_soc_dapm_get_endpoint_status() to
> > snd_soc_dapm_get_pin_status().
> >
> > Signed-off-by: Liam Girdwood <lg@opensource.wolfsonmicro.com>
>
> This doesn't apply correctly (e.g. soc/sh/exmmb-is2.c doesn't exist).
> Is it for ASoC v1?
>
It's the start of the V1 -> V2 transition (non-invasive trivial stuff
only atm - to lessen the diffs later). I guess I sent a little extra.
Will redo on Monday.
Liam
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] asoc: core - refactored DAPM pin control API.
2008-07-04 17:38 ` Liam Girdwood
@ 2008-07-07 12:35 ` Liam Girdwood
2008-07-07 15:29 ` Takashi Iwai
0 siblings, 1 reply; 5+ messages in thread
From: Liam Girdwood @ 2008-07-07 12:35 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel
This time without the extras.....
Refactored snd_soc_dapm_set_endpoint() to snd_soc_dapm_enable_pin() and
snd_soc_dapm_disable_pin().
Renamed snd_soc_dapm_sync_endpoints() to snd_soc_dapm_sync().
Renamed snd_soc_dapm_get_endpoint_status() to
snd_soc_dapm_get_pin_status().
Signed-off-by: Liam Girdwood <lg@opensource.wolfsonmicro.com>
---
include/sound/soc-dapm.h | 15 ++---
sound/soc/at91/eti_b1_wm8731.c | 10 ++--
sound/soc/codecs/tlv320aic3x.c | 4 +-
sound/soc/davinci/davinci-evm.c | 16 +++---
sound/soc/omap/n810.c | 27 ++++++---
sound/soc/pxa/corgi.c | 42 +++++++------
sound/soc/pxa/poodle.c | 24 ++++----
sound/soc/pxa/spitz.c | 62 ++++++++++----------
sound/soc/pxa/tosa.c | 30 +++++----
sound/soc/s3c24xx/neo1973_wm8753.c | 116 ++++++++++++++++++------------------
sound/soc/sh/sh7760-ac97.c | 2 +-
sound/soc/soc-dapm.c | 81 ++++++++++++++++---------
12 files changed, 230 insertions(+), 199 deletions(-)
diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h
index b284953..3030fdc 100644
--- a/include/sound/soc-dapm.h
+++ b/include/sound/soc-dapm.h
@@ -234,16 +234,11 @@ int snd_soc_dapm_set_bias_level(struct snd_soc_device *socdev,
/* dapm sys fs - used by the core */
int snd_soc_dapm_sys_add(struct device *dev);
-/* event handler for register modifier widget - used by the soc-dapm */
-int dapm_reg_event(struct snd_soc_dapm_widget *w,
- struct snd_kcontrol *kcontrol, int event);
-
-/* dapm audio endpoint control */
-int snd_soc_dapm_set_endpoint(struct snd_soc_codec *codec,
- char *pin, int status);
-int snd_soc_dapm_get_endpoint_status(struct snd_soc_codec *codec,
- char *pin);
-int snd_soc_dapm_sync_endpoints(struct snd_soc_codec *codec);
+/* dapm audio pin control and status */
+int snd_soc_dapm_enable_pin(struct snd_soc_codec *codec, char *pin);
+int snd_soc_dapm_disable_pin(struct snd_soc_codec *codec, char *pin);
+int snd_soc_dapm_get_pin_status(struct snd_soc_codec *codec, char *pin);
+int snd_soc_dapm_sync(struct snd_soc_codec *codec);
/* dapm widget types */
enum snd_soc_dapm_type {
diff --git a/sound/soc/at91/eti_b1_wm8731.c b/sound/soc/at91/eti_b1_wm8731.c
index 4a383a4..ad971e7 100644
--- a/sound/soc/at91/eti_b1_wm8731.c
+++ b/sound/soc/at91/eti_b1_wm8731.c
@@ -216,14 +216,14 @@ static int eti_b1_wm8731_init(struct snd_soc_codec *codec)
snd_soc_dapm_add_route(codec, intercon, ARRAY_SIZE(intercon));
/* not connected */
- snd_soc_dapm_set_endpoint(codec, "RLINEIN", 0);
- snd_soc_dapm_set_endpoint(codec, "LLINEIN", 0);
+ snd_soc_dapm_disable_pin(codec, "RLINEIN");
+ snd_soc_dapm_disable_pin(codec, "LLINEIN");
/* always connected */
- snd_soc_dapm_set_endpoint(codec, "Int Mic", 1);
- snd_soc_dapm_set_endpoint(codec, "Ext Spk", 1);
+ snd_soc_dapm_enable_pin(codec, "Int Mic");
+ snd_soc_dapm_enable_pin(codec, "Ext Spk");
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c
index d138306..954d39b 100644
--- a/sound/soc/codecs/tlv320aic3x.c
+++ b/sound/soc/codecs/tlv320aic3x.c
@@ -29,7 +29,7 @@
* ---------------------------------------
*
* Hence the machine layer should disable unsupported inputs/outputs by
- * snd_soc_dapm_set_endpoint(codec, "MONO_LOUT", 0), etc.
+ * snd_soc_dapm_disable_pin(codec, "MONO_LOUT"), etc.
*/
#include <linux/module.h>
@@ -206,7 +206,7 @@ static int snd_soc_dapm_put_volsw_aic3x(struct snd_kcontrol *kcontrol,
}
if (found)
- snd_soc_dapm_sync_endpoints(widget->codec);
+ snd_soc_dapm_sync(widget->codec);
}
ret = snd_soc_update_bits(widget->codec, reg, val_mask, val);
diff --git a/sound/soc/davinci/davinci-evm.c b/sound/soc/davinci/davinci-evm.c
index 4c70a0e..091eae3 100644
--- a/sound/soc/davinci/davinci-evm.c
+++ b/sound/soc/davinci/davinci-evm.c
@@ -103,17 +103,17 @@ static int evm_aic3x_init(struct snd_soc_codec *codec)
snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
/* not connected */
- snd_soc_dapm_set_endpoint(codec, "MONO_LOUT", 0);
- snd_soc_dapm_set_endpoint(codec, "HPLCOM", 0);
- snd_soc_dapm_set_endpoint(codec, "HPRCOM", 0);
+ snd_soc_dapm_disable_pin(codec, "MONO_LOUT");
+ snd_soc_dapm_disable_pin(codec, "HPLCOM");
+ snd_soc_dapm_disable_pin(codec, "HPRCOM");
/* always connected */
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 1);
- snd_soc_dapm_set_endpoint(codec, "Line Out", 1);
- snd_soc_dapm_set_endpoint(codec, "Mic Jack", 1);
- snd_soc_dapm_set_endpoint(codec, "Line In", 1);
+ snd_soc_dapm_enable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_enable_pin(codec, "Line Out");
+ snd_soc_dapm_enable_pin(codec, "Mic Jack");
+ snd_soc_dapm_enable_pin(codec, "Line In");
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/omap/n810.c b/sound/soc/omap/n810.c
index 767b39f..74f4599 100644
--- a/sound/soc/omap/n810.c
+++ b/sound/soc/omap/n810.c
@@ -50,11 +50,22 @@ static int n810_dmic_func;
static void n810_ext_control(struct snd_soc_codec *codec)
{
- snd_soc_dapm_set_endpoint(codec, "Ext Spk", n810_spk_func);
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", n810_jack_func);
- snd_soc_dapm_set_endpoint(codec, "DMic", n810_dmic_func);
+ if (n810_spk_func)
+ snd_soc_dapm_enable_pin(codec, "Ext Spk");
+ else
+ snd_soc_dapm_disable_pin(codec, "Ext Spk");
+
+ if (n810_jack_func)
+ snd_soc_dapm_enable_pin(codec, "Headphone Jack");
+ else
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+
+ if (n810_dmic_func)
+ snd_soc_dapm_enable_pin(codec, "DMic");
+ else
+ snd_soc_dapm_disable_pin(codec, "DMic);
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
}
static int n810_startup(struct snd_pcm_substream *substream)
@@ -236,9 +247,9 @@ static int n810_aic33_init(struct snd_soc_codec *codec)
int i, err;
/* Not connected */
- snd_soc_dapm_set_endpoint(codec, "MONO_LOUT", 0);
- snd_soc_dapm_set_endpoint(codec, "HPLCOM", 0);
- snd_soc_dapm_set_endpoint(codec, "HPRCOM", 0);
+ snd_soc_dapm_disable_pin(codec, "MONO_LOUT");
+ snd_soc_dapm_disable_pin(codec, "HPLCOM");
+ snd_soc_dapm_disable_pin(codec, "HPRCOM");
/* Add N810 specific controls */
for (i = 0; i < ARRAY_SIZE(aic33_n810_controls); i++) {
@@ -255,7 +266,7 @@ static int n810_aic33_init(struct snd_soc_codec *codec)
/* Set up N810 specific audio path audio_map */
snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/pxa/corgi.c b/sound/soc/pxa/corgi.c
index edeea63..db18ef6 100644
--- a/sound/soc/pxa/corgi.c
+++ b/sound/soc/pxa/corgi.c
@@ -50,47 +50,51 @@ static int corgi_spk_func;
static void corgi_ext_control(struct snd_soc_codec *codec)
{
- int spk = 0, mic = 0, line = 0, hp = 0, hs = 0;
-
/* set up jack connection */
switch (corgi_jack_func) {
case CORGI_HP:
- hp = 1;
/* set = unmute headphone */
set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
+ snd_soc_dapm_disable_pin(codec, "Mic Jack");
+ snd_soc_dapm_disable_pin(codec, "Line Jack");
+ snd_soc_dapm_enable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_disable_pin(codec, "Headset Jack");
break;
case CORGI_MIC:
- mic = 1;
/* reset = mute headphone */
reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
+ snd_soc_dapm_enable_pin(codec, "Mic Jack");
+ snd_soc_dapm_disable_pin(codec, "Line Jack");
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_disable_pin(codec, "Headset Jack");
break;
case CORGI_LINE:
- line = 1;
reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
+ snd_soc_dapm_disable_pin(codec, "Mic Jack");
+ snd_soc_dapm_enable_pin(codec, "Line Jack");
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_disable_pin(codec, "Headset Jack");
break;
case CORGI_HEADSET:
- hs = 1;
- mic = 1;
reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
+ snd_soc_dapm_enable_pin(codec, "Mic Jack");
+ snd_soc_dapm_disable_pin(codec, "Line Jack");
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_enable_pin(codec, "Headset Jack");
break;
}
if (corgi_spk_func == CORGI_SPK_ON)
- spk = 1;
-
- /* set the enpoints to their new connetion states */
- snd_soc_dapm_set_endpoint(codec, "Ext Spk", spk);
- snd_soc_dapm_set_endpoint(codec, "Mic Jack", mic);
- snd_soc_dapm_set_endpoint(codec, "Line Jack", line);
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", hp);
- snd_soc_dapm_set_endpoint(codec, "Headset Jack", hs);
+ snd_soc_dapm_enable_pin(codec, "Ext Spk");
+ else
+ snd_soc_dapm_disable_pin(codec, "Ext Spk");
/* signal a DAPM event */
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
}
static int corgi_startup(struct snd_pcm_substream *substream)
@@ -285,8 +289,8 @@ static int corgi_wm8731_init(struct snd_soc_codec *codec)
{
int i, err;
- snd_soc_dapm_set_endpoint(codec, "LLINEIN", 0);
- snd_soc_dapm_set_endpoint(codec, "RLINEIN", 0);
+ snd_soc_dapm_disable_pin(codec, "LLINEIN");
+ snd_soc_dapm_disable_pin(codec, "RLINEIN");
/* Add corgi specific controls */
for (i = 0; i < ARRAY_SIZE(wm8731_corgi_controls); i++) {
@@ -303,7 +307,7 @@ static int corgi_wm8731_init(struct snd_soc_codec *codec)
/* Set up corgi specific audio path audio_map */
snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/pxa/poodle.c b/sound/soc/pxa/poodle.c
index 810f1fe..36cbf69 100644
--- a/sound/soc/pxa/poodle.c
+++ b/sound/soc/pxa/poodle.c
@@ -48,8 +48,6 @@ static int poodle_spk_func;
static void poodle_ext_control(struct snd_soc_codec *codec)
{
- int spk = 0;
-
/* set up jack connection */
if (poodle_jack_func == POODLE_HP) {
/* set = unmute headphone */
@@ -57,23 +55,23 @@ static void poodle_ext_control(struct snd_soc_codec *codec)
POODLE_LOCOMO_GPIO_MUTE_L, 1);
locomo_gpio_write(&poodle_locomo_device.dev,
POODLE_LOCOMO_GPIO_MUTE_R, 1);
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 1);
+ snd_soc_dapm_enable_pin(codec, "Headphone Jack");
} else {
locomo_gpio_write(&poodle_locomo_device.dev,
POODLE_LOCOMO_GPIO_MUTE_L, 0);
locomo_gpio_write(&poodle_locomo_device.dev,
POODLE_LOCOMO_GPIO_MUTE_R, 0);
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
}
- if (poodle_spk_func == POODLE_SPK_ON)
- spk = 1;
-
/* set the enpoints to their new connetion states */
- snd_soc_dapm_set_endpoint(codec, "Ext Spk", spk);
+ if (poodle_spk_func == POODLE_SPK_ON)
+ snd_soc_dapm_enable_pin(codec, "Ext Spk");
+ else
+ snd_soc_dapm_disable_pin(codec, "Ext Spk");
/* signal a DAPM event */
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
}
static int poodle_startup(struct snd_pcm_substream *substream)
@@ -248,9 +246,9 @@ static int poodle_wm8731_init(struct snd_soc_codec *codec)
{
int i, err;
- snd_soc_dapm_set_endpoint(codec, "LLINEIN", 0);
- snd_soc_dapm_set_endpoint(codec, "RLINEIN", 0);
- snd_soc_dapm_set_endpoint(codec, "MICIN", 1);
+ snd_soc_dapm_disable_pin(codec, "LLINEIN");
+ snd_soc_dapm_disable_pin(codec, "RLINEIN");
+ snd_soc_dapm_enable_pin(codec, "MICIN");
/* Add poodle specific controls */
for (i = 0; i < ARRAY_SIZE(wm8731_poodle_controls); i++) {
@@ -267,7 +265,7 @@ static int poodle_wm8731_init(struct snd_soc_codec *codec)
/* Set up poodle specific audio path audio_map */
snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/pxa/spitz.c b/sound/soc/pxa/spitz.c
index 092b5c7..ec18163 100644
--- a/sound/soc/pxa/spitz.c
+++ b/sound/soc/pxa/spitz.c
@@ -51,60 +51,60 @@ static int spitz_spk_func;
static void spitz_ext_control(struct snd_soc_codec *codec)
{
if (spitz_spk_func == SPITZ_SPK_ON)
- snd_soc_dapm_set_endpoint(codec, "Ext Spk", 1);
+ snd_soc_dapm_enable_pin(codec, "Ext Spk");
else
- snd_soc_dapm_set_endpoint(codec, "Ext Spk", 0);
+ snd_soc_dapm_disable_pin(codec, "Ext Spk");
/* set up jack connection */
switch (spitz_jack_func) {
case SPITZ_HP:
/* enable and unmute hp jack, disable mic bias */
- snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Mic Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 1);
+ snd_soc_dapm_disable_pin(codec, "Headset Jack");
+ snd_soc_dapm_disable_pin(codec, "Mic Jack");
+ snd_soc_dapm_disable_pin(codec, "Line Jack");
+ snd_soc_dapm_enable_pin(codec, "Headphone Jack");
set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
break;
case SPITZ_MIC:
/* enable mic jack and bias, mute hp */
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Mic Jack", 1);
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_disable_pin(codec, "Headset Jack");
+ snd_soc_dapm_disable_pin(codec, "Line Jack");
+ snd_soc_dapm_enable_pin(codec, "Mic Jack");
reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
break;
case SPITZ_LINE:
/* enable line jack, disable mic bias and mute hp */
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Mic Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Line Jack", 1);
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_disable_pin(codec, "Headset Jack");
+ snd_soc_dapm_disable_pin(codec, "Mic Jack");
+ snd_soc_dapm_enable_pin(codec, "Line Jack");
reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
break;
case SPITZ_HEADSET:
/* enable and unmute headset jack enable mic bias, mute L hp */
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Mic Jack", 1);
- snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Jack", 1);
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_enable_pin(codec, "Mic Jack");
+ snd_soc_dapm_disable_pin(codec, "Line Jack");
+ snd_soc_dapm_enable_pin(codec, "Headset Jack");
reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
break;
case SPITZ_HP_OFF:
/* jack removed, everything off */
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Mic Jack", 0);
- snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_disable_pin(codec, "Headset Jack");
+ snd_soc_dapm_disable_pin(codec, "Mic Jack");
+ snd_soc_dapm_disable_pin(codec, "Line Jack");
reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
break;
}
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
}
static int spitz_startup(struct snd_pcm_substream *substream)
@@ -291,13 +291,13 @@ static int spitz_wm8750_init(struct snd_soc_codec *codec)
int i, err;
/* NC codec pins */
- snd_soc_dapm_set_endpoint(codec, "RINPUT1", 0);
- snd_soc_dapm_set_endpoint(codec, "LINPUT2", 0);
- snd_soc_dapm_set_endpoint(codec, "RINPUT2", 0);
- snd_soc_dapm_set_endpoint(codec, "LINPUT3", 0);
- snd_soc_dapm_set_endpoint(codec, "RINPUT3", 0);
- snd_soc_dapm_set_endpoint(codec, "OUT3", 0);
- snd_soc_dapm_set_endpoint(codec, "MONO", 0);
+ snd_soc_dapm_disable_pin(codec, "RINPUT1");
+ snd_soc_dapm_disable_pin(codec, "LINPUT2");
+ snd_soc_dapm_disable_pin(codec, "RINPUT2");
+ snd_soc_dapm_disable_pin(codec, "LINPUT3");
+ snd_soc_dapm_disable_pin(codec, "RINPUT3");
+ snd_soc_dapm_disable_pin(codec, "OUT3");
+ snd_soc_dapm_disable_pin(codec, "MONO");
/* Add spitz specific controls */
for (i = 0; i < ARRAY_SIZE(wm8750_spitz_controls); i++) {
@@ -314,7 +314,7 @@ static int spitz_wm8750_init(struct snd_soc_codec *codec)
/* Set up spitz specific audio paths */
snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/pxa/tosa.c b/sound/soc/pxa/tosa.c
index 465ff0f..dba7689 100644
--- a/sound/soc/pxa/tosa.c
+++ b/sound/soc/pxa/tosa.c
@@ -52,29 +52,31 @@ static int tosa_spk_func;
static void tosa_ext_control(struct snd_soc_codec *codec)
{
- int spk = 0, mic_int = 0, hp = 0, hs = 0;
-
/* set up jack connection */
switch (tosa_jack_func) {
case TOSA_HP:
- hp = 1;
+ snd_soc_dapm_disable_pin(codec, "Mic (Internal)");
+ snd_soc_dapm_enable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_disable_pin(codec, "Headset Jack");
break;
case TOSA_MIC_INT:
- mic_int = 1;
+ snd_soc_dapm_enable_pin(codec, "Mic (Internal)");
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_disable_pin(codec, "Headset Jack");
break;
case TOSA_HEADSET:
- hs = 1;
+ snd_soc_dapm_disable_pin(codec, "Mic (Internal)");
+ snd_soc_dapm_disable_pin(codec, "Headphone Jack");
+ snd_soc_dapm_enable_pin(codec, "Headset Jack");
break;
}
if (tosa_spk_func == TOSA_SPK_ON)
- spk = 1;
+ snd_soc_dapm_enable_pin(codec, "Speaker");
+ else
+ snd_soc_dapm_disable_pin(codec, "Speaker");
- snd_soc_dapm_set_endpoint(codec, "Speaker", spk);
- snd_soc_dapm_set_endpoint(codec, "Mic (Internal)", mic_int);
- snd_soc_dapm_set_endpoint(codec, "Headphone Jack", hp);
- snd_soc_dapm_set_endpoint(codec, "Headset Jack", hs);
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
}
static int tosa_startup(struct snd_pcm_substream *substream)
@@ -191,8 +193,8 @@ static int tosa_ac97_init(struct snd_soc_codec *codec)
{
int i, err;
- snd_soc_dapm_set_endpoint(codec, "OUT3", 0);
- snd_soc_dapm_set_endpoint(codec, "MONOOUT", 0);
+ snd_soc_dapm_disable_pin(codec, "OUT3");
+ snd_soc_dapm_disable_pin(codec, "MONOOUT");
/* add tosa specific controls */
for (i = 0; i < ARRAY_SIZE(tosa_controls); i++) {
@@ -209,7 +211,7 @@ static int tosa_ac97_init(struct snd_soc_codec *codec)
/* set up tosa specific audio path audio_map */
snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/s3c24xx/neo1973_wm8753.c b/sound/soc/s3c24xx/neo1973_wm8753.c
index 3485123..f053e85 100644
--- a/sound/soc/s3c24xx/neo1973_wm8753.c
+++ b/sound/soc/s3c24xx/neo1973_wm8753.c
@@ -250,77 +250,77 @@ static int set_scenario_endpoints(struct snd_soc_codec *codec, int scenario)
switch (neo1973_scenario) {
case NEO_AUDIO_OFF:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
+ snd_soc_dapm_disable_pin(codec, "Audio Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line In");
+ snd_soc_dapm_disable_pin(codec, "Headset Mic");
+ snd_soc_dapm_disable_pin(codec, "Call Mic");
break;
case NEO_GSM_CALL_AUDIO_HANDSET:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 1);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 1);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 1);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 1);
+ snd_soc_dapm_enable_pin(codec, "Audio Out");
+ snd_soc_dapm_enable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_enable_pin(codec, "GSM Line In");
+ snd_soc_dapm_disable_pin(codec, "Headset Mic");
+ snd_soc_dapm_enable_pin(codec, "Call Mic");
break;
case NEO_GSM_CALL_AUDIO_HEADSET:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 1);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 1);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 1);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 1);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
+ snd_soc_dapm_enable_pin(codec, "Audio Out");
+ snd_soc_dapm_enable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_enable_pin(codec, "GSM Line In");
+ snd_soc_dapm_enable_pin(codec, "Headset Mic");
+ snd_soc_dapm_disable_pin(codec, "Call Mic");
break;
case NEO_GSM_CALL_AUDIO_BLUETOOTH:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 1);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 1);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
+ snd_soc_dapm_disable_pin(codec, "Audio Out");
+ snd_soc_dapm_enable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_enable_pin(codec, "GSM Line In");
+ snd_soc_dapm_disable_pin(codec, "Headset Mic");
+ snd_soc_dapm_disable_pin(codec, "Call Mic");
break;
case NEO_STEREO_TO_SPEAKERS:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 1);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
+ snd_soc_dapm_enable_pin(codec, "Audio Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line In");
+ snd_soc_dapm_disable_pin(codec, "Headset Mic");
+ snd_soc_dapm_disable_pin(codec, "Call Mic");
break;
case NEO_STEREO_TO_HEADPHONES:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 1);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
+ snd_soc_dapm_enable_pin(codec, "Audio Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line In");
+ snd_soc_dapm_disable_pin(codec, "Headset Mic");
+ snd_soc_dapm_disable_pin(codec, "Call Mic");
break;
case NEO_CAPTURE_HANDSET:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 1);
+ snd_soc_dapm_disable_pin(codec, "Audio Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line In");
+ snd_soc_dapm_disable_pin(codec, "Headset Mic");
+ snd_soc_dapm_enable_pin(codec, "Call Mic");
break;
case NEO_CAPTURE_HEADSET:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 1);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
+ snd_soc_dapm_disable_pin(codec, "Audio Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line In");
+ snd_soc_dapm_enable_pin(codec, "Headset Mic");
+ snd_soc_dapm_disable_pin(codec, "Call Mic");
break;
case NEO_CAPTURE_BLUETOOTH:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
+ snd_soc_dapm_disable_pin(codec, "Audio Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line In");
+ snd_soc_dapm_disable_pin(codec, "Headset Mic");
+ snd_soc_dapm_disable_pin(codec, "Call Mic");
break;
default:
- snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
- snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
- snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
- snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
+ snd_soc_dapm_disable_pin(codec, "Audio Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line Out");
+ snd_soc_dapm_disable_pin(codec, "GSM Line In");
+ snd_soc_dapm_disable_pin(codec, "Headset Mic");
+ snd_soc_dapm_disable_pin(codec, "Call Mic");
}
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
@@ -511,12 +511,12 @@ static int neo1973_wm8753_init(struct snd_soc_codec *codec)
DBG("Entered %s\n", __func__);
/* set up NC codec pins */
- snd_soc_dapm_set_endpoint(codec, "LOUT2", 0);
- snd_soc_dapm_set_endpoint(codec, "ROUT2", 0);
- snd_soc_dapm_set_endpoint(codec, "OUT3", 0);
- snd_soc_dapm_set_endpoint(codec, "OUT4", 0);
- snd_soc_dapm_set_endpoint(codec, "LINE1", 0);
- snd_soc_dapm_set_endpoint(codec, "LINE2", 0);
+ snd_soc_dapm_disable_pin(codec, "LOUT2");
+ snd_soc_dapm_disable_pin(codec, "ROUT2");
+ snd_soc_dapm_disable_pin(codec, "OUT3");
+ snd_soc_dapm_disable_pin(codec, "OUT4");
+ snd_soc_dapm_disable_pin(codec, "LINE1");
+ snd_soc_dapm_disable_pin(codec, "LINE2");
/* set endpoints to default mode */
@@ -539,7 +539,7 @@ static int neo1973_wm8753_init(struct snd_soc_codec *codec)
err = snd_soc_dapm_add_routes(codec, dapm_routes,
ARRAY_SIZE(dapm_routes));
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/sh/sh7760-ac97.c b/sound/soc/sh/sh7760-ac97.c
index 2f91de8..846d1b3 100644
--- a/sound/soc/sh/sh7760-ac97.c
+++ b/sound/soc/sh/sh7760-ac97.c
@@ -25,7 +25,7 @@ extern struct snd_soc_platform sh7760_soc_platform;
static int machine_init(struct snd_soc_codec *codec)
{
- snd_soc_dapm_sync_endpoints(codec);
+ snd_soc_dapm_sync(codec);
return 0;
}
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
index 91cbbef..94296b5 100644
--- a/sound/soc/soc-dapm.c
+++ b/sound/soc/soc-dapm.c
@@ -880,8 +880,25 @@ static void dapm_free_widgets(struct snd_soc_codec *codec)
}
}
+static int snd_soc_dapm_set_pin(struct snd_soc_codec *codec,
+ char *pin, int status)
+{
+ struct snd_soc_dapm_widget *w;
+
+ list_for_each_entry(w, &codec->dapm_widgets, list) {
+ if (!strcmp(w->name, pin)) {
+ dbg("dapm: %s: pin %s\n", codec->name, pin);
+ w->connected = status;
+ return 0;
+ }
+ }
+
+ dbg("dapm: %s: configuring unknown pin %s\n", codec->name, pin);
+ return -EINVAL;
+}
+
/**
- * snd_soc_dapm_sync_endpoints - scan and power dapm paths
+ * snd_soc_dapm_sync - scan and power dapm paths
* @codec: audio codec
*
* Walks all dapm audio paths and powers widgets according to their
@@ -889,11 +906,11 @@ static void dapm_free_widgets(struct snd_soc_codec *codec)
*
* Returns 0 for success.
*/
-int snd_soc_dapm_sync_endpoints(struct snd_soc_codec *codec)
+int snd_soc_dapm_sync(struct snd_soc_codec *codec)
{
return dapm_power_widgets(codec, SND_SOC_DAPM_STREAM_NOP);
}
-EXPORT_SYMBOL_GPL(snd_soc_dapm_sync_endpoints);
+EXPORT_SYMBOL_GPL(snd_soc_dapm_sync);
static int snd_soc_dapm_add_route(struct snd_soc_codec *codec,
const char *sink, const char *control, const char *source)
@@ -1441,53 +1458,57 @@ int snd_soc_dapm_set_bias_level(struct snd_soc_device *socdev,
}
/**
- * snd_soc_dapm_set_endpoint - set audio endpoint status
- * @codec: audio codec
- * @endpoint: audio signal endpoint (or start point)
- * @status: point status
- *
- * Set audio endpoint status - connected or disconnected.
+ * snd_soc_dapm_enable_pin - enable pin.
+ * @snd_soc_codec: SoC codec
+ * @pin: pin name
*
- * Returns 0 for success else error.
+ * Enables input/output pin and it's parents or children widgets iff there is
+ * a valid audio route and active audio stream.
+ * NOTE: snd_soc_dapm_sync() needs to be called after this for DAPM to
+ * do any widget power switching.
*/
-int snd_soc_dapm_set_endpoint(struct snd_soc_codec *codec,
- char *endpoint, int status)
+int snd_soc_dapm_enable_pin(struct snd_soc_codec *codec, char *pin)
{
- struct snd_soc_dapm_widget *w;
-
- list_for_each_entry(w, &codec->dapm_widgets, list) {
- if (!strcmp(w->name, endpoint)) {
- w->connected = status;
- return 0;
- }
- }
+ return snd_soc_dapm_set_pin(codec, pin, 1);
+}
+EXPORT_SYMBOL_GPL(snd_soc_dapm_enable_pin);
- return -ENODEV;
+/**
+ * snd_soc_dapm_disable_pin - disable pin.
+ * @codec: SoC codec
+ * @pin: pin name
+ *
+ * Disables input/output pin and it's parents or children widgets.
+ * NOTE: snd_soc_dapm_sync() needs to be called after this for DAPM to
+ * do any widget power switching.
+ */
+int snd_soc_dapm_disable_pin(struct snd_soc_codec *codec, char *pin)
+{
+ return snd_soc_dapm_set_pin(codec, pin, 0);
}
-EXPORT_SYMBOL_GPL(snd_soc_dapm_set_endpoint);
+EXPORT_SYMBOL_GPL(snd_soc_dapm_disable_pin);
/**
- * snd_soc_dapm_get_endpoint_status - get audio endpoint status
+ * snd_soc_dapm_get_pin_status - get audio pin status
* @codec: audio codec
- * @endpoint: audio signal endpoint (or start point)
+ * @pin: audio signal pin endpoint (or start point)
*
- * Get audio endpoint status - connected or disconnected.
+ * Get audio pin status - connected or disconnected.
*
- * Returns status
+ * Returns 1 for connected otherwise 0.
*/
-int snd_soc_dapm_get_endpoint_status(struct snd_soc_codec *codec,
- char *endpoint)
+int snd_soc_dapm_get_pin_status(struct snd_soc_codec *codec, char *pin)
{
struct snd_soc_dapm_widget *w;
list_for_each_entry(w, &codec->dapm_widgets, list) {
- if (!strcmp(w->name, endpoint))
+ if (!strcmp(w->name, pin))
return w->connected;
}
return 0;
}
-EXPORT_SYMBOL_GPL(snd_soc_dapm_get_endpoint_status);
+EXPORT_SYMBOL_GPL(snd_soc_dapm_get_pin_status);
/**
* snd_soc_dapm_free - free dapm resources
--
1.5.4.2
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH] asoc: core - refactored DAPM pin control API.
2008-07-07 12:35 ` Liam Girdwood
@ 2008-07-07 15:29 ` Takashi Iwai
0 siblings, 0 replies; 5+ messages in thread
From: Takashi Iwai @ 2008-07-07 15:29 UTC (permalink / raw)
To: Liam Girdwood; +Cc: alsa-devel
At Mon, 07 Jul 2008 13:35:17 +0100,
Liam Girdwood wrote:
>
> This time without the extras.....
Thanks, applied now.
Takashi
>
>
>
> Refactored snd_soc_dapm_set_endpoint() to snd_soc_dapm_enable_pin() and
> snd_soc_dapm_disable_pin().
>
> Renamed snd_soc_dapm_sync_endpoints() to snd_soc_dapm_sync().
> Renamed snd_soc_dapm_get_endpoint_status() to
> snd_soc_dapm_get_pin_status().
>
> Signed-off-by: Liam Girdwood <lg@opensource.wolfsonmicro.com>
> ---
> include/sound/soc-dapm.h | 15 ++---
> sound/soc/at91/eti_b1_wm8731.c | 10 ++--
> sound/soc/codecs/tlv320aic3x.c | 4 +-
> sound/soc/davinci/davinci-evm.c | 16 +++---
> sound/soc/omap/n810.c | 27 ++++++---
> sound/soc/pxa/corgi.c | 42 +++++++------
> sound/soc/pxa/poodle.c | 24 ++++----
> sound/soc/pxa/spitz.c | 62 ++++++++++----------
> sound/soc/pxa/tosa.c | 30 +++++----
> sound/soc/s3c24xx/neo1973_wm8753.c | 116 ++++++++++++++++++------------------
> sound/soc/sh/sh7760-ac97.c | 2 +-
> sound/soc/soc-dapm.c | 81 ++++++++++++++++---------
> 12 files changed, 230 insertions(+), 199 deletions(-)
>
> diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h
> index b284953..3030fdc 100644
> --- a/include/sound/soc-dapm.h
> +++ b/include/sound/soc-dapm.h
> @@ -234,16 +234,11 @@ int snd_soc_dapm_set_bias_level(struct snd_soc_device *socdev,
> /* dapm sys fs - used by the core */
> int snd_soc_dapm_sys_add(struct device *dev);
>
> -/* event handler for register modifier widget - used by the soc-dapm */
> -int dapm_reg_event(struct snd_soc_dapm_widget *w,
> - struct snd_kcontrol *kcontrol, int event);
> -
> -/* dapm audio endpoint control */
> -int snd_soc_dapm_set_endpoint(struct snd_soc_codec *codec,
> - char *pin, int status);
> -int snd_soc_dapm_get_endpoint_status(struct snd_soc_codec *codec,
> - char *pin);
> -int snd_soc_dapm_sync_endpoints(struct snd_soc_codec *codec);
> +/* dapm audio pin control and status */
> +int snd_soc_dapm_enable_pin(struct snd_soc_codec *codec, char *pin);
> +int snd_soc_dapm_disable_pin(struct snd_soc_codec *codec, char *pin);
> +int snd_soc_dapm_get_pin_status(struct snd_soc_codec *codec, char *pin);
> +int snd_soc_dapm_sync(struct snd_soc_codec *codec);
>
> /* dapm widget types */
> enum snd_soc_dapm_type {
> diff --git a/sound/soc/at91/eti_b1_wm8731.c b/sound/soc/at91/eti_b1_wm8731.c
> index 4a383a4..ad971e7 100644
> --- a/sound/soc/at91/eti_b1_wm8731.c
> +++ b/sound/soc/at91/eti_b1_wm8731.c
> @@ -216,14 +216,14 @@ static int eti_b1_wm8731_init(struct snd_soc_codec *codec)
> snd_soc_dapm_add_route(codec, intercon, ARRAY_SIZE(intercon));
>
> /* not connected */
> - snd_soc_dapm_set_endpoint(codec, "RLINEIN", 0);
> - snd_soc_dapm_set_endpoint(codec, "LLINEIN", 0);
> + snd_soc_dapm_disable_pin(codec, "RLINEIN");
> + snd_soc_dapm_disable_pin(codec, "LLINEIN");
>
> /* always connected */
> - snd_soc_dapm_set_endpoint(codec, "Int Mic", 1);
> - snd_soc_dapm_set_endpoint(codec, "Ext Spk", 1);
> + snd_soc_dapm_enable_pin(codec, "Int Mic");
> + snd_soc_dapm_enable_pin(codec, "Ext Spk");
>
> - snd_soc_dapm_sync_endpoints(codec);
> + snd_soc_dapm_sync(codec);
>
> return 0;
> }
> diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c
> index d138306..954d39b 100644
> --- a/sound/soc/codecs/tlv320aic3x.c
> +++ b/sound/soc/codecs/tlv320aic3x.c
> @@ -29,7 +29,7 @@
> * ---------------------------------------
> *
> * Hence the machine layer should disable unsupported inputs/outputs by
> - * snd_soc_dapm_set_endpoint(codec, "MONO_LOUT", 0), etc.
> + * snd_soc_dapm_disable_pin(codec, "MONO_LOUT"), etc.
> */
>
> #include <linux/module.h>
> @@ -206,7 +206,7 @@ static int snd_soc_dapm_put_volsw_aic3x(struct snd_kcontrol *kcontrol,
> }
>
> if (found)
> - snd_soc_dapm_sync_endpoints(widget->codec);
> + snd_soc_dapm_sync(widget->codec);
> }
>
> ret = snd_soc_update_bits(widget->codec, reg, val_mask, val);
> diff --git a/sound/soc/davinci/davinci-evm.c b/sound/soc/davinci/davinci-evm.c
> index 4c70a0e..091eae3 100644
> --- a/sound/soc/davinci/davinci-evm.c
> +++ b/sound/soc/davinci/davinci-evm.c
> @@ -103,17 +103,17 @@ static int evm_aic3x_init(struct snd_soc_codec *codec)
> snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
>
> /* not connected */
> - snd_soc_dapm_set_endpoint(codec, "MONO_LOUT", 0);
> - snd_soc_dapm_set_endpoint(codec, "HPLCOM", 0);
> - snd_soc_dapm_set_endpoint(codec, "HPRCOM", 0);
> + snd_soc_dapm_disable_pin(codec, "MONO_LOUT");
> + snd_soc_dapm_disable_pin(codec, "HPLCOM");
> + snd_soc_dapm_disable_pin(codec, "HPRCOM");
>
> /* always connected */
> - snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 1);
> - snd_soc_dapm_set_endpoint(codec, "Line Out", 1);
> - snd_soc_dapm_set_endpoint(codec, "Mic Jack", 1);
> - snd_soc_dapm_set_endpoint(codec, "Line In", 1);
> + snd_soc_dapm_enable_pin(codec, "Headphone Jack");
> + snd_soc_dapm_enable_pin(codec, "Line Out");
> + snd_soc_dapm_enable_pin(codec, "Mic Jack");
> + snd_soc_dapm_enable_pin(codec, "Line In");
>
> - snd_soc_dapm_sync_endpoints(codec);
> + snd_soc_dapm_sync(codec);
>
> return 0;
> }
> diff --git a/sound/soc/omap/n810.c b/sound/soc/omap/n810.c
> index 767b39f..74f4599 100644
> --- a/sound/soc/omap/n810.c
> +++ b/sound/soc/omap/n810.c
> @@ -50,11 +50,22 @@ static int n810_dmic_func;
>
> static void n810_ext_control(struct snd_soc_codec *codec)
> {
> - snd_soc_dapm_set_endpoint(codec, "Ext Spk", n810_spk_func);
> - snd_soc_dapm_set_endpoint(codec, "Headphone Jack", n810_jack_func);
> - snd_soc_dapm_set_endpoint(codec, "DMic", n810_dmic_func);
> + if (n810_spk_func)
> + snd_soc_dapm_enable_pin(codec, "Ext Spk");
> + else
> + snd_soc_dapm_disable_pin(codec, "Ext Spk");
> +
> + if (n810_jack_func)
> + snd_soc_dapm_enable_pin(codec, "Headphone Jack");
> + else
> + snd_soc_dapm_disable_pin(codec, "Headphone Jack");
> +
> + if (n810_dmic_func)
> + snd_soc_dapm_enable_pin(codec, "DMic");
> + else
> + snd_soc_dapm_disable_pin(codec, "DMic);
>
> - snd_soc_dapm_sync_endpoints(codec);
> + snd_soc_dapm_sync(codec);
> }
>
> static int n810_startup(struct snd_pcm_substream *substream)
> @@ -236,9 +247,9 @@ static int n810_aic33_init(struct snd_soc_codec *codec)
> int i, err;
>
> /* Not connected */
> - snd_soc_dapm_set_endpoint(codec, "MONO_LOUT", 0);
> - snd_soc_dapm_set_endpoint(codec, "HPLCOM", 0);
> - snd_soc_dapm_set_endpoint(codec, "HPRCOM", 0);
> + snd_soc_dapm_disable_pin(codec, "MONO_LOUT");
> + snd_soc_dapm_disable_pin(codec, "HPLCOM");
> + snd_soc_dapm_disable_pin(codec, "HPRCOM");
>
> /* Add N810 specific controls */
> for (i = 0; i < ARRAY_SIZE(aic33_n810_controls); i++) {
> @@ -255,7 +266,7 @@ static int n810_aic33_init(struct snd_soc_codec *codec)
> /* Set up N810 specific audio path audio_map */
> snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
>
> - snd_soc_dapm_sync_endpoints(codec);
> + snd_soc_dapm_sync(codec);
>
> return 0;
> }
> diff --git a/sound/soc/pxa/corgi.c b/sound/soc/pxa/corgi.c
> index edeea63..db18ef6 100644
> --- a/sound/soc/pxa/corgi.c
> +++ b/sound/soc/pxa/corgi.c
> @@ -50,47 +50,51 @@ static int corgi_spk_func;
>
> static void corgi_ext_control(struct snd_soc_codec *codec)
> {
> - int spk = 0, mic = 0, line = 0, hp = 0, hs = 0;
> -
> /* set up jack connection */
> switch (corgi_jack_func) {
> case CORGI_HP:
> - hp = 1;
> /* set = unmute headphone */
> set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
> set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
> + snd_soc_dapm_disable_pin(codec, "Mic Jack");
> + snd_soc_dapm_disable_pin(codec, "Line Jack");
> + snd_soc_dapm_enable_pin(codec, "Headphone Jack");
> + snd_soc_dapm_disable_pin(codec, "Headset Jack");
> break;
> case CORGI_MIC:
> - mic = 1;
> /* reset = mute headphone */
> reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
> reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
> + snd_soc_dapm_enable_pin(codec, "Mic Jack");
> + snd_soc_dapm_disable_pin(codec, "Line Jack");
> + snd_soc_dapm_disable_pin(codec, "Headphone Jack");
> + snd_soc_dapm_disable_pin(codec, "Headset Jack");
> break;
> case CORGI_LINE:
> - line = 1;
> reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
> reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
> + snd_soc_dapm_disable_pin(codec, "Mic Jack");
> + snd_soc_dapm_enable_pin(codec, "Line Jack");
> + snd_soc_dapm_disable_pin(codec, "Headphone Jack");
> + snd_soc_dapm_disable_pin(codec, "Headset Jack");
> break;
> case CORGI_HEADSET:
> - hs = 1;
> - mic = 1;
> reset_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_L);
> set_scoop_gpio(&corgiscoop_device.dev, CORGI_SCP_MUTE_R);
> + snd_soc_dapm_enable_pin(codec, "Mic Jack");
> + snd_soc_dapm_disable_pin(codec, "Line Jack");
> + snd_soc_dapm_disable_pin(codec, "Headphone Jack");
> + snd_soc_dapm_enable_pin(codec, "Headset Jack");
> break;
> }
>
> if (corgi_spk_func == CORGI_SPK_ON)
> - spk = 1;
> -
> - /* set the enpoints to their new connetion states */
> - snd_soc_dapm_set_endpoint(codec, "Ext Spk", spk);
> - snd_soc_dapm_set_endpoint(codec, "Mic Jack", mic);
> - snd_soc_dapm_set_endpoint(codec, "Line Jack", line);
> - snd_soc_dapm_set_endpoint(codec, "Headphone Jack", hp);
> - snd_soc_dapm_set_endpoint(codec, "Headset Jack", hs);
> + snd_soc_dapm_enable_pin(codec, "Ext Spk");
> + else
> + snd_soc_dapm_disable_pin(codec, "Ext Spk");
>
> /* signal a DAPM event */
> - snd_soc_dapm_sync_endpoints(codec);
> + snd_soc_dapm_sync(codec);
> }
>
> static int corgi_startup(struct snd_pcm_substream *substream)
> @@ -285,8 +289,8 @@ static int corgi_wm8731_init(struct snd_soc_codec *codec)
> {
> int i, err;
>
> - snd_soc_dapm_set_endpoint(codec, "LLINEIN", 0);
> - snd_soc_dapm_set_endpoint(codec, "RLINEIN", 0);
> + snd_soc_dapm_disable_pin(codec, "LLINEIN");
> + snd_soc_dapm_disable_pin(codec, "RLINEIN");
>
> /* Add corgi specific controls */
> for (i = 0; i < ARRAY_SIZE(wm8731_corgi_controls); i++) {
> @@ -303,7 +307,7 @@ static int corgi_wm8731_init(struct snd_soc_codec *codec)
> /* Set up corgi specific audio path audio_map */
> snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
>
> - snd_soc_dapm_sync_endpoints(codec);
> + snd_soc_dapm_sync(codec);
> return 0;
> }
>
> diff --git a/sound/soc/pxa/poodle.c b/sound/soc/pxa/poodle.c
> index 810f1fe..36cbf69 100644
> --- a/sound/soc/pxa/poodle.c
> +++ b/sound/soc/pxa/poodle.c
> @@ -48,8 +48,6 @@ static int poodle_spk_func;
>
> static void poodle_ext_control(struct snd_soc_codec *codec)
> {
> - int spk = 0;
> -
> /* set up jack connection */
> if (poodle_jack_func == POODLE_HP) {
> /* set = unmute headphone */
> @@ -57,23 +55,23 @@ static void poodle_ext_control(struct snd_soc_codec *codec)
> POODLE_LOCOMO_GPIO_MUTE_L, 1);
> locomo_gpio_write(&poodle_locomo_device.dev,
> POODLE_LOCOMO_GPIO_MUTE_R, 1);
> - snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 1);
> + snd_soc_dapm_enable_pin(codec, "Headphone Jack");
> } else {
> locomo_gpio_write(&poodle_locomo_device.dev,
> POODLE_LOCOMO_GPIO_MUTE_L, 0);
> locomo_gpio_write(&poodle_locomo_device.dev,
> POODLE_LOCOMO_GPIO_MUTE_R, 0);
> - snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
> + snd_soc_dapm_disable_pin(codec, "Headphone Jack");
> }
>
> - if (poodle_spk_func == POODLE_SPK_ON)
> - spk = 1;
> -
> /* set the enpoints to their new connetion states */
> - snd_soc_dapm_set_endpoint(codec, "Ext Spk", spk);
> + if (poodle_spk_func == POODLE_SPK_ON)
> + snd_soc_dapm_enable_pin(codec, "Ext Spk");
> + else
> + snd_soc_dapm_disable_pin(codec, "Ext Spk");
>
> /* signal a DAPM event */
> - snd_soc_dapm_sync_endpoints(codec);
> + snd_soc_dapm_sync(codec);
> }
>
> static int poodle_startup(struct snd_pcm_substream *substream)
> @@ -248,9 +246,9 @@ static int poodle_wm8731_init(struct snd_soc_codec *codec)
> {
> int i, err;
>
> - snd_soc_dapm_set_endpoint(codec, "LLINEIN", 0);
> - snd_soc_dapm_set_endpoint(codec, "RLINEIN", 0);
> - snd_soc_dapm_set_endpoint(codec, "MICIN", 1);
> + snd_soc_dapm_disable_pin(codec, "LLINEIN");
> + snd_soc_dapm_disable_pin(codec, "RLINEIN");
> + snd_soc_dapm_enable_pin(codec, "MICIN");
>
> /* Add poodle specific controls */
> for (i = 0; i < ARRAY_SIZE(wm8731_poodle_controls); i++) {
> @@ -267,7 +265,7 @@ static int poodle_wm8731_init(struct snd_soc_codec *codec)
> /* Set up poodle specific audio path audio_map */
> snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
>
> - snd_soc_dapm_sync_endpoints(codec);
> + snd_soc_dapm_sync(codec);
> return 0;
> }
>
> diff --git a/sound/soc/pxa/spitz.c b/sound/soc/pxa/spitz.c
> index 092b5c7..ec18163 100644
> --- a/sound/soc/pxa/spitz.c
> +++ b/sound/soc/pxa/spitz.c
> @@ -51,60 +51,60 @@ static int spitz_spk_func;
> static void spitz_ext_control(struct snd_soc_codec *codec)
> {
> if (spitz_spk_func == SPITZ_SPK_ON)
> - snd_soc_dapm_set_endpoint(codec, "Ext Spk", 1);
> + snd_soc_dapm_enable_pin(codec, "Ext Spk");
> else
> - snd_soc_dapm_set_endpoint(codec, "Ext Spk", 0);
> + snd_soc_dapm_disable_pin(codec, "Ext Spk");
>
> /* set up jack connection */
> switch (spitz_jack_func) {
> case SPITZ_HP:
> /* enable and unmute hp jack, disable mic bias */
> - snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
> - snd_soc_dapm_set_endpoint(codec, "Mic Jack", 0);
> - snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
> - snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 1);
> + snd_soc_dapm_disable_pin(codec, "Headset Jack");
> + snd_soc_dapm_disable_pin(codec, "Mic Jack");
> + snd_soc_dapm_disable_pin(codec, "Line Jack");
> + snd_soc_dapm_enable_pin(codec, "Headphone Jack");
> set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
> set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
> break;
> case SPITZ_MIC:
> /* enable mic jack and bias, mute hp */
> - snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
> - snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
> - snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
> - snd_soc_dapm_set_endpoint(codec, "Mic Jack", 1);
> + snd_soc_dapm_disable_pin(codec, "Headphone Jack");
> + snd_soc_dapm_disable_pin(codec, "Headset Jack");
> + snd_soc_dapm_disable_pin(codec, "Line Jack");
> + snd_soc_dapm_enable_pin(codec, "Mic Jack");
> reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
> reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
> break;
> case SPITZ_LINE:
> /* enable line jack, disable mic bias and mute hp */
> - snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
> - snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
> - snd_soc_dapm_set_endpoint(codec, "Mic Jack", 0);
> - snd_soc_dapm_set_endpoint(codec, "Line Jack", 1);
> + snd_soc_dapm_disable_pin(codec, "Headphone Jack");
> + snd_soc_dapm_disable_pin(codec, "Headset Jack");
> + snd_soc_dapm_disable_pin(codec, "Mic Jack");
> + snd_soc_dapm_enable_pin(codec, "Line Jack");
> reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
> reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
> break;
> case SPITZ_HEADSET:
> /* enable and unmute headset jack enable mic bias, mute L hp */
> - snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
> - snd_soc_dapm_set_endpoint(codec, "Mic Jack", 1);
> - snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
> - snd_soc_dapm_set_endpoint(codec, "Headset Jack", 1);
> + snd_soc_dapm_disable_pin(codec, "Headphone Jack");
> + snd_soc_dapm_enable_pin(codec, "Mic Jack");
> + snd_soc_dapm_disable_pin(codec, "Line Jack");
> + snd_soc_dapm_enable_pin(codec, "Headset Jack");
> reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
> set_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
> break;
> case SPITZ_HP_OFF:
>
> /* jack removed, everything off */
> - snd_soc_dapm_set_endpoint(codec, "Headphone Jack", 0);
> - snd_soc_dapm_set_endpoint(codec, "Headset Jack", 0);
> - snd_soc_dapm_set_endpoint(codec, "Mic Jack", 0);
> - snd_soc_dapm_set_endpoint(codec, "Line Jack", 0);
> + snd_soc_dapm_disable_pin(codec, "Headphone Jack");
> + snd_soc_dapm_disable_pin(codec, "Headset Jack");
> + snd_soc_dapm_disable_pin(codec, "Mic Jack");
> + snd_soc_dapm_disable_pin(codec, "Line Jack");
> reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_L);
> reset_scoop_gpio(&spitzscoop_device.dev, SPITZ_SCP_MUTE_R);
> break;
> }
> - snd_soc_dapm_sync_endpoints(codec);
> + snd_soc_dapm_sync(codec);
> }
>
> static int spitz_startup(struct snd_pcm_substream *substream)
> @@ -291,13 +291,13 @@ static int spitz_wm8750_init(struct snd_soc_codec *codec)
> int i, err;
>
> /* NC codec pins */
> - snd_soc_dapm_set_endpoint(codec, "RINPUT1", 0);
> - snd_soc_dapm_set_endpoint(codec, "LINPUT2", 0);
> - snd_soc_dapm_set_endpoint(codec, "RINPUT2", 0);
> - snd_soc_dapm_set_endpoint(codec, "LINPUT3", 0);
> - snd_soc_dapm_set_endpoint(codec, "RINPUT3", 0);
> - snd_soc_dapm_set_endpoint(codec, "OUT3", 0);
> - snd_soc_dapm_set_endpoint(codec, "MONO", 0);
> + snd_soc_dapm_disable_pin(codec, "RINPUT1");
> + snd_soc_dapm_disable_pin(codec, "LINPUT2");
> + snd_soc_dapm_disable_pin(codec, "RINPUT2");
> + snd_soc_dapm_disable_pin(codec, "LINPUT3");
> + snd_soc_dapm_disable_pin(codec, "RINPUT3");
> + snd_soc_dapm_disable_pin(codec, "OUT3");
> + snd_soc_dapm_disable_pin(codec, "MONO");
>
> /* Add spitz specific controls */
> for (i = 0; i < ARRAY_SIZE(wm8750_spitz_controls); i++) {
> @@ -314,7 +314,7 @@ static int spitz_wm8750_init(struct snd_soc_codec *codec)
> /* Set up spitz specific audio paths */
> snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
>
> - snd_soc_dapm_sync_endpoints(codec);
> + snd_soc_dapm_sync(codec);
> return 0;
> }
>
> diff --git a/sound/soc/pxa/tosa.c b/sound/soc/pxa/tosa.c
> index 465ff0f..dba7689 100644
> --- a/sound/soc/pxa/tosa.c
> +++ b/sound/soc/pxa/tosa.c
> @@ -52,29 +52,31 @@ static int tosa_spk_func;
>
> static void tosa_ext_control(struct snd_soc_codec *codec)
> {
> - int spk = 0, mic_int = 0, hp = 0, hs = 0;
> -
> /* set up jack connection */
> switch (tosa_jack_func) {
> case TOSA_HP:
> - hp = 1;
> + snd_soc_dapm_disable_pin(codec, "Mic (Internal)");
> + snd_soc_dapm_enable_pin(codec, "Headphone Jack");
> + snd_soc_dapm_disable_pin(codec, "Headset Jack");
> break;
> case TOSA_MIC_INT:
> - mic_int = 1;
> + snd_soc_dapm_enable_pin(codec, "Mic (Internal)");
> + snd_soc_dapm_disable_pin(codec, "Headphone Jack");
> + snd_soc_dapm_disable_pin(codec, "Headset Jack");
> break;
> case TOSA_HEADSET:
> - hs = 1;
> + snd_soc_dapm_disable_pin(codec, "Mic (Internal)");
> + snd_soc_dapm_disable_pin(codec, "Headphone Jack");
> + snd_soc_dapm_enable_pin(codec, "Headset Jack");
> break;
> }
>
> if (tosa_spk_func == TOSA_SPK_ON)
> - spk = 1;
> + snd_soc_dapm_enable_pin(codec, "Speaker");
> + else
> + snd_soc_dapm_disable_pin(codec, "Speaker");
>
> - snd_soc_dapm_set_endpoint(codec, "Speaker", spk);
> - snd_soc_dapm_set_endpoint(codec, "Mic (Internal)", mic_int);
> - snd_soc_dapm_set_endpoint(codec, "Headphone Jack", hp);
> - snd_soc_dapm_set_endpoint(codec, "Headset Jack", hs);
> - snd_soc_dapm_sync_endpoints(codec);
> + snd_soc_dapm_sync(codec);
> }
>
> static int tosa_startup(struct snd_pcm_substream *substream)
> @@ -191,8 +193,8 @@ static int tosa_ac97_init(struct snd_soc_codec *codec)
> {
> int i, err;
>
> - snd_soc_dapm_set_endpoint(codec, "OUT3", 0);
> - snd_soc_dapm_set_endpoint(codec, "MONOOUT", 0);
> + snd_soc_dapm_disable_pin(codec, "OUT3");
> + snd_soc_dapm_disable_pin(codec, "MONOOUT");
>
> /* add tosa specific controls */
> for (i = 0; i < ARRAY_SIZE(tosa_controls); i++) {
> @@ -209,7 +211,7 @@ static int tosa_ac97_init(struct snd_soc_codec *codec)
> /* set up tosa specific audio path audio_map */
> snd_soc_dapm_add_routes(codec, audio_map, ARRAY_SIZE(audio_map));
>
> - snd_soc_dapm_sync_endpoints(codec);
> + snd_soc_dapm_sync(codec);
> return 0;
> }
>
> diff --git a/sound/soc/s3c24xx/neo1973_wm8753.c b/sound/soc/s3c24xx/neo1973_wm8753.c
> index 3485123..f053e85 100644
> --- a/sound/soc/s3c24xx/neo1973_wm8753.c
> +++ b/sound/soc/s3c24xx/neo1973_wm8753.c
> @@ -250,77 +250,77 @@ static int set_scenario_endpoints(struct snd_soc_codec *codec, int scenario)
>
> switch (neo1973_scenario) {
> case NEO_AUDIO_OFF:
> - snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
> - snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
> - snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
> + snd_soc_dapm_disable_pin(codec, "Audio Out");
> + snd_soc_dapm_disable_pin(codec, "GSM Line Out");
> + snd_soc_dapm_disable_pin(codec, "GSM Line In");
> + snd_soc_dapm_disable_pin(codec, "Headset Mic");
> + snd_soc_dapm_disable_pin(codec, "Call Mic");
> break;
> case NEO_GSM_CALL_AUDIO_HANDSET:
> - snd_soc_dapm_set_endpoint(codec, "Audio Out", 1);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 1);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line In", 1);
> - snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
> - snd_soc_dapm_set_endpoint(codec, "Call Mic", 1);
> + snd_soc_dapm_enable_pin(codec, "Audio Out");
> + snd_soc_dapm_enable_pin(codec, "GSM Line Out");
> + snd_soc_dapm_enable_pin(codec, "GSM Line In");
> + snd_soc_dapm_disable_pin(codec, "Headset Mic");
> + snd_soc_dapm_enable_pin(codec, "Call Mic");
> break;
> case NEO_GSM_CALL_AUDIO_HEADSET:
> - snd_soc_dapm_set_endpoint(codec, "Audio Out", 1);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 1);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line In", 1);
> - snd_soc_dapm_set_endpoint(codec, "Headset Mic", 1);
> - snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
> + snd_soc_dapm_enable_pin(codec, "Audio Out");
> + snd_soc_dapm_enable_pin(codec, "GSM Line Out");
> + snd_soc_dapm_enable_pin(codec, "GSM Line In");
> + snd_soc_dapm_enable_pin(codec, "Headset Mic");
> + snd_soc_dapm_disable_pin(codec, "Call Mic");
> break;
> case NEO_GSM_CALL_AUDIO_BLUETOOTH:
> - snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 1);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line In", 1);
> - snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
> - snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
> + snd_soc_dapm_disable_pin(codec, "Audio Out");
> + snd_soc_dapm_enable_pin(codec, "GSM Line Out");
> + snd_soc_dapm_enable_pin(codec, "GSM Line In");
> + snd_soc_dapm_disable_pin(codec, "Headset Mic");
> + snd_soc_dapm_disable_pin(codec, "Call Mic");
> break;
> case NEO_STEREO_TO_SPEAKERS:
> - snd_soc_dapm_set_endpoint(codec, "Audio Out", 1);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
> - snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
> - snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
> + snd_soc_dapm_enable_pin(codec, "Audio Out");
> + snd_soc_dapm_disable_pin(codec, "GSM Line Out");
> + snd_soc_dapm_disable_pin(codec, "GSM Line In");
> + snd_soc_dapm_disable_pin(codec, "Headset Mic");
> + snd_soc_dapm_disable_pin(codec, "Call Mic");
> break;
> case NEO_STEREO_TO_HEADPHONES:
> - snd_soc_dapm_set_endpoint(codec, "Audio Out", 1);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
> - snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
> - snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
> + snd_soc_dapm_enable_pin(codec, "Audio Out");
> + snd_soc_dapm_disable_pin(codec, "GSM Line Out");
> + snd_soc_dapm_disable_pin(codec, "GSM Line In");
> + snd_soc_dapm_disable_pin(codec, "Headset Mic");
> + snd_soc_dapm_disable_pin(codec, "Call Mic");
> break;
> case NEO_CAPTURE_HANDSET:
> - snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
> - snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
> - snd_soc_dapm_set_endpoint(codec, "Call Mic", 1);
> + snd_soc_dapm_disable_pin(codec, "Audio Out");
> + snd_soc_dapm_disable_pin(codec, "GSM Line Out");
> + snd_soc_dapm_disable_pin(codec, "GSM Line In");
> + snd_soc_dapm_disable_pin(codec, "Headset Mic");
> + snd_soc_dapm_enable_pin(codec, "Call Mic");
> break;
> case NEO_CAPTURE_HEADSET:
> - snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
> - snd_soc_dapm_set_endpoint(codec, "Headset Mic", 1);
> - snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
> + snd_soc_dapm_disable_pin(codec, "Audio Out");
> + snd_soc_dapm_disable_pin(codec, "GSM Line Out");
> + snd_soc_dapm_disable_pin(codec, "GSM Line In");
> + snd_soc_dapm_enable_pin(codec, "Headset Mic");
> + snd_soc_dapm_disable_pin(codec, "Call Mic");
> break;
> case NEO_CAPTURE_BLUETOOTH:
> - snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
> - snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
> - snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
> + snd_soc_dapm_disable_pin(codec, "Audio Out");
> + snd_soc_dapm_disable_pin(codec, "GSM Line Out");
> + snd_soc_dapm_disable_pin(codec, "GSM Line In");
> + snd_soc_dapm_disable_pin(codec, "Headset Mic");
> + snd_soc_dapm_disable_pin(codec, "Call Mic");
> break;
> default:
> - snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line Out", 0);
> - snd_soc_dapm_set_endpoint(codec, "GSM Line In", 0);
> - snd_soc_dapm_set_endpoint(codec, "Headset Mic", 0);
> - snd_soc_dapm_set_endpoint(codec, "Call Mic", 0);
> + snd_soc_dapm_disable_pin(codec, "Audio Out");
> + snd_soc_dapm_disable_pin(codec, "GSM Line Out");
> + snd_soc_dapm_disable_pin(codec, "GSM Line In");
> + snd_soc_dapm_disable_pin(codec, "Headset Mic");
> + snd_soc_dapm_disable_pin(codec, "Call Mic");
> }
>
> - snd_soc_dapm_sync_endpoints(codec);
> + snd_soc_dapm_sync(codec);
>
> return 0;
> }
> @@ -511,12 +511,12 @@ static int neo1973_wm8753_init(struct snd_soc_codec *codec)
> DBG("Entered %s\n", __func__);
>
> /* set up NC codec pins */
> - snd_soc_dapm_set_endpoint(codec, "LOUT2", 0);
> - snd_soc_dapm_set_endpoint(codec, "ROUT2", 0);
> - snd_soc_dapm_set_endpoint(codec, "OUT3", 0);
> - snd_soc_dapm_set_endpoint(codec, "OUT4", 0);
> - snd_soc_dapm_set_endpoint(codec, "LINE1", 0);
> - snd_soc_dapm_set_endpoint(codec, "LINE2", 0);
> + snd_soc_dapm_disable_pin(codec, "LOUT2");
> + snd_soc_dapm_disable_pin(codec, "ROUT2");
> + snd_soc_dapm_disable_pin(codec, "OUT3");
> + snd_soc_dapm_disable_pin(codec, "OUT4");
> + snd_soc_dapm_disable_pin(codec, "LINE1");
> + snd_soc_dapm_disable_pin(codec, "LINE2");
>
>
> /* set endpoints to default mode */
> @@ -539,7 +539,7 @@ static int neo1973_wm8753_init(struct snd_soc_codec *codec)
> err = snd_soc_dapm_add_routes(codec, dapm_routes,
> ARRAY_SIZE(dapm_routes));
>
> - snd_soc_dapm_sync_endpoints(codec);
> + snd_soc_dapm_sync(codec);
> return 0;
> }
>
> diff --git a/sound/soc/sh/sh7760-ac97.c b/sound/soc/sh/sh7760-ac97.c
> index 2f91de8..846d1b3 100644
> --- a/sound/soc/sh/sh7760-ac97.c
> +++ b/sound/soc/sh/sh7760-ac97.c
> @@ -25,7 +25,7 @@ extern struct snd_soc_platform sh7760_soc_platform;
>
> static int machine_init(struct snd_soc_codec *codec)
> {
> - snd_soc_dapm_sync_endpoints(codec);
> + snd_soc_dapm_sync(codec);
> return 0;
> }
>
> diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c
> index 91cbbef..94296b5 100644
> --- a/sound/soc/soc-dapm.c
> +++ b/sound/soc/soc-dapm.c
> @@ -880,8 +880,25 @@ static void dapm_free_widgets(struct snd_soc_codec *codec)
> }
> }
>
> +static int snd_soc_dapm_set_pin(struct snd_soc_codec *codec,
> + char *pin, int status)
> +{
> + struct snd_soc_dapm_widget *w;
> +
> + list_for_each_entry(w, &codec->dapm_widgets, list) {
> + if (!strcmp(w->name, pin)) {
> + dbg("dapm: %s: pin %s\n", codec->name, pin);
> + w->connected = status;
> + return 0;
> + }
> + }
> +
> + dbg("dapm: %s: configuring unknown pin %s\n", codec->name, pin);
> + return -EINVAL;
> +}
> +
> /**
> - * snd_soc_dapm_sync_endpoints - scan and power dapm paths
> + * snd_soc_dapm_sync - scan and power dapm paths
> * @codec: audio codec
> *
> * Walks all dapm audio paths and powers widgets according to their
> @@ -889,11 +906,11 @@ static void dapm_free_widgets(struct snd_soc_codec *codec)
> *
> * Returns 0 for success.
> */
> -int snd_soc_dapm_sync_endpoints(struct snd_soc_codec *codec)
> +int snd_soc_dapm_sync(struct snd_soc_codec *codec)
> {
> return dapm_power_widgets(codec, SND_SOC_DAPM_STREAM_NOP);
> }
> -EXPORT_SYMBOL_GPL(snd_soc_dapm_sync_endpoints);
> +EXPORT_SYMBOL_GPL(snd_soc_dapm_sync);
>
> static int snd_soc_dapm_add_route(struct snd_soc_codec *codec,
> const char *sink, const char *control, const char *source)
> @@ -1441,53 +1458,57 @@ int snd_soc_dapm_set_bias_level(struct snd_soc_device *socdev,
> }
>
> /**
> - * snd_soc_dapm_set_endpoint - set audio endpoint status
> - * @codec: audio codec
> - * @endpoint: audio signal endpoint (or start point)
> - * @status: point status
> - *
> - * Set audio endpoint status - connected or disconnected.
> + * snd_soc_dapm_enable_pin - enable pin.
> + * @snd_soc_codec: SoC codec
> + * @pin: pin name
> *
> - * Returns 0 for success else error.
> + * Enables input/output pin and it's parents or children widgets iff there is
> + * a valid audio route and active audio stream.
> + * NOTE: snd_soc_dapm_sync() needs to be called after this for DAPM to
> + * do any widget power switching.
> */
> -int snd_soc_dapm_set_endpoint(struct snd_soc_codec *codec,
> - char *endpoint, int status)
> +int snd_soc_dapm_enable_pin(struct snd_soc_codec *codec, char *pin)
> {
> - struct snd_soc_dapm_widget *w;
> -
> - list_for_each_entry(w, &codec->dapm_widgets, list) {
> - if (!strcmp(w->name, endpoint)) {
> - w->connected = status;
> - return 0;
> - }
> - }
> + return snd_soc_dapm_set_pin(codec, pin, 1);
> +}
> +EXPORT_SYMBOL_GPL(snd_soc_dapm_enable_pin);
>
> - return -ENODEV;
> +/**
> + * snd_soc_dapm_disable_pin - disable pin.
> + * @codec: SoC codec
> + * @pin: pin name
> + *
> + * Disables input/output pin and it's parents or children widgets.
> + * NOTE: snd_soc_dapm_sync() needs to be called after this for DAPM to
> + * do any widget power switching.
> + */
> +int snd_soc_dapm_disable_pin(struct snd_soc_codec *codec, char *pin)
> +{
> + return snd_soc_dapm_set_pin(codec, pin, 0);
> }
> -EXPORT_SYMBOL_GPL(snd_soc_dapm_set_endpoint);
> +EXPORT_SYMBOL_GPL(snd_soc_dapm_disable_pin);
>
> /**
> - * snd_soc_dapm_get_endpoint_status - get audio endpoint status
> + * snd_soc_dapm_get_pin_status - get audio pin status
> * @codec: audio codec
> - * @endpoint: audio signal endpoint (or start point)
> + * @pin: audio signal pin endpoint (or start point)
> *
> - * Get audio endpoint status - connected or disconnected.
> + * Get audio pin status - connected or disconnected.
> *
> - * Returns status
> + * Returns 1 for connected otherwise 0.
> */
> -int snd_soc_dapm_get_endpoint_status(struct snd_soc_codec *codec,
> - char *endpoint)
> +int snd_soc_dapm_get_pin_status(struct snd_soc_codec *codec, char *pin)
> {
> struct snd_soc_dapm_widget *w;
>
> list_for_each_entry(w, &codec->dapm_widgets, list) {
> - if (!strcmp(w->name, endpoint))
> + if (!strcmp(w->name, pin))
> return w->connected;
> }
>
> return 0;
> }
> -EXPORT_SYMBOL_GPL(snd_soc_dapm_get_endpoint_status);
> +EXPORT_SYMBOL_GPL(snd_soc_dapm_get_pin_status);
>
> /**
> * snd_soc_dapm_free - free dapm resources
> --
> 1.5.4.2
>
>
>
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-07-07 15:29 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-07-04 14:07 [PATCH] asoc: core - refactored DAPM pin control API Liam Girdwood
2008-07-04 15:02 ` Takashi Iwai
2008-07-04 17:38 ` Liam Girdwood
2008-07-07 12:35 ` Liam Girdwood
2008-07-07 15:29 ` Takashi Iwai
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.