|
@@ -33,6 +33,7 @@
|
|
|
#include <sound/pcm.h>
|
|
|
#include <sound/pcm_params.h>
|
|
|
#include <sound/soc.h>
|
|
|
+#include <sound/soc-dapm.h>
|
|
|
#include <sound/initval.h>
|
|
|
#include <sound/tlv.h>
|
|
|
|
|
@@ -1012,6 +1013,28 @@ static int twl6040_pll_put_enum(struct snd_kcontrol *kcontrol,
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+int twl6040_get_dl1_gain(struct snd_soc_codec *codec)
|
|
|
+{
|
|
|
+ struct snd_soc_dapm_context *dapm = &codec->dapm;
|
|
|
+
|
|
|
+ if (snd_soc_dapm_get_pin_status(dapm, "EP"))
|
|
|
+ return -1; /* -1dB */
|
|
|
+
|
|
|
+ if (snd_soc_dapm_get_pin_status(dapm, "HSOR") ||
|
|
|
+ snd_soc_dapm_get_pin_status(dapm, "HSOL")) {
|
|
|
+
|
|
|
+ u8 val = snd_soc_read(codec, TWL6040_REG_HSLCTL);
|
|
|
+ if (val & TWL6040_HSDACMODE)
|
|
|
+ /* HSDACL in LP mode */
|
|
|
+ return -8; /* -8dB */
|
|
|
+ else
|
|
|
+ /* HSDACL in HP mode */
|
|
|
+ return -1; /* -1dB */
|
|
|
+ }
|
|
|
+ return 0; /* 0dB */
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(twl6040_get_dl1_gain);
|
|
|
+
|
|
|
int twl6040_get_clk_id(struct snd_soc_codec *codec)
|
|
|
{
|
|
|
struct twl6040_data *priv = snd_soc_codec_get_drvdata(codec);
|