summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2014-11-19 04:24:17 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2014-11-19 04:24:16 -0800
commit24704aac26bb3d0e152e1efd69b6861ace8a4e65 (patch)
tree6ed58b369aa3d3807e5bb670162faee5c485d0a8
parent0b79c0cd4809f5fb8af1923497c8c450d3b3ff0c (diff)
parent3aa3af9615a2d9bd545fed7648d5f3abfc08d9ab (diff)
Merge "ASoC: msm8x16: update rx path register write sequence"
-rw-r--r--sound/soc/codecs/msm8x16-wcd.c49
-rw-r--r--sound/soc/msm/msm8x16.c2
2 files changed, 13 insertions, 38 deletions
diff --git a/sound/soc/codecs/msm8x16-wcd.c b/sound/soc/codecs/msm8x16-wcd.c
index 1a61c6a1621f..499a51bf773f 100644
--- a/sound/soc/codecs/msm8x16-wcd.c
+++ b/sound/soc/codecs/msm8x16-wcd.c
@@ -1732,27 +1732,6 @@ static int msm8x16_wcd_tx_disable_pdm_clk(struct snd_soc_dapm_widget *w,
}
return 0;
}
-static int msm8x16_wcd_codec_enable_rx1_rx2_dig_clk(
- struct snd_soc_dapm_widget *w,
- struct snd_kcontrol *kcontrol, int event)
-{
- struct snd_soc_codec *codec = w->codec;
- struct msm8916_asoc_mach_data *pdata = NULL;
-
- pdata = snd_soc_card_get_drvdata(codec->card);
-
- dev_dbg(w->codec->dev, "%s event %d w->name %s\n", __func__,
- event, w->name);
- switch (event) {
- case SND_SOC_DAPM_POST_PMD:
- if (atomic_read(&pdata->mclk_rsc_ref) == 0)
- snd_soc_update_bits(codec,
- MSM8X16_WCD_A_CDC_CLK_PDM_CTL,
- 0x03, 0x00);
- break;
- }
- return 0;
-}
static int msm8x16_wcd_codec_enable_dig_clk(struct snd_soc_dapm_widget *w,
struct snd_kcontrol *kcontrol, int event)
@@ -1812,9 +1791,10 @@ static int msm8x16_wcd_codec_enable_dig_clk(struct snd_soc_dapm_widget *w,
}
break;
case SND_SOC_DAPM_POST_PMD:
- snd_soc_update_bits(codec,
- MSM8X16_WCD_A_DIGITAL_CDC_DIG_CLK_CTL,
- 0x80, 0x00);
+ if (msm8x16_wcd->rx_bias_count == 0)
+ snd_soc_update_bits(codec,
+ MSM8X16_WCD_A_DIGITAL_CDC_DIG_CLK_CTL,
+ 0x80, 0x00);
if (msm8x16_wcd->spk_boost_set) {
snd_soc_update_bits(codec,
MSM8X16_WCD_A_ANALOG_BOOST_EN_CTL,
@@ -1825,11 +1805,6 @@ static int msm8x16_wcd_codec_enable_dig_clk(struct snd_soc_dapm_widget *w,
} else {
snd_soc_update_bits(codec, w->reg, 1<<w->shift, 0x00);
}
- if (atomic_read(&pdata->mclk_rsc_ref) == 0)
- snd_soc_update_bits(codec,
- MSM8X16_WCD_A_CDC_CLK_PDM_CTL,
- 0x03, 0x00);
- break;
}
return 0;
}
@@ -2561,6 +2536,9 @@ static int msm8x16_wcd_codec_enable_clock_block(struct snd_soc_codec *codec,
} else {
snd_soc_update_bits(codec,
MSM8X16_WCD_A_DIGITAL_CDC_TOP_CLK_CTL, 0x0C, 0x00);
+ snd_soc_update_bits(codec,
+ MSM8X16_WCD_A_CDC_CLK_PDM_CTL, 0x03, 0x00);
+
}
return 0;
}
@@ -2957,11 +2935,9 @@ static const struct snd_soc_dapm_widget msm8x16_wcd_dapm_widgets[] = {
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
SND_SOC_DAPM_SUPPLY("RX1 CLK", MSM8X16_WCD_A_DIGITAL_CDC_DIG_CLK_CTL,
- 0, 0, msm8x16_wcd_codec_enable_rx1_rx2_dig_clk,
- SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
+ 0, 0, NULL, 0),
SND_SOC_DAPM_SUPPLY("RX2 CLK", MSM8X16_WCD_A_DIGITAL_CDC_DIG_CLK_CTL,
- 1, 0, msm8x16_wcd_codec_enable_rx1_rx2_dig_clk,
- SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
+ 1, 0, NULL, 0),
SND_SOC_DAPM_SUPPLY("RX3 CLK", MSM8X16_WCD_A_DIGITAL_CDC_DIG_CLK_CTL,
2, 0, msm8x16_wcd_codec_enable_dig_clk, SND_SOC_DAPM_PRE_PMU |
SND_SOC_DAPM_POST_PMD),
@@ -3018,18 +2994,17 @@ static const struct snd_soc_dapm_widget msm8x16_wcd_dapm_widgets[] = {
msm8x16_wcd_codec_enable_charge_pump, SND_SOC_DAPM_PRE_PMU |
SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
- SND_SOC_DAPM_SUPPLY("RX_BIAS", SND_SOC_NOPM,
+ SND_SOC_DAPM_SUPPLY_S("RX_BIAS", 1, SND_SOC_NOPM,
0, 0, msm8x16_wcd_codec_enable_rx_bias,
SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
- SND_SOC_DAPM_SUPPLY("SPK_RX_BIAS",
- SND_SOC_NOPM, 0, 0,
+ SND_SOC_DAPM_SUPPLY_S("SPK_RX_BIAS", 1, SND_SOC_NOPM, 0, 0,
msm8x16_wcd_codec_enable_rx_bias, SND_SOC_DAPM_PRE_PMU |
SND_SOC_DAPM_POST_PMD),
/* TX */
- SND_SOC_DAPM_SUPPLY("CDC_CONN", MSM8X16_WCD_A_CDC_CLK_OTHR_CTL,
+ SND_SOC_DAPM_SUPPLY_S("CDC_CONN", -2, MSM8X16_WCD_A_CDC_CLK_OTHR_CTL,
2, 0, NULL, 0),
diff --git a/sound/soc/msm/msm8x16.c b/sound/soc/msm/msm8x16.c
index aca64d13fe58..c2c64e21b1a4 100644
--- a/sound/soc/msm/msm8x16.c
+++ b/sound/soc/msm/msm8x16.c
@@ -237,7 +237,7 @@ static int msm8x16_mclk_event(struct snd_soc_dapm_widget *w,
static const struct snd_soc_dapm_widget msm8x16_dapm_widgets[] = {
- SND_SOC_DAPM_SUPPLY("MCLK", SND_SOC_NOPM, 0, 0,
+ SND_SOC_DAPM_SUPPLY_S("MCLK", -1, SND_SOC_NOPM, 0, 0,
msm8x16_mclk_event, SND_SOC_DAPM_POST_PMD),
SND_SOC_DAPM_MIC("Handset Mic", NULL),
SND_SOC_DAPM_MIC("Headset Mic", NULL),