burgundy.c (2d8ad8719591fa803b0d589ed057fa46f49b7155) burgundy.c (15afafc2565bc785eb7a440b8b4a53f77910cf04)
1/*
2 * PMac Burgundy 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

--- 453 unchanged lines hidden (view full) ---

462 .get = snd_pmac_burgundy_get_switch_b,\
463 .put = snd_pmac_burgundy_put_switch_b,\
464 .private_value = ((lmask) | ((rmask) << 8)\
465 | (ADDR2BASE(addr) << 16) | ((stereo) << 24)) }
466
467/*
468 * Burgundy mixers
469 */
1/*
2 * PMac Burgundy 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

--- 453 unchanged lines hidden (view full) ---

462 .get = snd_pmac_burgundy_get_switch_b,\
463 .put = snd_pmac_burgundy_put_switch_b,\
464 .private_value = ((lmask) | ((rmask) << 8)\
465 | (ADDR2BASE(addr) << 16) | ((stereo) << 24)) }
466
467/*
468 * Burgundy mixers
469 */
470static struct snd_kcontrol_new snd_pmac_burgundy_mixers[] __devinitdata = {
470static struct snd_kcontrol_new snd_pmac_burgundy_mixers[] = {
471 BURGUNDY_VOLUME_W("Master Playback Volume", 0,
472 MASK_ADDR_BURGUNDY_MASTER_VOLUME, 8),
473 BURGUNDY_VOLUME_W("CD Capture Volume", 0,
474 MASK_ADDR_BURGUNDY_VOLCD, 16),
475 BURGUNDY_VOLUME_2B("Input Capture Volume", 0,
476 MASK_ADDR_BURGUNDY_VOLMIX01, 2),
477 BURGUNDY_VOLUME_2B("Mixer Playback Volume", 0,
478 MASK_ADDR_BURGUNDY_VOLMIX23, 0),

--- 11 unchanged lines hidden (view full) ---

490 * MASK_ADDR_BURGUNDY_HOSTIFAD, 0x02, 0, 0),
491 * BURGUNDY_SWITCH_B("Mixer Capture Switch", 0,
492 * MASK_ADDR_BURGUNDY_HOSTIFAD, 0x01, 0, 0),
493 * BURGUNDY_SWITCH_B("PCM out Capture Switch", 0,
494 * MASK_ADDR_BURGUNDY_HOSTIFEH, 0x02, 0, 0),
495 */ BURGUNDY_SWITCH_B("PCM Capture Switch", 0,
496 MASK_ADDR_BURGUNDY_HOSTIFEH, 0x01, 0, 0)
497};
471 BURGUNDY_VOLUME_W("Master Playback Volume", 0,
472 MASK_ADDR_BURGUNDY_MASTER_VOLUME, 8),
473 BURGUNDY_VOLUME_W("CD Capture Volume", 0,
474 MASK_ADDR_BURGUNDY_VOLCD, 16),
475 BURGUNDY_VOLUME_2B("Input Capture Volume", 0,
476 MASK_ADDR_BURGUNDY_VOLMIX01, 2),
477 BURGUNDY_VOLUME_2B("Mixer Playback Volume", 0,
478 MASK_ADDR_BURGUNDY_VOLMIX23, 0),

--- 11 unchanged lines hidden (view full) ---

