|
@@ -567,12 +567,13 @@ static const struct snd_kcontrol_new twl4030_dapm_dbypassv_control =
|
|
|
static int pin_name##pga_event(struct snd_soc_dapm_widget *w, \
|
|
|
struct snd_kcontrol *kcontrol, int event) \
|
|
|
{ \
|
|
|
- struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(w->codec); \
|
|
|
+ struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); \
|
|
|
+ struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec); \
|
|
|
\
|
|
|
switch (event) { \
|
|
|
case SND_SOC_DAPM_POST_PMU: \
|
|
|
twl4030->pin_name##_enabled = 1; \
|
|
|
- twl4030_write(w->codec, reg, twl4030_read(w->codec, reg)); \
|
|
|
+ twl4030_write(codec, reg, twl4030_read(codec, reg)); \
|
|
|
break; \
|
|
|
case SND_SOC_DAPM_POST_PMD: \
|
|
|
twl4030->pin_name##_enabled = 0; \
|
|
@@ -621,12 +622,14 @@ static void handsfree_ramp(struct snd_soc_codec *codec, int reg, int ramp)
|
|
|
static int handsfreelpga_event(struct snd_soc_dapm_widget *w,
|
|
|
struct snd_kcontrol *kcontrol, int event)
|
|
|
{
|
|
|
+ struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
|
|
|
+
|
|
|
switch (event) {
|
|
|
case SND_SOC_DAPM_POST_PMU:
|
|
|
- handsfree_ramp(w->codec, TWL4030_REG_HFL_CTL, 1);
|
|
|
+ handsfree_ramp(codec, TWL4030_REG_HFL_CTL, 1);
|
|
|
break;
|
|
|
case SND_SOC_DAPM_POST_PMD:
|
|
|
- handsfree_ramp(w->codec, TWL4030_REG_HFL_CTL, 0);
|
|
|
+ handsfree_ramp(codec, TWL4030_REG_HFL_CTL, 0);
|
|
|
break;
|
|
|
}
|
|
|
return 0;
|
|
@@ -635,12 +638,14 @@ static int handsfreelpga_event(struct snd_soc_dapm_widget *w,
|
|
|
static int handsfreerpga_event(struct snd_soc_dapm_widget *w,
|
|
|
struct snd_kcontrol *kcontrol, int event)
|
|
|
{
|
|
|
+ struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
|
|
|
+
|
|
|
switch (event) {
|
|
|
case SND_SOC_DAPM_POST_PMU:
|
|
|
- handsfree_ramp(w->codec, TWL4030_REG_HFR_CTL, 1);
|
|
|
+ handsfree_ramp(codec, TWL4030_REG_HFR_CTL, 1);
|
|
|
break;
|
|
|
case SND_SOC_DAPM_POST_PMD:
|
|
|
- handsfree_ramp(w->codec, TWL4030_REG_HFR_CTL, 0);
|
|
|
+ handsfree_ramp(codec, TWL4030_REG_HFR_CTL, 0);
|
|
|
break;
|
|
|
}
|
|
|
return 0;
|
|
@@ -649,19 +654,23 @@ static int handsfreerpga_event(struct snd_soc_dapm_widget *w,
|
|
|
static int vibramux_event(struct snd_soc_dapm_widget *w,
|
|
|
struct snd_kcontrol *kcontrol, int event)
|
|
|
{
|
|
|
- twl4030_write(w->codec, TWL4030_REG_VIBRA_SET, 0xff);
|
|
|
+ struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
|
|
|
+
|
|
|
+ twl4030_write(codec, TWL4030_REG_VIBRA_SET, 0xff);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
static int apll_event(struct snd_soc_dapm_widget *w,
|
|
|
struct snd_kcontrol *kcontrol, int event)
|
|
|
{
|
|
|
+ struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
|
|
|
+
|
|
|
switch (event) {
|
|
|
case SND_SOC_DAPM_PRE_PMU:
|
|
|
- twl4030_apll_enable(w->codec, 1);
|
|
|
+ twl4030_apll_enable(codec, 1);
|
|
|
break;
|
|
|
case SND_SOC_DAPM_POST_PMD:
|
|
|
- twl4030_apll_enable(w->codec, 0);
|
|
|
+ twl4030_apll_enable(codec, 0);
|
|
|
break;
|
|
|
}
|
|
|
return 0;
|
|
@@ -670,23 +679,24 @@ static int apll_event(struct snd_soc_dapm_widget *w,
|
|
|
static int aif_event(struct snd_soc_dapm_widget *w,
|
|
|
struct snd_kcontrol *kcontrol, int event)
|
|
|
{
|
|
|
+ struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
|
|
|
u8 audio_if;
|
|
|
|
|
|
- audio_if = twl4030_read(w->codec, TWL4030_REG_AUDIO_IF);
|
|
|
+ audio_if = twl4030_read(codec, TWL4030_REG_AUDIO_IF);
|
|
|
switch (event) {
|
|
|
case SND_SOC_DAPM_PRE_PMU:
|
|
|
/* Enable AIF */
|
|
|
/* enable the PLL before we use it to clock the DAI */
|
|
|
- twl4030_apll_enable(w->codec, 1);
|
|
|
+ twl4030_apll_enable(codec, 1);
|
|
|
|
|
|
- twl4030_write(w->codec, TWL4030_REG_AUDIO_IF,
|
|
|
+ twl4030_write(codec, TWL4030_REG_AUDIO_IF,
|
|
|
audio_if | TWL4030_AIF_EN);
|
|
|
break;
|
|
|
case SND_SOC_DAPM_POST_PMD:
|
|
|
/* disable the DAI before we stop it's source PLL */
|
|
|
- twl4030_write(w->codec, TWL4030_REG_AUDIO_IF,
|
|
|
+ twl4030_write(codec, TWL4030_REG_AUDIO_IF,
|
|
|
audio_if & ~TWL4030_AIF_EN);
|
|
|
- twl4030_apll_enable(w->codec, 0);
|
|
|
+ twl4030_apll_enable(codec, 0);
|
|
|
break;
|
|
|
}
|
|
|
return 0;
|
|
@@ -758,20 +768,21 @@ static void headset_ramp(struct snd_soc_codec *codec, int ramp)
|
|
|
static int headsetlpga_event(struct snd_soc_dapm_widget *w,
|
|
|
struct snd_kcontrol *kcontrol, int event)
|
|
|
{
|
|
|
- struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(w->codec);
|
|
|
+ struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
|
|
|
+ struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
|
|
|
|
|
|
switch (event) {
|
|
|
case SND_SOC_DAPM_POST_PMU:
|
|
|
/* Do the ramp-up only once */
|
|
|
if (!twl4030->hsr_enabled)
|
|
|
- headset_ramp(w->codec, 1);
|
|
|
+ headset_ramp(codec, 1);
|
|
|
|
|
|
twl4030->hsl_enabled = 1;
|
|
|
break;
|
|
|
case SND_SOC_DAPM_POST_PMD:
|
|
|
/* Do the ramp-down only if both headsetL/R is disabled */
|
|
|
if (!twl4030->hsr_enabled)
|
|
|
- headset_ramp(w->codec, 0);
|
|
|
+ headset_ramp(codec, 0);
|
|
|
|
|
|
twl4030->hsl_enabled = 0;
|
|
|
break;
|
|
@@ -782,20 +793,21 @@ static int headsetlpga_event(struct snd_soc_dapm_widget *w,
|
|
|
static int headsetrpga_event(struct snd_soc_dapm_widget *w,
|
|
|
struct snd_kcontrol *kcontrol, int event)
|
|
|
{
|
|
|
- struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(w->codec);
|
|
|
+ struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
|
|
|
+ struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
|
|
|
|
|
|
switch (event) {
|
|
|
case SND_SOC_DAPM_POST_PMU:
|
|
|
/* Do the ramp-up only once */
|
|
|
if (!twl4030->hsl_enabled)
|
|
|
- headset_ramp(w->codec, 1);
|
|
|
+ headset_ramp(codec, 1);
|
|
|
|
|
|
twl4030->hsr_enabled = 1;
|
|
|
break;
|
|
|
case SND_SOC_DAPM_POST_PMD:
|
|
|
/* Do the ramp-down only if both headsetL/R is disabled */
|
|
|
if (!twl4030->hsl_enabled)
|
|
|
- headset_ramp(w->codec, 0);
|
|
|
+ headset_ramp(codec, 0);
|
|
|
|
|
|
twl4030->hsr_enabled = 0;
|
|
|
break;
|
|
@@ -806,7 +818,8 @@ static int headsetrpga_event(struct snd_soc_dapm_widget *w,
|
|
|
static int digimic_event(struct snd_soc_dapm_widget *w,
|
|
|
struct snd_kcontrol *kcontrol, int event)
|
|
|
{
|
|
|
- struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(w->codec);
|
|
|
+ struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
|
|
|
+ struct twl4030_priv *twl4030 = snd_soc_codec_get_drvdata(codec);
|
|
|
struct twl4030_codec_data *pdata = twl4030->pdata;
|
|
|
|
|
|
if (pdata && pdata->digimic_delay)
|