diff options
author | Peter Ujfalusi <peter.ujfalusi@nokia.com> | 2009-05-25 04:12:12 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2009-05-25 06:54:14 -0400 |
commit | f3b5d3002d5b43d277dedc1e044d02f2a40a43c5 (patch) | |
tree | 6f71f26af0f468a14940023135f5115078ca3aa1 | |
parent | 5a2e9a48b1d6de35ae5efea35d117133c3eb30f2 (diff) |
ASoC: TWL4030: Add shadow register
Shadow, non HW register for dealing with the HandsfreeL/R
muting.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r-- | sound/soc/codecs/twl4030.c | 7 | ||||
-rw-r--r-- | sound/soc/codecs/twl4030.h | 7 |
2 files changed, 12 insertions, 2 deletions
diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c index 17ddcb265134..989446dabcda 100644 --- a/sound/soc/codecs/twl4030.c +++ b/sound/soc/codecs/twl4030.c | |||
@@ -115,6 +115,7 @@ static const u8 twl4030_reg[TWL4030_CACHEREGNUM] = { | |||
115 | 0x00, /* REG_VIBRA_PWM_SET (0x47) */ | 115 | 0x00, /* REG_VIBRA_PWM_SET (0x47) */ |
116 | 0x00, /* REG_ANAMIC_GAIN (0x48) */ | 116 | 0x00, /* REG_ANAMIC_GAIN (0x48) */ |
117 | 0x00, /* REG_MISC_SET_2 (0x49) */ | 117 | 0x00, /* REG_MISC_SET_2 (0x49) */ |
118 | 0x00, /* REG_SW_SHADOW (0x4A) - Shadow, non HW register */ | ||
118 | }; | 119 | }; |
119 | 120 | ||
120 | /* codec private data */ | 121 | /* codec private data */ |
@@ -172,7 +173,11 @@ static int twl4030_write(struct snd_soc_codec *codec, | |||
172 | unsigned int reg, unsigned int value) | 173 | unsigned int reg, unsigned int value) |
173 | { | 174 | { |
174 | twl4030_write_reg_cache(codec, reg, value); | 175 | twl4030_write_reg_cache(codec, reg, value); |
175 | return twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE, value, reg); | 176 | if (likely(reg < TWL4030_REG_SW_SHADOW)) |
177 | return twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE, value, | ||
178 | reg); | ||
179 | else | ||
180 | return 0; | ||
176 | } | 181 | } |
177 | 182 | ||
178 | static void twl4030_codec_enable(struct snd_soc_codec *codec, int enable) | 183 | static void twl4030_codec_enable(struct snd_soc_codec *codec, int enable) |
diff --git a/sound/soc/codecs/twl4030.h b/sound/soc/codecs/twl4030.h index 48326e2bd9de..fe5f395d9e4f 100644 --- a/sound/soc/codecs/twl4030.h +++ b/sound/soc/codecs/twl4030.h | |||
@@ -92,8 +92,9 @@ | |||
92 | #define TWL4030_REG_VIBRA_PWM_SET 0x47 | 92 | #define TWL4030_REG_VIBRA_PWM_SET 0x47 |
93 | #define TWL4030_REG_ANAMIC_GAIN 0x48 | 93 | #define TWL4030_REG_ANAMIC_GAIN 0x48 |
94 | #define TWL4030_REG_MISC_SET_2 0x49 | 94 | #define TWL4030_REG_MISC_SET_2 0x49 |
95 | #define TWL4030_REG_SW_SHADOW 0x4A | ||
95 | 96 | ||
96 | #define TWL4030_CACHEREGNUM (TWL4030_REG_MISC_SET_2 + 1) | 97 | #define TWL4030_CACHEREGNUM (TWL4030_REG_SW_SHADOW + 1) |
97 | 98 | ||
98 | /* Bitfield Definitions */ | 99 | /* Bitfield Definitions */ |
99 | 100 | ||
@@ -260,6 +261,10 @@ | |||
260 | #define TWL4030_SMOOTH_ANAVOL_EN 0x02 | 261 | #define TWL4030_SMOOTH_ANAVOL_EN 0x02 |
261 | #define TWL4030_DIGMIC_LR_SWAP_EN 0x01 | 262 | #define TWL4030_DIGMIC_LR_SWAP_EN 0x01 |
262 | 263 | ||
264 | /* TWL4030_REG_SW_SHADOW (0x4A) Fields */ | ||
265 | #define TWL4030_HFL_EN 0x01 | ||
266 | #define TWL4030_HFR_EN 0x02 | ||
267 | |||
263 | #define TWL4030_DAI_HIFI 0 | 268 | #define TWL4030_DAI_HIFI 0 |
264 | #define TWL4030_DAI_VOICE 1 | 269 | #define TWL4030_DAI_VOICE 1 |
265 | 270 | ||