diff options
author | Ryan Lee <ryans.lee@maximintegrated.com> | 2017-08-28 19:31:00 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2017-08-31 07:46:08 -0400 |
commit | 607f7777bf0c0224bfadd31a37acc8d1fd25324d (patch) | |
tree | d521faeb21f6c7de51bd82ef27ccc2ad2b4237c6 | |
parent | f81991ddd001981bbe4ea0d25f88a4f95fb018be (diff) |
ASoC: max98927: Modified DAPM widget and map to enable/disable VI sense path
Signed-off-by: Ryan Lee <ryans.lee@maximintegrated.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | sound/soc/codecs/max98927.c | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/sound/soc/codecs/max98927.c b/sound/soc/codecs/max98927.c index caf5340ca6bb..4bbf2098f255 100644 --- a/sound/soc/codecs/max98927.c +++ b/sound/soc/codecs/max98927.c | |||
@@ -418,11 +418,6 @@ static int max98927_dac_event(struct snd_soc_dapm_widget *w, | |||
418 | regmap_update_bits(max98927->regmap, | 418 | regmap_update_bits(max98927->regmap, |
419 | MAX98927_R003A_AMP_EN, | 419 | MAX98927_R003A_AMP_EN, |
420 | MAX98927_AMP_EN_MASK, 1); | 420 | MAX98927_AMP_EN_MASK, 1); |
421 | /* enable VMON and IMON */ | ||
422 | regmap_update_bits(max98927->regmap, | ||
423 | MAX98927_R003E_MEAS_EN, | ||
424 | MAX98927_MEAS_V_EN | MAX98927_MEAS_I_EN, | ||
425 | MAX98927_MEAS_V_EN | MAX98927_MEAS_I_EN); | ||
426 | regmap_update_bits(max98927->regmap, | 421 | regmap_update_bits(max98927->regmap, |
427 | MAX98927_R00FF_GLOBAL_SHDN, | 422 | MAX98927_R00FF_GLOBAL_SHDN, |
428 | MAX98927_GLOBAL_EN_MASK, 1); | 423 | MAX98927_GLOBAL_EN_MASK, 1); |
@@ -434,10 +429,6 @@ static int max98927_dac_event(struct snd_soc_dapm_widget *w, | |||
434 | regmap_update_bits(max98927->regmap, | 429 | regmap_update_bits(max98927->regmap, |
435 | MAX98927_R003A_AMP_EN, | 430 | MAX98927_R003A_AMP_EN, |
436 | MAX98927_AMP_EN_MASK, 0); | 431 | MAX98927_AMP_EN_MASK, 0); |
437 | /* disable VMON and IMON */ | ||
438 | regmap_update_bits(max98927->regmap, | ||
439 | MAX98927_R003E_MEAS_EN, | ||
440 | MAX98927_MEAS_V_EN | MAX98927_MEAS_I_EN, 0); | ||
441 | break; | 432 | break; |
442 | default: | 433 | default: |
443 | return 0; | 434 | return 0; |
@@ -456,14 +447,24 @@ static const struct soc_enum dai_sel_enum = | |||
456 | static const struct snd_kcontrol_new max98927_dai_controls = | 447 | static const struct snd_kcontrol_new max98927_dai_controls = |
457 | SOC_DAPM_ENUM("DAI Sel", dai_sel_enum); | 448 | SOC_DAPM_ENUM("DAI Sel", dai_sel_enum); |
458 | 449 | ||
450 | static const struct snd_kcontrol_new max98927_vi_control = | ||
451 | SOC_DAPM_SINGLE("Switch", MAX98927_R003F_MEAS_DSP_CFG, 2, 1, 0); | ||
452 | |||
459 | static const struct snd_soc_dapm_widget max98927_dapm_widgets[] = { | 453 | static const struct snd_soc_dapm_widget max98927_dapm_widgets[] = { |
460 | SND_SOC_DAPM_AIF_IN("DAI_OUT", "HiFi Playback", 0, SND_SOC_NOPM, 0, 0), | ||
461 | SND_SOC_DAPM_DAC_E("Amp Enable", "HiFi Playback", MAX98927_R003A_AMP_EN, | 454 | SND_SOC_DAPM_DAC_E("Amp Enable", "HiFi Playback", MAX98927_R003A_AMP_EN, |
462 | 0, 0, max98927_dac_event, | 455 | 0, 0, max98927_dac_event, |
463 | SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD), | 456 | SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD), |
464 | SND_SOC_DAPM_MUX("DAI Sel Mux", SND_SOC_NOPM, 0, 0, | 457 | SND_SOC_DAPM_MUX("DAI Sel Mux", SND_SOC_NOPM, 0, 0, |
465 | &max98927_dai_controls), | 458 | &max98927_dai_controls), |
466 | SND_SOC_DAPM_OUTPUT("BE_OUT"), | 459 | SND_SOC_DAPM_OUTPUT("BE_OUT"), |
460 | SND_SOC_DAPM_AIF_OUT("Voltage Sense", "HiFi Capture", 0, | ||
461 | MAX98927_R003E_MEAS_EN, 0, 0), | ||
462 | SND_SOC_DAPM_AIF_OUT("Current Sense", "HiFi Capture", 0, | ||
463 | MAX98927_R003E_MEAS_EN, 1, 0), | ||
464 | SND_SOC_DAPM_SWITCH("VI Sense", SND_SOC_NOPM, 0, 0, | ||
465 | &max98927_vi_control), | ||
466 | SND_SOC_DAPM_SIGGEN("VMON"), | ||
467 | SND_SOC_DAPM_SIGGEN("IMON"), | ||
467 | }; | 468 | }; |
468 | 469 | ||
469 | static DECLARE_TLV_DB_SCALE(max98927_spk_tlv, 300, 300, 0); | 470 | static DECLARE_TLV_DB_SCALE(max98927_spk_tlv, 300, 300, 0); |
@@ -550,11 +551,16 @@ static const struct snd_kcontrol_new max98927_snd_controls[] = { | |||
550 | }; | 551 | }; |
551 | 552 | ||
552 | static const struct snd_soc_dapm_route max98927_audio_map[] = { | 553 | static const struct snd_soc_dapm_route max98927_audio_map[] = { |
553 | {"Amp Enable", NULL, "DAI_OUT"}, | 554 | /* Plabyack */ |
554 | {"DAI Sel Mux", "Left", "Amp Enable"}, | 555 | {"DAI Sel Mux", "Left", "Amp Enable"}, |
555 | {"DAI Sel Mux", "Right", "Amp Enable"}, | 556 | {"DAI Sel Mux", "Right", "Amp Enable"}, |
556 | {"DAI Sel Mux", "LeftRight", "Amp Enable"}, | 557 | {"DAI Sel Mux", "LeftRight", "Amp Enable"}, |
557 | {"BE_OUT", NULL, "DAI Sel Mux"}, | 558 | {"BE_OUT", NULL, "DAI Sel Mux"}, |
559 | /* Capture */ | ||
560 | { "VI Sense", "Switch", "VMON" }, | ||
561 | { "VI Sense", "Switch", "IMON" }, | ||
562 | { "Voltage Sense", NULL, "VI Sense" }, | ||
563 | { "Current Sense", NULL, "VI Sense" }, | ||
558 | }; | 564 | }; |
559 | 565 | ||
560 | static struct snd_soc_dai_driver max98927_dai[] = { | 566 | static struct snd_soc_dai_driver max98927_dai[] = { |