Commit f3b5d300 authored by Peter Ujfalusi's avatar Peter Ujfalusi Committed by Mark Brown

ASoC: TWL4030: Add shadow register

Shadow, non HW register for dealing with the HandsfreeL/R
muting.
Signed-off-by: default avatarPeter Ujfalusi <peter.ujfalusi@nokia.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 5a2e9a48
...@@ -115,6 +115,7 @@ static const u8 twl4030_reg[TWL4030_CACHEREGNUM] = { ...@@ -115,6 +115,7 @@ static const u8 twl4030_reg[TWL4030_CACHEREGNUM] = {
0x00, /* REG_VIBRA_PWM_SET (0x47) */ 0x00, /* REG_VIBRA_PWM_SET (0x47) */
0x00, /* REG_ANAMIC_GAIN (0x48) */ 0x00, /* REG_ANAMIC_GAIN (0x48) */
0x00, /* REG_MISC_SET_2 (0x49) */ 0x00, /* REG_MISC_SET_2 (0x49) */
0x00, /* REG_SW_SHADOW (0x4A) - Shadow, non HW register */
}; };
/* codec private data */ /* codec private data */
...@@ -172,7 +173,11 @@ static int twl4030_write(struct snd_soc_codec *codec, ...@@ -172,7 +173,11 @@ static int twl4030_write(struct snd_soc_codec *codec,
unsigned int reg, unsigned int value) unsigned int reg, unsigned int value)
{ {
twl4030_write_reg_cache(codec, reg, value); twl4030_write_reg_cache(codec, reg, value);
return twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE, value, reg); if (likely(reg < TWL4030_REG_SW_SHADOW))
return twl4030_i2c_write_u8(TWL4030_MODULE_AUDIO_VOICE, value,
reg);
else
return 0;
} }
static void twl4030_codec_enable(struct snd_soc_codec *codec, int enable) static void twl4030_codec_enable(struct snd_soc_codec *codec, int enable)
......
...@@ -92,8 +92,9 @@ ...@@ -92,8 +92,9 @@
#define TWL4030_REG_VIBRA_PWM_SET 0x47 #define TWL4030_REG_VIBRA_PWM_SET 0x47
#define TWL4030_REG_ANAMIC_GAIN 0x48 #define TWL4030_REG_ANAMIC_GAIN 0x48
#define TWL4030_REG_MISC_SET_2 0x49 #define TWL4030_REG_MISC_SET_2 0x49
#define TWL4030_REG_SW_SHADOW 0x4A
#define TWL4030_CACHEREGNUM (TWL4030_REG_MISC_SET_2 + 1) #define TWL4030_CACHEREGNUM (TWL4030_REG_SW_SHADOW + 1)
/* Bitfield Definitions */ /* Bitfield Definitions */
...@@ -260,6 +261,10 @@ ...@@ -260,6 +261,10 @@
#define TWL4030_SMOOTH_ANAVOL_EN 0x02 #define TWL4030_SMOOTH_ANAVOL_EN 0x02
#define TWL4030_DIGMIC_LR_SWAP_EN 0x01 #define TWL4030_DIGMIC_LR_SWAP_EN 0x01
/* TWL4030_REG_SW_SHADOW (0x4A) Fields */
#define TWL4030_HFL_EN 0x01
#define TWL4030_HFR_EN 0x02
#define TWL4030_DAI_HIFI 0 #define TWL4030_DAI_HIFI 0
#define TWL4030_DAI_VOICE 1 #define TWL4030_DAI_VOICE 1
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment