wm8737.c (ab303e4a17f07d6ebbf6f1528f89e3c1c248a4e6) | wm8737.c (14ba3ec1de043260cecd9e828ea2e3a0ad302893) |
---|---|
1/* 2 * wm8737.c -- WM8737 ALSA SoC Audio driver 3 * 4 * Copyright 2010 Wolfson Microelectronics plc 5 * 6 * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> 7 * 8 * This program is free software; you can redistribute it and/or modify --- 469 unchanged lines hidden (view full) --- 478 ret); 479 return ret; 480 } 481 482 regcache_sync(wm8737->regmap); 483 484 /* Fast VMID ramp at 2*2.5k */ 485 snd_soc_update_bits(codec, WM8737_MISC_BIAS_CONTROL, | 1/* 2 * wm8737.c -- WM8737 ALSA SoC Audio driver 3 * 4 * Copyright 2010 Wolfson Microelectronics plc 5 * 6 * Author: Mark Brown <broonie@opensource.wolfsonmicro.com> 7 * 8 * This program is free software; you can redistribute it and/or modify --- 469 unchanged lines hidden (view full) --- 478 ret); 479 return ret; 480 } 481 482 regcache_sync(wm8737->regmap); 483 484 /* Fast VMID ramp at 2*2.5k */ 485 snd_soc_update_bits(codec, WM8737_MISC_BIAS_CONTROL, |
486 WM8737_VMIDSEL_MASK, 0x4); | 486 WM8737_VMIDSEL_MASK, 487 2 << WM8737_VMIDSEL_SHIFT); |
487 488 /* Bring VMID up */ 489 snd_soc_update_bits(codec, WM8737_POWER_MANAGEMENT, 490 WM8737_VMID_MASK | 491 WM8737_VREF_MASK, 492 WM8737_VMID_MASK | 493 WM8737_VREF_MASK); 494 495 msleep(500); 496 } 497 498 /* VMID at 2*300k */ 499 snd_soc_update_bits(codec, WM8737_MISC_BIAS_CONTROL, | 488 489 /* Bring VMID up */ 490 snd_soc_update_bits(codec, WM8737_POWER_MANAGEMENT, 491 WM8737_VMID_MASK | 492 WM8737_VREF_MASK, 493 WM8737_VMID_MASK | 494 WM8737_VREF_MASK); 495 496 msleep(500); 497 } 498 499 /* VMID at 2*300k */ 500 snd_soc_update_bits(codec, WM8737_MISC_BIAS_CONTROL, |
500 WM8737_VMIDSEL_MASK, 2); | 501 WM8737_VMIDSEL_MASK, 502 1 << WM8737_VMIDSEL_SHIFT); |
501 502 break; 503 504 case SND_SOC_BIAS_OFF: 505 snd_soc_update_bits(codec, WM8737_POWER_MANAGEMENT, 506 WM8737_VMID_MASK | WM8737_VREF_MASK, 0); 507 508 regulator_bulk_disable(ARRAY_SIZE(wm8737->supplies), 509 wm8737->supplies); 510 break; 511 } 512 | 503 504 break; 505 506 case SND_SOC_BIAS_OFF: 507 snd_soc_update_bits(codec, WM8737_POWER_MANAGEMENT, 508 WM8737_VMID_MASK | WM8737_VREF_MASK, 0); 509 510 regulator_bulk_disable(ARRAY_SIZE(wm8737->supplies), 511 wm8737->supplies); 512 break; 513 } 514 |
515 codec->dapm.bias_level = level; |
|
513 return 0; 514} 515 516#define WM8737_RATES SNDRV_PCM_RATE_8000_96000 517 518#define WM8737_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\ 519 SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE) 520 --- 33 unchanged lines hidden (view full) --- 554 goto err_enable; 555 } 556 557 snd_soc_update_bits(codec, WM8737_LEFT_PGA_VOLUME, WM8737_LVU, 558 WM8737_LVU); 559 snd_soc_update_bits(codec, WM8737_RIGHT_PGA_VOLUME, WM8737_RVU, 560 WM8737_RVU); 561 | 516 return 0; 517} 518 519#define WM8737_RATES SNDRV_PCM_RATE_8000_96000 520 521#define WM8737_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE |\ 522 SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32_LE) 523 --- 33 unchanged lines hidden (view full) --- 557 goto err_enable; 558 } 559 560 snd_soc_update_bits(codec, WM8737_LEFT_PGA_VOLUME, WM8737_LVU, 561 WM8737_LVU); 562 snd_soc_update_bits(codec, WM8737_RIGHT_PGA_VOLUME, WM8737_RVU, 563 WM8737_RVU); 564 |
562 snd_soc_codec_force_bias_level(codec, SND_SOC_BIAS_STANDBY); | 565 wm8737_set_bias_level(codec, SND_SOC_BIAS_STANDBY); |
563 564 /* Bias level configuration will have done an extra enable */ 565 regulator_bulk_disable(ARRAY_SIZE(wm8737->supplies), wm8737->supplies); 566 567 return 0; 568 569err_enable: 570 regulator_bulk_disable(ARRAY_SIZE(wm8737->supplies), wm8737->supplies); --- 182 unchanged lines hidden --- | 566 567 /* Bias level configuration will have done an extra enable */ 568 regulator_bulk_disable(ARRAY_SIZE(wm8737->supplies), wm8737->supplies); 569 570 return 0; 571 572err_enable: 573 regulator_bulk_disable(ARRAY_SIZE(wm8737->supplies), wm8737->supplies); --- 182 unchanged lines hidden --- |