aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2015-01-27 12:52:51 -0500
committerMark Brown <broonie@kernel.org>2015-01-27 12:52:51 -0500
commita7834aa932e245a13fb2da59471672ca9bf3a7a5 (patch)
treeb0176955acf09d94f1e6754b2b9653720cb50b45
parent96da4e5b2e1d04478fb6d540085f2859256ca788 (diff)
parent54d96a40e0dfb5aa2eea0b010ddc1c7e8742e364 (diff)
Merge branch 'topic/rt286' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into asoc-w-codec
Conflicts: sound/soc/codecs/rt286.c
-rw-r--r--sound/soc/codecs/rt286.c44
1 files changed, 8 insertions, 36 deletions
diff --git a/sound/soc/codecs/rt286.c b/sound/soc/codecs/rt286.c
index 99dcfec4834a..8104d2285602 100644
--- a/sound/soc/codecs/rt286.c
+++ b/sound/soc/codecs/rt286.c
@@ -418,6 +418,8 @@ static const DECLARE_TLV_DB_SCALE(mic_vol_tlv, 0, 1000, 0);
418static const struct snd_kcontrol_new rt286_snd_controls[] = { 418static const struct snd_kcontrol_new rt286_snd_controls[] = {
419 SOC_DOUBLE_R_TLV("DAC0 Playback Volume", RT286_DACL_GAIN, 419 SOC_DOUBLE_R_TLV("DAC0 Playback Volume", RT286_DACL_GAIN,
420 RT286_DACR_GAIN, 0, 0x7f, 0, out_vol_tlv), 420 RT286_DACR_GAIN, 0, 0x7f, 0, out_vol_tlv),
421 SOC_DOUBLE_R("ADC0 Capture Switch", RT286_ADCL_GAIN,
422 RT286_ADCR_GAIN, 7, 1, 1),
421 SOC_DOUBLE_R_TLV("ADC0 Capture Volume", RT286_ADCL_GAIN, 423 SOC_DOUBLE_R_TLV("ADC0 Capture Volume", RT286_ADCL_GAIN,
422 RT286_ADCR_GAIN, 0, 0x7f, 0, out_vol_tlv), 424 RT286_ADCR_GAIN, 0, 0x7f, 0, out_vol_tlv),
423 SOC_SINGLE_TLV("AMIC Volume", RT286_MIC_GAIN, 425 SOC_SINGLE_TLV("AMIC Volume", RT286_MIC_GAIN,
@@ -539,32 +541,6 @@ static int rt286_set_dmic1_event(struct snd_soc_dapm_widget *w,
539 return 0; 541 return 0;
540} 542}
541 543
542static int rt286_adc_event(struct snd_soc_dapm_widget *w,
543 struct snd_kcontrol *kcontrol, int event)
544{
545 struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
546 unsigned int nid;
547
548 nid = (w->reg >> 20) & 0xff;
549
550 switch (event) {
551 case SND_SOC_DAPM_POST_PMU:
552 snd_soc_update_bits(codec,
553 VERB_CMD(AC_VERB_SET_AMP_GAIN_MUTE, nid, 0),
554 0x7080, 0x7000);
555 break;
556 case SND_SOC_DAPM_PRE_PMD:
557 snd_soc_update_bits(codec,
558 VERB_CMD(AC_VERB_SET_AMP_GAIN_MUTE, nid, 0),
559 0x7080, 0x7080);
560 break;
561 default:
562 return 0;
563 }
564
565 return 0;
566}
567
568static int rt286_vref_event(struct snd_soc_dapm_widget *w, 544static int rt286_vref_event(struct snd_soc_dapm_widget *w,
569 struct snd_kcontrol *kcontrol, int event) 545 struct snd_kcontrol *kcontrol, int event)
570{ 546{
@@ -668,12 +644,10 @@ static const struct snd_soc_dapm_widget rt286_dapm_widgets[] = {
668 SND_SOC_DAPM_ADC("ADC 1", NULL, SND_SOC_NOPM, 0, 0), 644 SND_SOC_DAPM_ADC("ADC 1", NULL, SND_SOC_NOPM, 0, 0),
669 645
670 /* ADC Mux */ 646 /* ADC Mux */
671 SND_SOC_DAPM_MUX_E("ADC 0 Mux", RT286_SET_POWER(RT286_ADC_IN1), 0, 1, 647 SND_SOC_DAPM_MUX("ADC 0 Mux", RT286_SET_POWER(RT286_ADC_IN1), 0, 1,
672 &rt286_adc0_mux, rt286_adc_event, SND_SOC_DAPM_PRE_PMD | 648 &rt286_adc0_mux),
673 SND_SOC_DAPM_POST_PMU), 649 SND_SOC_DAPM_MUX("ADC 1 Mux", RT286_SET_POWER(RT286_ADC_IN2), 0, 1,
674 SND_SOC_DAPM_MUX_E("ADC 1 Mux", RT286_SET_POWER(RT286_ADC_IN2), 0, 1, 650 &rt286_adc1_mux),
675 &rt286_adc1_mux, rt286_adc_event, SND_SOC_DAPM_PRE_PMD |
676 SND_SOC_DAPM_POST_PMU),
677 651
678 /* Audio Interface */ 652 /* Audio Interface */
679 SND_SOC_DAPM_AIF_IN("AIF1RX", "AIF1 Playback", 0, SND_SOC_NOPM, 0, 0), 653 SND_SOC_DAPM_AIF_IN("AIF1RX", "AIF1 Playback", 0, SND_SOC_NOPM, 0, 0),
@@ -862,10 +836,8 @@ static int rt286_hw_params(struct snd_pcm_substream *substream,
862 RT286_I2S_CTRL1, 0x0018, d_len_code << 3); 836 RT286_I2S_CTRL1, 0x0018, d_len_code << 3);
863 dev_dbg(codec->dev, "format val = 0x%x\n", val); 837 dev_dbg(codec->dev, "format val = 0x%x\n", val);
864 838
865 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) 839 snd_soc_update_bits(codec, RT286_DAC_FORMAT, 0x407f, val);
866 snd_soc_update_bits(codec, RT286_DAC_FORMAT, 0x407f, val); 840 snd_soc_update_bits(codec, RT286_ADC_FORMAT, 0x407f, val);
867 else
868 snd_soc_update_bits(codec, RT286_ADC_FORMAT, 0x407f, val);
869 841
870 return 0; 842 return 0;
871} 843}