diff options
author | Mark Brown <broonie@kernel.org> | 2015-01-27 12:52:51 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-01-27 12:52:51 -0500 |
commit | a7834aa932e245a13fb2da59471672ca9bf3a7a5 (patch) | |
tree | b0176955acf09d94f1e6754b2b9653720cb50b45 | |
parent | 96da4e5b2e1d04478fb6d540085f2859256ca788 (diff) | |
parent | 54d96a40e0dfb5aa2eea0b010ddc1c7e8742e364 (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.c | 44 |
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); | |||
418 | static const struct snd_kcontrol_new rt286_snd_controls[] = { | 418 | static 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 | ||
542 | static 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 | |||
568 | static int rt286_vref_event(struct snd_soc_dapm_widget *w, | 544 | static 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 | } |