aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRyan Lee <ryans.lee@maximintegrated.com>2017-08-28 19:31:00 -0400
committerMark Brown <broonie@kernel.org>2017-08-31 07:46:08 -0400
commit607f7777bf0c0224bfadd31a37acc8d1fd25324d (patch)
treed521faeb21f6c7de51bd82ef27ccc2ad2b4237c6
parentf81991ddd001981bbe4ea0d25f88a4f95fb018be (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.c28
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 =
456static const struct snd_kcontrol_new max98927_dai_controls = 447static 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
450static const struct snd_kcontrol_new max98927_vi_control =
451 SOC_DAPM_SINGLE("Switch", MAX98927_R003F_MEAS_DSP_CFG, 2, 1, 0);
452
459static const struct snd_soc_dapm_widget max98927_dapm_widgets[] = { 453static 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
469static DECLARE_TLV_DB_SCALE(max98927_spk_tlv, 300, 300, 0); 470static 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
552static const struct snd_soc_dapm_route max98927_audio_map[] = { 553static 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
560static struct snd_soc_dai_driver max98927_dai[] = { 566static struct snd_soc_dai_driver max98927_dai[] = {