diff options
| author | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2013-03-25 11:50:22 -0400 |
|---|---|---|
| committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2013-03-27 11:40:04 -0400 |
| commit | 658e6101d045ae0bc97d31f5d6a5ea117a86c92a (patch) | |
| tree | 5a7a0c3ca639bd5837980d31a1ba4f5cde4ed11b | |
| parent | 1a2c7d568f624307c5821f31e54727a4b374855c (diff) | |
ASoC: wm5102: Implement OSR support
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
| -rw-r--r-- | sound/soc/codecs/wm5102.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/sound/soc/codecs/wm5102.c b/sound/soc/codecs/wm5102.c index b7a3fdceec7f..a1ff43c8b479 100644 --- a/sound/soc/codecs/wm5102.c +++ b/sound/soc/codecs/wm5102.c | |||
| @@ -612,6 +612,26 @@ static int wm5102_sysclk_ev(struct snd_soc_dapm_widget *w, | |||
| 612 | return 0; | 612 | return 0; |
| 613 | } | 613 | } |
| 614 | 614 | ||
| 615 | static const char *wm5102_osr_text[] = { | ||
| 616 | "Low power", "Normal", "High performance", | ||
| 617 | }; | ||
| 618 | |||
| 619 | static const unsigned int wm5102_osr_val[] = { | ||
| 620 | 0x0, 0x3, 0x5, | ||
| 621 | }; | ||
| 622 | |||
| 623 | static const struct soc_enum wm5102_hpout_osr[] = { | ||
| 624 | SOC_VALUE_ENUM_SINGLE(ARIZONA_OUTPUT_PATH_CONFIG_1L, | ||
| 625 | ARIZONA_OUT1_OSR_SHIFT, 0x7, 3, | ||
| 626 | wm5102_osr_text, wm5102_osr_val), | ||
| 627 | SOC_VALUE_ENUM_SINGLE(ARIZONA_OUTPUT_PATH_CONFIG_2L, | ||
| 628 | ARIZONA_OUT2_OSR_SHIFT, 0x7, 3, | ||
| 629 | wm5102_osr_text, wm5102_osr_val), | ||
| 630 | SOC_VALUE_ENUM_SINGLE(ARIZONA_OUTPUT_PATH_CONFIG_3L, | ||
| 631 | ARIZONA_OUT3_OSR_SHIFT, 0x7, 3, | ||
| 632 | wm5102_osr_text, wm5102_osr_val), | ||
| 633 | }; | ||
| 634 | |||
| 615 | #define WM5102_NG_SRC(name, base) \ | 635 | #define WM5102_NG_SRC(name, base) \ |
| 616 | SOC_SINGLE(name " NG HPOUT1L Switch", base, 0, 1, 0), \ | 636 | SOC_SINGLE(name " NG HPOUT1L Switch", base, 0, 1, 0), \ |
| 617 | SOC_SINGLE(name " NG HPOUT1R Switch", base, 1, 1, 0), \ | 637 | SOC_SINGLE(name " NG HPOUT1R Switch", base, 1, 1, 0), \ |
| @@ -761,6 +781,8 @@ ARIZONA_MIXER_CONTROLS("SPKOUTR", ARIZONA_OUT4RMIX_INPUT_1_SOURCE), | |||
| 761 | ARIZONA_MIXER_CONTROLS("SPKDAT1L", ARIZONA_OUT5LMIX_INPUT_1_SOURCE), | 781 | ARIZONA_MIXER_CONTROLS("SPKDAT1L", ARIZONA_OUT5LMIX_INPUT_1_SOURCE), |
| 762 | ARIZONA_MIXER_CONTROLS("SPKDAT1R", ARIZONA_OUT5RMIX_INPUT_1_SOURCE), | 782 | ARIZONA_MIXER_CONTROLS("SPKDAT1R", ARIZONA_OUT5RMIX_INPUT_1_SOURCE), |
| 763 | 783 | ||
| 784 | SOC_SINGLE("Speaker High Performance Switch", ARIZONA_OUTPUT_PATH_CONFIG_4L, | ||
| 785 | ARIZONA_OUT4_OSR_SHIFT, 1, 0), | ||
| 764 | SOC_SINGLE("SPKDAT1 High Performance Switch", ARIZONA_OUTPUT_PATH_CONFIG_5L, | 786 | SOC_SINGLE("SPKDAT1 High Performance Switch", ARIZONA_OUTPUT_PATH_CONFIG_5L, |
| 765 | ARIZONA_OUT5_OSR_SHIFT, 1, 0), | 787 | ARIZONA_OUT5_OSR_SHIFT, 1, 0), |
| 766 | 788 | ||
| @@ -790,6 +812,10 @@ SOC_DOUBLE_R_TLV("SPKDAT1 Digital Volume", ARIZONA_DAC_DIGITAL_VOLUME_5L, | |||
| 790 | ARIZONA_DAC_DIGITAL_VOLUME_5R, ARIZONA_OUT5L_VOL_SHIFT, | 812 | ARIZONA_DAC_DIGITAL_VOLUME_5R, ARIZONA_OUT5L_VOL_SHIFT, |
| 791 | 0xbf, 0, digital_tlv), | 813 | 0xbf, 0, digital_tlv), |
| 792 | 814 | ||
| 815 | SOC_VALUE_ENUM("HPOUT1 OSR", wm5102_hpout_osr[0]), | ||
| 816 | SOC_VALUE_ENUM("HPOUT2 OSR", wm5102_hpout_osr[1]), | ||
| 817 | SOC_VALUE_ENUM("HPOUT3 OSR", wm5102_hpout_osr[2]), | ||
| 818 | |||
| 793 | SOC_ENUM("Output Ramp Up", arizona_out_vi_ramp), | 819 | SOC_ENUM("Output Ramp Up", arizona_out_vi_ramp), |
| 794 | SOC_ENUM("Output Ramp Down", arizona_out_vd_ramp), | 820 | SOC_ENUM("Output Ramp Down", arizona_out_vd_ramp), |
| 795 | 821 | ||