490 * MASK_ADDR_BURGUNDY_HOSTIFAD, 0x02, 0, 0),
491 * BURGUNDY_SWITCH_B("Mixer Capture Switch", 0,
492 * MASK_ADDR_BURGUNDY_HOSTIFAD, 0x01, 0, 0),
493 * BURGUNDY_SWITCH_B("PCM out Capture Switch", 0,
494 * MASK_ADDR_BURGUNDY_HOSTIFEH, 0x02, 0, 0),
495 */ BURGUNDY_SWITCH_B("PCM Capture Switch", 0,
496 MASK_ADDR_BURGUNDY_HOSTIFEH, 0x01, 0, 0)
497};
498static struct snd_kcontrol_new snd_pmac_burgundy_mixers_imac[] __devinitdata = {
498static struct snd_kcontrol_new snd_pmac_burgundy_mixers_imac[] = {
499 BURGUNDY_VOLUME_W("Line in Capture Volume", 0,
500 MASK_ADDR_BURGUNDY_VOLLINE, 16),
501 BURGUNDY_VOLUME_W("Mic Capture Volume", 0,
502 MASK_ADDR_BURGUNDY_VOLMIC, 16),
503 BURGUNDY_VOLUME_B("Line in Gain Capture Volume", 0,
504 MASK_ADDR_BURGUNDY_GAINLINE, 1, 0),
505 BURGUNDY_VOLUME_B("Mic Gain Capture Volume", 0,
506 MASK_ADDR_BURGUNDY_GAINMIC, 1, 0),

--- 9 unchanged lines hidden (view full) ---

516 MASK_ADDR_BURGUNDY_CAPTURESELECTS, 2, 18, 1),
517 BURGUNDY_SWITCH_W("Line in Playback Switch", 0,
518 MASK_ADDR_BURGUNDY_OUTPUTSELECTS, 1, 17, 1),
519 BURGUNDY_SWITCH_W("Mic Playback Switch", 0,
520 MASK_ADDR_BURGUNDY_OUTPUTSELECTS, 2, 18, 1),
521 BURGUNDY_SWITCH_B("Mic Boost Capture Switch", 0,
522 MASK_ADDR_BURGUNDY_INPBOOST, 0x40, 0x80, 1)
523};
499 BURGUNDY_VOLUME_W("Line in Capture Volume", 0,
500 MASK_ADDR_BURGUNDY_VOLLINE, 16),
501 BURGUNDY_VOLUME_W("Mic Capture Volume", 0,
502 MASK_ADDR_BURGUNDY_VOLMIC, 16),
503 BURGUNDY_VOLUME_B("Line in Gain Capture Volume", 0,
504 MASK_ADDR_BURGUNDY_GAINLINE, 1, 0),
505 BURGUNDY_VOLUME_B("Mic Gain Capture Volume", 0,
506 MASK_ADDR_BURGUNDY_GAINMIC, 1, 0),

--- 9 unchanged lines hidden (view full) ---

