awacs.c (75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37) | awacs.c (c031b0cc77a1bef980eb360e317a6bbd54211326) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * PMac AWACS lowlevel functions 4 * 5 * Copyright (c) by Takashi Iwai <tiwai@suse.de> 6 * code based on dmasound.c. 7 */ 8 --- 450 unchanged lines hidden (view full) --- 459 return 1; 460 } 461 return 0; 462} 463 464#define AMP_CH_SPK 0 465#define AMP_CH_HD 1 466 | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * PMac AWACS lowlevel functions 4 * 5 * Copyright (c) by Takashi Iwai <tiwai@suse.de> 6 * code based on dmasound.c. 7 */ 8 --- 450 unchanged lines hidden (view full) --- 459 return 1; 460 } 461 return 0; 462} 463 464#define AMP_CH_SPK 0 465#define AMP_CH_HD 1 466 |
467static struct snd_kcontrol_new snd_pmac_awacs_amp_vol[] = { | 467static const struct snd_kcontrol_new snd_pmac_awacs_amp_vol[] = { |
468 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 469 .name = "Speaker Playback Volume", 470 .info = snd_pmac_awacs_info_volume_amp, 471 .get = snd_pmac_awacs_get_volume_amp, 472 .put = snd_pmac_awacs_put_volume_amp, 473 .private_value = AMP_CH_SPK, 474 }, 475 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, --- 101 unchanged lines hidden (view full) --- 577 } 578 spin_unlock_irqrestore(&chip->reg_lock, flags); 579 return changed; 580} 581 582/* 583 * lists of mixer elements 584 */ | 468 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 469 .name = "Speaker Playback Volume", 470 .info = snd_pmac_awacs_info_volume_amp, 471 .get = snd_pmac_awacs_get_volume_amp, 472 .put = snd_pmac_awacs_put_volume_amp, 473 .private_value = AMP_CH_SPK, 474 }, 475 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, --- 101 unchanged lines hidden (view full) --- 577 } 578 spin_unlock_irqrestore(&chip->reg_lock, flags); 579 return changed; 580} 581 582/* 583 * lists of mixer elements 584 */ |
585static struct snd_kcontrol_new snd_pmac_awacs_mixers[] = { | 585static const struct snd_kcontrol_new snd_pmac_awacs_mixers[] = { |
586 AWACS_SWITCH("Master Capture Switch", 1, SHIFT_LOOPTHRU, 0), 587 AWACS_VOLUME("Master Capture Volume", 0, 4, 0), 588/* AWACS_SWITCH("Unknown Playback Switch", 6, SHIFT_PAROUT0, 0), */ 589}; 590 | 586 AWACS_SWITCH("Master Capture Switch", 1, SHIFT_LOOPTHRU, 0), 587 AWACS_VOLUME("Master Capture Volume", 0, 4, 0), 588/* AWACS_SWITCH("Unknown Playback Switch", 6, SHIFT_PAROUT0, 0), */ 589}; 590 |
591static struct snd_kcontrol_new snd_pmac_screamer_mixers_beige[] = { | 591static const struct snd_kcontrol_new snd_pmac_screamer_mixers_beige[] = { |
592 AWACS_VOLUME("Master Playback Volume", 2, 6, 1), 593 AWACS_VOLUME("Play-through Playback Volume", 5, 6, 1), 594 AWACS_SWITCH("Line Capture Switch", 0, SHIFT_MUX_MIC, 0), 595 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_LINE, 0), 596}; 597 | 592 AWACS_VOLUME("Master Playback Volume", 2, 6, 1), 593 AWACS_VOLUME("Play-through Playback Volume", 5, 6, 1), 594 AWACS_SWITCH("Line Capture Switch", 0, SHIFT_MUX_MIC, 0), 595 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_LINE, 0), 596}; 597 |
598static struct snd_kcontrol_new snd_pmac_screamer_mixers_lo[] = { | 598static const struct snd_kcontrol_new snd_pmac_screamer_mixers_lo[] = { |
599 AWACS_VOLUME("Line out Playback Volume", 2, 6, 1), 600}; 601 | 599 AWACS_VOLUME("Line out Playback Volume", 2, 6, 1), 600}; 601 |
602static struct snd_kcontrol_new snd_pmac_screamer_mixers_imac[] = { | 602static const struct snd_kcontrol_new snd_pmac_screamer_mixers_imac[] = { |
603 AWACS_VOLUME("Play-through Playback Volume", 5, 6, 1), 604 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), 605}; 606 | 603 AWACS_VOLUME("Play-through Playback Volume", 5, 6, 1), 604 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), 605}; 606 |
607static struct snd_kcontrol_new snd_pmac_screamer_mixers_g4agp[] = { | 607static const struct snd_kcontrol_new snd_pmac_screamer_mixers_g4agp[] = { |
608 AWACS_VOLUME("Line out Playback Volume", 2, 6, 1), 609 AWACS_VOLUME("Master Playback Volume", 5, 6, 1), 610 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), 611 AWACS_SWITCH("Line Capture Switch", 0, SHIFT_MUX_MIC, 0), 612}; 613 | 608 AWACS_VOLUME("Line out Playback Volume", 2, 6, 1), 609 AWACS_VOLUME("Master Playback Volume", 5, 6, 1), 610 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), 611 AWACS_SWITCH("Line Capture Switch", 0, SHIFT_MUX_MIC, 0), 612}; 613 |
614static struct snd_kcontrol_new snd_pmac_awacs_mixers_pmac7500[] = { | 614static const struct snd_kcontrol_new snd_pmac_awacs_mixers_pmac7500[] = { |
615 AWACS_VOLUME("Line out Playback Volume", 2, 6, 1), 616 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), 617 AWACS_SWITCH("Line Capture Switch", 0, SHIFT_MUX_MIC, 0), 618}; 619 | 615 AWACS_VOLUME("Line out Playback Volume", 2, 6, 1), 616 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), 617 AWACS_SWITCH("Line Capture Switch", 0, SHIFT_MUX_MIC, 0), 618}; 619 |
620static struct snd_kcontrol_new snd_pmac_awacs_mixers_pmac5500[] = { | 620static const struct snd_kcontrol_new snd_pmac_awacs_mixers_pmac5500[] = { |
621 AWACS_VOLUME("Headphone Playback Volume", 2, 6, 1), 622}; 623 | 621 AWACS_VOLUME("Headphone Playback Volume", 2, 6, 1), 622}; 623 |
624static struct snd_kcontrol_new snd_pmac_awacs_mixers_pmac[] = { | 624static const struct snd_kcontrol_new snd_pmac_awacs_mixers_pmac[] = { |
625 AWACS_VOLUME("Master Playback Volume", 2, 6, 1), 626 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), 627}; 628 629/* FIXME: is this correct order? 630 * screamer (powerbook G3 pismo) seems to have different bits... 631 */ | 625 AWACS_VOLUME("Master Playback Volume", 2, 6, 1), 626 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), 627}; 628 629/* FIXME: is this correct order? 630 * screamer (powerbook G3 pismo) seems to have different bits... 631 */ |
632static struct snd_kcontrol_new snd_pmac_awacs_mixers2[] = { | 632static const struct snd_kcontrol_new snd_pmac_awacs_mixers2[] = { |
633 AWACS_SWITCH("Line Capture Switch", 0, SHIFT_MUX_LINE, 0), 634 AWACS_SWITCH("Mic Capture Switch", 0, SHIFT_MUX_MIC, 0), 635}; 636 | 633 AWACS_SWITCH("Line Capture Switch", 0, SHIFT_MUX_LINE, 0), 634 AWACS_SWITCH("Mic Capture Switch", 0, SHIFT_MUX_MIC, 0), 635}; 636 |
637static struct snd_kcontrol_new snd_pmac_screamer_mixers2[] = { | 637static const struct snd_kcontrol_new snd_pmac_screamer_mixers2[] = { |
638 AWACS_SWITCH("Line Capture Switch", 0, SHIFT_MUX_MIC, 0), 639 AWACS_SWITCH("Mic Capture Switch", 0, SHIFT_MUX_LINE, 0), 640}; 641 | 638 AWACS_SWITCH("Line Capture Switch", 0, SHIFT_MUX_MIC, 0), 639 AWACS_SWITCH("Mic Capture Switch", 0, SHIFT_MUX_LINE, 0), 640}; 641 |
642static struct snd_kcontrol_new snd_pmac_awacs_mixers2_pmac5500[] = { | 642static const struct snd_kcontrol_new snd_pmac_awacs_mixers2_pmac5500[] = { |
643 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), 644}; 645 | 643 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), 644}; 645 |
646static struct snd_kcontrol_new snd_pmac_awacs_master_sw = | 646static const struct snd_kcontrol_new snd_pmac_awacs_master_sw = |
647AWACS_SWITCH("Master Playback Switch", 1, SHIFT_HDMUTE, 1); 648 | 647AWACS_SWITCH("Master Playback Switch", 1, SHIFT_HDMUTE, 1); 648 |
649static struct snd_kcontrol_new snd_pmac_awacs_master_sw_imac = | 649static const struct snd_kcontrol_new snd_pmac_awacs_master_sw_imac = |
650AWACS_SWITCH("Line out Playback Switch", 1, SHIFT_HDMUTE, 1); 651 | 650AWACS_SWITCH("Line out Playback Switch", 1, SHIFT_HDMUTE, 1); 651 |
652static struct snd_kcontrol_new snd_pmac_awacs_master_sw_pmac5500 = | 652static const struct snd_kcontrol_new snd_pmac_awacs_master_sw_pmac5500 = |
653AWACS_SWITCH("Headphone Playback Switch", 1, SHIFT_HDMUTE, 1); 654 | 653AWACS_SWITCH("Headphone Playback Switch", 1, SHIFT_HDMUTE, 1); 654 |
655static struct snd_kcontrol_new snd_pmac_awacs_mic_boost[] = { | 655static const struct snd_kcontrol_new snd_pmac_awacs_mic_boost[] = { |
656 AWACS_SWITCH("Mic Boost Capture Switch", 0, SHIFT_GAINLINE, 0), 657}; 658 | 656 AWACS_SWITCH("Mic Boost Capture Switch", 0, SHIFT_GAINLINE, 0), 657}; 658 |
659static struct snd_kcontrol_new snd_pmac_screamer_mic_boost[] = { | 659static const struct snd_kcontrol_new snd_pmac_screamer_mic_boost[] = { |
660 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 661 .name = "Mic Boost Capture Volume", 662 .info = snd_pmac_screamer_mic_boost_info, 663 .get = snd_pmac_screamer_mic_boost_get, 664 .put = snd_pmac_screamer_mic_boost_put, 665 }, 666}; 667 | 660 { .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 661 .name = "Mic Boost Capture Volume", 662 .info = snd_pmac_screamer_mic_boost_info, 663 .get = snd_pmac_screamer_mic_boost_get, 664 .put = snd_pmac_screamer_mic_boost_put, 665 }, 666}; 667 |
668static struct snd_kcontrol_new snd_pmac_awacs_mic_boost_pmac7500[] = | 668static const struct snd_kcontrol_new snd_pmac_awacs_mic_boost_pmac7500[] = |
669{ 670 AWACS_SWITCH("Line Boost Capture Switch", 0, SHIFT_GAINLINE, 0), 671}; 672 | 669{ 670 AWACS_SWITCH("Line Boost Capture Switch", 0, SHIFT_GAINLINE, 0), 671}; 672 |
673static struct snd_kcontrol_new snd_pmac_screamer_mic_boost_beige[] = | 673static const struct snd_kcontrol_new snd_pmac_screamer_mic_boost_beige[] = |
674{ 675 AWACS_SWITCH("Line Boost Capture Switch", 0, SHIFT_GAINLINE, 0), 676 AWACS_SWITCH("CD Boost Capture Switch", 6, SHIFT_MIC_BOOST, 0), 677}; 678 | 674{ 675 AWACS_SWITCH("Line Boost Capture Switch", 0, SHIFT_GAINLINE, 0), 676 AWACS_SWITCH("CD Boost Capture Switch", 6, SHIFT_MIC_BOOST, 0), 677}; 678 |
679static struct snd_kcontrol_new snd_pmac_screamer_mic_boost_imac[] = | 679static const struct snd_kcontrol_new snd_pmac_screamer_mic_boost_imac[] = |
680{ 681 AWACS_SWITCH("Line Boost Capture Switch", 0, SHIFT_GAINLINE, 0), 682 AWACS_SWITCH("Mic Boost Capture Switch", 6, SHIFT_MIC_BOOST, 0), 683}; 684 | 680{ 681 AWACS_SWITCH("Line Boost Capture Switch", 0, SHIFT_GAINLINE, 0), 682 AWACS_SWITCH("Mic Boost Capture Switch", 6, SHIFT_MIC_BOOST, 0), 683}; 684 |
685static struct snd_kcontrol_new snd_pmac_awacs_speaker_vol[] = { | 685static const struct snd_kcontrol_new snd_pmac_awacs_speaker_vol[] = { |
686 AWACS_VOLUME("Speaker Playback Volume", 4, 6, 1), 687}; 688 | 686 AWACS_VOLUME("Speaker Playback Volume", 4, 6, 1), 687}; 688 |
689static struct snd_kcontrol_new snd_pmac_awacs_speaker_sw = | 689static const struct snd_kcontrol_new snd_pmac_awacs_speaker_sw = |
690AWACS_SWITCH("Speaker Playback Switch", 1, SHIFT_SPKMUTE, 1); 691 | 690AWACS_SWITCH("Speaker Playback Switch", 1, SHIFT_SPKMUTE, 1); 691 |
692static struct snd_kcontrol_new snd_pmac_awacs_speaker_sw_imac1 = | 692static const struct snd_kcontrol_new snd_pmac_awacs_speaker_sw_imac1 = |
693AWACS_SWITCH("Speaker Playback Switch", 1, SHIFT_PAROUT1, 1); 694 | 693AWACS_SWITCH("Speaker Playback Switch", 1, SHIFT_PAROUT1, 1); 694 |
695static struct snd_kcontrol_new snd_pmac_awacs_speaker_sw_imac2 = | 695static const struct snd_kcontrol_new snd_pmac_awacs_speaker_sw_imac2 = |
696AWACS_SWITCH("Speaker Playback Switch", 1, SHIFT_PAROUT1, 0); 697 698 699/* 700 * add new mixer elements to the card 701 */ 702static int build_mixers(struct snd_pmac *chip, int nums, | 696AWACS_SWITCH("Speaker Playback Switch", 1, SHIFT_PAROUT1, 0); 697 698 699/* 700 * add new mixer elements to the card 701 */ 702static int build_mixers(struct snd_pmac *chip, int nums, |
703 struct snd_kcontrol_new *mixers) | 703 const struct snd_kcontrol_new *mixers) |
704{ 705 int i, err; 706 707 for (i = 0; i < nums; i++) { 708 err = snd_ctl_add(chip->card, snd_ctl_new1(&mixers[i], chip)); 709 if (err < 0) 710 return err; 711 } --- 423 unchanged lines hidden --- | 704{ 705 int i, err; 706 707 for (i = 0; i < nums; i++) { 708 err = snd_ctl_add(chip->card, snd_ctl_new1(&mixers[i], chip)); 709 if (err < 0) 710 return err; 711 } --- 423 unchanged lines hidden --- |