Commit f8f11795 authored by Lars-Peter Clausen's avatar Lars-Peter Clausen Committed by Mark Brown

ASoC: tlv320aic26: Fix keyclick feature

The tlv320aic26 contains a embedded snd_soc_codec struct which is referenced in
the keyclick code. That struct is never initialized though, replace the embedded
struct with a pointer and use that in the keyclick code.
Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent c095ba72
...@@ -29,7 +29,7 @@ MODULE_LICENSE("GPL"); ...@@ -29,7 +29,7 @@ MODULE_LICENSE("GPL");
/* AIC26 driver private data */ /* AIC26 driver private data */
struct aic26 { struct aic26 {
struct spi_device *spi; struct spi_device *spi;
struct snd_soc_codec codec; struct snd_soc_codec *codec;
int master; int master;
int datfm; int datfm;
int mclk; int mclk;
...@@ -330,7 +330,7 @@ static ssize_t aic26_keyclick_show(struct device *dev, ...@@ -330,7 +330,7 @@ static ssize_t aic26_keyclick_show(struct device *dev,
struct aic26 *aic26 = dev_get_drvdata(dev); struct aic26 *aic26 = dev_get_drvdata(dev);
int val, amp, freq, len; int val, amp, freq, len;
val = aic26_reg_read_cache(&aic26->codec, AIC26_REG_AUDIO_CTRL2); val = aic26_reg_read_cache(aic26->codec, AIC26_REG_AUDIO_CTRL2);
amp = (val >> 12) & 0x7; amp = (val >> 12) & 0x7;
freq = (125 << ((val >> 8) & 0x7)) >> 1; freq = (125 << ((val >> 8) & 0x7)) >> 1;
len = 2 * (1 + ((val >> 4) & 0xf)); len = 2 * (1 + ((val >> 4) & 0xf));
...@@ -346,9 +346,9 @@ static ssize_t aic26_keyclick_set(struct device *dev, ...@@ -346,9 +346,9 @@ static ssize_t aic26_keyclick_set(struct device *dev,
struct aic26 *aic26 = dev_get_drvdata(dev); struct aic26 *aic26 = dev_get_drvdata(dev);
int val; int val;
val = aic26_reg_read_cache(&aic26->codec, AIC26_REG_AUDIO_CTRL2); val = aic26_reg_read_cache(aic26->codec, AIC26_REG_AUDIO_CTRL2);
val |= 0x8000; val |= 0x8000;
aic26_reg_write(&aic26->codec, AIC26_REG_AUDIO_CTRL2, val); aic26_reg_write(aic26->codec, AIC26_REG_AUDIO_CTRL2, val);
return count; return count;
} }
...@@ -360,8 +360,11 @@ static DEVICE_ATTR(keyclick, 0644, aic26_keyclick_show, aic26_keyclick_set); ...@@ -360,8 +360,11 @@ static DEVICE_ATTR(keyclick, 0644, aic26_keyclick_show, aic26_keyclick_set);
*/ */
static int aic26_probe(struct snd_soc_codec *codec) static int aic26_probe(struct snd_soc_codec *codec)
{ {
struct aic26 *aic26 = dev_get_drvdata(codec->dev);
int ret, err, i, reg; int ret, err, i, reg;
aic26->codec = codec;
dev_info(codec->dev, "Probing AIC26 SoC CODEC driver\n"); dev_info(codec->dev, "Probing AIC26 SoC CODEC driver\n");
/* Reset the codec to power on defaults */ /* Reset the codec to power on defaults */
......
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