516 MASK_ADDR_BURGUNDY_CAPTURESELECTS, 2, 18, 1),
517 BURGUNDY_SWITCH_W("Line in Playback Switch", 0,
518 MASK_ADDR_BURGUNDY_OUTPUTSELECTS, 1, 17, 1),
519 BURGUNDY_SWITCH_W("Mic Playback Switch", 0,
520 MASK_ADDR_BURGUNDY_OUTPUTSELECTS, 2, 18, 1),
521 BURGUNDY_SWITCH_B("Mic Boost Capture Switch", 0,
522 MASK_ADDR_BURGUNDY_INPBOOST, 0x40, 0x80, 1)
523};
524static struct snd_kcontrol_new snd_pmac_burgundy_mixers_pmac[] __devinitdata = {
524static struct snd_kcontrol_new snd_pmac_burgundy_mixers_pmac[] = {
525 BURGUNDY_VOLUME_W("Line in Capture Volume", 0,
526 MASK_ADDR_BURGUNDY_VOLMIC, 16),
527 BURGUNDY_VOLUME_B("Line in Gain Capture Volume", 0,
528 MASK_ADDR_BURGUNDY_GAINMIC, 1, 0),
529 BURGUNDY_VOLUME_B("Speaker Playback Volume", 0,
530 MASK_ADDR_BURGUNDY_ATTENMONO, 0, 1),
531 BURGUNDY_VOLUME_B("Line out Playback Volume", 0,
532 MASK_ADDR_BURGUNDY_ATTENSPEAKER, 1, 1),
533 BURGUNDY_SWITCH_W("Line in Capture Switch", 0,
534 MASK_ADDR_BURGUNDY_CAPTURESELECTS, 2, 18, 1),
535 BURGUNDY_SWITCH_W("Line in Playback Switch", 0,
536 MASK_ADDR_BURGUNDY_OUTPUTSELECTS, 2, 18, 1),
537/* BURGUNDY_SWITCH_B("Line in Boost Capture Switch", 0,
538 * MASK_ADDR_BURGUNDY_INPBOOST, 0x40, 0x80, 1) */
539};
525 BURGUNDY_VOLUME_W("Line in Capture Volume", 0,
526 MASK_ADDR_BURGUNDY_VOLMIC, 16),
527 BURGUNDY_VOLUME_B("Line in Gain Capture Volume", 0,
528 MASK_ADDR_BURGUNDY_GAINMIC, 1, 0),
529 BURGUNDY_VOLUME_B("Speaker Playback Volume", 0,
530 MASK_ADDR_BURGUNDY_ATTENMONO, 0, 1),
531 BURGUNDY_VOLUME_B("Line out Playback Volume", 0,
532 MASK_ADDR_BURGUNDY_ATTENSPEAKER, 1, 1),
533 BURGUNDY_SWITCH_W("Line in Capture Switch", 0,
534 MASK_ADDR_BURGUNDY_CAPTURESELECTS, 2, 18, 1),
535 BURGUNDY_SWITCH_W("Line in Playback Switch", 0,
536 MASK_ADDR_BURGUNDY_OUTPUTSELECTS, 2, 18, 1),
537/* BURGUNDY_SWITCH_B("Line in Boost Capture Switch", 0,
538 * MASK_ADDR_BURGUNDY_INPBOOST, 0x40, 0x80, 1) */
539};
540static struct snd_kcontrol_new snd_pmac_burgundy_master_sw_imac __devinitdata =
540static struct snd_kcontrol_new snd_pmac_burgundy_master_sw_imac =
541BURGUNDY_SWITCH_B("Master Playback Switch", 0,
542 MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES,
543 BURGUNDY_OUTPUT_LEFT | BURGUNDY_LINEOUT_LEFT | BURGUNDY_HP_LEFT,
544 BURGUNDY_OUTPUT_RIGHT | BURGUNDY_LINEOUT_RIGHT | BURGUNDY_HP_RIGHT, 1);
541BURGUNDY_SWITCH_B("Master Playback Switch", 0,
542 MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES,
543 BURGUNDY_OUTPUT_LEFT | BURGUNDY_LINEOUT_LEFT | BURGUNDY_HP_LEFT,
544 BURGUNDY_OUTPUT_RIGHT | BURGUNDY_LINEOUT_RIGHT | BURGUNDY_HP_RIGHT, 1);
545static struct snd_kcontrol_new snd_pmac_burgundy_master_sw_pmac __devinitdata =
545static struct snd_kcontrol_new snd_pmac_burgundy_master_sw_pmac =
546BURGUNDY_SWITCH_B("Master Playback Switch", 0,
547 MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES,
548 BURGUNDY_OUTPUT_INTERN
549 | BURGUNDY_OUTPUT_LEFT, BURGUNDY_OUTPUT_RIGHT, 1);
546BURGUNDY_SWITCH_B("Master Playback Switch", 0,
547 MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES,
548 BURGUNDY_OUTPUT_INTERN
549 | BURGUNDY_OUTPUT_LEFT, BURGUNDY_OUTPUT_RIGHT, 1);
550static struct snd_kcontrol_new snd_pmac_burgundy_speaker_sw_imac __devinitdata =
550static struct snd_kcontrol_new snd_pmac_burgundy_speaker_sw_imac =
551BURGUNDY_SWITCH_B("Speaker Playback Switch", 0,
552 MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES,
553 BURGUNDY_OUTPUT_LEFT, BURGUNDY_OUTPUT_RIGHT, 1);
551BURGUNDY_SWITCH_B("Speaker Playback Switch", 0,
552 MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES,
553 BURGUNDY_OUTPUT_LEFT, BURGUNDY_OUTPUT_RIGHT, 1);
554static struct snd_kcontrol_new snd_pmac_burgundy_speaker_sw_pmac __devinitdata =
554static struct snd_kcontrol_new snd_pmac_burgundy_speaker_sw_pmac =
555BURGUNDY_SWITCH_B("Speaker Playback Switch", 0,
556 MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES,
557 BURGUNDY_OUTPUT_INTERN, 0, 0);
555BURGUNDY_SWITCH_B("Speaker Playback Switch", 0,
556 MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES,
557 BURGUNDY_OUTPUT_INTERN, 0, 0);
558static struct snd_kcontrol_new snd_pmac_burgundy_line_sw_imac __devinitdata =
558static struct snd_kcontrol_new snd_pmac_burgundy_line_sw_imac =
559BURGUNDY_SWITCH_B("Line out Playback Switch", 0,
560 MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES,
561 BURGUNDY_LINEOUT_LEFT, BURGUNDY_LINEOUT_RIGHT, 1);
559BURGUNDY_SWITCH_B("Line out Playback Switch", 0,
560 MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES,
561 BURGUNDY_LINEOUT_LEFT, BURGUNDY_LINEOUT_RIGHT, 1);
562static struct snd_kcontrol_new snd_pmac_burgundy_line_sw_pmac __devinitdata =
562static struct snd_kcontrol_new snd_pmac_burgundy_line_sw_pmac =
563BURGUNDY_SWITCH_B("Line out Playback Switch", 0,
564 MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES,
565 BURGUNDY_OUTPUT_LEFT, BURGUNDY_OUTPUT_RIGHT, 1);
563BURGUNDY_SWITCH_B("Line out Playback Switch", 0,
564 MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES,
565 BURGUNDY_OUTPUT_LEFT, BURGUNDY_OUTPUT_RIGHT, 1);
566static struct snd_kcontrol_new snd_pmac_burgundy_hp_sw_imac __devinitdata =
566static struct snd_kcontrol_new snd_pmac_burgundy_hp_sw_imac =
567BURGUNDY_SWITCH_B("Headphone Playback Switch", 0,
568 MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES,
569 BURGUNDY_HP_LEFT, BURGUNDY_HP_RIGHT, 1);
570
571
572#ifdef PMAC_SUPPORT_AUTOMUTE
573/*
574 * auto-mute stuffs

--- 37 unchanged lines hidden (view full) ---

612 }
613}
614#endif /* PMAC_SUPPORT_AUTOMUTE */
615
616
617/*
618 * initialize burgundy
619 */
567BURGUNDY_SWITCH_B("Headphone Playback Switch", 0,
568 MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES,
569 BURGUNDY_HP_LEFT, BURGUNDY_HP_RIGHT, 1);
570
571
572#ifdef PMAC_SUPPORT_AUTOMUTE
573/*
574 * auto-mute stuffs

--- 37 unchanged lines hidden (view full) ---

612 }
613}
614#endif /* PMAC_SUPPORT_AUTOMUTE */
615
616
617/*
618 * initialize burgundy
619 */
620int __devinit snd_pmac_burgundy_init(struct snd_pmac *chip)
620int snd_pmac_burgundy_init(struct snd_pmac *chip)
621{
622 int imac = of_machine_is_compatible("iMac");
623 int i, err;
624
625 /* Checks to see the chip is alive and kicking */
626 if ((in_le32(&chip->awacs->codec_ctrl) & MASK_ERRCODE) == 0xf0000) {
627 printk(KERN_WARNING "pmac burgundy: disabled by MacOS :-(\n");
628 return 1;

--- 104 unchanged lines hidden ---
621{
622 int imac = of_machine_is_compatible("iMac");
623 int i, err;
624
625 /* Checks to see the chip is alive and kicking */
626 if ((in_le32(&chip->awacs->codec_ctrl) & MASK_ERRCODE) == 0xf0000) {
627 printk(KERN_WARNING "pmac burgundy: disabled by MacOS :-(\n");
628 return 1;

--- 104 unchanged lines hidden ---