diff options
Diffstat (limited to 'sound/soc')
| -rw-r--r-- | sound/soc/codecs/adau1373.c | 2 | ||||
| -rw-r--r-- | sound/soc/codecs/cs4271.c | 8 | ||||
| -rw-r--r-- | sound/soc/codecs/rt5631.c | 2 | ||||
| -rw-r--r-- | sound/soc/codecs/sgtl5000.c | 2 | ||||
| -rw-r--r-- | sound/soc/codecs/sta32x.c | 63 | ||||
| -rw-r--r-- | sound/soc/codecs/sta32x.h | 1 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8731.c | 1 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8753.c | 3 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8962.c | 4 | ||||
| -rw-r--r-- | sound/soc/codecs/wm8993.c | 2 | ||||
| -rw-r--r-- | sound/soc/codecs/wm9081.c | 10 | ||||
| -rw-r--r-- | sound/soc/codecs/wm9090.c | 6 | ||||
| -rw-r--r-- | sound/soc/codecs/wm_hubs.c | 2 | ||||
| -rw-r--r-- | sound/soc/fsl/fsl_ssi.c | 1 |
14 files changed, 88 insertions, 19 deletions
diff --git a/sound/soc/codecs/adau1373.c b/sound/soc/codecs/adau1373.c index 1ccf8dd47576..45c63028b40d 100644 --- a/sound/soc/codecs/adau1373.c +++ b/sound/soc/codecs/adau1373.c | |||
| @@ -245,7 +245,7 @@ static const char *adau1373_bass_hpf_cutoff_text[] = { | |||
| 245 | }; | 245 | }; |
| 246 | 246 | ||
| 247 | static const unsigned int adau1373_bass_tlv[] = { | 247 | static const unsigned int adau1373_bass_tlv[] = { |
| 248 | TLV_DB_RANGE_HEAD(4), | 248 | TLV_DB_RANGE_HEAD(3), |
| 249 | 0, 2, TLV_DB_SCALE_ITEM(-600, 600, 1), | 249 | 0, 2, TLV_DB_SCALE_ITEM(-600, 600, 1), |
| 250 | 3, 4, TLV_DB_SCALE_ITEM(950, 250, 0), | 250 | 3, 4, TLV_DB_SCALE_ITEM(950, 250, 0), |
| 251 | 5, 7, TLV_DB_SCALE_ITEM(1400, 150, 0), | 251 | 5, 7, TLV_DB_SCALE_ITEM(1400, 150, 0), |
diff --git a/sound/soc/codecs/cs4271.c b/sound/soc/codecs/cs4271.c index 23d1bd5dadda..69fde1506fe1 100644 --- a/sound/soc/codecs/cs4271.c +++ b/sound/soc/codecs/cs4271.c | |||
| @@ -434,7 +434,8 @@ static int cs4271_soc_suspend(struct snd_soc_codec *codec, pm_message_t mesg) | |||
| 434 | { | 434 | { |
| 435 | int ret; | 435 | int ret; |
| 436 | /* Set power-down bit */ | 436 | /* Set power-down bit */ |
| 437 | ret = snd_soc_update_bits(codec, CS4271_MODE2, 0, CS4271_MODE2_PDN); | 437 | ret = snd_soc_update_bits(codec, CS4271_MODE2, CS4271_MODE2_PDN, |
| 438 | CS4271_MODE2_PDN); | ||
| 438 | if (ret < 0) | 439 | if (ret < 0) |
| 439 | return ret; | 440 | return ret; |
| 440 | return 0; | 441 | return 0; |
| @@ -501,8 +502,9 @@ static int cs4271_probe(struct snd_soc_codec *codec) | |||
| 501 | return ret; | 502 | return ret; |
| 502 | } | 503 | } |
| 503 | 504 | ||
| 504 | ret = snd_soc_update_bits(codec, CS4271_MODE2, 0, | 505 | ret = snd_soc_update_bits(codec, CS4271_MODE2, |
| 505 | CS4271_MODE2_PDN | CS4271_MODE2_CPEN); | 506 | CS4271_MODE2_PDN | CS4271_MODE2_CPEN, |
| 507 | CS4271_MODE2_PDN | CS4271_MODE2_CPEN); | ||
| 506 | if (ret < 0) | 508 | if (ret < 0) |
| 507 | return ret; | 509 | return ret; |
| 508 | ret = snd_soc_update_bits(codec, CS4271_MODE2, CS4271_MODE2_PDN, 0); | 510 | ret = snd_soc_update_bits(codec, CS4271_MODE2, CS4271_MODE2_PDN, 0); |
diff --git a/sound/soc/codecs/rt5631.c b/sound/soc/codecs/rt5631.c index 27a078cbb6eb..4646e808b90a 100644 --- a/sound/soc/codecs/rt5631.c +++ b/sound/soc/codecs/rt5631.c | |||
| @@ -177,7 +177,7 @@ static const DECLARE_TLV_DB_SCALE(dac_vol_tlv, -95625, 375, 0); | |||
| 177 | static const DECLARE_TLV_DB_SCALE(in_vol_tlv, -3450, 150, 0); | 177 | static const DECLARE_TLV_DB_SCALE(in_vol_tlv, -3450, 150, 0); |
| 178 | /* {0, +20, +24, +30, +35, +40, +44, +50, +52}dB */ | 178 | /* {0, +20, +24, +30, +35, +40, +44, +50, +52}dB */ |
| 179 | static unsigned int mic_bst_tlv[] = { | 179 | static unsigned int mic_bst_tlv[] = { |
| 180 | TLV_DB_RANGE_HEAD(6), | 180 | TLV_DB_RANGE_HEAD(7), |
| 181 | 0, 0, TLV_DB_SCALE_ITEM(0, 0, 0), | 181 | 0, 0, TLV_DB_SCALE_ITEM(0, 0, 0), |
| 182 | 1, 1, TLV_DB_SCALE_ITEM(2000, 0, 0), | 182 | 1, 1, TLV_DB_SCALE_ITEM(2000, 0, 0), |
| 183 | 2, 2, TLV_DB_SCALE_ITEM(2400, 0, 0), | 183 | 2, 2, TLV_DB_SCALE_ITEM(2400, 0, 0), |
diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c index d15695d1c273..bbcf921166f7 100644 --- a/sound/soc/codecs/sgtl5000.c +++ b/sound/soc/codecs/sgtl5000.c | |||
| @@ -365,7 +365,7 @@ static const DECLARE_TLV_DB_SCALE(capture_6db_attenuate, -600, 600, 0); | |||
| 365 | 365 | ||
| 366 | /* tlv for mic gain, 0db 20db 30db 40db */ | 366 | /* tlv for mic gain, 0db 20db 30db 40db */ |
| 367 | static const unsigned int mic_gain_tlv[] = { | 367 | static const unsigned int mic_gain_tlv[] = { |
| 368 | TLV_DB_RANGE_HEAD(4), | 368 | TLV_DB_RANGE_HEAD(2), |
| 369 | 0, 0, TLV_DB_SCALE_ITEM(0, 0, 0), | 369 | 0, 0, TLV_DB_SCALE_ITEM(0, 0, 0), |
| 370 | 1, 3, TLV_DB_SCALE_ITEM(2000, 1000, 0), | 370 | 1, 3, TLV_DB_SCALE_ITEM(2000, 1000, 0), |
| 371 | }; | 371 | }; |
diff --git a/sound/soc/codecs/sta32x.c b/sound/soc/codecs/sta32x.c index bb82408ab8e1..d2f37152f940 100644 --- a/sound/soc/codecs/sta32x.c +++ b/sound/soc/codecs/sta32x.c | |||
| @@ -76,6 +76,8 @@ struct sta32x_priv { | |||
| 76 | 76 | ||
| 77 | unsigned int mclk; | 77 | unsigned int mclk; |
| 78 | unsigned int format; | 78 | unsigned int format; |
| 79 | |||
| 80 | u32 coef_shadow[STA32X_COEF_COUNT]; | ||
| 79 | }; | 81 | }; |
| 80 | 82 | ||
| 81 | static const DECLARE_TLV_DB_SCALE(mvol_tlv, -12700, 50, 1); | 83 | static const DECLARE_TLV_DB_SCALE(mvol_tlv, -12700, 50, 1); |
| @@ -227,6 +229,7 @@ static int sta32x_coefficient_put(struct snd_kcontrol *kcontrol, | |||
| 227 | struct snd_ctl_elem_value *ucontrol) | 229 | struct snd_ctl_elem_value *ucontrol) |
| 228 | { | 230 | { |
| 229 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); | 231 | struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); |
| 232 | struct sta32x_priv *sta32x = snd_soc_codec_get_drvdata(codec); | ||
| 230 | int numcoef = kcontrol->private_value >> 16; | 233 | int numcoef = kcontrol->private_value >> 16; |
| 231 | int index = kcontrol->private_value & 0xffff; | 234 | int index = kcontrol->private_value & 0xffff; |
| 232 | unsigned int cfud; | 235 | unsigned int cfud; |
| @@ -239,6 +242,11 @@ static int sta32x_coefficient_put(struct snd_kcontrol *kcontrol, | |||
| 239 | snd_soc_write(codec, STA32X_CFUD, cfud); | 242 | snd_soc_write(codec, STA32X_CFUD, cfud); |
| 240 | 243 | ||
| 241 | snd_soc_write(codec, STA32X_CFADDR2, index); | 244 | snd_soc_write(codec, STA32X_CFADDR2, index); |
| 245 | for (i = 0; i < numcoef && (index + i < STA32X_COEF_COUNT); i++) | ||
| 246 | sta32x->coef_shadow[index + i] = | ||
| 247 | (ucontrol->value.bytes.data[3 * i] << 16) | ||
| 248 | | (ucontrol->value.bytes.data[3 * i + 1] << 8) | ||
| 249 | | (ucontrol->value.bytes.data[3 * i + 2]); | ||
| 242 | for (i = 0; i < 3 * numcoef; i++) | 250 | for (i = 0; i < 3 * numcoef; i++) |
| 243 | snd_soc_write(codec, STA32X_B1CF1 + i, | 251 | snd_soc_write(codec, STA32X_B1CF1 + i, |
| 244 | ucontrol->value.bytes.data[i]); | 252 | ucontrol->value.bytes.data[i]); |
| @@ -252,6 +260,48 @@ static int sta32x_coefficient_put(struct snd_kcontrol *kcontrol, | |||
| 252 | return 0; | 260 | return 0; |
| 253 | } | 261 | } |
| 254 | 262 | ||
| 263 | int sta32x_sync_coef_shadow(struct snd_soc_codec *codec) | ||
| 264 | { | ||
| 265 | struct sta32x_priv *sta32x = snd_soc_codec_get_drvdata(codec); | ||
| 266 | unsigned int cfud; | ||
| 267 | int i; | ||
| 268 | |||
| 269 | /* preserve reserved bits in STA32X_CFUD */ | ||
| 270 | cfud = snd_soc_read(codec, STA32X_CFUD) & 0xf0; | ||
| 271 | |||
| 272 | for (i = 0; i < STA32X_COEF_COUNT; i++) { | ||
| 273 | snd_soc_write(codec, STA32X_CFADDR2, i); | ||
| 274 | snd_soc_write(codec, STA32X_B1CF1, | ||
| 275 | (sta32x->coef_shadow[i] >> 16) & 0xff); | ||
| 276 | snd_soc_write(codec, STA32X_B1CF2, | ||
| 277 | (sta32x->coef_shadow[i] >> 8) & 0xff); | ||
| 278 | snd_soc_write(codec, STA32X_B1CF3, | ||
| 279 | (sta32x->coef_shadow[i]) & 0xff); | ||
| 280 | /* chip documentation does not say if the bits are | ||
| 281 | * self-clearing, so do it explicitly */ | ||
| 282 | snd_soc_write(codec, STA32X_CFUD, cfud); | ||
| 283 | snd_soc_write(codec, STA32X_CFUD, cfud | 0x01); | ||
| 284 | } | ||
| 285 | return 0; | ||
| 286 | } | ||
| 287 | |||
| 288 | int sta32x_cache_sync(struct snd_soc_codec *codec) | ||
| 289 | { | ||
| 290 | unsigned int mute; | ||
| 291 | int rc; | ||
| 292 | |||
| 293 | if (!codec->cache_sync) | ||
| 294 | return 0; | ||
| 295 | |||
| 296 | /* mute during register sync */ | ||
| 297 | mute = snd_soc_read(codec, STA32X_MMUTE); | ||
| 298 | snd_soc_write(codec, STA32X_MMUTE, mute | STA32X_MMUTE_MMUTE); | ||
| 299 | sta32x_sync_coef_shadow(codec); | ||
| 300 | rc = snd_soc_cache_sync(codec); | ||
| 301 | snd_soc_write(codec, STA32X_MMUTE, mute); | ||
| 302 | return rc; | ||
| 303 | } | ||
| 304 | |||
| 255 | #define SINGLE_COEF(xname, index) \ | 305 | #define SINGLE_COEF(xname, index) \ |
| 256 | { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \ | 306 | { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \ |
| 257 | .info = sta32x_coefficient_info, \ | 307 | .info = sta32x_coefficient_info, \ |
| @@ -661,7 +711,7 @@ static int sta32x_set_bias_level(struct snd_soc_codec *codec, | |||
| 661 | return ret; | 711 | return ret; |
| 662 | } | 712 | } |
| 663 | 713 | ||
| 664 | snd_soc_cache_sync(codec); | 714 | sta32x_cache_sync(codec); |
| 665 | } | 715 | } |
| 666 | 716 | ||
| 667 | /* Power up to mute */ | 717 | /* Power up to mute */ |
| @@ -790,6 +840,17 @@ static int sta32x_probe(struct snd_soc_codec *codec) | |||
| 790 | STA32X_CxCFG_OM_MASK, | 840 | STA32X_CxCFG_OM_MASK, |
| 791 | 2 << STA32X_CxCFG_OM_SHIFT); | 841 | 2 << STA32X_CxCFG_OM_SHIFT); |
| 792 | 842 | ||
| 843 | /* initialize coefficient shadow RAM with reset values */ | ||
| 844 | for (i = 4; i <= 49; i += 5) | ||
| 845 | sta32x->coef_shadow[i] = 0x400000; | ||
| 846 | for (i = 50; i <= 54; i++) | ||
| 847 | sta32x->coef_shadow[i] = 0x7fffff; | ||
| 848 | sta32x->coef_shadow[55] = 0x5a9df7; | ||
| 849 | sta32x->coef_shadow[56] = 0x7fffff; | ||
| 850 | sta32x->coef_shadow[59] = 0x7fffff; | ||
| 851 | sta32x->coef_shadow[60] = 0x400000; | ||
| 852 | sta32x->coef_shadow[61] = 0x400000; | ||
| 853 | |||
| 793 | sta32x_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | 854 | sta32x_set_bias_level(codec, SND_SOC_BIAS_STANDBY); |
| 794 | /* Bias level configuration will have done an extra enable */ | 855 | /* Bias level configuration will have done an extra enable */ |
| 795 | regulator_bulk_disable(ARRAY_SIZE(sta32x->supplies), sta32x->supplies); | 856 | regulator_bulk_disable(ARRAY_SIZE(sta32x->supplies), sta32x->supplies); |
diff --git a/sound/soc/codecs/sta32x.h b/sound/soc/codecs/sta32x.h index b97ee5a75667..d8e32a6262ee 100644 --- a/sound/soc/codecs/sta32x.h +++ b/sound/soc/codecs/sta32x.h | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | /* STA326 register addresses */ | 19 | /* STA326 register addresses */ |
| 20 | 20 | ||
| 21 | #define STA32X_REGISTER_COUNT 0x2d | 21 | #define STA32X_REGISTER_COUNT 0x2d |
| 22 | #define STA32X_COEF_COUNT 62 | ||
| 22 | 23 | ||
| 23 | #define STA32X_CONFA 0x00 | 24 | #define STA32X_CONFA 0x00 |
| 24 | #define STA32X_CONFB 0x01 | 25 | #define STA32X_CONFB 0x01 |
diff --git a/sound/soc/codecs/wm8731.c b/sound/soc/codecs/wm8731.c index 7e5ec03f6f8d..a7c9ae17fc7e 100644 --- a/sound/soc/codecs/wm8731.c +++ b/sound/soc/codecs/wm8731.c | |||
| @@ -453,6 +453,7 @@ static int wm8731_set_bias_level(struct snd_soc_codec *codec, | |||
| 453 | snd_soc_write(codec, WM8731_PWR, 0xffff); | 453 | snd_soc_write(codec, WM8731_PWR, 0xffff); |
| 454 | regulator_bulk_disable(ARRAY_SIZE(wm8731->supplies), | 454 | regulator_bulk_disable(ARRAY_SIZE(wm8731->supplies), |
| 455 | wm8731->supplies); | 455 | wm8731->supplies); |
| 456 | codec->cache_sync = 1; | ||
| 456 | break; | 457 | break; |
| 457 | } | 458 | } |
| 458 | codec->dapm.bias_level = level; | 459 | codec->dapm.bias_level = level; |
diff --git a/sound/soc/codecs/wm8753.c b/sound/soc/codecs/wm8753.c index a9504710bb69..3a629d0d690e 100644 --- a/sound/soc/codecs/wm8753.c +++ b/sound/soc/codecs/wm8753.c | |||
| @@ -190,6 +190,9 @@ static int wm8753_set_dai(struct snd_kcontrol *kcontrol, | |||
| 190 | struct wm8753_priv *wm8753 = snd_soc_codec_get_drvdata(codec); | 190 | struct wm8753_priv *wm8753 = snd_soc_codec_get_drvdata(codec); |
| 191 | u16 ioctl; | 191 | u16 ioctl; |
| 192 | 192 | ||
| 193 | if (wm8753->dai_func == ucontrol->value.integer.value[0]) | ||
| 194 | return 0; | ||
| 195 | |||
| 193 | if (codec->active) | 196 | if (codec->active) |
| 194 | return -EBUSY; | 197 | return -EBUSY; |
| 195 | 198 | ||
diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c index 91d3c6dbeba3..53edd9a8c758 100644 --- a/sound/soc/codecs/wm8962.c +++ b/sound/soc/codecs/wm8962.c | |||
| @@ -1973,7 +1973,7 @@ static int wm8962_reset(struct snd_soc_codec *codec) | |||
| 1973 | static const DECLARE_TLV_DB_SCALE(inpga_tlv, -2325, 75, 0); | 1973 | static const DECLARE_TLV_DB_SCALE(inpga_tlv, -2325, 75, 0); |
| 1974 | static const DECLARE_TLV_DB_SCALE(mixin_tlv, -1500, 300, 0); | 1974 | static const DECLARE_TLV_DB_SCALE(mixin_tlv, -1500, 300, 0); |
| 1975 | static const unsigned int mixinpga_tlv[] = { | 1975 | static const unsigned int mixinpga_tlv[] = { |
| 1976 | TLV_DB_RANGE_HEAD(7), | 1976 | TLV_DB_RANGE_HEAD(5), |
| 1977 | 0, 1, TLV_DB_SCALE_ITEM(0, 600, 0), | 1977 | 0, 1, TLV_DB_SCALE_ITEM(0, 600, 0), |
| 1978 | 2, 2, TLV_DB_SCALE_ITEM(1300, 1300, 0), | 1978 | 2, 2, TLV_DB_SCALE_ITEM(1300, 1300, 0), |
| 1979 | 3, 4, TLV_DB_SCALE_ITEM(1800, 200, 0), | 1979 | 3, 4, TLV_DB_SCALE_ITEM(1800, 200, 0), |
| @@ -1988,7 +1988,7 @@ static const DECLARE_TLV_DB_SCALE(bypass_tlv, -1500, 300, 0); | |||
| 1988 | static const DECLARE_TLV_DB_SCALE(out_tlv, -12100, 100, 1); | 1988 | static const DECLARE_TLV_DB_SCALE(out_tlv, -12100, 100, 1); |
| 1989 | static const DECLARE_TLV_DB_SCALE(hp_tlv, -700, 100, 0); | 1989 | static const DECLARE_TLV_DB_SCALE(hp_tlv, -700, 100, 0); |
| 1990 | static const unsigned int classd_tlv[] = { | 1990 | static const unsigned int classd_tlv[] = { |
| 1991 | TLV_DB_RANGE_HEAD(7), | 1991 | TLV_DB_RANGE_HEAD(2), |
| 1992 | 0, 6, TLV_DB_SCALE_ITEM(0, 150, 0), | 1992 | 0, 6, TLV_DB_SCALE_ITEM(0, 150, 0), |
| 1993 | 7, 7, TLV_DB_SCALE_ITEM(1200, 0, 0), | 1993 | 7, 7, TLV_DB_SCALE_ITEM(1200, 0, 0), |
| 1994 | }; | 1994 | }; |
diff --git a/sound/soc/codecs/wm8993.c b/sound/soc/codecs/wm8993.c index eec8e1435116..d1a142f48b09 100644 --- a/sound/soc/codecs/wm8993.c +++ b/sound/soc/codecs/wm8993.c | |||
| @@ -512,7 +512,7 @@ static const DECLARE_TLV_DB_SCALE(drc_comp_threash, -4500, 75, 0); | |||
| 512 | static const DECLARE_TLV_DB_SCALE(drc_comp_amp, -2250, 75, 0); | 512 | static const DECLARE_TLV_DB_SCALE(drc_comp_amp, -2250, 75, 0); |
| 513 | static const DECLARE_TLV_DB_SCALE(drc_min_tlv, -1800, 600, 0); | 513 | static const DECLARE_TLV_DB_SCALE(drc_min_tlv, -1800, 600, 0); |
| 514 | static const unsigned int drc_max_tlv[] = { | 514 | static const unsigned int drc_max_tlv[] = { |
| 515 | TLV_DB_RANGE_HEAD(4), | 515 | TLV_DB_RANGE_HEAD(2), |
| 516 | 0, 2, TLV_DB_SCALE_ITEM(1200, 600, 0), | 516 | 0, 2, TLV_DB_SCALE_ITEM(1200, 600, 0), |
| 517 | 3, 3, TLV_DB_SCALE_ITEM(3600, 0, 0), | 517 | 3, 3, TLV_DB_SCALE_ITEM(3600, 0, 0), |
| 518 | }; | 518 | }; |
diff --git a/sound/soc/codecs/wm9081.c b/sound/soc/codecs/wm9081.c index 3cd35a02c28c..4a398c3bfe84 100644 --- a/sound/soc/codecs/wm9081.c +++ b/sound/soc/codecs/wm9081.c | |||
| @@ -807,7 +807,6 @@ static int wm9081_set_bias_level(struct snd_soc_codec *codec, | |||
| 807 | mdelay(100); | 807 | mdelay(100); |
| 808 | 808 | ||
| 809 | /* Normal bias enable & soft start off */ | 809 | /* Normal bias enable & soft start off */ |
| 810 | reg |= WM9081_BIAS_ENA; | ||
| 811 | reg &= ~WM9081_VMID_RAMP; | 810 | reg &= ~WM9081_VMID_RAMP; |
| 812 | snd_soc_write(codec, WM9081_VMID_CONTROL, reg); | 811 | snd_soc_write(codec, WM9081_VMID_CONTROL, reg); |
| 813 | 812 | ||
| @@ -818,7 +817,7 @@ static int wm9081_set_bias_level(struct snd_soc_codec *codec, | |||
| 818 | } | 817 | } |
| 819 | 818 | ||
| 820 | /* VMID 2*240k */ | 819 | /* VMID 2*240k */ |
| 821 | reg = snd_soc_read(codec, WM9081_BIAS_CONTROL_1); | 820 | reg = snd_soc_read(codec, WM9081_VMID_CONTROL); |
| 822 | reg &= ~WM9081_VMID_SEL_MASK; | 821 | reg &= ~WM9081_VMID_SEL_MASK; |
| 823 | reg |= 0x04; | 822 | reg |= 0x04; |
| 824 | snd_soc_write(codec, WM9081_VMID_CONTROL, reg); | 823 | snd_soc_write(codec, WM9081_VMID_CONTROL, reg); |
| @@ -830,14 +829,15 @@ static int wm9081_set_bias_level(struct snd_soc_codec *codec, | |||
| 830 | break; | 829 | break; |
| 831 | 830 | ||
| 832 | case SND_SOC_BIAS_OFF: | 831 | case SND_SOC_BIAS_OFF: |
| 833 | /* Startup bias source */ | 832 | /* Startup bias source and disable bias */ |
| 834 | reg = snd_soc_read(codec, WM9081_BIAS_CONTROL_1); | 833 | reg = snd_soc_read(codec, WM9081_BIAS_CONTROL_1); |
| 835 | reg |= WM9081_BIAS_SRC; | 834 | reg |= WM9081_BIAS_SRC; |
| 835 | reg &= ~WM9081_BIAS_ENA; | ||
| 836 | snd_soc_write(codec, WM9081_BIAS_CONTROL_1, reg); | 836 | snd_soc_write(codec, WM9081_BIAS_CONTROL_1, reg); |
| 837 | 837 | ||
| 838 | /* Disable VMID and biases with soft ramping */ | 838 | /* Disable VMID with soft ramping */ |
| 839 | reg = snd_soc_read(codec, WM9081_VMID_CONTROL); | 839 | reg = snd_soc_read(codec, WM9081_VMID_CONTROL); |
| 840 | reg &= ~(WM9081_VMID_SEL_MASK | WM9081_BIAS_ENA); | 840 | reg &= ~WM9081_VMID_SEL_MASK; |
| 841 | reg |= WM9081_VMID_RAMP; | 841 | reg |= WM9081_VMID_RAMP; |
| 842 | snd_soc_write(codec, WM9081_VMID_CONTROL, reg); | 842 | snd_soc_write(codec, WM9081_VMID_CONTROL, reg); |
| 843 | 843 | ||
diff --git a/sound/soc/codecs/wm9090.c b/sound/soc/codecs/wm9090.c index 2b5252c9e377..f94c06057c64 100644 --- a/sound/soc/codecs/wm9090.c +++ b/sound/soc/codecs/wm9090.c | |||
| @@ -177,19 +177,19 @@ static void wait_for_dc_servo(struct snd_soc_codec *codec) | |||
| 177 | } | 177 | } |
| 178 | 178 | ||
| 179 | static const unsigned int in_tlv[] = { | 179 | static const unsigned int in_tlv[] = { |
| 180 | TLV_DB_RANGE_HEAD(6), | 180 | TLV_DB_RANGE_HEAD(3), |
| 181 | 0, 0, TLV_DB_SCALE_ITEM(-600, 0, 0), | 181 | 0, 0, TLV_DB_SCALE_ITEM(-600, 0, 0), |
| 182 | 1, 3, TLV_DB_SCALE_ITEM(-350, 350, 0), | 182 | 1, 3, TLV_DB_SCALE_ITEM(-350, 350, 0), |
| 183 | 4, 6, TLV_DB_SCALE_ITEM(600, 600, 0), | 183 | 4, 6, TLV_DB_SCALE_ITEM(600, 600, 0), |
| 184 | }; | 184 | }; |
| 185 | static const unsigned int mix_tlv[] = { | 185 | static const unsigned int mix_tlv[] = { |
| 186 | TLV_DB_RANGE_HEAD(4), | 186 | TLV_DB_RANGE_HEAD(2), |
| 187 | 0, 2, TLV_DB_SCALE_ITEM(-1200, 300, 0), | 187 | 0, 2, TLV_DB_SCALE_ITEM(-1200, 300, 0), |
| 188 | 3, 3, TLV_DB_SCALE_ITEM(0, 0, 0), | 188 | 3, 3, TLV_DB_SCALE_ITEM(0, 0, 0), |
| 189 | }; | 189 | }; |
| 190 | static const DECLARE_TLV_DB_SCALE(out_tlv, -5700, 100, 0); | 190 | static const DECLARE_TLV_DB_SCALE(out_tlv, -5700, 100, 0); |
| 191 | static const unsigned int spkboost_tlv[] = { | 191 | static const unsigned int spkboost_tlv[] = { |
| 192 | TLV_DB_RANGE_HEAD(7), | 192 | TLV_DB_RANGE_HEAD(2), |
| 193 | 0, 6, TLV_DB_SCALE_ITEM(0, 150, 0), | 193 | 0, 6, TLV_DB_SCALE_ITEM(0, 150, 0), |
| 194 | 7, 7, TLV_DB_SCALE_ITEM(1200, 0, 0), | 194 | 7, 7, TLV_DB_SCALE_ITEM(1200, 0, 0), |
| 195 | }; | 195 | }; |
diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c index 84f33d4ea2cd..48e61e912400 100644 --- a/sound/soc/codecs/wm_hubs.c +++ b/sound/soc/codecs/wm_hubs.c | |||
| @@ -40,7 +40,7 @@ static const DECLARE_TLV_DB_SCALE(outmix_tlv, -2100, 300, 0); | |||
| 40 | static const DECLARE_TLV_DB_SCALE(spkmixout_tlv, -1800, 600, 1); | 40 | static const DECLARE_TLV_DB_SCALE(spkmixout_tlv, -1800, 600, 1); |
| 41 | static const DECLARE_TLV_DB_SCALE(outpga_tlv, -5700, 100, 0); | 41 | static const DECLARE_TLV_DB_SCALE(outpga_tlv, -5700, 100, 0); |
| 42 | static const unsigned int spkboost_tlv[] = { | 42 | static const unsigned int spkboost_tlv[] = { |
| 43 | TLV_DB_RANGE_HEAD(7), | 43 | TLV_DB_RANGE_HEAD(2), |
| 44 | 0, 6, TLV_DB_SCALE_ITEM(0, 150, 0), | 44 | 0, 6, TLV_DB_SCALE_ITEM(0, 150, 0), |
| 45 | 7, 7, TLV_DB_SCALE_ITEM(1200, 0, 0), | 45 | 7, 7, TLV_DB_SCALE_ITEM(1200, 0, 0), |
| 46 | }; | 46 | }; |
diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c index 0268cf989736..83c4bd5b2dd7 100644 --- a/sound/soc/fsl/fsl_ssi.c +++ b/sound/soc/fsl/fsl_ssi.c | |||
| @@ -694,6 +694,7 @@ static int __devinit fsl_ssi_probe(struct platform_device *pdev) | |||
| 694 | 694 | ||
| 695 | /* Initialize the the device_attribute structure */ | 695 | /* Initialize the the device_attribute structure */ |
| 696 | dev_attr = &ssi_private->dev_attr; | 696 | dev_attr = &ssi_private->dev_attr; |
| 697 | sysfs_attr_init(&dev_attr->attr); | ||
| 697 | dev_attr->attr.name = "statistics"; | 698 | dev_attr->attr.name = "statistics"; |
| 698 | dev_attr->attr.mode = S_IRUGO; | 699 | dev_attr->attr.mode = S_IRUGO; |
| 699 | dev_attr->show = fsl_sysfs_ssi_show; | 700 | dev_attr->show = fsl_sysfs_ssi_show; |
