diff options
Diffstat (limited to 'sound/soc/codecs/ak4671.c')
-rw-r--r-- | sound/soc/codecs/ak4671.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/sound/soc/codecs/ak4671.c b/sound/soc/codecs/ak4671.c index 88b29f8c748b..de9ff66d3721 100644 --- a/sound/soc/codecs/ak4671.c +++ b/sound/soc/codecs/ak4671.c | |||
@@ -26,7 +26,6 @@ | |||
26 | /* codec private data */ | 26 | /* codec private data */ |
27 | struct ak4671_priv { | 27 | struct ak4671_priv { |
28 | enum snd_soc_control_type control_type; | 28 | enum snd_soc_control_type control_type; |
29 | void *control_data; | ||
30 | }; | 29 | }; |
31 | 30 | ||
32 | /* ak4671 register cache & default register settings */ | 31 | /* ak4671 register cache & default register settings */ |
@@ -169,18 +168,15 @@ static int ak4671_out2_event(struct snd_soc_dapm_widget *w, | |||
169 | struct snd_kcontrol *kcontrol, int event) | 168 | struct snd_kcontrol *kcontrol, int event) |
170 | { | 169 | { |
171 | struct snd_soc_codec *codec = w->codec; | 170 | struct snd_soc_codec *codec = w->codec; |
172 | u8 reg; | ||
173 | 171 | ||
174 | switch (event) { | 172 | switch (event) { |
175 | case SND_SOC_DAPM_POST_PMU: | 173 | case SND_SOC_DAPM_POST_PMU: |
176 | reg = snd_soc_read(codec, AK4671_LOUT2_POWER_MANAGERMENT); | 174 | snd_soc_update_bits(codec, AK4671_LOUT2_POWER_MANAGERMENT, |
177 | reg |= AK4671_MUTEN; | 175 | AK4671_MUTEN, AK4671_MUTEN); |
178 | snd_soc_write(codec, AK4671_LOUT2_POWER_MANAGERMENT, reg); | ||
179 | break; | 176 | break; |
180 | case SND_SOC_DAPM_PRE_PMD: | 177 | case SND_SOC_DAPM_PRE_PMD: |
181 | reg = snd_soc_read(codec, AK4671_LOUT2_POWER_MANAGERMENT); | 178 | snd_soc_update_bits(codec, AK4671_LOUT2_POWER_MANAGERMENT, |
182 | reg &= ~AK4671_MUTEN; | 179 | AK4671_MUTEN, 0); |
183 | snd_soc_write(codec, AK4671_LOUT2_POWER_MANAGERMENT, reg); | ||
184 | break; | 180 | break; |
185 | } | 181 | } |
186 | 182 | ||
@@ -576,15 +572,12 @@ static int ak4671_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt) | |||
576 | static int ak4671_set_bias_level(struct snd_soc_codec *codec, | 572 | static int ak4671_set_bias_level(struct snd_soc_codec *codec, |
577 | enum snd_soc_bias_level level) | 573 | enum snd_soc_bias_level level) |
578 | { | 574 | { |
579 | u8 reg; | ||
580 | |||
581 | switch (level) { | 575 | switch (level) { |
582 | case SND_SOC_BIAS_ON: | 576 | case SND_SOC_BIAS_ON: |
583 | case SND_SOC_BIAS_PREPARE: | 577 | case SND_SOC_BIAS_PREPARE: |
584 | case SND_SOC_BIAS_STANDBY: | 578 | case SND_SOC_BIAS_STANDBY: |
585 | reg = snd_soc_read(codec, AK4671_AD_DA_POWER_MANAGEMENT); | 579 | snd_soc_update_bits(codec, AK4671_AD_DA_POWER_MANAGEMENT, |
586 | snd_soc_write(codec, AK4671_AD_DA_POWER_MANAGEMENT, | 580 | AK4671_PMVCM, AK4671_PMVCM); |
587 | reg | AK4671_PMVCM); | ||
588 | break; | 581 | break; |
589 | case SND_SOC_BIAS_OFF: | 582 | case SND_SOC_BIAS_OFF: |
590 | snd_soc_write(codec, AK4671_AD_DA_POWER_MANAGEMENT, 0x00); | 583 | snd_soc_write(codec, AK4671_AD_DA_POWER_MANAGEMENT, 0x00); |
@@ -629,8 +622,6 @@ static int ak4671_probe(struct snd_soc_codec *codec) | |||
629 | struct ak4671_priv *ak4671 = snd_soc_codec_get_drvdata(codec); | 622 | struct ak4671_priv *ak4671 = snd_soc_codec_get_drvdata(codec); |
630 | int ret; | 623 | int ret; |
631 | 624 | ||
632 | codec->hw_write = (hw_write_t)i2c_master_send; | ||
633 | |||
634 | ret = snd_soc_codec_set_cache_io(codec, 8, 8, ak4671->control_type); | 625 | ret = snd_soc_codec_set_cache_io(codec, 8, 8, ak4671->control_type); |
635 | if (ret < 0) { | 626 | if (ret < 0) { |
636 | dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret); | 627 | dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret); |
@@ -675,7 +666,6 @@ static int __devinit ak4671_i2c_probe(struct i2c_client *client, | |||
675 | return -ENOMEM; | 666 | return -ENOMEM; |
676 | 667 | ||
677 | i2c_set_clientdata(client, ak4671); | 668 | i2c_set_clientdata(client, ak4671); |
678 | ak4671->control_data = client; | ||
679 | ak4671->control_type = SND_SOC_I2C; | 669 | ak4671->control_type = SND_SOC_I2C; |
680 | 670 | ||
681 | ret = snd_soc_register_codec(&client->dev, | 671 | ret = snd_soc_register_codec(&client->dev, |