aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Ujfalusi <peter.ujfalusi@ti.com>2015-06-08 08:19:50 -0400
committerMark Brown <broonie@kernel.org>2015-06-08 13:53:18 -0400
commitb2822f191a22990f2de80e6eb36000e5f04297f1 (patch)
treea567022cbb610832983dc3593d91e2900533cc11
parent2962cb5217f2d8defb984f17ac59f576124d8521 (diff)
ASoC: tas2552: Correct Output Data register usage
Do not write to DOUT Tristate register at probe time, specially not write data which is defined to be used in Output Data Register. Fix the defines for the Output Data Register and correct the register write at probe time. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--sound/soc/codecs/tas2552.c5
-rw-r--r--sound/soc/codecs/tas2552.h19
2 files changed, 18 insertions, 6 deletions
diff --git a/sound/soc/codecs/tas2552.c b/sound/soc/codecs/tas2552.c
index 067ea6e5e521..e4c02ee42966 100644
--- a/sound/soc/codecs/tas2552.c
+++ b/sound/soc/codecs/tas2552.c
@@ -598,8 +598,9 @@ static int tas2552_codec_probe(struct snd_soc_codec *codec)
598 snd_soc_update_bits(codec, TAS2552_CFG_1, TAS2552_MUTE, TAS2552_MUTE); 598 snd_soc_update_bits(codec, TAS2552_CFG_1, TAS2552_MUTE, TAS2552_MUTE);
599 snd_soc_write(codec, TAS2552_CFG_3, TAS2552_I2S_OUT_SEL | 599 snd_soc_write(codec, TAS2552_CFG_3, TAS2552_I2S_OUT_SEL |
600 TAS2552_DIN_SRC_SEL_AVG_L_R); 600 TAS2552_DIN_SRC_SEL_AVG_L_R);
601 snd_soc_write(codec, TAS2552_DOUT, TAS2552_PDM_DATA_I); 601 snd_soc_write(codec, TAS2552_OUTPUT_DATA,
602 snd_soc_write(codec, TAS2552_OUTPUT_DATA, TAS2552_PDM_DATA_V_I | 0x8); 602 TAS2552_PDM_DATA_SEL_V_I |
603 TAS2552_R_DATA_OUT(TAS2552_DATA_OUT_V_DATA));
603 snd_soc_write(codec, TAS2552_BOOST_PT_CTRL, TAS2552_APT_DELAY_200 | 604 snd_soc_write(codec, TAS2552_BOOST_PT_CTRL, TAS2552_APT_DELAY_200 |
604 TAS2552_APT_THRESH_2_1_7); 605 TAS2552_APT_THRESH_2_1_7);
605 606
diff --git a/sound/soc/codecs/tas2552.h b/sound/soc/codecs/tas2552.h
index 6806516a62cd..4a22f598ecb6 100644
--- a/sound/soc/codecs/tas2552.h
+++ b/sound/soc/codecs/tas2552.h
@@ -103,10 +103,21 @@
103#define TAS2552_WCLKDIR (1 << 7) 103#define TAS2552_WCLKDIR (1 << 7)
104 104
105/* OUTPUT_DATA register */ 105/* OUTPUT_DATA register */
106#define TAS2552_PDM_DATA_I 0x00 106#define TAS2552_DATA_OUT_I_DATA (0x0)
107#define TAS2552_PDM_DATA_V (1 << 6) 107#define TAS2552_DATA_OUT_V_DATA (0x1)
108#define TAS2552_PDM_DATA_I_V (1 << 7) 108#define TAS2552_DATA_OUT_VBAT_DATA (0x2)
109#define TAS2552_PDM_DATA_V_I (0x11 << 6) 109#define TAS2552_DATA_OUT_VBOOST_DATA (0x3)
110#define TAS2552_DATA_OUT_PGA_GAIN (0x4)
111#define TAS2552_DATA_OUT_IV_DATA (0x5)
112#define TAS2552_DATA_OUT_VBAT_VBOOST_GAIN (0x6)
113#define TAS2552_DATA_OUT_DISABLED (0x7)
114#define TAS2552_L_DATA_OUT(x) ((x) << 0)
115#define TAS2552_R_DATA_OUT(x) ((x) << 3)
116#define TAS2552_PDM_DATA_SEL_I (0x0 << 6)
117#define TAS2552_PDM_DATA_SEL_V (0x1 << 6)
118#define TAS2552_PDM_DATA_SEL_I_V (0x2 << 6)
119#define TAS2552_PDM_DATA_SEL_V_I (0x3 << 6)
120#define TAS2552_PDM_DATA_SEL_MASK TAS2552_PDM_DATA_SEL_V_I
110 121
111/* PDM CFG Register */ 122/* PDM CFG Register */
112#define TAS2552_PDM_CLK_SEL_PLL (0x0 << 0) 123#define TAS2552_PDM_CLK_SEL_PLL (0x0 << 0)