diff options
Diffstat (limited to 'sound/soc/codecs')
-rw-r--r-- | sound/soc/codecs/ab8500-codec.h | 36 | ||||
-rw-r--r-- | sound/soc/codecs/cs42l52.c | 12 | ||||
-rw-r--r-- | sound/soc/codecs/cs42l52.h | 2 | ||||
-rw-r--r-- | sound/soc/codecs/da7213.c | 8 | ||||
-rw-r--r-- | sound/soc/codecs/max98090.c | 2 | ||||
-rw-r--r-- | sound/soc/codecs/tlv320aic3x.c | 10 | ||||
-rw-r--r-- | sound/soc/codecs/wm0010.c | 1 | ||||
-rw-r--r-- | sound/soc/codecs/wm5102.c | 3 | ||||
-rw-r--r-- | sound/soc/codecs/wm5110.c | 7 | ||||
-rw-r--r-- | sound/soc/codecs/wm8994.c | 15 |
10 files changed, 57 insertions, 39 deletions
diff --git a/sound/soc/codecs/ab8500-codec.h b/sound/soc/codecs/ab8500-codec.h index 114f69a0c629..306d0bc8455f 100644 --- a/sound/soc/codecs/ab8500-codec.h +++ b/sound/soc/codecs/ab8500-codec.h | |||
@@ -348,25 +348,25 @@ | |||
348 | 348 | ||
349 | /* AB8500_ADSLOTSELX */ | 349 | /* AB8500_ADSLOTSELX */ |
350 | #define AB8500_ADSLOTSELX_AD_OUT1_TO_SLOT_ODD 0x00 | 350 | #define AB8500_ADSLOTSELX_AD_OUT1_TO_SLOT_ODD 0x00 |
351 | #define AB8500_ADSLOTSELX_AD_OUT2_TO_SLOT_ODD 0x01 | 351 | #define AB8500_ADSLOTSELX_AD_OUT2_TO_SLOT_ODD 0x10 |
352 | #define AB8500_ADSLOTSELX_AD_OUT3_TO_SLOT_ODD 0x02 | 352 | #define AB8500_ADSLOTSELX_AD_OUT3_TO_SLOT_ODD 0x20 |
353 | #define AB8500_ADSLOTSELX_AD_OUT4_TO_SLOT_ODD 0x03 | 353 | #define AB8500_ADSLOTSELX_AD_OUT4_TO_SLOT_ODD 0x30 |
354 | #define AB8500_ADSLOTSELX_AD_OUT5_TO_SLOT_ODD 0x04 | 354 | #define AB8500_ADSLOTSELX_AD_OUT5_TO_SLOT_ODD 0x40 |
355 | #define AB8500_ADSLOTSELX_AD_OUT6_TO_SLOT_ODD 0x05 | 355 | #define AB8500_ADSLOTSELX_AD_OUT6_TO_SLOT_ODD 0x50 |
356 | #define AB8500_ADSLOTSELX_AD_OUT7_TO_SLOT_ODD 0x06 | 356 | #define AB8500_ADSLOTSELX_AD_OUT7_TO_SLOT_ODD 0x60 |
357 | #define AB8500_ADSLOTSELX_AD_OUT8_TO_SLOT_ODD 0x07 | 357 | #define AB8500_ADSLOTSELX_AD_OUT8_TO_SLOT_ODD 0x70 |
358 | #define AB8500_ADSLOTSELX_ZEROES_TO_SLOT_ODD 0x08 | 358 | #define AB8500_ADSLOTSELX_ZEROES_TO_SLOT_ODD 0x80 |
359 | #define AB8500_ADSLOTSELX_TRISTATE_TO_SLOT_ODD 0x0F | 359 | #define AB8500_ADSLOTSELX_TRISTATE_TO_SLOT_ODD 0xF0 |
360 | #define AB8500_ADSLOTSELX_AD_OUT1_TO_SLOT_EVEN 0x00 | 360 | #define AB8500_ADSLOTSELX_AD_OUT1_TO_SLOT_EVEN 0x00 |
361 | #define AB8500_ADSLOTSELX_AD_OUT2_TO_SLOT_EVEN 0x10 | 361 | #define AB8500_ADSLOTSELX_AD_OUT2_TO_SLOT_EVEN 0x01 |
362 | #define AB8500_ADSLOTSELX_AD_OUT3_TO_SLOT_EVEN 0x20 | 362 | #define AB8500_ADSLOTSELX_AD_OUT3_TO_SLOT_EVEN 0x02 |
363 | #define AB8500_ADSLOTSELX_AD_OUT4_TO_SLOT_EVEN 0x30 | 363 | #define AB8500_ADSLOTSELX_AD_OUT4_TO_SLOT_EVEN 0x03 |
364 | #define AB8500_ADSLOTSELX_AD_OUT5_TO_SLOT_EVEN 0x40 | 364 | #define AB8500_ADSLOTSELX_AD_OUT5_TO_SLOT_EVEN 0x04 |
365 | #define AB8500_ADSLOTSELX_AD_OUT6_TO_SLOT_EVEN 0x50 | 365 | #define AB8500_ADSLOTSELX_AD_OUT6_TO_SLOT_EVEN 0x05 |
366 | #define AB8500_ADSLOTSELX_AD_OUT7_TO_SLOT_EVEN 0x60 | 366 | #define AB8500_ADSLOTSELX_AD_OUT7_TO_SLOT_EVEN 0x06 |
367 | #define AB8500_ADSLOTSELX_AD_OUT8_TO_SLOT_EVEN 0x70 | 367 | #define AB8500_ADSLOTSELX_AD_OUT8_TO_SLOT_EVEN 0x07 |
368 | #define AB8500_ADSLOTSELX_ZEROES_TO_SLOT_EVEN 0x80 | 368 | #define AB8500_ADSLOTSELX_ZEROES_TO_SLOT_EVEN 0x08 |
369 | #define AB8500_ADSLOTSELX_TRISTATE_TO_SLOT_EVEN 0xF0 | 369 | #define AB8500_ADSLOTSELX_TRISTATE_TO_SLOT_EVEN 0x0F |
370 | #define AB8500_ADSLOTSELX_EVEN_SHIFT 0 | 370 | #define AB8500_ADSLOTSELX_EVEN_SHIFT 0 |
371 | #define AB8500_ADSLOTSELX_ODD_SHIFT 4 | 371 | #define AB8500_ADSLOTSELX_ODD_SHIFT 4 |
372 | 372 | ||
diff --git a/sound/soc/codecs/cs42l52.c b/sound/soc/codecs/cs42l52.c index 0f6f481cec09..987f728718c5 100644 --- a/sound/soc/codecs/cs42l52.c +++ b/sound/soc/codecs/cs42l52.c | |||
@@ -86,7 +86,7 @@ static const struct reg_default cs42l52_reg_defaults[] = { | |||
86 | { CS42L52_BEEP_VOL, 0x00 }, /* r1D Beep Volume off Time */ | 86 | { CS42L52_BEEP_VOL, 0x00 }, /* r1D Beep Volume off Time */ |
87 | { CS42L52_BEEP_TONE_CTL, 0x00 }, /* r1E Beep Tone Cfg. */ | 87 | { CS42L52_BEEP_TONE_CTL, 0x00 }, /* r1E Beep Tone Cfg. */ |
88 | { CS42L52_TONE_CTL, 0x00 }, /* r1F Tone Ctl */ | 88 | { CS42L52_TONE_CTL, 0x00 }, /* r1F Tone Ctl */ |
89 | { CS42L52_MASTERA_VOL, 0x88 }, /* r20 Master A Volume */ | 89 | { CS42L52_MASTERA_VOL, 0x00 }, /* r20 Master A Volume */ |
90 | { CS42L52_MASTERB_VOL, 0x00 }, /* r21 Master B Volume */ | 90 | { CS42L52_MASTERB_VOL, 0x00 }, /* r21 Master B Volume */ |
91 | { CS42L52_HPA_VOL, 0x00 }, /* r22 Headphone A Volume */ | 91 | { CS42L52_HPA_VOL, 0x00 }, /* r22 Headphone A Volume */ |
92 | { CS42L52_HPB_VOL, 0x00 }, /* r23 Headphone B Volume */ | 92 | { CS42L52_HPB_VOL, 0x00 }, /* r23 Headphone B Volume */ |
@@ -193,6 +193,8 @@ static DECLARE_TLV_DB_SCALE(mic_tlv, 1600, 100, 0); | |||
193 | 193 | ||
194 | static DECLARE_TLV_DB_SCALE(pga_tlv, -600, 50, 0); | 194 | static DECLARE_TLV_DB_SCALE(pga_tlv, -600, 50, 0); |
195 | 195 | ||
196 | static DECLARE_TLV_DB_SCALE(mix_tlv, -50, 50, 0); | ||
197 | |||
196 | static const unsigned int limiter_tlv[] = { | 198 | static const unsigned int limiter_tlv[] = { |
197 | TLV_DB_RANGE_HEAD(2), | 199 | TLV_DB_RANGE_HEAD(2), |
198 | 0, 2, TLV_DB_SCALE_ITEM(-3000, 600, 0), | 200 | 0, 2, TLV_DB_SCALE_ITEM(-3000, 600, 0), |
@@ -225,7 +227,7 @@ static const char * const mic_bias_level_text[] = { | |||
225 | }; | 227 | }; |
226 | 228 | ||
227 | static const struct soc_enum mic_bias_level_enum = | 229 | static const struct soc_enum mic_bias_level_enum = |
228 | SOC_ENUM_SINGLE(CS42L52_IFACE_CTL1, 0, | 230 | SOC_ENUM_SINGLE(CS42L52_IFACE_CTL2, 0, |
229 | ARRAY_SIZE(mic_bias_level_text), mic_bias_level_text); | 231 | ARRAY_SIZE(mic_bias_level_text), mic_bias_level_text); |
230 | 232 | ||
231 | static const char * const cs42l52_mic_text[] = { "Single", "Differential" }; | 233 | static const char * const cs42l52_mic_text[] = { "Single", "Differential" }; |
@@ -260,7 +262,7 @@ static const char * const hp_gain_num_text[] = { | |||
260 | }; | 262 | }; |
261 | 263 | ||
262 | static const struct soc_enum hp_gain_enum = | 264 | static const struct soc_enum hp_gain_enum = |
263 | SOC_ENUM_SINGLE(CS42L52_PB_CTL1, 4, | 265 | SOC_ENUM_SINGLE(CS42L52_PB_CTL1, 5, |
264 | ARRAY_SIZE(hp_gain_num_text), hp_gain_num_text); | 266 | ARRAY_SIZE(hp_gain_num_text), hp_gain_num_text); |
265 | 267 | ||
266 | static const char * const beep_pitch_text[] = { | 268 | static const char * const beep_pitch_text[] = { |
@@ -413,7 +415,7 @@ static const struct snd_kcontrol_new cs42l52_snd_controls[] = { | |||
413 | SOC_ENUM("Headphone Analog Gain", hp_gain_enum), | 415 | SOC_ENUM("Headphone Analog Gain", hp_gain_enum), |
414 | 416 | ||
415 | SOC_DOUBLE_R_SX_TLV("Speaker Volume", CS42L52_SPKA_VOL, | 417 | SOC_DOUBLE_R_SX_TLV("Speaker Volume", CS42L52_SPKA_VOL, |
416 | CS42L52_SPKB_VOL, 7, 0x1, 0xff, hl_tlv), | 418 | CS42L52_SPKB_VOL, 0, 0x1, 0xff, hl_tlv), |
417 | 419 | ||
418 | SOC_DOUBLE_R_SX_TLV("Bypass Volume", CS42L52_PASSTHRUA_VOL, | 420 | SOC_DOUBLE_R_SX_TLV("Bypass Volume", CS42L52_PASSTHRUA_VOL, |
419 | CS42L52_PASSTHRUB_VOL, 6, 0x18, 0x90, pga_tlv), | 421 | CS42L52_PASSTHRUB_VOL, 6, 0x18, 0x90, pga_tlv), |
@@ -441,7 +443,7 @@ static const struct snd_kcontrol_new cs42l52_snd_controls[] = { | |||
441 | 443 | ||
442 | SOC_DOUBLE_R_SX_TLV("PCM Mixer Volume", | 444 | SOC_DOUBLE_R_SX_TLV("PCM Mixer Volume", |
443 | CS42L52_PCMA_MIXER_VOL, CS42L52_PCMB_MIXER_VOL, | 445 | CS42L52_PCMA_MIXER_VOL, CS42L52_PCMB_MIXER_VOL, |
444 | 6, 0x7f, 0x19, hl_tlv), | 446 | 0, 0x7f, 0x19, mix_tlv), |
445 | SOC_DOUBLE_R("PCM Mixer Switch", | 447 | SOC_DOUBLE_R("PCM Mixer Switch", |
446 | CS42L52_PCMA_MIXER_VOL, CS42L52_PCMB_MIXER_VOL, 7, 1, 1), | 448 | CS42L52_PCMA_MIXER_VOL, CS42L52_PCMB_MIXER_VOL, 7, 1, 1), |
447 | 449 | ||
diff --git a/sound/soc/codecs/cs42l52.h b/sound/soc/codecs/cs42l52.h index 60985c059071..4277012c4719 100644 --- a/sound/soc/codecs/cs42l52.h +++ b/sound/soc/codecs/cs42l52.h | |||
@@ -157,7 +157,7 @@ | |||
157 | #define CS42L52_PB_CTL1_INV_PCMA (1 << 2) | 157 | #define CS42L52_PB_CTL1_INV_PCMA (1 << 2) |
158 | #define CS42L52_PB_CTL1_MSTB_MUTE (1 << 1) | 158 | #define CS42L52_PB_CTL1_MSTB_MUTE (1 << 1) |
159 | #define CS42L52_PB_CTL1_MSTA_MUTE (1 << 0) | 159 | #define CS42L52_PB_CTL1_MSTA_MUTE (1 << 0) |
160 | #define CS42L52_PB_CTL1_MUTE_MASK 0xFFFD | 160 | #define CS42L52_PB_CTL1_MUTE_MASK 0x03 |
161 | #define CS42L52_PB_CTL1_MUTE 3 | 161 | #define CS42L52_PB_CTL1_MUTE 3 |
162 | #define CS42L52_PB_CTL1_UNMUTE 0 | 162 | #define CS42L52_PB_CTL1_UNMUTE 0 |
163 | 163 | ||
diff --git a/sound/soc/codecs/da7213.c b/sound/soc/codecs/da7213.c index 41230ad1c3e0..4a6f1daf911f 100644 --- a/sound/soc/codecs/da7213.c +++ b/sound/soc/codecs/da7213.c | |||
@@ -1488,17 +1488,17 @@ static int da7213_probe(struct snd_soc_codec *codec) | |||
1488 | DA7213_DMIC_DATA_SEL_SHIFT); | 1488 | DA7213_DMIC_DATA_SEL_SHIFT); |
1489 | break; | 1489 | break; |
1490 | } | 1490 | } |
1491 | switch (pdata->dmic_data_sel) { | 1491 | switch (pdata->dmic_samplephase) { |
1492 | case DA7213_DMIC_SAMPLE_ON_CLKEDGE: | 1492 | case DA7213_DMIC_SAMPLE_ON_CLKEDGE: |
1493 | case DA7213_DMIC_SAMPLE_BETWEEN_CLKEDGE: | 1493 | case DA7213_DMIC_SAMPLE_BETWEEN_CLKEDGE: |
1494 | dmic_cfg |= (pdata->dmic_data_sel << | 1494 | dmic_cfg |= (pdata->dmic_samplephase << |
1495 | DA7213_DMIC_SAMPLEPHASE_SHIFT); | 1495 | DA7213_DMIC_SAMPLEPHASE_SHIFT); |
1496 | break; | 1496 | break; |
1497 | } | 1497 | } |
1498 | switch (pdata->dmic_data_sel) { | 1498 | switch (pdata->dmic_clk_rate) { |
1499 | case DA7213_DMIC_CLK_3_0MHZ: | 1499 | case DA7213_DMIC_CLK_3_0MHZ: |
1500 | case DA7213_DMIC_CLK_1_5MHZ: | 1500 | case DA7213_DMIC_CLK_1_5MHZ: |
1501 | dmic_cfg |= (pdata->dmic_data_sel << | 1501 | dmic_cfg |= (pdata->dmic_clk_rate << |
1502 | DA7213_DMIC_CLK_RATE_SHIFT); | 1502 | DA7213_DMIC_CLK_RATE_SHIFT); |
1503 | break; | 1503 | break; |
1504 | } | 1504 | } |
diff --git a/sound/soc/codecs/max98090.c b/sound/soc/codecs/max98090.c index ce0d36412c97..8d14a76c7249 100644 --- a/sound/soc/codecs/max98090.c +++ b/sound/soc/codecs/max98090.c | |||
@@ -2233,7 +2233,7 @@ static int max98090_probe(struct snd_soc_codec *codec) | |||
2233 | dev_dbg(codec->dev, "irq = %d\n", max98090->irq); | 2233 | dev_dbg(codec->dev, "irq = %d\n", max98090->irq); |
2234 | 2234 | ||
2235 | ret = request_threaded_irq(max98090->irq, NULL, | 2235 | ret = request_threaded_irq(max98090->irq, NULL, |
2236 | max98090_interrupt, IRQF_TRIGGER_FALLING, | 2236 | max98090_interrupt, IRQF_TRIGGER_FALLING | IRQF_ONESHOT, |
2237 | "max98090_interrupt", codec); | 2237 | "max98090_interrupt", codec); |
2238 | if (ret < 0) { | 2238 | if (ret < 0) { |
2239 | dev_err(codec->dev, "request_irq failed: %d\n", | 2239 | dev_err(codec->dev, "request_irq failed: %d\n", |
diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c index 65d09d60b7c6..1514bf845e4b 100644 --- a/sound/soc/codecs/tlv320aic3x.c +++ b/sound/soc/codecs/tlv320aic3x.c | |||
@@ -187,14 +187,14 @@ static int snd_soc_dapm_put_volsw_aic3x(struct snd_kcontrol *kcontrol, | |||
187 | 187 | ||
188 | break; | 188 | break; |
189 | } | 189 | } |
190 | |||
191 | if (found) | ||
192 | snd_soc_dapm_sync(widget->dapm); | ||
193 | } | 190 | } |
194 | 191 | ||
195 | ret = snd_soc_update_bits(widget->codec, reg, val_mask, val); | ||
196 | |||
197 | mutex_unlock(&widget->codec->mutex); | 192 | mutex_unlock(&widget->codec->mutex); |
193 | |||
194 | if (found) | ||
195 | snd_soc_dapm_sync(widget->dapm); | ||
196 | |||
197 | ret = snd_soc_update_bits_locked(widget->codec, reg, val_mask, val); | ||
198 | return ret; | 198 | return ret; |
199 | } | 199 | } |
200 | 200 | ||
diff --git a/sound/soc/codecs/wm0010.c b/sound/soc/codecs/wm0010.c index 8df2b6e1a1a6..370af0cbcc9a 100644 --- a/sound/soc/codecs/wm0010.c +++ b/sound/soc/codecs/wm0010.c | |||
@@ -667,6 +667,7 @@ static int wm0010_boot(struct snd_soc_codec *codec) | |||
667 | /* On wm0010 only the CLKCTRL1 value is used */ | 667 | /* On wm0010 only the CLKCTRL1 value is used */ |
668 | pll_rec.clkctrl1 = wm0010->pll_clkctrl1; | 668 | pll_rec.clkctrl1 = wm0010->pll_clkctrl1; |
669 | 669 | ||
670 | ret = -ENOMEM; | ||
670 | len = pll_rec.length + 8; | 671 | len = pll_rec.length + 8; |
671 | out = kzalloc(len, GFP_KERNEL); | 672 | out = kzalloc(len, GFP_KERNEL); |
672 | if (!out) { | 673 | if (!out) { |
diff --git a/sound/soc/codecs/wm5102.c b/sound/soc/codecs/wm5102.c index e895d3939eef..100fdadda56a 100644 --- a/sound/soc/codecs/wm5102.c +++ b/sound/soc/codecs/wm5102.c | |||
@@ -1120,7 +1120,8 @@ SND_SOC_DAPM_AIF_IN("AIF3RX2", NULL, 0, | |||
1120 | ARIZONA_DSP_WIDGETS(DSP1, "DSP1"), | 1120 | ARIZONA_DSP_WIDGETS(DSP1, "DSP1"), |
1121 | 1121 | ||
1122 | SND_SOC_DAPM_VALUE_MUX("AEC Loopback", ARIZONA_DAC_AEC_CONTROL_1, | 1122 | SND_SOC_DAPM_VALUE_MUX("AEC Loopback", ARIZONA_DAC_AEC_CONTROL_1, |
1123 | ARIZONA_AEC_LOOPBACK_ENA, 0, &wm5102_aec_loopback_mux), | 1123 | ARIZONA_AEC_LOOPBACK_ENA_SHIFT, 0, |
1124 | &wm5102_aec_loopback_mux), | ||
1124 | 1125 | ||
1125 | SND_SOC_DAPM_PGA_E("OUT1L", SND_SOC_NOPM, | 1126 | SND_SOC_DAPM_PGA_E("OUT1L", SND_SOC_NOPM, |
1126 | ARIZONA_OUT1L_ENA_SHIFT, 0, NULL, 0, arizona_hp_ev, | 1127 | ARIZONA_OUT1L_ENA_SHIFT, 0, NULL, 0, arizona_hp_ev, |
diff --git a/sound/soc/codecs/wm5110.c b/sound/soc/codecs/wm5110.c index 731884e04776..88ad7db52dde 100644 --- a/sound/soc/codecs/wm5110.c +++ b/sound/soc/codecs/wm5110.c | |||
@@ -190,7 +190,7 @@ ARIZONA_MIXER_CONTROLS("DSP2R", ARIZONA_DSP2RMIX_INPUT_1_SOURCE), | |||
190 | ARIZONA_MIXER_CONTROLS("DSP3L", ARIZONA_DSP3LMIX_INPUT_1_SOURCE), | 190 | ARIZONA_MIXER_CONTROLS("DSP3L", ARIZONA_DSP3LMIX_INPUT_1_SOURCE), |
191 | ARIZONA_MIXER_CONTROLS("DSP3R", ARIZONA_DSP3RMIX_INPUT_1_SOURCE), | 191 | ARIZONA_MIXER_CONTROLS("DSP3R", ARIZONA_DSP3RMIX_INPUT_1_SOURCE), |
192 | ARIZONA_MIXER_CONTROLS("DSP4L", ARIZONA_DSP4LMIX_INPUT_1_SOURCE), | 192 | ARIZONA_MIXER_CONTROLS("DSP4L", ARIZONA_DSP4LMIX_INPUT_1_SOURCE), |
193 | ARIZONA_MIXER_CONTROLS("DSP5R", ARIZONA_DSP4RMIX_INPUT_1_SOURCE), | 193 | ARIZONA_MIXER_CONTROLS("DSP4R", ARIZONA_DSP4RMIX_INPUT_1_SOURCE), |
194 | 194 | ||
195 | ARIZONA_MIXER_CONTROLS("Mic", ARIZONA_MICMIX_INPUT_1_SOURCE), | 195 | ARIZONA_MIXER_CONTROLS("Mic", ARIZONA_MICMIX_INPUT_1_SOURCE), |
196 | ARIZONA_MIXER_CONTROLS("Noise", ARIZONA_NOISEMIX_INPUT_1_SOURCE), | 196 | ARIZONA_MIXER_CONTROLS("Noise", ARIZONA_NOISEMIX_INPUT_1_SOURCE), |
@@ -503,7 +503,8 @@ SND_SOC_DAPM_PGA("ASRC2R", ARIZONA_ASRC_ENABLE, ARIZONA_ASRC2R_ENA_SHIFT, 0, | |||
503 | NULL, 0), | 503 | NULL, 0), |
504 | 504 | ||
505 | SND_SOC_DAPM_VALUE_MUX("AEC Loopback", ARIZONA_DAC_AEC_CONTROL_1, | 505 | SND_SOC_DAPM_VALUE_MUX("AEC Loopback", ARIZONA_DAC_AEC_CONTROL_1, |
506 | ARIZONA_AEC_LOOPBACK_ENA, 0, &wm5110_aec_loopback_mux), | 506 | ARIZONA_AEC_LOOPBACK_ENA_SHIFT, 0, |
507 | &wm5110_aec_loopback_mux), | ||
507 | 508 | ||
508 | SND_SOC_DAPM_AIF_OUT("AIF1TX1", NULL, 0, | 509 | SND_SOC_DAPM_AIF_OUT("AIF1TX1", NULL, 0, |
509 | ARIZONA_AIF1_TX_ENABLES, ARIZONA_AIF1TX1_ENA_SHIFT, 0), | 510 | ARIZONA_AIF1_TX_ENABLES, ARIZONA_AIF1TX1_ENA_SHIFT, 0), |
@@ -976,6 +977,8 @@ static int wm5110_codec_probe(struct snd_soc_codec *codec) | |||
976 | if (ret != 0) | 977 | if (ret != 0) |
977 | return ret; | 978 | return ret; |
978 | 979 | ||
980 | arizona_init_spk(codec); | ||
981 | |||
979 | snd_soc_dapm_disable_pin(&codec->dapm, "HAPTICS"); | 982 | snd_soc_dapm_disable_pin(&codec->dapm, "HAPTICS"); |
980 | 983 | ||
981 | priv->core.arizona->dapm = &codec->dapm; | 984 | priv->core.arizona->dapm = &codec->dapm; |
diff --git a/sound/soc/codecs/wm8994.c b/sound/soc/codecs/wm8994.c index 1eb152cb1097..29e95f93d482 100644 --- a/sound/soc/codecs/wm8994.c +++ b/sound/soc/codecs/wm8994.c | |||
@@ -383,6 +383,8 @@ static int wm8994_get_drc_enum(struct snd_kcontrol *kcontrol, | |||
383 | struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); | 383 | struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); |
384 | int drc = wm8994_get_drc(kcontrol->id.name); | 384 | int drc = wm8994_get_drc(kcontrol->id.name); |
385 | 385 | ||
386 | if (drc < 0) | ||
387 | return drc; | ||
386 | ucontrol->value.enumerated.item[0] = wm8994->drc_cfg[drc]; | 388 | ucontrol->value.enumerated.item[0] = wm8994->drc_cfg[drc]; |
387 | 389 | ||
388 | return 0; | 390 | return 0; |
@@ -488,6 +490,9 @@ static int wm8994_get_retune_mobile_enum(struct snd_kcontrol *kcontrol, | |||
488 | struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); | 490 | struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); |
489 | int block = wm8994_get_retune_mobile_block(kcontrol->id.name); | 491 | int block = wm8994_get_retune_mobile_block(kcontrol->id.name); |
490 | 492 | ||
493 | if (block < 0) | ||
494 | return block; | ||
495 | |||
491 | ucontrol->value.enumerated.item[0] = wm8994->retune_mobile_cfg[block]; | 496 | ucontrol->value.enumerated.item[0] = wm8994->retune_mobile_cfg[block]; |
492 | 497 | ||
493 | return 0; | 498 | return 0; |
@@ -1031,7 +1036,7 @@ static int aif1clk_ev(struct snd_soc_dapm_widget *w, | |||
1031 | { | 1036 | { |
1032 | struct snd_soc_codec *codec = w->codec; | 1037 | struct snd_soc_codec *codec = w->codec; |
1033 | struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); | 1038 | struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec); |
1034 | struct wm8994 *control = codec->control_data; | 1039 | struct wm8994 *control = wm8994->wm8994; |
1035 | int mask = WM8994_AIF1DAC1L_ENA | WM8994_AIF1DAC1R_ENA; | 1040 | int mask = WM8994_AIF1DAC1L_ENA | WM8994_AIF1DAC1R_ENA; |
1036 | int i; | 1041 | int i; |
1037 | int dac; | 1042 | int dac; |
@@ -3831,8 +3836,14 @@ static irqreturn_t wm8958_mic_irq(int irq, void *data) | |||
3831 | ret); | 3836 | ret); |
3832 | } else if (!(ret & WM1811_JACKDET_LVL)) { | 3837 | } else if (!(ret & WM1811_JACKDET_LVL)) { |
3833 | dev_dbg(codec->dev, "Ignoring removed jack\n"); | 3838 | dev_dbg(codec->dev, "Ignoring removed jack\n"); |
3834 | return IRQ_HANDLED; | 3839 | goto out; |
3835 | } | 3840 | } |
3841 | } else if (!(reg & WM8958_MICD_STS)) { | ||
3842 | snd_soc_jack_report(wm8994->micdet[0].jack, 0, | ||
3843 | SND_JACK_MECHANICAL | SND_JACK_HEADSET | | ||
3844 | wm8994->btn_mask); | ||
3845 | wm8994->mic_detecting = true; | ||
3846 | goto out; | ||
3836 | } | 3847 | } |
3837 | 3848 | ||
3838 | if (wm8994->mic_detecting) | 3849 | if (wm8994->mic_detecting) |