diff options
| -rw-r--r-- | sound/soc/codecs/mc13783.c | 58 |
1 files changed, 52 insertions, 6 deletions
diff --git a/sound/soc/codecs/mc13783.c b/sound/soc/codecs/mc13783.c index 2b62737bf3d4..f5472adee674 100644 --- a/sound/soc/codecs/mc13783.c +++ b/sound/soc/codecs/mc13783.c | |||
| @@ -427,6 +427,29 @@ static const struct snd_kcontrol_new right_input_mux = | |||
| 427 | static const struct snd_kcontrol_new samp_ctl = | 427 | static const struct snd_kcontrol_new samp_ctl = |
| 428 | SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_RX0, 3, 1, 0); | 428 | SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_RX0, 3, 1, 0); |
| 429 | 429 | ||
| 430 | static const char * const speaker_amp_source_text[] = { | ||
| 431 | "CODEC", "Right" | ||
| 432 | }; | ||
| 433 | static const SOC_ENUM_SINGLE_DECL(speaker_amp_source, MC13783_AUDIO_RX0, 4, | ||
| 434 | speaker_amp_source_text); | ||
| 435 | static const struct snd_kcontrol_new speaker_amp_source_mux = | ||
| 436 | SOC_DAPM_ENUM("Speaker Amp Source MUX", speaker_amp_source); | ||
| 437 | |||
| 438 | static const char * const headset_amp_source_text[] = { | ||
| 439 | "CODEC", "Mixer" | ||
| 440 | }; | ||
| 441 | |||
| 442 | static const SOC_ENUM_SINGLE_DECL(headset_amp_source, MC13783_AUDIO_RX0, 11, | ||
| 443 | headset_amp_source_text); | ||
| 444 | static const struct snd_kcontrol_new headset_amp_source_mux = | ||
| 445 | SOC_DAPM_ENUM("Headset Amp Source MUX", headset_amp_source); | ||
| 446 | |||
| 447 | static const struct snd_kcontrol_new cdcout_ctl = | ||
| 448 | SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_RX0, 18, 1, 0); | ||
| 449 | |||
| 450 | static const struct snd_kcontrol_new adc_bypass_ctl = | ||
| 451 | SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_CODEC, 16, 1, 0); | ||
| 452 | |||
| 430 | static const struct snd_kcontrol_new lamp_ctl = | 453 | static const struct snd_kcontrol_new lamp_ctl = |
| 431 | SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_RX0, 5, 1, 0); | 454 | SOC_DAPM_SINGLE("Switch", MC13783_AUDIO_RX0, 5, 1, 0); |
| 432 | 455 | ||
| @@ -464,12 +487,22 @@ static const struct snd_soc_dapm_widget mc13783_dapm_widgets[] = { | |||
| 464 | SND_SOC_DAPM_VIRT_MUX("PGA Right Input Mux", SND_SOC_NOPM, 0, 0, | 487 | SND_SOC_DAPM_VIRT_MUX("PGA Right Input Mux", SND_SOC_NOPM, 0, 0, |
| 465 | &right_input_mux), | 488 | &right_input_mux), |
| 466 | 489 | ||
| 490 | SND_SOC_DAPM_MUX("Speaker Amp Source MUX", SND_SOC_NOPM, 0, 0, | ||
| 491 | &speaker_amp_source_mux), | ||
| 492 | |||
| 493 | SND_SOC_DAPM_MUX("Headset Amp Source MUX", SND_SOC_NOPM, 0, 0, | ||
| 494 | &headset_amp_source_mux), | ||
| 495 | |||
| 467 | SND_SOC_DAPM_PGA("PGA Left Input", SND_SOC_NOPM, 0, 0, NULL, 0), | 496 | SND_SOC_DAPM_PGA("PGA Left Input", SND_SOC_NOPM, 0, 0, NULL, 0), |
| 468 | SND_SOC_DAPM_PGA("PGA Right Input", SND_SOC_NOPM, 0, 0, NULL, 0), | 497 | SND_SOC_DAPM_PGA("PGA Right Input", SND_SOC_NOPM, 0, 0, NULL, 0), |
| 469 | 498 | ||
| 470 | SND_SOC_DAPM_ADC("ADC", "Capture", MC13783_AUDIO_CODEC, 11, 0), | 499 | SND_SOC_DAPM_ADC("ADC", "Capture", MC13783_AUDIO_CODEC, 11, 0), |
| 471 | SND_SOC_DAPM_SUPPLY("ADC_Reset", MC13783_AUDIO_CODEC, 15, 0, NULL, 0), | 500 | SND_SOC_DAPM_SUPPLY("ADC_Reset", MC13783_AUDIO_CODEC, 15, 0, NULL, 0), |
| 472 | 501 | ||
| 502 | SND_SOC_DAPM_PGA("Voice CODEC PGA", MC13783_AUDIO_RX1, 0, 0, NULL, 0), | ||
| 503 | SND_SOC_DAPM_SWITCH("Voice CODEC Bypass", MC13783_AUDIO_CODEC, 16, 0, | ||
| 504 | &adc_bypass_ctl), | ||
| 505 | |||
| 473 | /* Output */ | 506 | /* Output */ |
| 474 | SND_SOC_DAPM_SUPPLY("DAC_E", MC13783_AUDIO_DAC, 11, 0, NULL, 0), | 507 | SND_SOC_DAPM_SUPPLY("DAC_E", MC13783_AUDIO_DAC, 11, 0, NULL, 0), |
| 475 | SND_SOC_DAPM_SUPPLY("DAC_Reset", MC13783_AUDIO_DAC, 15, 0, NULL, 0), | 508 | SND_SOC_DAPM_SUPPLY("DAC_Reset", MC13783_AUDIO_DAC, 15, 0, NULL, 0), |
| @@ -477,10 +510,15 @@ static const struct snd_soc_dapm_widget mc13783_dapm_widgets[] = { | |||
| 477 | SND_SOC_DAPM_OUTPUT("RXOUTR"), | 510 | SND_SOC_DAPM_OUTPUT("RXOUTR"), |
| 478 | SND_SOC_DAPM_OUTPUT("HSL"), | 511 | SND_SOC_DAPM_OUTPUT("HSL"), |
| 479 | SND_SOC_DAPM_OUTPUT("HSR"), | 512 | SND_SOC_DAPM_OUTPUT("HSR"), |
| 513 | SND_SOC_DAPM_OUTPUT("LSPL"), | ||
| 480 | SND_SOC_DAPM_OUTPUT("LSP"), | 514 | SND_SOC_DAPM_OUTPUT("LSP"), |
| 481 | SND_SOC_DAPM_OUTPUT("SP"), | 515 | SND_SOC_DAPM_OUTPUT("SP"), |
| 516 | SND_SOC_DAPM_OUTPUT("CDCOUT"), | ||
| 482 | 517 | ||
| 483 | SND_SOC_DAPM_SWITCH("Speaker Amp", MC13783_AUDIO_RX0, 3, 0, &samp_ctl), | 518 | SND_SOC_DAPM_SWITCH("CDCOUT Switch", MC13783_AUDIO_RX0, 18, 0, |
| 519 | &cdcout_ctl), | ||
| 520 | SND_SOC_DAPM_SWITCH("Speaker Amp Switch", MC13783_AUDIO_RX0, 3, 0, | ||
| 521 | &samp_ctl), | ||
| 484 | SND_SOC_DAPM_SWITCH("Loudspeaker Amp", SND_SOC_NOPM, 0, 0, &lamp_ctl), | 522 | SND_SOC_DAPM_SWITCH("Loudspeaker Amp", SND_SOC_NOPM, 0, 0, &lamp_ctl), |
| 485 | SND_SOC_DAPM_SWITCH("Headset Amp Left", MC13783_AUDIO_RX0, 10, 0, | 523 | SND_SOC_DAPM_SWITCH("Headset Amp Left", MC13783_AUDIO_RX0, 10, 0, |
| 486 | &hlamp_ctl), | 524 | &hlamp_ctl), |
| @@ -515,20 +553,28 @@ static struct snd_soc_dapm_route mc13783_routes[] = { | |||
| 515 | { "ADC", NULL, "PGA Right Input"}, | 553 | { "ADC", NULL, "PGA Right Input"}, |
| 516 | { "ADC", NULL, "ADC_Reset"}, | 554 | { "ADC", NULL, "ADC_Reset"}, |
| 517 | 555 | ||
| 556 | { "Voice CODEC PGA", "Voice CODEC Bypass", "ADC" }, | ||
| 557 | |||
| 558 | { "Speaker Amp Source MUX", "CODEC", "Voice CODEC PGA"}, | ||
| 559 | { "Speaker Amp Source MUX", "Right", "DAC PGA"}, | ||
| 560 | |||
| 561 | { "Headset Amp Source MUX", "CODEC", "Voice CODEC PGA"}, | ||
| 562 | { "Headset Amp Source MUX", "Mixer", "DAC PGA"}, | ||
| 563 | |||
| 518 | /* Output */ | 564 | /* Output */ |
| 519 | { "HSL", NULL, "Headset Amp Left" }, | 565 | { "HSL", NULL, "Headset Amp Left" }, |
| 520 | { "HSR", NULL, "Headset Amp Right"}, | 566 | { "HSR", NULL, "Headset Amp Right"}, |
| 521 | { "RXOUTL", NULL, "Line out Amp Left"}, | 567 | { "RXOUTL", NULL, "Line out Amp Left"}, |
| 522 | { "RXOUTR", NULL, "Line out Amp Right"}, | 568 | { "RXOUTR", NULL, "Line out Amp Right"}, |
| 523 | { "SP", NULL, "Speaker Amp"}, | 569 | { "SP", "Speaker Amp Switch", "Speaker Amp Source MUX"}, |
| 524 | { "Speaker Amp", NULL, "DAC PGA"}, | 570 | { "LSP", "Loudspeaker Amp", "Speaker Amp Source MUX"}, |
| 525 | { "LSP", NULL, "DAC PGA"}, | 571 | { "HSL", "Headset Amp Left", "Headset Amp Source MUX"}, |
| 526 | { "Headset Amp Left", NULL, "DAC PGA"}, | 572 | { "HSR", "Headset Amp Right", "Headset Amp Source MUX"}, |
| 527 | { "Headset Amp Right", NULL, "DAC PGA"}, | ||
| 528 | { "Line out Amp Left", NULL, "DAC PGA"}, | 573 | { "Line out Amp Left", NULL, "DAC PGA"}, |
| 529 | { "Line out Amp Right", NULL, "DAC PGA"}, | 574 | { "Line out Amp Right", NULL, "DAC PGA"}, |
| 530 | { "DAC PGA", NULL, "DAC"}, | 575 | { "DAC PGA", NULL, "DAC"}, |
| 531 | { "DAC", NULL, "DAC_E"}, | 576 | { "DAC", NULL, "DAC_E"}, |
| 577 | { "CDCOUT", "CDCOUT Switch", "Voice CODEC PGA"}, | ||
| 532 | }; | 578 | }; |
| 533 | 579 | ||
| 534 | static const char * const mc13783_3d_mixer[] = {"Stereo", "Phase Mix", | 580 | static const char * const mc13783_3d_mixer[] = {"Stereo", "Phase Mix", |
