diff options
-rw-r--r-- | sound/soc/codecs/tlv320aic3x.c | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c index 86e5a5868c3c..7b5f159cfaf1 100644 --- a/sound/soc/codecs/tlv320aic3x.c +++ b/sound/soc/codecs/tlv320aic3x.c | |||
@@ -112,28 +112,21 @@ static const u8 aic3x_reg[AIC3X_CACHEREGNUM] = { | |||
112 | }; | 112 | }; |
113 | 113 | ||
114 | /* | 114 | /* |
115 | * write aic3x register cache | 115 | * read from the aic3x register space. Only use for this function is if |
116 | */ | 116 | * wanting to read volatile bits from those registers that has both read-only |
117 | static inline void aic3x_write_reg_cache(struct snd_soc_codec *codec, | 117 | * and read/write bits. All other cases should use snd_soc_read. |
118 | u8 reg, u8 value) | ||
119 | { | ||
120 | u8 *cache = codec->reg_cache; | ||
121 | if (reg >= AIC3X_CACHEREGNUM) | ||
122 | return; | ||
123 | cache[reg] = value; | ||
124 | } | ||
125 | |||
126 | /* | ||
127 | * read from the aic3x register space | ||
128 | */ | 118 | */ |
129 | static int aic3x_read(struct snd_soc_codec *codec, unsigned int reg, | 119 | static int aic3x_read(struct snd_soc_codec *codec, unsigned int reg, |
130 | u8 *value) | 120 | u8 *value) |
131 | { | 121 | { |
132 | *value = reg & 0xff; | 122 | u8 *cache = codec->reg_cache; |
123 | |||
124 | if (reg >= AIC3X_CACHEREGNUM) | ||
125 | return -1; | ||
133 | 126 | ||
134 | value[0] = i2c_smbus_read_byte_data(codec->control_data, value[0]); | 127 | *value = codec->hw_read(codec, reg); |
128 | cache[reg] = *value; | ||
135 | 129 | ||
136 | aic3x_write_reg_cache(codec, reg, *value); | ||
137 | return 0; | 130 | return 0; |
138 | } | 131 | } |
139 | 132 | ||