awacs.c (7022b15e2a9f878fd5184586064c63352c3dd225) | awacs.c (5e246b850df563224be26f1d409cf66fd6c968df) |
---|---|
1/* 2 * PMac AWACS lowlevel functions 3 * 4 * Copyright (c) by Takashi Iwai <tiwai@suse.de> 5 * code based on dmasound.c. 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by --- 305 unchanged lines hidden (view full) --- 314 else 315 vol = 32 - (vol - 79); 316 awacs_set_cuda(1, vol); 317} 318 319static void awacs_amp_free(struct snd_pmac *chip) 320{ 321 struct awacs_amp *amp = chip->mixer_data; | 1/* 2 * PMac AWACS lowlevel functions 3 * 4 * Copyright (c) by Takashi Iwai <tiwai@suse.de> 5 * code based on dmasound.c. 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by --- 305 unchanged lines hidden (view full) --- 314 else 315 vol = 32 - (vol - 79); 316 awacs_set_cuda(1, vol); 317} 318 319static void awacs_amp_free(struct snd_pmac *chip) 320{ 321 struct awacs_amp *amp = chip->mixer_data; |
322 snd_assert(amp, return); | 322 if (!amp) 323 return; |
323 kfree(amp); 324 chip->mixer_data = NULL; 325 chip->mixer_free = NULL; 326} 327 328 329/* 330 * mixer controls --- 9 unchanged lines hidden (view full) --- 340} 341 342static int snd_pmac_awacs_get_volume_amp(struct snd_kcontrol *kcontrol, 343 struct snd_ctl_elem_value *ucontrol) 344{ 345 struct snd_pmac *chip = snd_kcontrol_chip(kcontrol); 346 int index = kcontrol->private_value; 347 struct awacs_amp *amp = chip->mixer_data; | 324 kfree(amp); 325 chip->mixer_data = NULL; 326 chip->mixer_free = NULL; 327} 328 329 330/* 331 * mixer controls --- 9 unchanged lines hidden (view full) --- 341} 342 343static int snd_pmac_awacs_get_volume_amp(struct snd_kcontrol *kcontrol, 344 struct snd_ctl_elem_value *ucontrol) 345{ 346 struct snd_pmac *chip = snd_kcontrol_chip(kcontrol); 347 int index = kcontrol->private_value; 348 struct awacs_amp *amp = chip->mixer_data; |
348 snd_assert(amp, return -EINVAL); 349 snd_assert(index >= 0 && index <= 1, return -EINVAL); | 349 |
350 ucontrol->value.integer.value[0] = 31 - (amp->amp_vol[index][0] & 31); 351 ucontrol->value.integer.value[1] = 31 - (amp->amp_vol[index][1] & 31); 352 return 0; 353} 354 355static int snd_pmac_awacs_put_volume_amp(struct snd_kcontrol *kcontrol, 356 struct snd_ctl_elem_value *ucontrol) 357{ 358 struct snd_pmac *chip = snd_kcontrol_chip(kcontrol); 359 int index = kcontrol->private_value; 360 int vol[2]; 361 struct awacs_amp *amp = chip->mixer_data; | 350 ucontrol->value.integer.value[0] = 31 - (amp->amp_vol[index][0] & 31); 351 ucontrol->value.integer.value[1] = 31 - (amp->amp_vol[index][1] & 31); 352 return 0; 353} 354 355static int snd_pmac_awacs_put_volume_amp(struct snd_kcontrol *kcontrol, 356 struct snd_ctl_elem_value *ucontrol) 357{ 358 struct snd_pmac *chip = snd_kcontrol_chip(kcontrol); 359 int index = kcontrol->private_value; 360 int vol[2]; 361 struct awacs_amp *amp = chip->mixer_data; |
362 snd_assert(amp, return -EINVAL); 363 snd_assert(index >= 0 && index <= 1, return -EINVAL); | |
364 365 vol[0] = (31 - (ucontrol->value.integer.value[0] & 31)) 366 | (amp->amp_vol[index][0] & 32); 367 vol[1] = (31 - (ucontrol->value.integer.value[1] & 31)) 368 | (amp->amp_vol[index][1] & 32); 369 return awacs_amp_set_vol(amp, index, vol[0], vol[1], 1); 370} 371 372static int snd_pmac_awacs_get_switch_amp(struct snd_kcontrol *kcontrol, 373 struct snd_ctl_elem_value *ucontrol) 374{ 375 struct snd_pmac *chip = snd_kcontrol_chip(kcontrol); 376 int index = kcontrol->private_value; 377 struct awacs_amp *amp = chip->mixer_data; | 362 363 vol[0] = (31 - (ucontrol->value.integer.value[0] & 31)) 364 | (amp->amp_vol[index][0] & 32); 365 vol[1] = (31 - (ucontrol->value.integer.value[1] & 31)) 366 | (amp->amp_vol[index][1] & 32); 367 return awacs_amp_set_vol(amp, index, vol[0], vol[1], 1); 368} 369 370static int snd_pmac_awacs_get_switch_amp(struct snd_kcontrol *kcontrol, 371 struct snd_ctl_elem_value *ucontrol) 372{ 373 struct snd_pmac *chip = snd_kcontrol_chip(kcontrol); 374 int index = kcontrol->private_value; 375 struct awacs_amp *amp = chip->mixer_data; |
378 snd_assert(amp, return -EINVAL); 379 snd_assert(index >= 0 && index <= 1, return -EINVAL); | 376 |
380 ucontrol->value.integer.value[0] = (amp->amp_vol[index][0] & 32) 381 ? 0 : 1; 382 ucontrol->value.integer.value[1] = (amp->amp_vol[index][1] & 32) 383 ? 0 : 1; 384 return 0; 385} 386 387static int snd_pmac_awacs_put_switch_amp(struct snd_kcontrol *kcontrol, 388 struct snd_ctl_elem_value *ucontrol) 389{ 390 struct snd_pmac *chip = snd_kcontrol_chip(kcontrol); 391 int index = kcontrol->private_value; 392 int vol[2]; 393 struct awacs_amp *amp = chip->mixer_data; | 377 ucontrol->value.integer.value[0] = (amp->amp_vol[index][0] & 32) 378 ? 0 : 1; 379 ucontrol->value.integer.value[1] = (amp->amp_vol[index][1] & 32) 380 ? 0 : 1; 381 return 0; 382} 383 384static int snd_pmac_awacs_put_switch_amp(struct snd_kcontrol *kcontrol, 385 struct snd_ctl_elem_value *ucontrol) 386{ 387 struct snd_pmac *chip = snd_kcontrol_chip(kcontrol); 388 int index = kcontrol->private_value; 389 int vol[2]; 390 struct awacs_amp *amp = chip->mixer_data; |
394 snd_assert(amp, return -EINVAL); 395 snd_assert(index >= 0 && index <= 1, return -EINVAL); | |
396 397 vol[0] = (ucontrol->value.integer.value[0] ? 0 : 32) 398 | (amp->amp_vol[index][0] & 31); 399 vol[1] = (ucontrol->value.integer.value[1] ? 0 : 32) 400 | (amp->amp_vol[index][1] & 31); 401 return awacs_amp_set_vol(amp, index, vol[0], vol[1], 1); 402} 403 --- 8 unchanged lines hidden (view full) --- 412} 413 414static int snd_pmac_awacs_get_tone_amp(struct snd_kcontrol *kcontrol, 415 struct snd_ctl_elem_value *ucontrol) 416{ 417 struct snd_pmac *chip = snd_kcontrol_chip(kcontrol); 418 int index = kcontrol->private_value; 419 struct awacs_amp *amp = chip->mixer_data; | 391 392 vol[0] = (ucontrol->value.integer.value[0] ? 0 : 32) 393 | (amp->amp_vol[index][0] & 31); 394 vol[1] = (ucontrol->value.integer.value[1] ? 0 : 32) 395 | (amp->amp_vol[index][1] & 31); 396 return awacs_amp_set_vol(amp, index, vol[0], vol[1], 1); 397} 398 --- 8 unchanged lines hidden (view full) --- 407} 408 409static int snd_pmac_awacs_get_tone_amp(struct snd_kcontrol *kcontrol, 410 struct snd_ctl_elem_value *ucontrol) 411{ 412 struct snd_pmac *chip = snd_kcontrol_chip(kcontrol); 413 int index = kcontrol->private_value; 414 struct awacs_amp *amp = chip->mixer_data; |
420 snd_assert(amp, return -EINVAL); 421 snd_assert(index >= 0 && index <= 1, return -EINVAL); | 415 |
422 ucontrol->value.integer.value[0] = amp->amp_tone[index]; 423 return 0; 424} 425 426static int snd_pmac_awacs_put_tone_amp(struct snd_kcontrol *kcontrol, 427 struct snd_ctl_elem_value *ucontrol) 428{ 429 struct snd_pmac *chip = snd_kcontrol_chip(kcontrol); 430 int index = kcontrol->private_value; 431 struct awacs_amp *amp = chip->mixer_data; 432 unsigned int val; | 416 ucontrol->value.integer.value[0] = amp->amp_tone[index]; 417 return 0; 418} 419 420static int snd_pmac_awacs_put_tone_amp(struct snd_kcontrol *kcontrol, 421 struct snd_ctl_elem_value *ucontrol) 422{ 423 struct snd_pmac *chip = snd_kcontrol_chip(kcontrol); 424 int index = kcontrol->private_value; 425 struct awacs_amp *amp = chip->mixer_data; 426 unsigned int val; |
433 snd_assert(amp, return -EINVAL); 434 snd_assert(index >= 0 && index <= 1, return -EINVAL); | 427 |
435 val = ucontrol->value.integer.value[0]; 436 if (val > 14) 437 return -EINVAL; 438 if (val != amp->amp_tone[index]) { 439 amp->amp_tone[index] = val; 440 awacs_amp_set_tone(amp, amp->amp_tone[0], amp->amp_tone[1]); 441 return 1; 442 } --- 10 unchanged lines hidden (view full) --- 453 return 0; 454} 455 456static int snd_pmac_awacs_get_master_amp(struct snd_kcontrol *kcontrol, 457 struct snd_ctl_elem_value *ucontrol) 458{ 459 struct snd_pmac *chip = snd_kcontrol_chip(kcontrol); 460 struct awacs_amp *amp = chip->mixer_data; | 428 val = ucontrol->value.integer.value[0]; 429 if (val > 14) 430 return -EINVAL; 431 if (val != amp->amp_tone[index]) { 432 amp->amp_tone[index] = val; 433 awacs_amp_set_tone(amp, amp->amp_tone[0], amp->amp_tone[1]); 434 return 1; 435 } --- 10 unchanged lines hidden (view full) --- 446 return 0; 447} 448 449static int snd_pmac_awacs_get_master_amp(struct snd_kcontrol *kcontrol, 450 struct snd_ctl_elem_value *ucontrol) 451{ 452 struct snd_pmac *chip = snd_kcontrol_chip(kcontrol); 453 struct awacs_amp *amp = chip->mixer_data; |
461 snd_assert(amp, return -EINVAL); | 454 |
462 ucontrol->value.integer.value[0] = amp->amp_master; 463 return 0; 464} 465 466static int snd_pmac_awacs_put_master_amp(struct snd_kcontrol *kcontrol, 467 struct snd_ctl_elem_value *ucontrol) 468{ 469 struct snd_pmac *chip = snd_kcontrol_chip(kcontrol); 470 struct awacs_amp *amp = chip->mixer_data; 471 unsigned int val; | 455 ucontrol->value.integer.value[0] = amp->amp_master; 456 return 0; 457} 458 459static int snd_pmac_awacs_put_master_amp(struct snd_kcontrol *kcontrol, 460 struct snd_ctl_elem_value *ucontrol) 461{ 462 struct snd_pmac *chip = snd_kcontrol_chip(kcontrol); 463 struct awacs_amp *amp = chip->mixer_data; 464 unsigned int val; |
472 snd_assert(amp, return -EINVAL); | 465 |
473 val = ucontrol->value.integer.value[0]; 474 if (val > 99) 475 return -EINVAL; 476 if (val != amp->amp_master) { 477 amp->amp_master = val; 478 awacs_amp_set_master(amp, amp->amp_master); 479 return 1; 480 } --- 135 unchanged lines hidden (view full) --- 616}; 617 618static struct snd_kcontrol_new snd_pmac_screamer_mixers_imac[] __initdata = { 619 AWACS_VOLUME("Line out Playback Volume", 2, 6, 1), 620 AWACS_VOLUME("Master Playback Volume", 5, 6, 1), 621 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), 622}; 623 | 466 val = ucontrol->value.integer.value[0]; 467 if (val > 99) 468 return -EINVAL; 469 if (val != amp->amp_master) { 470 amp->amp_master = val; 471 awacs_amp_set_master(amp, amp->amp_master); 472 return 1; 473 } --- 135 unchanged lines hidden (view full) --- 609}; 610 611static struct snd_kcontrol_new snd_pmac_screamer_mixers_imac[] __initdata = { 612 AWACS_VOLUME("Line out Playback Volume", 2, 6, 1), 613 AWACS_VOLUME("Master Playback Volume", 5, 6, 1), 614 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), 615}; 616 |
617static struct snd_kcontrol_new snd_pmac_screamer_mixers_g4agp[] __initdata = { 618 AWACS_VOLUME("Line out Playback Volume", 2, 6, 1), 619 AWACS_VOLUME("Master Playback Volume", 5, 6, 1), 620 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), 621 AWACS_SWITCH("Line Capture Switch", 0, SHIFT_MUX_MIC, 0), 622}; 623 |
|
624static struct snd_kcontrol_new snd_pmac_awacs_mixers_pmac7500[] __initdata = { 625 AWACS_VOLUME("Line out Playback Volume", 2, 6, 1), 626 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), 627 AWACS_SWITCH("Line Capture Switch", 0, SHIFT_MUX_MIC, 0), 628}; 629 630static struct snd_kcontrol_new snd_pmac_awacs_mixers_pmac[] __initdata = { 631 AWACS_VOLUME("Master Playback Volume", 2, 6, 1), --- 51 unchanged lines hidden (view full) --- 683 684static struct snd_kcontrol_new snd_pmac_awacs_speaker_vol[] __initdata = { 685 AWACS_VOLUME("PC Speaker Playback Volume", 4, 6, 1), 686}; 687 688static struct snd_kcontrol_new snd_pmac_awacs_speaker_sw __initdata = 689AWACS_SWITCH("PC Speaker Playback Switch", 1, SHIFT_SPKMUTE, 1); 690 | 624static struct snd_kcontrol_new snd_pmac_awacs_mixers_pmac7500[] __initdata = { 625 AWACS_VOLUME("Line out Playback Volume", 2, 6, 1), 626 AWACS_SWITCH("CD Capture Switch", 0, SHIFT_MUX_CD, 0), 627 AWACS_SWITCH("Line Capture Switch", 0, SHIFT_MUX_MIC, 0), 628}; 629 630static struct snd_kcontrol_new snd_pmac_awacs_mixers_pmac[] __initdata = { 631 AWACS_VOLUME("Master Playback Volume", 2, 6, 1), --- 51 unchanged lines hidden (view full) --- 683 684static struct snd_kcontrol_new snd_pmac_awacs_speaker_vol[] __initdata = { 685 AWACS_VOLUME("PC Speaker Playback Volume", 4, 6, 1), 686}; 687 688static struct snd_kcontrol_new snd_pmac_awacs_speaker_sw __initdata = 689AWACS_SWITCH("PC Speaker Playback Switch", 1, SHIFT_SPKMUTE, 1); 690 |
691static struct snd_kcontrol_new snd_pmac_awacs_speaker_sw_imac __initdata = | 691static struct snd_kcontrol_new snd_pmac_awacs_speaker_sw_imac1 __initdata = 692AWACS_SWITCH("PC Speaker Playback Switch", 1, SHIFT_PAROUT1, 1); 693 694static struct snd_kcontrol_new snd_pmac_awacs_speaker_sw_imac2 __initdata = |
692AWACS_SWITCH("PC Speaker Playback Switch", 1, SHIFT_PAROUT1, 0); 693 694 695/* 696 * add new mixer elements to the card 697 */ 698static int build_mixers(struct snd_pmac *chip, int nums, 699 struct snd_kcontrol_new *mixers) --- 60 unchanged lines hidden (view full) --- 760 awacs_amp_set_master(amp, amp->amp_master); 761 } 762#endif 763} 764#endif /* CONFIG_PM */ 765 766#define IS_PM7500 (machine_is_compatible("AAPL,7500")) 767#define IS_BEIGE (machine_is_compatible("AAPL,Gossamer")) | 695AWACS_SWITCH("PC Speaker Playback Switch", 1, SHIFT_PAROUT1, 0); 696 697 698/* 699 * add new mixer elements to the card 700 */ 701static int build_mixers(struct snd_pmac *chip, int nums, 702 struct snd_kcontrol_new *mixers) --- 60 unchanged lines hidden (view full) --- 763 awacs_amp_set_master(amp, amp->amp_master); 764 } 765#endif 766} 767#endif /* CONFIG_PM */ 768 769#define IS_PM7500 (machine_is_compatible("AAPL,7500")) 770#define IS_BEIGE (machine_is_compatible("AAPL,Gossamer")) |
768#define IS_IMAC (machine_is_compatible("PowerMac2,1") \ 769 || machine_is_compatible("PowerMac2,2") \ | 771#define IS_IMAC1 (machine_is_compatible("PowerMac2,1")) 772#define IS_IMAC2 (machine_is_compatible("PowerMac2,2") \ |
770 || machine_is_compatible("PowerMac4,1")) | 773 || machine_is_compatible("PowerMac4,1")) |
774#define IS_G4AGP (machine_is_compatible("PowerMac3,1")) |
|
771 | 775 |
772static int imac; | 776static int imac1, imac2; |
773 774#ifdef PMAC_SUPPORT_AUTOMUTE 775/* 776 * auto-mute stuffs 777 */ 778static int snd_pmac_awacs_detect_headphone(struct snd_pmac *chip) 779{ 780 return (in_le32(&chip->awacs->codec_stat) & chip->hp_stat_mask) ? 1 : 0; --- 29 unchanged lines hidden (view full) --- 810 } 811 if (do_notify && ! changed) 812 return; 813 } else 814#endif 815 { 816 int reg = chip->awacs_reg[1] 817 | (MASK_HDMUTE | MASK_SPKMUTE); | 777 778#ifdef PMAC_SUPPORT_AUTOMUTE 779/* 780 * auto-mute stuffs 781 */ 782static int snd_pmac_awacs_detect_headphone(struct snd_pmac *chip) 783{ 784 return (in_le32(&chip->awacs->codec_stat) & chip->hp_stat_mask) ? 1 : 0; --- 29 unchanged lines hidden (view full) --- 814 } 815 if (do_notify && ! changed) 816 return; 817 } else 818#endif 819 { 820 int reg = chip->awacs_reg[1] 821 | (MASK_HDMUTE | MASK_SPKMUTE); |
818 if (imac) { | 822 if (imac1) { |
819 reg &= ~MASK_SPKMUTE; | 823 reg &= ~MASK_SPKMUTE; |
824 reg |= MASK_PAROUT1; 825 } else if (imac2) { 826 reg &= ~MASK_SPKMUTE; |
|
820 reg &= ~MASK_PAROUT1; 821 } 822 if (snd_pmac_awacs_detect_headphone(chip)) 823 reg &= ~MASK_HDMUTE; | 827 reg &= ~MASK_PAROUT1; 828 } 829 if (snd_pmac_awacs_detect_headphone(chip)) 830 reg &= ~MASK_HDMUTE; |
824 else if (imac) | 831 else if (imac1) 832 reg &= ~MASK_PAROUT1; 833 else if (imac2) |
825 reg |= MASK_PAROUT1; 826 else 827 reg &= ~MASK_SPKMUTE; 828 if (do_notify && reg == chip->awacs_reg[1]) 829 return; 830 snd_pmac_awacs_write_reg(chip, 1, reg); 831 } 832 if (do_notify) { --- 12 unchanged lines hidden (view full) --- 845/* 846 * initialize chip 847 */ 848int __init 849snd_pmac_awacs_init(struct snd_pmac *chip) 850{ 851 int pm7500 = IS_PM7500; 852 int beige = IS_BEIGE; | 834 reg |= MASK_PAROUT1; 835 else 836 reg &= ~MASK_SPKMUTE; 837 if (do_notify && reg == chip->awacs_reg[1]) 838 return; 839 snd_pmac_awacs_write_reg(chip, 1, reg); 840 } 841 if (do_notify) { --- 12 unchanged lines hidden (view full) --- 854/* 855 * initialize chip 856 */ 857int __init 858snd_pmac_awacs_init(struct snd_pmac *chip) 859{ 860 int pm7500 = IS_PM7500; 861 int beige = IS_BEIGE; |
862 int g4agp = IS_G4AGP; 863 int imac; |
|
853 int err, vol; 854 | 864 int err, vol; 865 |
855 imac = IS_IMAC; | 866 imac1 = IS_IMAC1; 867 imac2 = IS_IMAC2; 868 imac = imac1 || imac2; |
856 /* looks like MASK_GAINLINE triggers something, so we set here 857 * as start-up 858 */ 859 chip->awacs_reg[0] = MASK_MUX_CD | 0xff | MASK_GAINLINE; 860 chip->awacs_reg[1] = MASK_CMUTE | MASK_AMUTE; 861 /* FIXME: Only machines with external SRS module need MASK_PAROUT */ 862 if (chip->has_iic || chip->device_id == 0x5 || 863 /* chip->_device_id == 0x8 || */ --- 70 unchanged lines hidden (view full) --- 934 * build mixers 935 */ 936 strcpy(chip->card->mixername, "PowerMac AWACS"); 937 938 err = build_mixers(chip, ARRAY_SIZE(snd_pmac_awacs_mixers), 939 snd_pmac_awacs_mixers); 940 if (err < 0) 941 return err; | 869 /* looks like MASK_GAINLINE triggers something, so we set here 870 * as start-up 871 */ 872 chip->awacs_reg[0] = MASK_MUX_CD | 0xff | MASK_GAINLINE; 873 chip->awacs_reg[1] = MASK_CMUTE | MASK_AMUTE; 874 /* FIXME: Only machines with external SRS module need MASK_PAROUT */ 875 if (chip->has_iic || chip->device_id == 0x5 || 876 /* chip->_device_id == 0x8 || */ --- 70 unchanged lines hidden (view full) --- 947 * build mixers 948 */ 949 strcpy(chip->card->mixername, "PowerMac AWACS"); 950 951 err = build_mixers(chip, ARRAY_SIZE(snd_pmac_awacs_mixers), 952 snd_pmac_awacs_mixers); 953 if (err < 0) 954 return err; |
942 if (beige) | 955 if (beige || g4agp) |
943 ; 944 else if (chip->model == PMAC_SCREAMER) 945 err = build_mixers(chip, ARRAY_SIZE(snd_pmac_screamer_mixers2), 946 snd_pmac_screamer_mixers2); 947 else if (!pm7500) 948 err = build_mixers(chip, ARRAY_SIZE(snd_pmac_awacs_mixers2), 949 snd_pmac_awacs_mixers2); 950 if (err < 0) --- 5 unchanged lines hidden (view full) --- 956 else if (beige) 957 err = build_mixers(chip, 958 ARRAY_SIZE(snd_pmac_screamer_mixers_beige), 959 snd_pmac_screamer_mixers_beige); 960 else if (imac) 961 err = build_mixers(chip, 962 ARRAY_SIZE(snd_pmac_screamer_mixers_imac), 963 snd_pmac_screamer_mixers_imac); | 956 ; 957 else if (chip->model == PMAC_SCREAMER) 958 err = build_mixers(chip, ARRAY_SIZE(snd_pmac_screamer_mixers2), 959 snd_pmac_screamer_mixers2); 960 else if (!pm7500) 961 err = build_mixers(chip, ARRAY_SIZE(snd_pmac_awacs_mixers2), 962 snd_pmac_awacs_mixers2); 963 if (err < 0) --- 5 unchanged lines hidden (view full) --- 969 else if (beige) 970 err = build_mixers(chip, 971 ARRAY_SIZE(snd_pmac_screamer_mixers_beige), 972 snd_pmac_screamer_mixers_beige); 973 else if (imac) 974 err = build_mixers(chip, 975 ARRAY_SIZE(snd_pmac_screamer_mixers_imac), 976 snd_pmac_screamer_mixers_imac); |
977 else if (g4agp) 978 err = build_mixers(chip, 979 ARRAY_SIZE(snd_pmac_screamer_mixers_g4agp), 980 snd_pmac_screamer_mixers_g4agp); |
|
964 else 965 err = build_mixers(chip, 966 ARRAY_SIZE(snd_pmac_awacs_mixers_pmac), 967 snd_pmac_awacs_mixers_pmac); 968 if (err < 0) 969 return err; | 981 else 982 err = build_mixers(chip, 983 ARRAY_SIZE(snd_pmac_awacs_mixers_pmac), 984 snd_pmac_awacs_mixers_pmac); 985 if (err < 0) 986 return err; |
970 chip->master_sw_ctl = snd_ctl_new1((pm7500 || imac) | 987 chip->master_sw_ctl = snd_ctl_new1((pm7500 || imac || g4agp) |
971 ? &snd_pmac_awacs_master_sw_imac 972 : &snd_pmac_awacs_master_sw, chip); 973 err = snd_ctl_add(chip->card, chip->master_sw_ctl); 974 if (err < 0) 975 return err; 976#ifdef PMAC_AMP_AVAIL 977 if (chip->mixer_data) { 978 /* use amplifier. the signal is connected from route A --- 20 unchanged lines hidden (view full) --- 999 } else 1000#endif /* PMAC_AMP_AVAIL */ 1001 { 1002 /* route A = headphone, route C = speaker */ 1003 err = build_mixers(chip, ARRAY_SIZE(snd_pmac_awacs_speaker_vol), 1004 snd_pmac_awacs_speaker_vol); 1005 if (err < 0) 1006 return err; | 988 ? &snd_pmac_awacs_master_sw_imac 989 : &snd_pmac_awacs_master_sw, chip); 990 err = snd_ctl_add(chip->card, chip->master_sw_ctl); 991 if (err < 0) 992 return err; 993#ifdef PMAC_AMP_AVAIL 994 if (chip->mixer_data) { 995 /* use amplifier. the signal is connected from route A --- 20 unchanged lines hidden (view full) --- 1016 } else 1017#endif /* PMAC_AMP_AVAIL */ 1018 { 1019 /* route A = headphone, route C = speaker */ 1020 err = build_mixers(chip, ARRAY_SIZE(snd_pmac_awacs_speaker_vol), 1021 snd_pmac_awacs_speaker_vol); 1022 if (err < 0) 1023 return err; |
1007 chip->speaker_sw_ctl = snd_ctl_new1(imac 1008 ? &snd_pmac_awacs_speaker_sw_imac | 1024 chip->speaker_sw_ctl = snd_ctl_new1(imac1 1025 ? &snd_pmac_awacs_speaker_sw_imac1 1026 : imac2 1027 ? &snd_pmac_awacs_speaker_sw_imac2 |
1009 : &snd_pmac_awacs_speaker_sw, chip); 1010 err = snd_ctl_add(chip->card, chip->speaker_sw_ctl); 1011 if (err < 0) 1012 return err; 1013 } 1014 | 1028 : &snd_pmac_awacs_speaker_sw, chip); 1029 err = snd_ctl_add(chip->card, chip->speaker_sw_ctl); 1030 if (err < 0) 1031 return err; 1032 } 1033 |
1015 if (beige) | 1034 if (beige || g4agp) |
1016 err = build_mixers(chip, 1017 ARRAY_SIZE(snd_pmac_screamer_mic_boost_beige), 1018 snd_pmac_screamer_mic_boost_beige); 1019 else if (imac) 1020 err = build_mixers(chip, 1021 ARRAY_SIZE(snd_pmac_screamer_mic_boost_imac), 1022 snd_pmac_screamer_mic_boost_imac); 1023 else if (chip->model == PMAC_SCREAMER) --- 36 unchanged lines hidden --- | 1035 err = build_mixers(chip, 1036 ARRAY_SIZE(snd_pmac_screamer_mic_boost_beige), 1037 snd_pmac_screamer_mic_boost_beige); 1038 else if (imac) 1039 err = build_mixers(chip, 1040 ARRAY_SIZE(snd_pmac_screamer_mic_boost_imac), 1041 snd_pmac_screamer_mic_boost_imac); 1042 else if (chip->model == PMAC_SCREAMER) --- 36 unchanged lines hidden --- |