aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/pxa
diff options
context:
space:
mode:
authorMark Brown <broonie@linaro.org>2014-03-13 05:40:56 -0400
committerMark Brown <broonie@linaro.org>2014-03-13 05:40:56 -0400
commit7a87ac1f66800460e82b7ff3286dfec1c5bb9b84 (patch)
tree5907ca9eee5d390d6817b5625780aa1505a6a132 /sound/soc/pxa
parenta9576cbbbafa2c687121638dadebfb136562a522 (diff)
parente95d73c437a09e7febea18f8e998f958ef6d7a72 (diff)
Merge branch 'topic/dapm' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-pxa
Diffstat (limited to 'sound/soc/pxa')
-rw-r--r--sound/soc/pxa/corgi.c42
-rw-r--r--sound/soc/pxa/magician.c22
-rw-r--r--sound/soc/pxa/spitz.c51
-rw-r--r--sound/soc/pxa/tosa.c28
4 files changed, 80 insertions, 63 deletions
diff --git a/sound/soc/pxa/corgi.c b/sound/soc/pxa/corgi.c
index 916ff63d85d0..5a88136aa800 100644
--- a/sound/soc/pxa/corgi.c
+++ b/sound/soc/pxa/corgi.c
@@ -47,51 +47,55 @@ static int corgi_spk_func;
47 47
48static void corgi_ext_control(struct snd_soc_dapm_context *dapm) 48static void corgi_ext_control(struct snd_soc_dapm_context *dapm)
49{ 49{
50 snd_soc_dapm_mutex_lock(dapm);
51
50 /* set up jack connection */ 52 /* set up jack connection */
51 switch (corgi_jack_func) { 53 switch (corgi_jack_func) {
52 case CORGI_HP: 54 case CORGI_HP:
53 /* set = unmute headphone */ 55 /* set = unmute headphone */
54 gpio_set_value(CORGI_GPIO_MUTE_L, 1); 56 gpio_set_value(CORGI_GPIO_MUTE_L, 1);
55 gpio_set_value(CORGI_GPIO_MUTE_R, 1); 57 gpio_set_value(CORGI_GPIO_MUTE_R, 1);
56 snd_soc_dapm_disable_pin(dapm, "Mic Jack"); 58 snd_soc_dapm_disable_pin_unlocked(dapm, "Mic Jack");
57 snd_soc_dapm_disable_pin(dapm, "Line Jack"); 59 snd_soc_dapm_disable_pin_unlocked(dapm, "Line Jack");
58 snd_soc_dapm_enable_pin(dapm, "Headphone Jack"); 60 snd_soc_dapm_enable_pin_unlocked(dapm, "Headphone Jack");
59 snd_soc_dapm_disable_pin(dapm, "Headset Jack"); 61 snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Jack");
60 break; 62 break;
61 case CORGI_MIC: 63 case CORGI_MIC:
62 /* reset = mute headphone */ 64 /* reset = mute headphone */
63 gpio_set_value(CORGI_GPIO_MUTE_L, 0); 65 gpio_set_value(CORGI_GPIO_MUTE_L, 0);
64 gpio_set_value(CORGI_GPIO_MUTE_R, 0); 66 gpio_set_value(CORGI_GPIO_MUTE_R, 0);
65 snd_soc_dapm_enable_pin(dapm, "Mic Jack"); 67 snd_soc_dapm_enable_pin_unlocked(dapm, "Mic Jack");
66 snd_soc_dapm_disable_pin(dapm, "Line Jack"); 68 snd_soc_dapm_disable_pin_unlocked(dapm, "Line Jack");
67 snd_soc_dapm_disable_pin(dapm, "Headphone Jack"); 69 snd_soc_dapm_disable_pin_unlocked(dapm, "Headphone Jack");
68 snd_soc_dapm_disable_pin(dapm, "Headset Jack"); 70 snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Jack");
69 break; 71 break;
70 case CORGI_LINE: 72 case CORGI_LINE:
71 gpio_set_value(CORGI_GPIO_MUTE_L, 0); 73 gpio_set_value(CORGI_GPIO_MUTE_L, 0);
72 gpio_set_value(CORGI_GPIO_MUTE_R, 0); 74 gpio_set_value(CORGI_GPIO_MUTE_R, 0);
73 snd_soc_dapm_disable_pin(dapm, "Mic Jack"); 75 snd_soc_dapm_disable_pin_unlocked(dapm, "Mic Jack");
74 snd_soc_dapm_enable_pin(dapm, "Line Jack"); 76 snd_soc_dapm_enable_pin_unlocked(dapm, "Line Jack");
75 snd_soc_dapm_disable_pin(dapm, "Headphone Jack"); 77 snd_soc_dapm_disable_pin_unlocked(dapm, "Headphone Jack");
76 snd_soc_dapm_disable_pin(dapm, "Headset Jack"); 78 snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Jack");
77 break; 79 break;
78 case CORGI_HEADSET: 80 case CORGI_HEADSET:
79 gpio_set_value(CORGI_GPIO_MUTE_L, 0); 81 gpio_set_value(CORGI_GPIO_MUTE_L, 0);
80 gpio_set_value(CORGI_GPIO_MUTE_R, 1); 82 gpio_set_value(CORGI_GPIO_MUTE_R, 1);
81 snd_soc_dapm_enable_pin(dapm, "Mic Jack"); 83 snd_soc_dapm_enable_pin_unlocked(dapm, "Mic Jack");
82 snd_soc_dapm_disable_pin(dapm, "Line Jack"); 84 snd_soc_dapm_disable_pin_unlocked(dapm, "Line Jack");
83 snd_soc_dapm_disable_pin(dapm, "Headphone Jack"); 85 snd_soc_dapm_disable_pin_unlocked(dapm, "Headphone Jack");
84 snd_soc_dapm_enable_pin(dapm, "Headset Jack"); 86 snd_soc_dapm_enable_pin_unlocked(dapm, "Headset Jack");
85 break; 87 break;
86 } 88 }
87 89
88 if (corgi_spk_func == CORGI_SPK_ON) 90 if (corgi_spk_func == CORGI_SPK_ON)
89 snd_soc_dapm_enable_pin(dapm, "Ext Spk"); 91 snd_soc_dapm_enable_pin_unlocked(dapm, "Ext Spk");
90 else 92 else
91 snd_soc_dapm_disable_pin(dapm, "Ext Spk"); 93 snd_soc_dapm_disable_pin_unlocked(dapm, "Ext Spk");
92 94
93 /* signal a DAPM event */ 95 /* signal a DAPM event */
94 snd_soc_dapm_sync(dapm); 96 snd_soc_dapm_sync_unlocked(dapm);
97
98 snd_soc_dapm_mutex_unlock(dapm);
95} 99}
96 100
97static int corgi_startup(struct snd_pcm_substream *substream) 101static int corgi_startup(struct snd_pcm_substream *substream)
diff --git a/sound/soc/pxa/magician.c b/sound/soc/pxa/magician.c
index aeb08f5f3e1c..41ab6678b65d 100644
--- a/sound/soc/pxa/magician.c
+++ b/sound/soc/pxa/magician.c
@@ -45,27 +45,31 @@ static void magician_ext_control(struct snd_soc_codec *codec)
45{ 45{
46 struct snd_soc_dapm_context *dapm = &codec->dapm; 46 struct snd_soc_dapm_context *dapm = &codec->dapm;
47 47
48 snd_soc_dapm_mutex_lock(dapm);
49
48 if (magician_spk_switch) 50 if (magician_spk_switch)
49 snd_soc_dapm_enable_pin(dapm, "Speaker"); 51 snd_soc_dapm_enable_pin_unlocked(dapm, "Speaker");
50 else 52 else
51 snd_soc_dapm_disable_pin(dapm, "Speaker"); 53 snd_soc_dapm_disable_pin_unlocked(dapm, "Speaker");
52 if (magician_hp_switch) 54 if (magician_hp_switch)
53 snd_soc_dapm_enable_pin(dapm, "Headphone Jack"); 55 snd_soc_dapm_enable_pin_unlocked(dapm, "Headphone Jack");
54 else 56 else
55 snd_soc_dapm_disable_pin(dapm, "Headphone Jack"); 57 snd_soc_dapm_disable_pin_unlocked(dapm, "Headphone Jack");
56 58
57 switch (magician_in_sel) { 59 switch (magician_in_sel) {
58 case MAGICIAN_MIC: 60 case MAGICIAN_MIC:
59 snd_soc_dapm_disable_pin(dapm, "Headset Mic"); 61 snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Mic");
60 snd_soc_dapm_enable_pin(dapm, "Call Mic"); 62 snd_soc_dapm_enable_pin_unlocked(dapm, "Call Mic");
61 break; 63 break;
62 case MAGICIAN_MIC_EXT: 64 case MAGICIAN_MIC_EXT:
63 snd_soc_dapm_disable_pin(dapm, "Call Mic"); 65 snd_soc_dapm_disable_pin_unlocked(dapm, "Call Mic");
64 snd_soc_dapm_enable_pin(dapm, "Headset Mic"); 66 snd_soc_dapm_enable_pin_unlocked(dapm, "Headset Mic");
65 break; 67 break;
66 } 68 }
67 69
68 snd_soc_dapm_sync(dapm); 70 snd_soc_dapm_sync_unlocked(dapm);
71
72 snd_soc_dapm_mutex_unlock(dapm);
69} 73}
70 74
71static int magician_startup(struct snd_pcm_substream *substream) 75static int magician_startup(struct snd_pcm_substream *substream)
diff --git a/sound/soc/pxa/spitz.c b/sound/soc/pxa/spitz.c
index d1b6bf9c8583..1373b017a951 100644
--- a/sound/soc/pxa/spitz.c
+++ b/sound/soc/pxa/spitz.c
@@ -46,61 +46,66 @@ static int spitz_mic_gpio;
46 46
47static void spitz_ext_control(struct snd_soc_dapm_context *dapm) 47static void spitz_ext_control(struct snd_soc_dapm_context *dapm)
48{ 48{
49 snd_soc_dapm_mutex_lock(dapm);
50
49 if (spitz_spk_func == SPITZ_SPK_ON) 51 if (spitz_spk_func == SPITZ_SPK_ON)
50 snd_soc_dapm_enable_pin(dapm, "Ext Spk"); 52 snd_soc_dapm_enable_pin_unlocked(dapm, "Ext Spk");
51 else 53 else
52 snd_soc_dapm_disable_pin(dapm, "Ext Spk"); 54 snd_soc_dapm_disable_pin_unlocked(dapm, "Ext Spk");
53 55
54 /* set up jack connection */ 56 /* set up jack connection */
55 switch (spitz_jack_func) { 57 switch (spitz_jack_func) {
56 case SPITZ_HP: 58 case SPITZ_HP:
57 /* enable and unmute hp jack, disable mic bias */ 59 /* enable and unmute hp jack, disable mic bias */
58 snd_soc_dapm_disable_pin(dapm, "Headset Jack"); 60 snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Jack");
59 snd_soc_dapm_disable_pin(dapm, "Mic Jack"); 61 snd_soc_dapm_disable_pin_unlocked(dapm, "Mic Jack");
60 snd_soc_dapm_disable_pin(dapm, "Line Jack"); 62 snd_soc_dapm_disable_pin_unlocked(dapm, "Line Jack");
61 snd_soc_dapm_enable_pin(dapm, "Headphone Jack"); 63 snd_soc_dapm_enable_pin_unlocked(dapm, "Headphone Jack");
62 gpio_set_value(SPITZ_GPIO_MUTE_L, 1); 64 gpio_set_value(SPITZ_GPIO_MUTE_L, 1);
63 gpio_set_value(SPITZ_GPIO_MUTE_R, 1); 65 gpio_set_value(SPITZ_GPIO_MUTE_R, 1);
64 break; 66 break;
65 case SPITZ_MIC: 67 case SPITZ_MIC:
66 /* enable mic jack and bias, mute hp */ 68 /* enable mic jack and bias, mute hp */
67 snd_soc_dapm_disable_pin(dapm, "Headphone Jack"); 69 snd_soc_dapm_disable_pin_unlocked(dapm, "Headphone Jack");
68 snd_soc_dapm_disable_pin(dapm, "Headset Jack"); 70 snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Jack");
69 snd_soc_dapm_disable_pin(dapm, "Line Jack"); 71 snd_soc_dapm_disable_pin_unlocked(dapm, "Line Jack");
70 snd_soc_dapm_enable_pin(dapm, "Mic Jack"); 72 snd_soc_dapm_enable_pin_unlocked(dapm, "Mic Jack");
71 gpio_set_value(SPITZ_GPIO_MUTE_L, 0); 73 gpio_set_value(SPITZ_GPIO_MUTE_L, 0);
72 gpio_set_value(SPITZ_GPIO_MUTE_R, 0); 74 gpio_set_value(SPITZ_GPIO_MUTE_R, 0);
73 break; 75 break;
74 case SPITZ_LINE: 76 case SPITZ_LINE:
75 /* enable line jack, disable mic bias and mute hp */ 77 /* enable line jack, disable mic bias and mute hp */
76 snd_soc_dapm_disable_pin(dapm, "Headphone Jack"); 78 snd_soc_dapm_disable_pin_unlocked(dapm, "Headphone Jack");
77 snd_soc_dapm_disable_pin(dapm, "Headset Jack"); 79 snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Jack");
78 snd_soc_dapm_disable_pin(dapm, "Mic Jack"); 80 snd_soc_dapm_disable_pin_unlocked(dapm, "Mic Jack");
79 snd_soc_dapm_enable_pin(dapm, "Line Jack"); 81 snd_soc_dapm_enable_pin_unlocked(dapm, "Line Jack");
80 gpio_set_value(SPITZ_GPIO_MUTE_L, 0); 82 gpio_set_value(SPITZ_GPIO_MUTE_L, 0);
81 gpio_set_value(SPITZ_GPIO_MUTE_R, 0); 83 gpio_set_value(SPITZ_GPIO_MUTE_R, 0);
82 break; 84 break;
83 case SPITZ_HEADSET: 85 case SPITZ_HEADSET:
84 /* enable and unmute headset jack enable mic bias, mute L hp */ 86 /* enable and unmute headset jack enable mic bias, mute L hp */
85 snd_soc_dapm_disable_pin(dapm, "Headphone Jack"); 87 snd_soc_dapm_disable_pin_unlocked(dapm, "Headphone Jack");
86 snd_soc_dapm_enable_pin(dapm, "Mic Jack"); 88 snd_soc_dapm_enable_pin_unlocked(dapm, "Mic Jack");
87 snd_soc_dapm_disable_pin(dapm, "Line Jack"); 89 snd_soc_dapm_disable_pin_unlocked(dapm, "Line Jack");
88 snd_soc_dapm_enable_pin(dapm, "Headset Jack"); 90 snd_soc_dapm_enable_pin_unlocked(dapm, "Headset Jack");
89 gpio_set_value(SPITZ_GPIO_MUTE_L, 0); 91 gpio_set_value(SPITZ_GPIO_MUTE_L, 0);
90 gpio_set_value(SPITZ_GPIO_MUTE_R, 1); 92 gpio_set_value(SPITZ_GPIO_MUTE_R, 1);
91 break; 93 break;
92 case SPITZ_HP_OFF: 94 case SPITZ_HP_OFF:
93 95
94 /* jack removed, everything off */ 96 /* jack removed, everything off */
95 snd_soc_dapm_disable_pin(dapm, "Headphone Jack"); 97 snd_soc_dapm_disable_pin_unlocked(dapm, "Headphone Jack");
96 snd_soc_dapm_disable_pin(dapm, "Headset Jack"); 98 snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Jack");
97 snd_soc_dapm_disable_pin(dapm, "Mic Jack"); 99 snd_soc_dapm_disable_pin_unlocked(dapm, "Mic Jack");
98 snd_soc_dapm_disable_pin(dapm, "Line Jack"); 100 snd_soc_dapm_disable_pin_unlocked(dapm, "Line Jack");
99 gpio_set_value(SPITZ_GPIO_MUTE_L, 0); 101 gpio_set_value(SPITZ_GPIO_MUTE_L, 0);
100 gpio_set_value(SPITZ_GPIO_MUTE_R, 0); 102 gpio_set_value(SPITZ_GPIO_MUTE_R, 0);
101 break; 103 break;
102 } 104 }
103 snd_soc_dapm_sync(dapm); 105
106 snd_soc_dapm_sync_unlocked(dapm);
107
108 snd_soc_dapm_mutex_unlock(dapm);
104} 109}
105 110
106static int spitz_startup(struct snd_pcm_substream *substream) 111static int spitz_startup(struct snd_pcm_substream *substream)
diff --git a/sound/soc/pxa/tosa.c b/sound/soc/pxa/tosa.c
index d6f38d7ecc1c..cead1658d10a 100644
--- a/sound/soc/pxa/tosa.c
+++ b/sound/soc/pxa/tosa.c
@@ -48,31 +48,35 @@ static void tosa_ext_control(struct snd_soc_codec *codec)
48{ 48{
49 struct snd_soc_dapm_context *dapm = &codec->dapm; 49 struct snd_soc_dapm_context *dapm = &codec->dapm;
50 50
51 snd_soc_dapm_mutex_lock(dapm);
52
51 /* set up jack connection */ 53 /* set up jack connection */
52 switch (tosa_jack_func) { 54 switch (tosa_jack_func) {
53 case TOSA_HP: 55 case TOSA_HP:
54 snd_soc_dapm_disable_pin(dapm, "Mic (Internal)"); 56 snd_soc_dapm_disable_pin_unlocked(dapm, "Mic (Internal)");
55 snd_soc_dapm_enable_pin(dapm, "Headphone Jack"); 57 snd_soc_dapm_enable_pin_unlocked(dapm, "Headphone Jack");
56 snd_soc_dapm_disable_pin(dapm, "Headset Jack"); 58 snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Jack");
57 break; 59 break;
58 case TOSA_MIC_INT: 60 case TOSA_MIC_INT:
59 snd_soc_dapm_enable_pin(dapm, "Mic (Internal)"); 61 snd_soc_dapm_enable_pin_unlocked(dapm, "Mic (Internal)");
60 snd_soc_dapm_disable_pin(dapm, "Headphone Jack"); 62 snd_soc_dapm_disable_pin_unlocked(dapm, "Headphone Jack");
61 snd_soc_dapm_disable_pin(dapm, "Headset Jack"); 63 snd_soc_dapm_disable_pin_unlocked(dapm, "Headset Jack");
62 break; 64 break;
63 case TOSA_HEADSET: 65 case TOSA_HEADSET:
64 snd_soc_dapm_disable_pin(dapm, "Mic (Internal)"); 66 snd_soc_dapm_disable_pin_unlocked(dapm, "Mic (Internal)");
65 snd_soc_dapm_disable_pin(dapm, "Headphone Jack"); 67 snd_soc_dapm_disable_pin_unlocked(dapm, "Headphone Jack");
66 snd_soc_dapm_enable_pin(dapm, "Headset Jack"); 68 snd_soc_dapm_enable_pin_unlocked(dapm, "Headset Jack");
67 break; 69 break;
68 } 70 }
69 71
70 if (tosa_spk_func == TOSA_SPK_ON) 72 if (tosa_spk_func == TOSA_SPK_ON)
71 snd_soc_dapm_enable_pin(dapm, "Speaker"); 73 snd_soc_dapm_enable_pin_unlocked(dapm, "Speaker");
72 else 74 else
73 snd_soc_dapm_disable_pin(dapm, "Speaker"); 75 snd_soc_dapm_disable_pin_unlocked(dapm, "Speaker");
76
77 snd_soc_dapm_sync_unlocked(dapm);
74 78
75 snd_soc_dapm_sync(dapm); 79 snd_soc_dapm_mutex_unlock(dapm);
76} 80}
77 81
78static int tosa_startup(struct snd_pcm_substream *substream) 82static int tosa_startup(struct snd_pcm_substream *substream)