Commit 89492be8 authored by Peter Ujfalusi's avatar Peter Ujfalusi Committed by Mark Brown

ASoC: TWL4030: Make the HS ramp delay configurable

Enum type for selecting the desired ramp delay for the headset output.
Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent a1b3eaeb
...@@ -584,12 +584,11 @@ static int headsetl_event(struct snd_soc_dapm_widget *w, ...@@ -584,12 +584,11 @@ static int headsetl_event(struct snd_soc_dapm_widget *w,
/* Save the current volume */ /* Save the current volume */
hs_gain = twl4030_read_reg_cache(w->codec, TWL4030_REG_HS_GAIN_SET); hs_gain = twl4030_read_reg_cache(w->codec, TWL4030_REG_HS_GAIN_SET);
hs_pop = twl4030_read_reg_cache(w->codec, TWL4030_REG_HS_POPN_SET);
switch (event) { switch (event) {
case SND_SOC_DAPM_POST_PMU: case SND_SOC_DAPM_POST_PMU:
/* Do the anti-pop/bias ramp enable according to the TRM */ /* Do the anti-pop/bias ramp enable according to the TRM */
hs_pop = TWL4030_RAMP_DELAY_645MS;
twl4030_write(w->codec, TWL4030_REG_HS_POPN_SET, hs_pop);
hs_pop |= TWL4030_VMID_EN; hs_pop |= TWL4030_VMID_EN;
twl4030_write(w->codec, TWL4030_REG_HS_POPN_SET, hs_pop); twl4030_write(w->codec, TWL4030_REG_HS_POPN_SET, hs_pop);
/* Is this needed? Can we just use whatever gain here? */ /* Is this needed? Can we just use whatever gain here? */
...@@ -603,8 +602,6 @@ static int headsetl_event(struct snd_soc_dapm_widget *w, ...@@ -603,8 +602,6 @@ static int headsetl_event(struct snd_soc_dapm_widget *w,
break; break;
case SND_SOC_DAPM_POST_PMD: case SND_SOC_DAPM_POST_PMD:
/* Do the anti-pop/bias ramp disable according to the TRM */ /* Do the anti-pop/bias ramp disable according to the TRM */
hs_pop = twl4030_read_reg_cache(w->codec,
TWL4030_REG_HS_POPN_SET);
hs_pop &= ~TWL4030_RAMP_EN; hs_pop &= ~TWL4030_RAMP_EN;
twl4030_write(w->codec, TWL4030_REG_HS_POPN_SET, hs_pop); twl4030_write(w->codec, TWL4030_REG_HS_POPN_SET, hs_pop);
/* Bypass the reg_cache to mute the headset */ /* Bypass the reg_cache to mute the headset */
...@@ -847,6 +844,17 @@ static DECLARE_TLV_DB_SCALE(digital_capture_tlv, 0, 100, 0); ...@@ -847,6 +844,17 @@ static DECLARE_TLV_DB_SCALE(digital_capture_tlv, 0, 100, 0);
*/ */
static DECLARE_TLV_DB_SCALE(input_gain_tlv, 0, 600, 0); static DECLARE_TLV_DB_SCALE(input_gain_tlv, 0, 600, 0);
static const char *twl4030_rampdelay_texts[] = {
"27/20/14 ms", "55/40/27 ms", "109/81/55 ms", "218/161/109 ms",
"437/323/218 ms", "874/645/437 ms", "1748/1291/874 ms",
"3495/2581/1748 ms"
};
static const struct soc_enum twl4030_rampdelay_enum =
SOC_ENUM_SINGLE(TWL4030_REG_HS_POPN_SET, 2,
ARRAY_SIZE(twl4030_rampdelay_texts),
twl4030_rampdelay_texts);
static const struct snd_kcontrol_new twl4030_snd_controls[] = { static const struct snd_kcontrol_new twl4030_snd_controls[] = {
/* Common playback gain controls */ /* Common playback gain controls */
SOC_DOUBLE_R_TLV("DAC1 Digital Fine Playback Volume", SOC_DOUBLE_R_TLV("DAC1 Digital Fine Playback Volume",
...@@ -901,6 +909,8 @@ static const struct snd_kcontrol_new twl4030_snd_controls[] = { ...@@ -901,6 +909,8 @@ static const struct snd_kcontrol_new twl4030_snd_controls[] = {
SOC_DOUBLE_TLV("Analog Capture Volume", TWL4030_REG_ANAMIC_GAIN, SOC_DOUBLE_TLV("Analog Capture Volume", TWL4030_REG_ANAMIC_GAIN,
0, 3, 5, 0, input_gain_tlv), 0, 3, 5, 0, input_gain_tlv),
SOC_ENUM("HS ramp delay", twl4030_rampdelay_enum),
}; };
static const struct snd_soc_dapm_widget twl4030_dapm_widgets[] = { static const struct snd_soc_dapm_widget twl4030_dapm_widgets[] = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment