Skip to content

Commit

Permalink
ASoC: TWL6040: Enable earphone path in codec
Browse files Browse the repository at this point in the history
Add control to enable earphone driver in TWL6040 codec. This driver
is connected to HSDAC Left.

Signed-off-by: Jorge Eduardo Candelaria <jorge.candelaria@ti.com>
Signed-off-by: Margarita Olaya Cabrera <magi.olaya@ti.com>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
  • Loading branch information
Jorge Eduardo Candelaria authored and Liam Girdwood committed May 19, 2010
1 parent 7254e2b commit 871a05a
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion sound/soc/codecs/twl6040.c
Original file line number Diff line number Diff line change
Expand Up @@ -432,6 +432,12 @@ static DECLARE_TLV_DB_SCALE(hs_tlv, -3000, 200, 0);
*/
static DECLARE_TLV_DB_SCALE(hf_tlv, -5200, 200, 0);

/*
* EPGAIN volume control:
* from -24 to 6 dB in 2 dB steps
*/
static DECLARE_TLV_DB_SCALE(ep_tlv, -2400, 200, 0);

/* Left analog microphone selection */
static const char *twl6040_amicl_texts[] =
{"Headset Mic", "Main Mic", "Aux/FM Left", "Off"};
Expand Down Expand Up @@ -479,6 +485,9 @@ static const struct snd_kcontrol_new hfl_driver_switch_controls =
static const struct snd_kcontrol_new hfr_driver_switch_controls =
SOC_DAPM_SINGLE("Switch", TWL6040_REG_HFRCTL, 4, 1, 0);

static const struct snd_kcontrol_new ep_driver_switch_controls =
SOC_DAPM_SINGLE("Switch", TWL6040_REG_EARCTL, 0, 1, 0);

static const struct snd_kcontrol_new twl6040_snd_controls[] = {
/* Capture gains */
SOC_DOUBLE_TLV("Capture Preamplifier Volume",
Expand All @@ -491,7 +500,8 @@ static const struct snd_kcontrol_new twl6040_snd_controls[] = {
TWL6040_REG_HSGAIN, 0, 4, 0xF, 1, hs_tlv),
SOC_DOUBLE_R_TLV("Handsfree Playback Volume",
TWL6040_REG_HFLGAIN, TWL6040_REG_HFRGAIN, 0, 0x1D, 1, hf_tlv),

SOC_SINGLE_TLV("Earphone Playback Volume",
TWL6040_REG_EARCTL, 1, 0xF, 1, ep_tlv),
};

static const struct snd_soc_dapm_widget twl6040_dapm_widgets[] = {
Expand All @@ -507,6 +517,7 @@ static const struct snd_soc_dapm_widget twl6040_dapm_widgets[] = {
SND_SOC_DAPM_OUTPUT("HSOR"),
SND_SOC_DAPM_OUTPUT("HFL"),
SND_SOC_DAPM_OUTPUT("HFR"),
SND_SOC_DAPM_OUTPUT("EP"),

/* Analog input muxes for the capture amplifiers */
SND_SOC_DAPM_MUX("Analog Left Capture Route",
Expand Down Expand Up @@ -572,6 +583,10 @@ static const struct snd_soc_dapm_widget twl6040_dapm_widgets[] = {
SND_SOC_NOPM, 0, 0, &hfr_driver_switch_controls,
twl6040_power_mode_event,
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
SND_SOC_DAPM_SWITCH_E("Earphone Driver",
SND_SOC_NOPM, 0, 0, &ep_driver_switch_controls,
twl6040_power_mode_event,
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),

/* Analog playback PGAs */
SND_SOC_DAPM_PGA("HFDAC Left PGA",
Expand Down Expand Up @@ -607,6 +622,10 @@ static const struct snd_soc_dapm_route intercon[] = {
{"HSOL", NULL, "Headset Left Driver"},
{"HSOR", NULL, "Headset Right Driver"},

/* Earphone playback path */
{"Earphone Driver", "Switch", "HSDAC Left"},
{"EP", NULL, "Earphone Driver"},

/* Handsfree playback path */
{"HFDAC Left Playback", "Switch", "HFDAC Left"},
{"HFDAC Right Playback", "Switch", "HFDAC Right"},
Expand Down

0 comments on commit 871a05a

Please sign in to comment.