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 | } |
