diff options
Diffstat (limited to 'sound/soc/codecs/wm_hubs.c')
-rw-r--r-- | sound/soc/codecs/wm_hubs.c | 51 |
1 files changed, 43 insertions, 8 deletions
diff --git a/sound/soc/codecs/wm_hubs.c b/sound/soc/codecs/wm_hubs.c index e542027eea89..d73c30536a2c 100644 --- a/sound/soc/codecs/wm_hubs.c +++ b/sound/soc/codecs/wm_hubs.c | |||
@@ -438,11 +438,11 @@ static const struct snd_soc_dapm_widget analogue_dapm_widgets[] = { | |||
438 | SND_SOC_DAPM_INPUT("IN1LN"), | 438 | SND_SOC_DAPM_INPUT("IN1LN"), |
439 | SND_SOC_DAPM_INPUT("IN1LP"), | 439 | SND_SOC_DAPM_INPUT("IN1LP"), |
440 | SND_SOC_DAPM_INPUT("IN2LN"), | 440 | SND_SOC_DAPM_INPUT("IN2LN"), |
441 | SND_SOC_DAPM_INPUT("IN2LP/VXRN"), | 441 | SND_SOC_DAPM_INPUT("IN2LP:VXRN"), |
442 | SND_SOC_DAPM_INPUT("IN1RN"), | 442 | SND_SOC_DAPM_INPUT("IN1RN"), |
443 | SND_SOC_DAPM_INPUT("IN1RP"), | 443 | SND_SOC_DAPM_INPUT("IN1RP"), |
444 | SND_SOC_DAPM_INPUT("IN2RN"), | 444 | SND_SOC_DAPM_INPUT("IN2RN"), |
445 | SND_SOC_DAPM_INPUT("IN2RP/VXRP"), | 445 | SND_SOC_DAPM_INPUT("IN2RP:VXRP"), |
446 | 446 | ||
447 | SND_SOC_DAPM_MICBIAS("MICBIAS2", WM8993_POWER_MANAGEMENT_1, 5, 0), | 447 | SND_SOC_DAPM_MICBIAS("MICBIAS2", WM8993_POWER_MANAGEMENT_1, 5, 0), |
448 | SND_SOC_DAPM_MICBIAS("MICBIAS1", WM8993_POWER_MANAGEMENT_1, 4, 0), | 448 | SND_SOC_DAPM_MICBIAS("MICBIAS1", WM8993_POWER_MANAGEMENT_1, 4, 0), |
@@ -537,14 +537,14 @@ static const struct snd_soc_dapm_route analogue_routes[] = { | |||
537 | { "IN1R PGA", "IN1RP Switch", "IN1RP" }, | 537 | { "IN1R PGA", "IN1RP Switch", "IN1RP" }, |
538 | { "IN1R PGA", "IN1RN Switch", "IN1RN" }, | 538 | { "IN1R PGA", "IN1RN Switch", "IN1RN" }, |
539 | 539 | ||
540 | { "IN2L PGA", "IN2LP Switch", "IN2LP/VXRN" }, | 540 | { "IN2L PGA", "IN2LP Switch", "IN2LP:VXRN" }, |
541 | { "IN2L PGA", "IN2LN Switch", "IN2LN" }, | 541 | { "IN2L PGA", "IN2LN Switch", "IN2LN" }, |
542 | 542 | ||
543 | { "IN2R PGA", "IN2RP Switch", "IN2RP/VXRP" }, | 543 | { "IN2R PGA", "IN2RP Switch", "IN2RP:VXRP" }, |
544 | { "IN2R PGA", "IN2RN Switch", "IN2RN" }, | 544 | { "IN2R PGA", "IN2RN Switch", "IN2RN" }, |
545 | 545 | ||
546 | { "Direct Voice", NULL, "IN2LP/VXRN" }, | 546 | { "Direct Voice", NULL, "IN2LP:VXRN" }, |
547 | { "Direct Voice", NULL, "IN2RP/VXRP" }, | 547 | { "Direct Voice", NULL, "IN2RP:VXRP" }, |
548 | 548 | ||
549 | { "MIXINL", "IN1L Switch", "IN1L PGA" }, | 549 | { "MIXINL", "IN1L Switch", "IN1L PGA" }, |
550 | { "MIXINL", "IN2L Switch", "IN2L PGA" }, | 550 | { "MIXINL", "IN2L Switch", "IN2L PGA" }, |
@@ -565,7 +565,7 @@ static const struct snd_soc_dapm_route analogue_routes[] = { | |||
565 | { "Left Output Mixer", "Right Input Switch", "MIXINR" }, | 565 | { "Left Output Mixer", "Right Input Switch", "MIXINR" }, |
566 | { "Left Output Mixer", "IN2RN Switch", "IN2RN" }, | 566 | { "Left Output Mixer", "IN2RN Switch", "IN2RN" }, |
567 | { "Left Output Mixer", "IN2LN Switch", "IN2LN" }, | 567 | { "Left Output Mixer", "IN2LN Switch", "IN2LN" }, |
568 | { "Left Output Mixer", "IN2LP Switch", "IN2LP/VXRN" }, | 568 | { "Left Output Mixer", "IN2LP Switch", "IN2LP:VXRN" }, |
569 | { "Left Output Mixer", "IN1L Switch", "IN1L PGA" }, | 569 | { "Left Output Mixer", "IN1L Switch", "IN1L PGA" }, |
570 | { "Left Output Mixer", "IN1R Switch", "IN1R PGA" }, | 570 | { "Left Output Mixer", "IN1R Switch", "IN1R PGA" }, |
571 | 571 | ||
@@ -573,7 +573,7 @@ static const struct snd_soc_dapm_route analogue_routes[] = { | |||
573 | { "Right Output Mixer", "Right Input Switch", "MIXINR" }, | 573 | { "Right Output Mixer", "Right Input Switch", "MIXINR" }, |
574 | { "Right Output Mixer", "IN2LN Switch", "IN2LN" }, | 574 | { "Right Output Mixer", "IN2LN Switch", "IN2LN" }, |
575 | { "Right Output Mixer", "IN2RN Switch", "IN2RN" }, | 575 | { "Right Output Mixer", "IN2RN Switch", "IN2RN" }, |
576 | { "Right Output Mixer", "IN2RP Switch", "IN2RP/VXRP" }, | 576 | { "Right Output Mixer", "IN2RP Switch", "IN2RP:VXRP" }, |
577 | { "Right Output Mixer", "IN1L Switch", "IN1L PGA" }, | 577 | { "Right Output Mixer", "IN1L Switch", "IN1L PGA" }, |
578 | { "Right Output Mixer", "IN1R Switch", "IN1R PGA" }, | 578 | { "Right Output Mixer", "IN1R Switch", "IN1R PGA" }, |
579 | 579 | ||
@@ -738,6 +738,41 @@ int wm_hubs_add_analogue_routes(struct snd_soc_codec *codec, | |||
738 | } | 738 | } |
739 | EXPORT_SYMBOL_GPL(wm_hubs_add_analogue_routes); | 739 | EXPORT_SYMBOL_GPL(wm_hubs_add_analogue_routes); |
740 | 740 | ||
741 | int wm_hubs_handle_analogue_pdata(struct snd_soc_codec *codec, | ||
742 | int lineout1_diff, int lineout2_diff, | ||
743 | int lineout1fb, int lineout2fb, | ||
744 | int jd_scthr, int jd_thr, int micbias1_lvl, | ||
745 | int micbias2_lvl) | ||
746 | { | ||
747 | if (!lineout1_diff) | ||
748 | snd_soc_update_bits(codec, WM8993_LINE_MIXER1, | ||
749 | WM8993_LINEOUT1_MODE, | ||
750 | WM8993_LINEOUT1_MODE); | ||
751 | if (!lineout2_diff) | ||
752 | snd_soc_update_bits(codec, WM8993_LINE_MIXER2, | ||
753 | WM8993_LINEOUT2_MODE, | ||
754 | WM8993_LINEOUT2_MODE); | ||
755 | |||
756 | if (lineout1fb) | ||
757 | snd_soc_update_bits(codec, WM8993_ADDITIONAL_CONTROL, | ||
758 | WM8993_LINEOUT1_FB, WM8993_LINEOUT1_FB); | ||
759 | |||
760 | if (lineout2fb) | ||
761 | snd_soc_update_bits(codec, WM8993_ADDITIONAL_CONTROL, | ||
762 | WM8993_LINEOUT2_FB, WM8993_LINEOUT2_FB); | ||
763 | |||
764 | snd_soc_update_bits(codec, WM8993_MICBIAS, | ||
765 | WM8993_JD_SCTHR_MASK | WM8993_JD_THR_MASK | | ||
766 | WM8993_MICB1_LVL | WM8993_MICB2_LVL, | ||
767 | jd_scthr << WM8993_JD_SCTHR_SHIFT | | ||
768 | jd_thr << WM8993_JD_THR_SHIFT | | ||
769 | micbias1_lvl | | ||
770 | micbias2_lvl << WM8993_MICB2_LVL_SHIFT); | ||
771 | |||
772 | return 0; | ||
773 | } | ||
774 | EXPORT_SYMBOL_GPL(wm_hubs_handle_analogue_pdata); | ||
775 | |||
741 | MODULE_DESCRIPTION("Shared support for Wolfson hubs products"); | 776 | MODULE_DESCRIPTION("Shared support for Wolfson hubs products"); |
742 | MODULE_AUTHOR("Mark Brown <broonie@opensource.wolfsonmicro.com>"); | 777 | MODULE_AUTHOR("Mark Brown <broonie@opensource.wolfsonmicro.com>"); |
743 | MODULE_LICENSE("GPL"); | 778 | MODULE_LICENSE("GPL"); |