linux/sound/ppc/burgundy.c
<<
9.8< /spa4.1 /form.1 a 9.8< href="../linux+v3n> 2/sound/ppc/burgundy.c">9.8< img src="../.static/gfx/right.png" alt=">>">9. /spa4.19. spa4 class="lxr_search">9.8<9.8< input typ59.8< input typ59.8< buttv3.typ5Search9.8< Prefs1 /a>9. /spa4.18< /div.18< form ac3.14="ajax+*" method="post" onsubmit="return false;">9. input typ598< /form.198< div class="headingbottvm">1 div id 1 /a> spa4 class="comment">/* /spa4.1 2 /a> spa4 class="comment"> * PMac Burgundy lowlevel func3.14s /spa4.1 3 /a> spa4 class="comment"> * /spa4.1 4 /a> spa4 class="comment"> * Copyright (c) by Takashi Iwai <tiwai@suse.de> /spa4.1 5 /a> spa4 class="comment"> * code based on dmasound.c. /spa4.1 6 /a> spa4 class="comment"> * /spa4.1 7 /a> spa4 class="comment"> * This program is free software; you ca4 redistribute it and/or modify /spa4.1 8 /a> spa4 class="comment"> * it under the terms of the GNU General Public License as published by /spa4.1 9 /a> spa4 class="comment"> * the Free Software Founda3.14; either vers v3.2 of the License, or /spa4.1 ptioa> spa4 class="comment"> * (at your "v3.14) any later vers v3. /spa4.1 11 /a> spa4 class="comment"> * /spa4.1 12 /a> spa4 class="comment"> * This program is distributed in the hope that it will be useful, /spa4.1 13 /a> spa4 class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of /spa4.1 14 /a> spa4 class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /spa4.1 15 /a> spa4 class="comment"> * GNU General Public License for more details. /spa4.1 16 /a> spa4 class="comment"> * /spa4.1 17 /a> spa4 class="comment"> * You should have received a copy of the GNU General Public License /spa4.1 18 /a> spa4 class="comment"> * along with this program; if not, write to the Free Software /spa4.1 19 /a> spa4 class="comment"> * Founda3.14, Inc., 59 Temple Place, Suite 330, Bost14, MA 02111-1307 USA /spa4.1 2tioa> spa4 class="comment"> */ /spa4.1 21 /a>1 22 /a>#include < a href="+ambig=include/asm-alpha/io.h|include/asm-arm/io.h|include/asm-avr32/io.h|include/asm-blackfin/io.h|include/asm-cris/io.h|include/asm-frv/io.h|include/asm-generic/io.h|include/asm-h8300/io.h|include/asm-i386/io.h|include/asm-ia64/io.h|include/asm-m32r/io.h|include/asm-m68k/io.h|include/asm-m68knommu/io.h|include/asm-mips/io.h|include/asm-mips64/io.h|include/asm-parisc/io.h|include/asm-powerpc/io.h|include/asm-ppc/io.h|include/asm-s390/io.h|include/asm-sh/io.h|include/asm-sh64/io.h|include/asm-sparc/io.h|include/asm-sparc64/io.h|include/asm-um/io.h|include/asm-v850/io.h|include/asm-x86/io.h|include/asm-x86_64/io.h|include/asm-xtensa/io.h" class="falt">asm/io.h /a>>1 23 /a>#include < a href="include/linux/init.h" class="fref">linux/init.h /a>>1 24 /a>#include < a href="include/linux/delay.h" class="fref">linux/delay.h /a>>1 25 /a>#include < a href="include/sound/core.h" class="fref">sound/core.h /a>>1 26 /a>#include " a href="sound/ppc/pmac.h" class="fref">pmac.h /a>"1 27 /a>#include " a href="sound/ppc/burgundy.h" class="fref">burgundy.h /a>"1 28 /a>1 29 /a>1 3tioa> spa4 class="comment">/* Waits for busy flag to clear */ /spa4.1 31 /a>static a href="+code=inline" class="sref">inline /a> void1 32 /a> a href="+code=snd_pmac_burgundy_busy_wait" class="sref">snd_pmac_burgundy_busy_wait /a>(struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a>)1 33 /a>{1 34 /a> int a href="+code=timeout" class="sref">timeout /a> = 50;1 35 /a> while (( a href="+code=in_le32" class="sref">in_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_ctrl" class="sref">codec_ctrl /a>) & a href="+code=MASK_NEWECMD" class="sref">MASK_NEWECMD /a>) && a href="+code=timeout" class="sref">timeout /a>--)1 36 /a> a href="+code=udelay" class="sref">udelay /a>(1);1 37 /a> if ( a href="+code=timeout" class="sref">timeout /a> < 0)1 38 /a> a href="+code=printk" class="sref">printk /a>( a href="+code=KERN_DEBUG" class="sref">KERN_DEBUG /a> spa4 class="string">"burgundy_busy_wait: timeout\n" /spa4.);1 39 /a>}1 40 /a>1 41 /a>static a href="+code=inline" class="sref">inline /a> void1 42 /a> a href="+code=snd_pmac_burgundy_extend_wait" class="sref">snd_pmac_burgundy_extend_wait /a>(struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a>)1 43 /a>{1 44 /a> int a href="+code=timeout" class="sref">timeout /a>;1 45 /a> a href="+code=timeout" class="sref">timeout /a> = 50;1 46 /a> while (!( a href="+code=in_le32" class="sref">in_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_stat" class="sref">codec_stat /a>) & a href="+code=MASK_EXTEND" class="sref">MASK_EXTEND /a>) && a href="+code=timeout" class="sref">timeout /a>--)1 47 /a> a href="+code=udelay" class="sref">udelay /a>(1);1 48 /a> if ( a href="+code=timeout" class="sref">timeout /a> < 0)1 49 /a> a href="+code=printk" class="sref">printk /a>( a href="+code=KERN_DEBUG" class="sref">KERN_DEBUG /a> spa4 class="string">"burgundy_extend_wait: timeout #1\n" /spa4.);1 50 /a> a href="+code=timeout" class="sref">timeout /a> = 50;1 51 /a> while (( a href="+code=in_le32" class="sref">in_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_stat" class="sref">codec_stat /a>) & a href="+code=MASK_EXTEND" class="sref">MASK_EXTEND /a>) && a href="+code=timeout" class="sref">timeout /a>--)1 52 /a> a href="+code=udelay" class="sref">udelay /a>(1);1 53 /a> if ( a href="+code=timeout" class="sref">timeout /a> < 0)1 54 /a> a href="+code=printk" class="sref">printk /a>( a href="+code=KERN_DEBUG" class="sref">KERN_DEBUG /a> spa4 class="string">"burgundy_extend_wait: timeout #2\n" /spa4.);1 55 /a>}1 56 /a>1 57 /a>static void1 58 /a> a href="+code=snd_pmac_burgundy_wcw" class="sref">snd_pmac_burgundy_wcw /a>(struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a>, unsigned a href="+code=addr" class="sref">addr /a>, unsigned a href="+code=val" class="sref">val /a>)1 59 /a>{1 60 /a> a href="+code=out_le32" class="sref">out_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_ctrl" class="sref">codec_ctrl /a>, a href="+code=addr" class="sref">addr /a> + 0x200c00 + ( a href="+code=val" class="sref">val /a> & 0xff));1 61 /a> a href="+code=snd_pmac_burgundy_busy_wait" class="sref">snd_pmac_burgundy_busy_wait /a>( a href="+code=chip" class="sref">chip /a>);1 62 /a> a href="+code=out_le32" class="sref">out_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_ctrl" class="sref">codec_ctrl /a>, a href="+code=addr" class="sref">addr /a> + 0x200d00 +(( a href="+code=val" class="sref">val /a>>>8) & 0xff));1 63 /a> a href="+code=snd_pmac_burgundy_busy_wait" class="sref">snd_pmac_burgundy_busy_wait /a>( a href="+code=chip" class="sref">chip /a>);1 64 /a> a href="+code=out_le32" class="sref">out_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_ctrl" class="sref">codec_ctrl /a>, a href="+code=addr" class="sref">addr /a> + 0x200e00 +(( a href="+code=val" class="sref">val /a>>>16) & 0xff));1 65 /a> a href="+code=snd_pmac_burgundy_busy_wait" class="sref">snd_pmac_burgundy_busy_wait /a>( a href="+code=chip" class="sref">chip /a>);1 66 /a> a href="+code=out_le32" class="sref">out_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_ctrl" class="sref">codec_ctrl /a>, a href="+code=addr" class="sref">addr /a> + 0x200f00 +(( a href="+code=val" class="sref">val /a>>>24) & 0xff));1 67 /a> a href="+code=snd_pmac_burgundy_busy_wait" class="sref">snd_pmac_burgundy_busy_wait /a>( a href="+code=chip" class="sref">chip /a>);1 68 /a>}1 69 /a>1 70 /a>static unsigned1 71 /a> a href="+code=snd_pmac_burgundy_rcw" class="sref">snd_pmac_burgundy_rcw /a>(struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a>, unsigned a href="+code=addr" class="sref">addr /a>)1 72 /a>{1 73 /a> unsigned a href="+code=val" class="sref">val /a> = 0;1 74 /a> unsigned long a href="+code=flags" class="sref">flags /a>;1 75 /a>1 76 /a> a href="+code=spin_lock_irqsave" class="sref">spin_lock_irqsave /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=reg_lock" class="sref">reg_lock /a>, a href="+code=flags" class="sref">flags /a>);1 77 /a>1 78 /a> a href="+code=out_le32" class="sref">out_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_ctrl" class="sref">codec_ctrl /a>, a href="+code=addr" class="sref">addr /a> + 0x100000);1 79 /a> a href="+code=snd_pmac_burgundy_busy_wait" class="sref">snd_pmac_burgundy_busy_wait /a>( a href="+code=chip" class="sref">chip /a>);1 80 /a> a href="+code=snd_pmac_burgundy_extend_wait" class="sref">snd_pmac_burgundy_extend_wait /a>( a href="+code=chip" class="sref">chip /a>);1 81 /a> a href="+code=val" class="sref">val /a> += ( a href="+code=in_le32" class="sref">in_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_stat" class="sref">codec_stat /a>) >> 4) & 0xff;1 82 /a>1 83 /a> a href="+code=out_le32" class="sref">out_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_ctrl" class="sref">codec_ctrl /a>, a href="+code=addr" class="sref">addr /a> + 0x100100);1 84 /a> a href="+code=snd_pmac_burgundy_busy_wait" class="sref">snd_pmac_burgundy_busy_wait /a>( a href="+code=chip" class="sref">chip /a>);1 85 /a> a href="+code=snd_pmac_burgundy_extend_wait" class="sref">snd_pmac_burgundy_extend_wait /a>( a href="+code=chip" class="sref">chip /a>);1 86 /a> a href="+code=val" class="sref">val /a> += (( a href="+code=in_le32" class="sref">in_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_stat" class="sref">codec_stat /a>)>>4) & 0xff) <<8;1 87 /a>1 88 /a> a href="+code=out_le32" class="sref">out_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_ctrl" class="sref">codec_ctrl /a>, a href="+code=addr" class="sref">addr /a> + 0x100200);1 89 /a> a href="+code=snd_pmac_burgundy_busy_wait" class="sref">snd_pmac_burgundy_busy_wait /a>( a href="+code=chip" class="sref">chip /a>);1 90 /a> a href="+code=snd_pmac_burgundy_extend_wait" class="sref">snd_pmac_burgundy_extend_wait /a>( a href="+code=chip" class="sref">chip /a>);1 91 /a> a href="+code=val" class="sref">val /a> += (( a href="+code=in_le32" class="sref">in_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_stat" class="sref">codec_stat /a>)>>4) & 0xff) <<16;1 92 /a>1 93 /a> a href="+code=out_le32" class="sref">out_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_ctrl" class="sref">codec_ctrl /a>, a href="+code=addr" class="sref">addr /a> + 0x100300);1 94 /a> a href="+code=snd_pmac_burgundy_busy_wait" class="sref">snd_pmac_burgundy_busy_wait /a>( a href="+code=chip" class="sref">chip /a>);1 95 /a> a href="+code=snd_pmac_burgundy_extend_wait" class="sref">snd_pmac_burgundy_extend_wait /a>( a href="+code=chip" class="sref">chip /a>);1 96 /a> a href="+code=val" class="sref">val /a> += (( a href="+code=in_le32" class="sref">in_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_stat" class="sref">codec_stat /a>)>>4) & 0xff) <<24;1 97 /a>1 98 /a> a href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestore /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=reg_lock" class="sref">reg_lock /a>, a href="+code=flags" class="sref">flags /a>);1 99 /a>1 100 /a> return a href="+code=val" class="sref">val /a>;1 101 /a>}1 102 /a>1 103 /a>static void1 104 /a> a href="+code=snd_pmac_burgundy_wcb" class="sref">snd_pmac_burgundy_wcb /a>(struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a>, unsigned int a href="+code=addr" class="sref">addr /a>,1 105 /a> unsigned int a href="+code=val" class="sref">val /a>)1 106 /a>{1 107 /a> a href="+code=out_le32" class="sref">out_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_ctrl" class="sref">codec_ctrl /a>, a href="+code=addr" class="sref">addr /a> + 0x300000 + ( a href="+code=val" class="sref">val /a> & 0xff));1 108 /a> a href="+code=snd_pmac_burgundy_busy_wait" class="sref">snd_pmac_burgundy_busy_wait /a>( a href="+code=chip" class="sref">chip /a>);1 109 /a>}1 110 /a>1 111 /a>static unsigned1 112 /a> a href="+code=snd_pmac_burgundy_rcb" class="sref">snd_pmac_burgundy_rcb /a>(struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a>, unsigned int a href="+code=addr" class="sref">addr /a>)1 113 /a>{1 114 /a> unsigned a href="+code=val" class="sref">val /a> = 0;1 115 /a> unsigned long a href="+code=flags" class="sref">flags /a>;1 116 /a>1 117 /a> a href="+code=spin_lock_irqsave" class="sref">spin_lock_irqsave /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=reg_lock" class="sref">reg_lock /a>, a href="+code=flags" class="sref">flags /a>);1 118 /a>1 119 /a> a href="+code=out_le32" class="sref">out_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_ctrl" class="sref">codec_ctrl /a>, a href="+code=addr" class="sref">addr /a> + 0x100000);1 120 /a> a href="+code=snd_pmac_burgundy_busy_wait" class="sref">snd_pmac_burgundy_busy_wait /a>( a href="+code=chip" class="sref">chip /a>);1 121 /a> a href="+code=snd_pmac_burgundy_extend_wait" class="sref">snd_pmac_burgundy_extend_wait /a>( a href="+code=chip" class="sref">chip /a>);1 122 /a> a href="+code=val" class="sref">val /a> += ( a href="+code=in_le32" class="sref">in_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_stat" class="sref">codec_stat /a>) >> 4) & 0xff;1 123 /a>1 124 /a> a href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestore /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=reg_lock" class="sref">reg_lock /a>, a href="+code=flags" class="sref">flags /a>);1 125 /a>1 126 /a> return a href="+code=val" class="sref">val /a>;1 127 /a>}1 128 /a>1 129 /a>#define a href="+code=BASE2ADDR" class="sref">BASE2ADDR /a>( a href="+code=base" class="sref">base /a>) (( a href="+code=base" class="sref">base /a>) << 12)1 13tioa>#define a href="+code=ADDR2BASE" class="sref">ADDR2BASE /a>( a href="+code=addr" class="sref">addr /a>) (( a href="+code=addr" class="sref">addr /a>) >> 12)1 131 /a>1 132 /a> spa4 class="comment">/* /spa4.1 133 /a> spa4 class="comment"> * Burgundy volume: 0 - 100, stereo, word reg /spa4.1 134 /a> spa4 class="comment"> */ /spa4.1 135 /a>static void1 136 /a> a href="+code=snd_pmac_burgundy_write_volume" class="sref">snd_pmac_burgundy_write_volume /a>(struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a>, unsigned int a href="+code=address" class="sref">address /a>,1 137 /a> long * a href="+code=volume" class="sref">volume /a>, int a href="+code=shift" class="sref">shift /a>)1 138 /a>{1 139 /a> int a href="+code=hardvolume" class="sref">hardvolume /a>, a href="+code=lvolume" class="sref">lvolume /a>, a href="+code=rvolume" class="sref">rvolume /a>;1 140 /a>1 141 /a> if ( a href="+code=volume" class="sref">volume /a>[0] < 0 || a href="+code=volume" class="sref">volume /a>[0] > 100 ||1 142 /a> a href="+code=volume" class="sref">volume /a>[1] < 0 || a href="+code=volume" class="sref">volume /a>[1] > 100)1 143 /a> return; spa4 class="comment">/* -EINVAL */ /spa4.1 144 /a> a href="+code=lvolume" class="sref">lvolume /a> = a href="+code=volume" class="sref">volume /a>[0] ? a href="+code=volume" class="sref">volume /a>[0] + a href="+code=BURGUNDY_VOLUME_OFFSET" class="sref">BURGUNDY_VOLUME_OFFSET /a> : 0;1 145 /a> a href="+code=rvolume" class="sref">rvolume /a> = a href="+code=volume" class="sref">volume /a>[1] ? a href="+code=volume" class="sref">volume /a>[1] + a href="+code=BURGUNDY_VOLUME_OFFSET" class="sref">BURGUNDY_VOLUME_OFFSET /a> : 0;1 146 /a>1 147 /a> a href="+code=hardvolume" class="sref">hardvolume /a> = a href="+code=lvolume" class="sref">lvolume /a> + ( a href="+code=rvolume" class="sref">rvolume /a> << a href="+code=shift" class="sref">shift /a>);1 148 /a> if ( a href="+code=shift" class="sref">shift /a> == 8)1 149 /a> a href="+code=hardvolume" class="sref">hardvolume /a> |= a href="+code=hardvolume" class="sref">hardvolume /a> << 16;1 150 /a>1 151 /a> a href="+code=snd_pmac_burgundy_wcw" class="sref">snd_pmac_burgundy_wcw /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=address" class="sref">address /a>, a href="+code=hardvolume" class="sref">hardvolume /a>);1 152 /a>}1 153 /a>1 154 /a>static void1 155 /a> a href="+code=snd_pmac_burgundy_read_volume" class="sref">snd_pmac_burgundy_read_volume /a>(struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a>, unsigned int a href="+code=address" class="sref">address /a>,1 156 /a> long * a href="+code=volume" class="sref">volume /a>, int a href="+code=shift" class="sref">shift /a>)1 157 /a>{1 158 /a> int a href="+code=wvolume" class="sref">wvolume /a>;1 159 /a>1 160 /a> a href="+code=wvolume" class="sref">wvolume /a> = a href="+code=snd_pmac_burgundy_rcw" class="sref">snd_pmac_burgundy_rcw /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=address" class="sref">address /a>);1 161 /a>1 162 /a> a href="+code=volume" class="sref">volume /a>[0] = a href="+code=wvolume" class="sref">wvolume /a> & 0xff;1 163 /a> if ( a href="+code=volume" class="sref">volume /a>[0] >= a href="+code=BURGUNDY_VOLUME_OFFSET" class="sref">BURGUNDY_VOLUME_OFFSET /a>)1 164 /a> a href="+code=volume" class="sref">volume /a>[0] -= a href="+code=BURGUNDY_VOLUME_OFFSET" class="sref">BURGUNDY_VOLUME_OFFSET /a>;1 165 /a> else1 166 /a> a href="+code=volume" class="sref">volume /a>[0] = 0;1 167 /a> a href="+code=volume" class="sref">volume /a>[1] = ( a href="+code=wvolume" class="sref">wvolume /a> >> a href="+code=shift" class="sref">shift /a>) & 0xff;1 168 /a> if ( a href="+code=volume" class="sref">volume /a>[1] >= a href="+code=BURGUNDY_VOLUME_OFFSET" class="sref">BURGUNDY_VOLUME_OFFSET /a>)1 169 /a> a href="+code=volume" class="sref">volume /a>[1] -= a href="+code=BURGUNDY_VOLUME_OFFSET" class="sref">BURGUNDY_VOLUME_OFFSET /a>;1 170 /a> else1 171 /a> a href="+code=volume" class="sref">volume /a>[1] = 0;1 172 /a>}1 173 /a>1 174 /a>static int a href="+code=snd_pmac_burgundy_info_volume" class="sref">snd_pmac_burgundy_info_volume /a>(struct a href="+code=snd_kcontrol" class="sref">snd_kcontrol /a> * a href="+code=kcontrol" class="sref">kcontrol /a>,1 175 /a> struct a href="+code=snd_ctl_elem_info" class="sref">snd_ctl_elem_info /a> * a href="+code=uinfo" class="sref">uinfo /a>)1 176 /a>{1 177 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=type" class="sref">type /a> = a href="+code=SNDRV_CTL_ELEM_TYPE_INTEGER" class="sref">SNDRV_CTL_ELEM_TYPE_INTEGER /a>;1 178 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=count" class="sref">count /a> = 2;1 179 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=min" class="sref">min /a> = 0;1 180 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=max" class="sref">max /a> = 100;1 181 /a> return 0;1 182 /a>}1 183 /a>1 184 /a>static int a href="+code=snd_pmac_burgundy_get_volume" class="sref">snd_pmac_burgundy_get_volume /a>(struct a href="+code=snd_kcontrol" class="sref">snd_kcontrol /a> * a href="+code=kcontrol" class="sref">kcontrol /a>,1 185 /a> struct a href="+code=snd_ctl_elem_value" class="sref">snd_ctl_elem_value /a> * a href="+code=ucontrol" class="sref">ucontrol /a>)1 186 /a>{1 187 /a> struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a> = a href="+code=snd_kcontrol_chip" class="sref">snd_kcontrol_chip /a>( a href="+code=kcontrol" class="sref">kcontrol /a>);1 188 /a> unsigned int a href="+code=addr" class="sref">addr /a> = a href="+code=BASE2ADDR" class="sref">BASE2ADDR /a>( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> & 0xff);1 189 /a> int a href="+code=shift" class="sref">shift /a> = ( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 8) & 0xff;1 190 /a> a href="+code=snd_pmac_burgundy_read_volume" class="sref">snd_pmac_burgundy_read_volume /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=addr" class="sref">addr /a>,1 191 /a> a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>, a href="+code=shift" class="sref">shift /a>);1 192 /a> return 0;1 193 /a>}1 194 /a>1 195 /a>static int a href="+code=snd_pmac_burgundy_put_volume" class="sref">snd_pmac_burgundy_put_volume /a>(struct a href="+code=snd_kcontrol" class="sref">snd_kcontrol /a> * a href="+code=kcontrol" class="sref">kcontrol /a>,1 196 /a> struct a href="+code=snd_ctl_elem_value" class="sref">snd_ctl_elem_value /a> * a href="+code=ucontrol" class="sref">ucontrol /a>)1 197 /a>{1 198 /a> struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a> = a href="+code=snd_kcontrol_chip" class="sref">snd_kcontrol_chip /a>( a href="+code=kcontrol" class="sref">kcontrol /a>);1 199 /a> unsigned int a href="+code=addr" class="sref">addr /a> = a href="+code=BASE2ADDR" class="sref">BASE2ADDR /a>( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> & 0xff);1 200 /a> int a href="+code=shift" class="sref">shift /a> = ( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 8) & 0xff;1 201 /a> long a href="+code=nvoices" class="sref">nvoices /a>[2];1 202 /a>1 203 /a> a href="+code=snd_pmac_burgundy_write_volume" class="sref">snd_pmac_burgundy_write_volume /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=addr" class="sref">addr /a>,1 204 /a> a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>, a href="+code=shift" class="sref">shift /a>);1 205 /a> a href="+code=snd_pmac_burgundy_read_volume" class="sref">snd_pmac_burgundy_read_volume /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=addr" class="sref">addr /a>, a href="+code=nvoices" class="sref">nvoices /a>, a href="+code=shift" class="sref">shift /a>);1 206 /a> return ( a href="+code=nvoices" class="sref">nvoices /a>[0] != a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>[0] ||1 207 /a> a href="+code=nvoices" class="sref">nvoices /a>[1] != a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>[1]);1 208 /a>}1 209 /a>1 21tioa>#define a href="+code=BURGUNDY_VOLUME_W" class="sref">BURGUNDY_VOLUME_W /a>( a href="+code=xnam5" class="sref">xnam5 /a>, a href="+code=xindex" class="sref">xindex /a>, a href="+code=addr" class="sref">addr /a>, a href="+code=shift" class="sref">shift /a>) \1 211 /a>{ . a href="+code=ifac5" class="sref">ifac5 /a> = a href="+code=SNDRV_CTL_ELEM_IFACE_MIXER" class="sref">SNDRV_CTL_ELEM_IFACE_MIXER /a>, . a href="+code=nam5" class="sref">nam5 /a> = a href="+code=xnam5" class="sref">xnam5 /a>, . a href="+code=index" class="sref">index /a> = a href="+code=xindex" class="sref">xindex /a>,\1 212 /a> . a href="+code=info" class="sref">info /a> = a href="+code=snd_pmac_burgundy_info_volume" class="sref">snd_pmac_burgundy_info_volume /a>,\1 213 /a> . a href="+code=get" class="sref">get /a> = a href="+code=snd_pmac_burgundy_get_volume" class="sref">snd_pmac_burgundy_get_volume /a>,\1 214 /a> . a href="+code=put" class="sref">put /a> = a href="+code=snd_pmac_burgundy_put_volume" class="sref">snd_pmac_burgundy_put_volume /a>,\1 215 /a> . a href="+code=private_value" class="sref">private_value /a> = (( a href="+code=ADDR2BASE" class="sref">ADDR2BASE /a>( a href="+code=addr" class="sref">addr /a>) & 0xff) | (( a href="+code=shift" class="sref">shift /a>) << 8)) }1 216 /a>1 217 /a> spa4 class="comment">/* /spa4.1 218 /a> spa4 class="comment"> * Burgundy volume: 0 - 100, stereo, 2-byte reg /spa4.1 219 /a> spa4 class="comment"> */ /spa4.1 220 /a>static void1 221 /a> a href="+code=snd_pmac_burgundy_write_volume_2b" class="sref">snd_pmac_burgundy_write_volume_2b /a>(struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a>, unsigned int a href="+code=address" class="sref">address /a>,1 222 /a> long * a href="+code=volume" class="sref">volume /a>, int a href="+code=off" class="sref">off /a>)1 223 /a>{1 224 /a> int a href="+code=lvolume" class="sref">lvolume /a>, a href="+code=rvolume" class="sref">rvolume /a>;1 225 /a>1 226 /a> a href="+code=off" class="sref">off /a> |= a href="+code=off" class="sref">off /a> << 2;1 227 /a> a href="+code=lvolume" class="sref">lvolume /a> = a href="+code=volume" class="sref">volume /a>[0] ? a href="+code=volume" class="sref">volume /a>[0] + a href="+code=BURGUNDY_VOLUME_OFFSET" class="sref">BURGUNDY_VOLUME_OFFSET /a> : 0;1 228 /a> a href="+code=rvolume" class="sref">rvolume /a> = a href="+code=volume" class="sref">volume /a>[1] ? a href="+code=volume" class="sref">volume /a>[1] + a href="+code=BURGUNDY_VOLUME_OFFSET" class="sref">BURGUNDY_VOLUME_OFFSET /a> : 0;1 229 /a>1 230 /a> a href="+code=snd_pmac_burgundy_wcb" class="sref">snd_pmac_burgundy_wcb /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=address" class="sref">address /a> + a href="+code=off" class="sref">off /a>, a href="+code=lvolume" class="sref">lvolume /a>);1 231 /a> a href="+code=snd_pmac_burgundy_wcb" class="sref">snd_pmac_burgundy_wcb /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=address" class="sref">address /a> + a href="+code=off" class="sref">off /a> + 0x500, a href="+code=rvolume" class="sref">rvolume /a>);1 232 /a>}1 233 /a>1 234 /a>static void1 235 /a> a href="+code=snd_pmac_burgundy_read_volume_2b" class="sref">snd_pmac_burgundy_read_volume_2b /a>(struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a>, unsigned int a href="+code=address" class="sref">address /a>,1 236 /a> long * a href="+code=volume" class="sref">volume /a>, int a href="+code=off" class="sref">off /a>)1 237 /a>{1 238 /a> a href="+code=volume" class="sref">volume /a>[0] = a href="+code=snd_pmac_burgundy_rcb" class="sref">snd_pmac_burgundy_rcb /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=address" class="sref">address /a> + a href="+code=off" class="sref">off /a>);1 239 /a> if ( a href="+code=volume" class="sref">volume /a>[0] >= a href="+code=BURGUNDY_VOLUME_OFFSET" class="sref">BURGUNDY_VOLUME_OFFSET /a>)1 240 /a> a href="+code=volume" class="sref">volume /a>[0] -= a href="+code=BURGUNDY_VOLUME_OFFSET" class="sref">BURGUNDY_VOLUME_OFFSET /a>;1 241 /a> else1 242 /a> a href="+code=volume" class="sref">volume /a>[0] = 0;1 243 /a> a href="+code=volume" class="sref">volume /a>[1] = a href="+code=snd_pmac_burgundy_rcb" class="sref">snd_pmac_burgundy_rcb /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=address" class="sref">address /a> + a href="+code=off" class="sref">off /a> + 0x100);1 244 /a> if ( a href="+code=volume" class="sref">volume /a>[1] >= a href="+code=BURGUNDY_VOLUME_OFFSET" class="sref">BURGUNDY_VOLUME_OFFSET /a>)1 245 /a> a href="+code=volume" class="sref">volume /a>[1] -= a href="+code=BURGUNDY_VOLUME_OFFSET" class="sref">BURGUNDY_VOLUME_OFFSET /a>;1 246 /a> else1 247 /a> a href="+code=volume" class="sref">volume /a>[1] = 0;1 248 /a>}1 249 /a>1 250 /a>static int a href="+code=snd_pmac_burgundy_info_volume_2b" class="sref">snd_pmac_burgundy_info_volume_2b /a>(struct a href="+code=snd_kcontrol" class="sref">snd_kcontrol /a> * a href="+code=kcontrol" class="sref">kcontrol /a>,1 251 /a> struct a href="+code=snd_ctl_elem_info" class="sref">snd_ctl_elem_info /a> * a href="+code=uinfo" class="sref">uinfo /a>)1 252 /a>{1 253 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=type" class="sref">type /a> = a href="+code=SNDRV_CTL_ELEM_TYPE_INTEGER" class="sref">SNDRV_CTL_ELEM_TYPE_INTEGER /a>;1 254 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=count" class="sref">count /a> = 2;1 255 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=min" class="sref">min /a> = 0;1 256 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=max" class="sref">max /a> = 100;1 257 /a> return 0;1 258 /a>}1 259 /a>1 260 /a>static int a href="+code=snd_pmac_burgundy_get_volume_2b" class="sref">snd_pmac_burgundy_get_volume_2b /a>(struct a href="+code=snd_kcontrol" class="sref">snd_kcontrol /a> * a href="+code=kcontrol" class="sref">kcontrol /a>,1 261 /a> struct a href="+code=snd_ctl_elem_value" class="sref">snd_ctl_elem_value /a> * a href="+code=ucontrol" class="sref">ucontrol /a>)1 262 /a>{1 263 /a> struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a> = a href="+code=snd_kcontrol_chip" class="sref">snd_kcontrol_chip /a>( a href="+code=kcontrol" class="sref">kcontrol /a>);1 264 /a> unsigned int a href="+code=addr" class="sref">addr /a> = a href="+code=BASE2ADDR" class="sref">BASE2ADDR /a>( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> & 0xff);1 265 /a> int a href="+code=off" class="sref">off /a> = a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> & 0x300;1 266 /a> a href="+code=snd_pmac_burgundy_read_volume_2b" class="sref">snd_pmac_burgundy_read_volume_2b /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=addr" class="sref">addr /a>,1 267 /a> a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>, a href="+code=off" class="sref">off /a>);1 268 /a> return 0;1 269 /a>}1 270 /a>1 271 /a>static int a href="+code=snd_pmac_burgundy_put_volume_2b" class="sref">snd_pmac_burgundy_put_volume_2b /a>(struct a href="+code=snd_kcontrol" class="sref">snd_kcontrol /a> * a href="+code=kcontrol" class="sref">kcontrol /a>,1 272 /a> struct a href="+code=snd_ctl_elem_value" class="sref">snd_ctl_elem_value /a> * a href="+code=ucontrol" class="sref">ucontrol /a>)1 273 /a>{1 274 /a> struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a> = a href="+code=snd_kcontrol_chip" class="sref">snd_kcontrol_chip /a>( a href="+code=kcontrol" class="sref">kcontrol /a>);1 275 /a> unsigned int a href="+code=addr" class="sref">addr /a> = a href="+code=BASE2ADDR" class="sref">BASE2ADDR /a>( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> & 0xff);1 276 /a> int a href="+code=off" class="sref">off /a> = a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> & 0x300;1 277 /a> long a href="+code=nvoices" class="sref">nvoices /a>[2];1 278 /a>1 279 /a> a href="+code=snd_pmac_burgundy_write_volume_2b" class="sref">snd_pmac_burgundy_write_volume_2b /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=addr" class="sref">addr /a>,1 280 /a> a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>, a href="+code=off" class="sref">off /a>);1 281 /a> a href="+code=snd_pmac_burgundy_read_volume_2b" class="sref">snd_pmac_burgundy_read_volume_2b /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=addr" class="sref">addr /a>, a href="+code=nvoices" class="sref">nvoices /a>, a href="+code=off" class="sref">off /a>);1 282 /a> return ( a href="+code=nvoices" class="sref">nvoices /a>[0] != a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>[0] ||1 283 /a> a href="+code=nvoices" class="sref">nvoices /a>[1] != a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>[1]);1 284 /a>}1 285 /a>1 286 /a>#define a href="+code=BURGUNDY_VOLUME_2B" class="sref">BURGUNDY_VOLUME_2B /a>( a href="+code=xnam5" class="sref">xnam5 /a>, a href="+code=xindex" class="sref">xindex /a>, a href="+code=addr" class="sref">addr /a>, a href="+code=off" class="sref">off /a>) \1 287 /a>{ . a href="+code=ifac5" class="sref">ifac5 /a> = a href="+code=SNDRV_CTL_ELEM_IFACE_MIXER" class="sref">SNDRV_CTL_ELEM_IFACE_MIXER /a>, . a href="+code=nam5" class="sref">nam5 /a> = a href="+code=xnam5" class="sref">xnam5 /a>, . a href="+code=index" class="sref">index /a> = a href="+code=xindex" class="sref">xindex /a>,\1 288 /a> . a href="+code=info" class="sref">info /a> = a href="+code=snd_pmac_burgundy_info_volume_2b" class="sref">snd_pmac_burgundy_info_volume_2b /a>,\1 289 /a> . a href="+code=get" class="sref">get /a> = a href="+code=snd_pmac_burgundy_get_volume_2b" class="sref">snd_pmac_burgundy_get_volume_2b /a>,\1 290 /a> . a href="+code=put" class="sref">put /a> = a href="+code=snd_pmac_burgundy_put_volume_2b" class="sref">snd_pmac_burgundy_put_volume_2b /a>,\1 291 /a> . a href="+code=private_value" class="sref">private_value /a> = (( a href="+code=ADDR2BASE" class="sref">ADDR2BASE /a>( a href="+code=addr" class="sref">addr /a>) & 0xff) | (( a href="+code=off" class="sref">off /a>) << 8)) }1 292 /a>1 293 /a> spa4 class="comment">/* /spa4.1 294 /a> spa4 class="comment"> * Burgundy gain/attenuation: 0 - 15, mono/stereo, byte reg /spa4.1 295 /a> spa4 class="comment"> */ /spa4.1 296 /a>static int a href="+code=snd_pmac_burgundy_info_gain" class="sref">snd_pmac_burgundy_info_gain /a>(struct a href="+code=snd_kcontrol" class="sref">snd_kcontrol /a> * a href="+code=kcontrol" class="sref">kcontrol /a>,1 297 /a> struct a href="+code=snd_ctl_elem_info" class="sref">snd_ctl_elem_info /a> * a href="+code=uinfo" class="sref">uinfo /a>)1 298 /a>{1 299 /a> int a href="+code=stereo" class="sref">stereo /a> = ( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 24) & 1;1 300 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=type" class="sref">type /a> = a href="+code=SNDRV_CTL_ELEM_TYPE_INTEGER" class="sref">SNDRV_CTL_ELEM_TYPE_INTEGER /a>;1 301 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=count" class="sref">count /a> = a href="+code=stereo" class="sref">stereo /a> + 1;1 302 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=min" class="sref">min /a> = 0;1 303 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=max" class="sref">max /a> = 15;1 304 /a> return 0;1 305 /a>}1 306 /a>1 307 /a>static int a href="+code=snd_pmac_burgundy_get_gain" class="sref">snd_pmac_burgundy_get_gain /a>(struct a href="+code=snd_kcontrol" class="sref">snd_kcontrol /a> * a href="+code=kcontrol" class="sref">kcontrol /a>,1 308 /a> struct a href="+code=snd_ctl_elem_value" class="sref">snd_ctl_elem_value /a> * a href="+code=ucontrol" class="sref">ucontrol /a>)1 309 /a>{1 310 /a> struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a> = a href="+code=snd_kcontrol_chip" class="sref">snd_kcontrol_chip /a>( a href="+code=kcontrol" class="sref">kcontrol /a>);1 311 /a> unsigned int a href="+code=addr" class="sref">addr /a> = a href="+code=BASE2ADDR" class="sref">BASE2ADDR /a>( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> & 0xff);1 312 /a> int a href="+code=stereo" class="sref">stereo /a> = ( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 24) & 1;1 313 /a> int a href="+code=atten" class="sref">atten /a> = ( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 25) & 1;1 314 /a> int a href="+code=oval" class="sref">oval /a>;1 315 /a>1 316 /a> a href="+code=oval" class="sref">oval /a> = a href="+code=snd_pmac_burgundy_rcb" class="sref">snd_pmac_burgundy_rcb /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=addr" class="sref">addr /a>);1 317 /a> if ( a href="+code=atten" class="sref">atten /a>)1 318 /a> a href="+code=oval" class="sref">oval /a> = ~ a href="+code=oval" class="sref">oval /a> & 0xff;1 319 /a> a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>[0] = a href="+code=oval" class="sref">oval /a> & 0xf;1 320 /a> if ( a href="+code=stereo" class="sref">stereo /a>)1 321 /a> a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>[1] = ( a href="+code=oval" class="sref">oval /a> >> 4) & 0xf;1 322 /a> return 0;1 323 /a>}1 324 /a>1 325 /a>static int a href="+code=snd_pmac_burgundy_put_gain" class="sref">snd_pmac_burgundy_put_gain /a>(struct a href="+code=snd_kcontrol" class="sref">snd_kcontrol /a> * a href="+code=kcontrol" class="sref">kcontrol /a>,1 326 /a> struct a href="+code=snd_ctl_elem_value" class="sref">snd_ctl_elem_value /a> * a href="+code=ucontrol" class="sref">ucontrol /a>)1 327 /a>{1 328 /a> struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a> = a href="+code=snd_kcontrol_chip" class="sref">snd_kcontrol_chip /a>( a href="+code=kcontrol" class="sref">kcontrol /a>);1 329 /a> unsigned int a href="+code=addr" class="sref">addr /a> = a href="+code=BASE2ADDR" class="sref">BASE2ADDR /a>( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> & 0xff);1 330 /a> int a href="+code=stereo" class="sref">stereo /a> = ( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 24) & 1;1 331 /a> int a href="+code=atten" class="sref">atten /a> = ( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 25) & 1;1 332 /a> int a href="+code=oval" class="sref">oval /a>, a href="+code=val" class="sref">val /a>;1 333 /a>1 334 /a> a href="+code=oval" class="sref">oval /a> = a href="+code=snd_pmac_burgundy_rcb" class="sref">snd_pmac_burgundy_rcb /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=addr" class="sref">addr /a>);1 335 /a> if ( a href="+code=atten" class="sref">atten /a>)1 336 /a> a href="+code=oval" class="sref">oval /a> = ~ a href="+code=oval" class="sref">oval /a> & 0xff;1 337 /a> a href="+code=val" class="sref">val /a> = a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>[0];1 338 /a> if ( a href="+code=stereo" class="sref">stereo /a>)1 339 /a> a href="+code=val" class="sref">val /a> |= a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>[1] << 4;1 340 /a> else1 341 /a> a href="+code=val" class="sref">val /a> |= a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>[0] << 4;1 342 /a> if ( a href="+code=atten" class="sref">atten /a>)1 343 /a> a href="+code=val" class="sref">val /a> = ~ a href="+code=val" class="sref">val /a> & 0xff;1 344 /a> a href="+code=snd_pmac_burgundy_wcb" class="sref">snd_pmac_burgundy_wcb /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=addr" class="sref">addr /a>, a href="+code=val" class="sref">val /a>);1 345 /a> return a href="+code=val" class="sref">val /a> != a href="+code=oval" class="sref">oval /a>;1 346 /a>}1 347 /a>1 348 /a>#define a href="+code=BURGUNDY_VOLUME_B" class="sref">BURGUNDY_VOLUME_B /a>( a href="+code=xnam5" class="sref">xnam5 /a>, a href="+code=xindex" class="sref">xindex /a>, a href="+code=addr" class="sref">addr /a>, a href="+code=stereo" class="sref">stereo /a>, a href="+code=atten" class="sref">atten /a>) \1 349 /a>{ . a href="+code=ifac5" class="sref">ifac5 /a> = a href="+code=SNDRV_CTL_ELEM_IFACE_MIXER" class="sref">SNDRV_CTL_ELEM_IFACE_MIXER /a>, . a href="+code=nam5" class="sref">nam5 /a> = a href="+code=xnam5" class="sref">xnam5 /a>, . a href="+code=index" class="sref">index /a> = a href="+code=xindex" class="sref">xindex /a>,\1 350 /a> . a href="+code=info" class="sref">info /a> = a href="+code=snd_pmac_burgundy_info_gain" class="sref">snd_pmac_burgundy_info_gain /a>,\1 351 /a> . a href="+code=get" class="sref">get /a> = a href="+code=snd_pmac_burgundy_get_gain" class="sref">snd_pmac_burgundy_get_gain /a>,\1 352 /a> . a href="+code=put" class="sref">put /a> = a href="+code=snd_pmac_burgundy_put_gain" class="sref">snd_pmac_burgundy_put_gain /a>,\1 353 /a> . a href="+code=private_value" class="sref">private_value /a> = ( a href="+code=ADDR2BASE" class="sref">ADDR2BASE /a>( a href="+code=addr" class="sref">addr /a>) | (( a href="+code=stereo" class="sref">stereo /a>) << 24) | (( a href="+code=atten" class="sref">atten /a>) << 25)) }1 354 /a>1 355 /a> spa4 class="comment">/* /spa4.1 356 /a> spa4 class="comment"> * Burgundy switch: 0/1, mono/stereo, word reg /spa4.1 357 /a> spa4 class="comment"> */ /spa4.1 358 /a>static int a href="+code=snd_pmac_burgundy_info_switch_w" class="sref">snd_pmac_burgundy_info_switch_w /a>(struct a href="+code=snd_kcontrol" class="sref">snd_kcontrol /a> * a href="+code=kcontrol" class="sref">kcontrol /a>,1 359 /a> struct a href="+code=snd_ctl_elem_info" class="sref">snd_ctl_elem_info /a> * a href="+code=uinfo" class="sref">uinfo /a>)1 360 /a>{1 361 /a> int a href="+code=stereo" class="sref">stereo /a> = ( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 24) & 1;1 362 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=type" class="sref">type /a> = a href="+code=SNDRV_CTL_ELEM_TYPE_BOOLEAN" class="sref">SNDRV_CTL_ELEM_TYPE_BOOLEAN /a>;1 363 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=count" class="sref">count /a> = a href="+code=stereo" class="sref">stereo /a> + 1;1 364 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=min" class="sref">min /a> = 0;1 365 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=max" class="sref">max /a> = 1;1 366 /a> return 0;1 367 /a>}1 368 /a>1 369 /a>static int a href="+code=snd_pmac_burgundy_get_switch_w" class="sref">snd_pmac_burgundy_get_switch_w /a>(struct a href="+code=snd_kcontrol" class="sref">snd_kcontrol /a> * a href="+code=kcontrol" class="sref">kcontrol /a>,1 370 /a> struct a href="+code=snd_ctl_elem_value" class="sref">snd_ctl_elem_value /a> * a href="+code=ucontrol" class="sref">ucontrol /a>)1 371 /a>{1 372 /a> struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a> = a href="+code=snd_kcontrol_chip" class="sref">snd_kcontrol_chip /a>( a href="+code=kcontrol" class="sref">kcontrol /a>);1 373 /a> unsigned int a href="+code=addr" class="sref">addr /a> = a href="+code=BASE2ADDR" class="sref">BASE2ADDR /a>(( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 16) & 0xff);1 374 /a> int a href="+code=lmask" class="sref">lmask /a> = 1 << ( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> & 0xff);1 375 /a> int a href="+code=rmask" class="sref">rmask /a> = 1 << (( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 8) & 0xff);1 376 /a> int a href="+code=stereo" class="sref">stereo /a> = ( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 24) & 1;1 377 /a> int a href="+code=val" class="sref">val /a> = a href="+code=snd_pmac_burgundy_rcw" class="sref">snd_pmac_burgundy_rcw /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=addr" class="sref">addr /a>);1 378 /a> a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>[0] = ( a href="+code=val" class="sref">val /a> & a href="+code=lmask" class="sref">lmask /a>) ? 1 : 0;1 379 /a> if ( a href="+code=stereo" class="sref">stereo /a>)1 380 /a> a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>[1] = ( a href="+code=val" class="sref">val /a> & a href="+code=rmask" class="sref">rmask /a>) ? 1 : 0;1 381 /a> return 0;1 382 /a>}1 383 /a>1 384 /a>static int a href="+code=snd_pmac_burgundy_put_switch_w" class="sref">snd_pmac_burgundy_put_switch_w /a>(struct a href="+code=snd_kcontrol" class="sref">snd_kcontrol /a> * a href="+code=kcontrol" class="sref">kcontrol /a>,1 385 /a> struct a href="+code=snd_ctl_elem_value" class="sref">snd_ctl_elem_value /a> * a href="+code=ucontrol" class="sref">ucontrol /a>)1 386 /a>{1 387 /a> struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a> = a href="+code=snd_kcontrol_chip" class="sref">snd_kcontrol_chip /a>( a href="+code=kcontrol" class="sref">kcontrol /a>);1 388 /a> unsigned int a href="+code=addr" class="sref">addr /a> = a href="+code=BASE2ADDR" class="sref">BASE2ADDR /a>(( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 16) & 0xff);1 389 /a> int a href="+code=lmask" class="sref">lmask /a> = 1 << ( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> & 0xff);1 390 /a> int a href="+code=rmask" class="sref">rmask /a> = 1 << (( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 8) & 0xff);1 391 /a> int a href="+code=stereo" class="sref">stereo /a> = ( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 24) & 1;1 392 /a> int a href="+code=val" class="sref">val /a>, a href="+code=oval" class="sref">oval /a>;1 393 /a> a href="+code=oval" class="sref">oval /a> = a href="+code=snd_pmac_burgundy_rcw" class="sref">snd_pmac_burgundy_rcw /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=addr" class="sref">addr /a>);1 394 /a> a href="+code=val" class="sref">val /a> = a href="+code=oval" class="sref">oval /a> & ~( a href="+code=lmask" class="sref">lmask /a> | ( a href="+code=stereo" class="sref">stereo /a> ? a href="+code=rmask" class="sref">rmask /a> : 0));1 395 /a> if ( a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>[0])1 396 /a> a href="+code=val" class="sref">val /a> |= a href="+code=lmask" class="sref">lmask /a>;1 397 /a> if ( a href="+code=stereo" class="sref">stereo /a> && a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>[1])1 398 /a> a href="+code=val" class="sref">val /a> |= a href="+code=rmask" class="sref">rmask /a>;1 399 /a> a href="+code=snd_pmac_burgundy_wcw" class="sref">snd_pmac_burgundy_wcw /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=addr" class="sref">addr /a>, a href="+code=val" class="sref">val /a>);1 400 /a> return a href="+code=val" class="sref">val /a> != a href="+code=oval" class="sref">oval /a>;1 401 /a>}1 402 /a>1 403 /a>#define a href="+code=BURGUNDY_SWITCH_W" class="sref">BURGUNDY_SWITCH_W /a>( a href="+code=xnam5" class="sref">xnam5 /a>, a href="+code=xindex" class="sref">xindex /a>, a href="+code=addr" class="sref">addr /a>, a href="+code=lbit" class="sref">lbit /a>, a href="+code=rbit" class="sref">rbit /a>, a href="+code=stereo" class="sref">stereo /a>) \1 404 /a>{ . a href="+code=ifac5" class="sref">ifac5 /a> = a href="+code=SNDRV_CTL_ELEM_IFACE_MIXER" class="sref">SNDRV_CTL_ELEM_IFACE_MIXER /a>, . a href="+code=nam5" class="sref">nam5 /a> = a href="+code=xnam5" class="sref">xnam5 /a>, . a href="+code=index" class="sref">index /a> = a href="+code=xindex" class="sref">xindex /a>,\1 405 /a> . a href="+code=info" class="sref">info /a> = a href="+code=snd_pmac_burgundy_info_switch_w" class="sref">snd_pmac_burgundy_info_switch_w /a>,\1 406 /a> . a href="+code=get" class="sref">get /a> = a href="+code=snd_pmac_burgundy_get_switch_w" class="sref">snd_pmac_burgundy_get_switch_w /a>,\1 407 /a> . a href="+code=put" class="sref">put /a> = a href="+code=snd_pmac_burgundy_put_switch_w" class="sref">snd_pmac_burgundy_put_switch_w /a>,\1 408 /a> . a href="+code=private_value" class="sref">private_value /a> = (( a href="+code=lbit" class="sref">lbit /a>) | (( a href="+code=rbit" class="sref">rbit /a>) << 8)\1 409 /a> | ( a href="+code=ADDR2BASE" class="sref">ADDR2BASE /a>( a href="+code=addr" class="sref">addr /a>) << 16) | (( a href="+code=stereo" class="sref">stereo /a>) << 24)) }1 410 /a>1 411 /a> spa4 class="comment">/* /spa4.1 412 /a> spa4 class="comment"> * Burgundy switch: 0/1, mono/stereo, byte reg, bit mask /spa4.1 413 /a> spa4 class="comment"> */ /spa4.1 414 /a>static int a href="+code=snd_pmac_burgundy_info_switch_b" class="sref">snd_pmac_burgundy_info_switch_b /a>(struct a href="+code=snd_kcontrol" class="sref">snd_kcontrol /a> * a href="+code=kcontrol" class="sref">kcontrol /a>,1 415 /a> struct a href="+code=snd_ctl_elem_info" class="sref">snd_ctl_elem_info /a> * a href="+code=uinfo" class="sref">uinfo /a>)1 416 /a>{1 417 /a> int a href="+code=stereo" class="sref">stereo /a> = ( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 24) & 1;1 418 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=type" class="sref">type /a> = a href="+code=SNDRV_CTL_ELEM_TYPE_BOOLEAN" class="sref">SNDRV_CTL_ELEM_TYPE_BOOLEAN /a>;1 419 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=count" class="sref">count /a> = a href="+code=stereo" class="sref">stereo /a> + 1;1 420 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=min" class="sref">min /a> = 0;1 421 /a> a href="+code=uinfo" class="sref">uinfo /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=max" class="sref">max /a> = 1;1 422 /a> return 0;1 423 /a>}1 424 /a>1 425 /a>static int a href="+code=snd_pmac_burgundy_get_switch_b" class="sref">snd_pmac_burgundy_get_switch_b /a>(struct a href="+code=snd_kcontrol" class="sref">snd_kcontrol /a> * a href="+code=kcontrol" class="sref">kcontrol /a>,1 426 /a> struct a href="+code=snd_ctl_elem_value" class="sref">snd_ctl_elem_value /a> * a href="+code=ucontrol" class="sref">ucontrol /a>)1 427 /a>{1 428 /a> struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a> = a href="+code=snd_kcontrol_chip" class="sref">snd_kcontrol_chip /a>( a href="+code=kcontrol" class="sref">kcontrol /a>);1 429 /a> unsigned int a href="+code=addr" class="sref">addr /a> = a href="+code=BASE2ADDR" class="sref">BASE2ADDR /a>(( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 16) & 0xff);1 430 /a> int a href="+code=lmask" class="sref">lmask /a> = a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> & 0xff;1 431 /a> int a href="+code=rmask" class="sref">rmask /a> = ( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 8) & 0xff;1 432 /a> int a href="+code=stereo" class="sref">stereo /a> = ( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 24) & 1;1 433 /a> int a href="+code=val" class="sref">val /a> = a href="+code=snd_pmac_burgundy_rcb" class="sref">snd_pmac_burgundy_rcb /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=addr" class="sref">addr /a>);1 434 /a> a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>[0] = ( a href="+code=val" class="sref">val /a> & a href="+code=lmask" class="sref">lmask /a>) ? 1 : 0;1 435 /a> if ( a href="+code=stereo" class="sref">stereo /a>)1 436 /a> a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>[1] = ( a href="+code=val" class="sref">val /a> & a href="+code=rmask" class="sref">rmask /a>) ? 1 : 0;1 437 /a> return 0;1 438 /a>}1 439 /a>1 440 /a>static int a href="+code=snd_pmac_burgundy_put_switch_b" class="sref">snd_pmac_burgundy_put_switch_b /a>(struct a href="+code=snd_kcontrol" class="sref">snd_kcontrol /a> * a href="+code=kcontrol" class="sref">kcontrol /a>,1 441 /a> struct a href="+code=snd_ctl_elem_value" class="sref">snd_ctl_elem_value /a> * a href="+code=ucontrol" class="sref">ucontrol /a>)1 442 /a>{1 443 /a> struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a> = a href="+code=snd_kcontrol_chip" class="sref">snd_kcontrol_chip /a>( a href="+code=kcontrol" class="sref">kcontrol /a>);1 444 /a> unsigned int a href="+code=addr" class="sref">addr /a> = a href="+code=BASE2ADDR" class="sref">BASE2ADDR /a>(( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 16) & 0xff);1 445 /a> int a href="+code=lmask" class="sref">lmask /a> = a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> & 0xff;1 446 /a> int a href="+code=rmask" class="sref">rmask /a> = ( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 8) & 0xff;1 447 /a> int a href="+code=stereo" class="sref">stereo /a> = ( a href="+code=kcontrol" class="sref">kcontrol /a>-> a href="+code=private_value" class="sref">private_value /a> >> 24) & 1;1 448 /a> int a href="+code=val" class="sref">val /a>, a href="+code=oval" class="sref">oval /a>;1 449 /a> a href="+code=oval" class="sref">oval /a> = a href="+code=snd_pmac_burgundy_rcb" class="sref">snd_pmac_burgundy_rcb /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=addr" class="sref">addr /a>);1 450 /a> a href="+code=val" class="sref">val /a> = a href="+code=oval" class="sref">oval /a> & ~( a href="+code=lmask" class="sref">lmask /a> | a href="+code=rmask" class="sref">rmask /a>);1 451 /a> if ( a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>[0])1 452 /a> a href="+code=val" class="sref">val /a> |= a href="+code=lmask" class="sref">lmask /a>;1 453 /a> if ( a href="+code=stereo" class="sref">stereo /a> && a href="+code=ucontrol" class="sref">ucontrol /a>-> a href="+code=value" class="sref">value /a>. a href="+code=integer" class="sref">integer /a>. a href="+code=value" class="sref">value /a>[1])1 454 /a> a href="+code=val" class="sref">val /a> |= a href="+code=rmask" class="sref">rmask /a>;1 455 /a> a href="+code=snd_pmac_burgundy_wcb" class="sref">snd_pmac_burgundy_wcb /a>( a href="+code=chip" class="sref">chip /a>, a href="+code=addr" class="sref">addr /a>, a href="+code=val" class="sref">val /a>);1 456 /a> return a href="+code=val" class="sref">val /a> != a href="+code=oval" class="sref">oval /a>;1 457 /a>}1 458 /a>1 459 /a>#define a href="+code=BURGUNDY_SWITCH_B" class="sref">BURGUNDY_SWITCH_B /a>( a href="+code=xnam5" class="sref">xnam5 /a>, a href="+code=xindex" class="sref">xindex /a>, a href="+code=addr" class="sref">addr /a>, a href="+code=lmask" class="sref">lmask /a>, a href="+code=rmask" class="sref">rmask /a>, a href="+code=stereo" class="sref">stereo /a>) \1 460 /a>{ . a href="+code=ifac5" class="sref">ifac5 /a> = a href="+code=SNDRV_CTL_ELEM_IFACE_MIXER" class="sref">SNDRV_CTL_ELEM_IFACE_MIXER /a>, . a href="+code=nam5" class="sref">nam5 /a> = a href="+code=xnam5" class="sref">xnam5 /a>, . a href="+code=index" class="sref">index /a> = a href="+code=xindex" class="sref">xindex /a>,\1 461 /a> . a href="+code=info" class="sref">info /a> = a href="+code=snd_pmac_burgundy_info_switch_b" class="sref">snd_pmac_burgundy_info_switch_b /a>,\1 462 /a> . a href="+code=get" class="sref">get /a> = a href="+code=snd_pmac_burgundy_get_switch_b" class="sref">snd_pmac_burgundy_get_switch_b /a>,\1 463 /a> . a href="+code=put" class="sref">put /a> = a href="+code=snd_pmac_burgundy_put_switch_b" class="sref">snd_pmac_burgundy_put_switch_b /a>,\1 464 /a> . a href="+code=private_value" class="sref">private_value /a> = (( a href="+code=lmask" class="sref">lmask /a>) | (( a href="+code=rmask" class="sref">rmask /a>) << 8)\1 465 /a> | ( a href="+code=ADDR2BASE" class="sref">ADDR2BASE /a>( a href="+code=addr" class="sref">addr /a>) << 16) | (( a href="+code=stereo" class="sref">stereo /a>) << 24)) }1 466 /a>1 467 /a> spa4 class="comment">/* /spa4.1 468 /a> spa4 class="comment"> * Burgundy mixers /spa4.1 469 /a> spa4 class="comment"> */ /spa4.1 470 /a>static struct a href="+code=snd_kcontrol_new" class="sref">snd_kcontrol_new /a> a href="+code=snd_pmac_burgundy_mixers" class="sref">snd_pmac_burgundy_mixers /a>[] a href="+code=__devinitdata" class="sref">__devinitdata /a> = {1 471 /a> a href="+code=BURGUNDY_VOLUME_W" class="sref">BURGUNDY_VOLUME_W /a>( spa4 class="string">"Master Playback Volume" /spa4., 0,1 472 /a> a href="+code=MASK_ADDR_BURGUNDY_MASTER_VOLUME" class="sref">MASK_ADDR_BURGUNDY_MASTER_VOLUME /a>, 8),1 473 /a> a href="+code=BURGUNDY_VOLUME_W" class="sref">BURGUNDY_VOLUME_W /a>( spa4 class="string">"CD Capture Volume" /spa4., 0,1 474 /a> a href="+code=MASK_ADDR_BURGUNDY_VOLCD" class="sref">MASK_ADDR_BURGUNDY_VOLCD /a>, 16),1 475 /a> a href="+code=BURGUNDY_VOLUME_2B" class="sref">BURGUNDY_VOLUME_2B /a>( spa4 class="string">"Input Capture Volume" /spa4., 0,1 476 /a> a href="+code=MASK_ADDR_BURGUNDY_VOLMIX01" class="sref">MASK_ADDR_BURGUNDY_VOLMIX01 /a>, 2),1 477 /a> a href="+code=BURGUNDY_VOLUME_2B" class="sref">BURGUNDY_VOLUME_2B /a>( spa4 class="string">"Mixer Playback Volume" /spa4., 0,1 478 /a> a href="+code=MASK_ADDR_BURGUNDY_VOLMIX23" class="sref">MASK_ADDR_BURGUNDY_VOLMIX23 /a>, 0),1 479 /a> a href="+code=BURGUNDY_VOLUME_B" class="sref">BURGUNDY_VOLUME_B /a>( spa4 class="string">"CD Gain Capture Volume" /spa4., 0,1 480 /a> a href="+code=MASK_ADDR_BURGUNDY_GAINCD" class="sref">MASK_ADDR_BURGUNDY_GAINCD /a>, 1, 0),1 481 /a> a href="+code=BURGUNDY_SWITCH_W" class="sref">BURGUNDY_SWITCH_W /a>( spa4 class="string">"Master Capture Switch" /spa4., 0,1 482 /a> a href="+code=MASK_ADDR_BURGUNDY_OUTPUTENABLES" class="sref">MASK_ADDR_BURGUNDY_OUTPUTENABLES /a>, 24, 0, 0),1 483 /a> a href="+code=BURGUNDY_SWITCH_W" class="sref">BURGUNDY_SWITCH_W /a>( spa4 class="string">"CD Capture Switch" /spa4., 0,1 484 /a> a href="+code=MASK_ADDR_BURGUNDY_CAPTURESELECTS" class="sref">MASK_ADDR_BURGUNDY_CAPTURESELECTS /a>, 0, 16, 1),1 485 /a> a href="+code=BURGUNDY_SWITCH_W" class="sref">BURGUNDY_SWITCH_W /a>( spa4 class="string">"CD Playback Switch" /spa4., 0,1 486 /a> a href="+code=MASK_ADDR_BURGUNDY_OUTPUTSELECTS" class="sref">MASK_ADDR_BURGUNDY_OUTPUTSELECTS /a>, 0, 16, 1),1 487 /a> spa4 class="comment">/* BURGUNDY_SWITCH_W("Loop Capture Switch", 0, /spa4.1 488 /a> spa4 class="comment"> * MASK_ADDR_BURGUNDY_CAPTURESELECTS, 8, 24, 1), /spa4.1 489 /a> spa4 class="comment"> * BURGUNDY_SWITCH_B("Mixer out Capture Switch", 0, /spa4.1 490 /a> spa4 class="comment"> * MASK_ADDR_BURGUNDY_HOSTIFAD, 0x02, 0, 0), /spa4.1 491 /a> spa4 class="comment"> * BURGUNDY_SWITCH_B("Mixer Capture Switch", 0, /spa4.1 492 /a> spa4 class="comment"> * MASK_ADDR_BURGUNDY_HOSTIFAD, 0x01, 0, 0), /spa4.1 493 /a> spa4 class="comment"> * BURGUNDY_SWITCH_B("PCM out Capture Switch", 0, /spa4.1 494 /a> spa4 class="comment"> * MASK_ADDR_BURGUNDY_HOSTIFEH, 0x02, 0, 0), /spa4.1 495 /a> spa4 class="comment"> */ /spa4. a href="+code=BURGUNDY_SWITCH_B" class="sref">BURGUNDY_SWITCH_B /a>( spa4 class="string">"PCM Capture Switch" /spa4., 0,1 496 /a> a href="+code=MASK_ADDR_BURGUNDY_HOSTIFEH" class="sref">MASK_ADDR_BURGUNDY_HOSTIFEH /a>, 0x01, 0, 0)1 497 /a>};1 498 /a>static struct a href="+code=snd_kcontrol_new" class="sref">snd_kcontrol_new /a> a href="+code=snd_pmac_burgundy_mixers_imac" class="sref">snd_pmac_burgundy_mixers_imac /a>[] a href="+code=__devinitdata" class="sref">__devinitdata /a> = {1 499 /a> a href="+code=BURGUNDY_VOLUME_W" class="sref">BURGUNDY_VOLUME_W /a>( spa4 class="string">"Line in Capture Volume" /spa4., 0,1 500 /a> a href="+code=MASK_ADDR_BURGUNDY_VOLLINE" class="sref">MASK_ADDR_BURGUNDY_VOLLINE /a>, 16),1 501 /a> a href="+code=BURGUNDY_VOLUME_W" class="sref">BURGUNDY_VOLUME_W /a>( spa4 class="string">"Mic Capture Volume" /spa4., 0,1 502 /a> a href="+code=MASK_ADDR_BURGUNDY_VOLMIC" class="sref">MASK_ADDR_BURGUNDY_VOLMIC /a>, 16),1 503 /a> a href="+code=BURGUNDY_VOLUME_B" class="sref">BURGUNDY_VOLUME_B /a>( spa4 class="string">"Line in Gain Capture Volume" /spa4., 0,1 504 /a> a href="+code=MASK_ADDR_BURGUNDY_GAINLINE" class="sref">MASK_ADDR_BURGUNDY_GAINLINE /a>, 1, 0),1 505 /a> a href="+code=BURGUNDY_VOLUME_B" class="sref">BURGUNDY_VOLUME_B /a>( spa4 class="string">"Mic Gain Capture Volume" /spa4., 0,1 506 /a> a href="+code=MASK_ADDR_BURGUNDY_GAINMIC" class="sref">MASK_ADDR_BURGUNDY_GAINMIC /a>, 1, 0),1 507 /a> a href="+code=BURGUNDY_VOLUME_B" class="sref">BURGUNDY_VOLUME_B /a>( spa4 class="string">"Speaker Playback Volume" /spa4., 0,1 508 /a> a href="+code=MASK_ADDR_BURGUNDY_ATTENSPEAKER" class="sref">MASK_ADDR_BURGUNDY_ATTENSPEAKER /a>, 1, 1),1 509 /a> a href="+code=BURGUNDY_VOLUME_B" class="sref">BURGUNDY_VOLUME_B /a>( spa4 class="string">"Line out Playback Volume" /spa4., 0,1 510 /a> a href="+code=MASK_ADDR_BURGUNDY_ATTENLINEOUT" class="sref">MASK_ADDR_BURGUNDY_ATTENLINEOUT /a>, 1, 1),1 511 /a> a href="+code=BURGUNDY_VOLUME_B" class="sref">BURGUNDY_VOLUME_B /a>( spa4 class="string">"Headphone Playback Volume" /spa4., 0,1 512 /a> a href="+code=MASK_ADDR_BURGUNDY_ATTENHP" class="sref">MASK_ADDR_BURGUNDY_ATTENHP /a>, 1, 1),1 513 /a> a href="+code=BURGUNDY_SWITCH_W" class="sref">BURGUNDY_SWITCH_W /a>( spa4 class="string">"Line in Capture Switch" /spa4., 0,1 514 /a> a href="+code=MASK_ADDR_BURGUNDY_CAPTURESELECTS" class="sref">MASK_ADDR_BURGUNDY_CAPTURESELECTS /a>, 1, 17, 1),1 515 /a> a href="+code=BURGUNDY_SWITCH_W" class="sref">BURGUNDY_SWITCH_W /a>( spa4 class="string">"Mic Capture Switch" /spa4., 0,1 516 /a> a href="+code=MASK_ADDR_BURGUNDY_CAPTURESELECTS" class="sref">MASK_ADDR_BURGUNDY_CAPTURESELECTS /a>, 2, 18, 1),1 517 /a> a href="+code=BURGUNDY_SWITCH_W" class="sref">BURGUNDY_SWITCH_W /a>( spa4 class="string">"Line in Playback Switch" /spa4., 0,1 518 /a> a href="+code=MASK_ADDR_BURGUNDY_OUTPUTSELECTS" class="sref">MASK_ADDR_BURGUNDY_OUTPUTSELECTS /a>, 1, 17, 1),1 519 /a> a href="+code=BURGUNDY_SWITCH_W" class="sref">BURGUNDY_SWITCH_W /a>( spa4 class="string">"Mic Playback Switch" /spa4., 0,1 520 /a> a href="+code=MASK_ADDR_BURGUNDY_OUTPUTSELECTS" class="sref">MASK_ADDR_BURGUNDY_OUTPUTSELECTS /a>, 2, 18, 1),1 521 /a> a href="+code=BURGUNDY_SWITCH_B" class="sref">BURGUNDY_SWITCH_B /a>( spa4 class="string">"Mic Boost Capture Switch" /spa4., 0,1 522 /a> a href="+code=MASK_ADDR_BURGUNDY_INPBOOST" class="sref">MASK_ADDR_BURGUNDY_INPBOOST /a>, 0x40, 0x80, 1)1 523 /a>};1 524 /a>static struct a href="+code=snd_kcontrol_new" class="sref">snd_kcontrol_new /a> a href="+code=snd_pmac_burgundy_mixers_pmac" class="sref">snd_pmac_burgundy_mixers_pmac /a>[] a href="+code=__devinitdata" class="sref">__devinitdata /a> = {1 525 /a> a href="+code=BURGUNDY_VOLUME_W" class="sref">BURGUNDY_VOLUME_W /a>( spa4 class="string">"Line in Capture Volume" /spa4., 0,1 526 /a> a href="+code=MASK_ADDR_BURGUNDY_VOLMIC" class="sref">MASK_ADDR_BURGUNDY_VOLMIC /a>, 16),1 527 /a> a href="+code=BURGUNDY_VOLUME_B" class="sref">BURGUNDY_VOLUME_B /a>( spa4 class="string">"Line in Gain Capture Volume" /spa4., 0,1 528 /a> a href="+code=MASK_ADDR_BURGUNDY_GAINMIC" class="sref">MASK_ADDR_BURGUNDY_GAINMIC /a>, 1, 0),1 529 /a> a href="+code=BURGUNDY_VOLUME_B" class="sref">BURGUNDY_VOLUME_B /a>( spa4 class="string">"Speaker Playback Volume" /spa4., 0,1 530 /a> a href="+code=MASK_ADDR_BURGUNDY_ATTENMONO" class="sref">MASK_ADDR_BURGUNDY_ATTENMONO /a>, 0, 1),1 531 /a> a href="+code=BURGUNDY_VOLUME_B" class="sref">BURGUNDY_VOLUME_B /a>( spa4 class="string">"Line out Playback Volume" /spa4., 0,1 532 /a> a href="+code=MASK_ADDR_BURGUNDY_ATTENSPEAKER" class="sref">MASK_ADDR_BURGUNDY_ATTENSPEAKER /a>, 1, 1),1 533 /a> a href="+code=BURGUNDY_SWITCH_W" class="sref">BURGUNDY_SWITCH_W /a>( spa4 class="string">"Line in Capture Switch" /spa4., 0,1 534 /a> a href="+code=MASK_ADDR_BURGUNDY_CAPTURESELECTS" class="sref">MASK_ADDR_BURGUNDY_CAPTURESELECTS /a>, 2, 18, 1),1 535 /a> a href="+code=BURGUNDY_SWITCH_W" class="sref">BURGUNDY_SWITCH_W /a>( spa4 class="string">"Line in Playback Switch" /spa4., 0,1 536 /a> a href="+code=MASK_ADDR_BURGUNDY_OUTPUTSELECTS" class="sref">MASK_ADDR_BURGUNDY_OUTPUTSELECTS /a>, 2, 18, 1),1 537 /a> spa4 class="comment">/* BURGUNDY_SWITCH_B("Line in Boost Capture Switch", 0, /spa4.1 538 /a> spa4 class="comment"> * MASK_ADDR_BURGUNDY_INPBOOST, 0x40, 0x80, 1) */ /spa4.1 539 /a>};1 540 /a>static struct a href="+code=snd_kcontrol_new" class="sref">snd_kcontrol_new /a> a href="+code=snd_pmac_burgundy_master_sw_imac" class="sref">snd_pmac_burgundy_master_sw_imac /a> a href="+code=__devinitdata" class="sref">__devinitdata /a> =1 541 /a> a href="+code=BURGUNDY_SWITCH_B" class="sref">BURGUNDY_SWITCH_B /a>( spa4 class="string">"Master Playback Switch" /spa4., 0,1 542 /a> a href="+code=MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES" class="sref">MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES /a>,1 543 /a> a href="+code=BURGUNDY_OUTPUT_LEFT" class="sref">BURGUNDY_OUTPUT_LEFT /a> | a href="+code=BURGUNDY_LINEOUT_LEFT" class="sref">BURGUNDY_LINEOUT_LEFT /a> | a href="+code=BURGUNDY_HP_LEFT" class="sref">BURGUNDY_HP_LEFT /a>,1 544 /a> a href="+code=BURGUNDY_OUTPUT_RIGHT" class="sref">BURGUNDY_OUTPUT_RIGHT /a> | a href="+code=BURGUNDY_LINEOUT_RIGHT" class="sref">BURGUNDY_LINEOUT_RIGHT /a> | a href="+code=BURGUNDY_HP_RIGHT" class="sref">BURGUNDY_HP_RIGHT /a>, 1);1 545 /a>static struct a href="+code=snd_kcontrol_new" class="sref">snd_kcontrol_new /a> a href="+code=snd_pmac_burgundy_master_sw_pmac" class="sref">snd_pmac_burgundy_master_sw_pmac /a> a href="+code=__devinitdata" class="sref">__devinitdata /a> =1 546 /a> a href="+code=BURGUNDY_SWITCH_B" class="sref">BURGUNDY_SWITCH_B /a>( spa4 class="string">"Master Playback Switch" /spa4., 0,1 547 /a> a href="+code=MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES" class="sref">MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES /a>,1 548 /a> a href="+code=BURGUNDY_OUTPUT_INTERN" class="sref">BURGUNDY_OUTPUT_INTERN /a>1 549 /a> | a href="+code=BURGUNDY_OUTPUT_LEFT" class="sref">BURGUNDY_OUTPUT_LEFT /a>, a href="+code=BURGUNDY_OUTPUT_RIGHT" class="sref">BURGUNDY_OUTPUT_RIGHT /a>, 1);1 550 /a>static struct a href="+code=snd_kcontrol_new" class="sref">snd_kcontrol_new /a> a href="+code=snd_pmac_burgundy_speaker_sw_imac" class="sref">snd_pmac_burgundy_speaker_sw_imac /a> a href="+code=__devinitdata" class="sref">__devinitdata /a> =1 551 /a> a href="+code=BURGUNDY_SWITCH_B" class="sref">BURGUNDY_SWITCH_B /a>( spa4 class="string">"Speaker Playback Switch" /spa4., 0,1 552 /a> a href="+code=MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES" class="sref">MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES /a>,1 553 /a> a href="+code=BURGUNDY_OUTPUT_LEFT" class="sref">BURGUNDY_OUTPUT_LEFT /a>, a href="+code=BURGUNDY_OUTPUT_RIGHT" class="sref">BURGUNDY_OUTPUT_RIGHT /a>, 1);1 554 /a>static struct a href="+code=snd_kcontrol_new" class="sref">snd_kcontrol_new /a> a href="+code=snd_pmac_burgundy_speaker_sw_pmac" class="sref">snd_pmac_burgundy_speaker_sw_pmac /a> a href="+code=__devinitdata" class="sref">__devinitdata /a> =1 555 /a> a href="+code=BURGUNDY_SWITCH_B" class="sref">BURGUNDY_SWITCH_B /a>( spa4 class="string">"Speaker Playback Switch" /spa4., 0,1 556 /a> a href="+code=MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES" class="sref">MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES /a>,1 557 /a> a href="+code=BURGUNDY_OUTPUT_INTERN" class="sref">BURGUNDY_OUTPUT_INTERN /a>, 0, 0);1 558 /a>static struct a href="+code=snd_kcontrol_new" class="sref">snd_kcontrol_new /a> a href="+code=snd_pmac_burgundy_line_sw_imac" class="sref">snd_pmac_burgundy_line_sw_imac /a> a href="+code=__devinitdata" class="sref">__devinitdata /a> =1 559 /a> a href="+code=BURGUNDY_SWITCH_B" class="sref">BURGUNDY_SWITCH_B /a>( spa4 class="string">"Line out Playback Switch" /spa4., 0,1 560 /a> a href="+code=MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES" class="sref">MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES /a>,1 561 /a> a href="+code=BURGUNDY_LINEOUT_LEFT" class="sref">BURGUNDY_LINEOUT_LEFT /a>, a href="+code=BURGUNDY_LINEOUT_RIGHT" class="sref">BURGUNDY_LINEOUT_RIGHT /a>, 1);1 562 /a>static struct a href="+code=snd_kcontrol_new" class="sref">snd_kcontrol_new /a> a href="+code=snd_pmac_burgundy_line_sw_pmac" class="sref">snd_pmac_burgundy_line_sw_pmac /a> a href="+code=__devinitdata" class="sref">__devinitdata /a> =1 563 /a> a href="+code=BURGUNDY_SWITCH_B" class="sref">BURGUNDY_SWITCH_B /a>( spa4 class="string">"Line out Playback Switch" /spa4., 0,1 564 /a> a href="+code=MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES" class="sref">MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES /a>,1 565 /a> a href="+code=BURGUNDY_OUTPUT_LEFT" class="sref">BURGUNDY_OUTPUT_LEFT /a>, a href="+code=BURGUNDY_OUTPUT_RIGHT" class="sref">BURGUNDY_OUTPUT_RIGHT /a>, 1);1 566 /a>static struct a href="+code=snd_kcontrol_new" class="sref">snd_kcontrol_new /a> a href="+code=snd_pmac_burgundy_hp_sw_imac" class="sref">snd_pmac_burgundy_hp_sw_imac /a> a href="+code=__devinitdata" class="sref">__devinitdata /a> =1 567 /a> a href="+code=BURGUNDY_SWITCH_B" class="sref">BURGUNDY_SWITCH_B /a>( spa4 class="string">"Headphone Playback Switch" /spa4., 0,1 568 /a> a href="+code=MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES" class="sref">MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES /a>,1 569 /a> a href="+code=BURGUNDY_HP_LEFT" class="sref">BURGUNDY_HP_LEFT /a>, a href="+code=BURGUNDY_HP_RIGHT" class="sref">BURGUNDY_HP_RIGHT /a>, 1);1 570 /a>1 571 /a>1 572 /a>#ifdef a href="+code=PMAC_SUPPORT_AUTOMUTE" class="sref">PMAC_SUPPORT_AUTOMUTE /a>1 573 /a> spa4 class="comment">/* /spa4.1 574 /a> spa4 class="comment"> * auto-mute stuffs /spa4.1 575 /a> spa4 class="comment"> */ /spa4.1 576 /a>static int a href="+code=snd_pmac_burgundy_detect_headphone" class="sref">snd_pmac_burgundy_detect_headphone /a>(struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a>)1 577 /a>{1 578 /a> return ( a href="+code=in_le32" class="sref">in_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_stat" class="sref">codec_stat /a>) & a href="+code=chip" class="sref">chip /a>-> a href="+code=hp_stat_mask" class="sref">hp_stat_mask /a>) ? 1 : 0;1 579 /a>}1 580 /a>1 581 /a>static void a href="+code=snd_pmac_burgundy_update_automute" class="sref">snd_pmac_burgundy_update_automute /a>(struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a>, int a href="+code=do_notify" class="sref">do_notify /a>)1 582 /a>{1 583 /a> if ( a href="+code=chip" class="sref">chip /a>-> a href="+code=auto_mute" class="sref">auto_mute /a>) {1 584 /a> int a href="+code=imac" class="sref">imac /a> = a href="+code=of_machine_is_compatible" class="sref">of_machine_is_compatible /a>( spa4 class="string">"iMac" /spa4.);1 585 /a> int a href="+code=reg" class="sref">reg /a>, a href="+code=oreg" class="sref">oreg /a>;1 586 /a> a href="+code=reg" class="sref">reg /a> = a href="+code=oreg" class="sref">oreg /a> = a href="+code=snd_pmac_burgundy_rcb" class="sref">snd_pmac_burgundy_rcb /a>( a href="+code=chip" class="sref">chip /a>,1 587 /a> a href="+code=MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES" class="sref">MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES /a>);1 588 /a> a href="+code=reg" class="sref">reg /a> &= a href="+code=imac" class="sref">imac /a> ? ~( a href="+code=BURGUNDY_OUTPUT_LEFT" class="sref">BURGUNDY_OUTPUT_LEFT /a> | a href="+code=BURGUNDY_OUTPUT_RIGHT" class="sref">BURGUNDY_OUTPUT_RIGHT /a>1 589 /a> | a href="+code=BURGUNDY_HP_LEFT" class="sref">BURGUNDY_HP_LEFT /a> | a href="+code=BURGUNDY_HP_RIGHT" class="sref">BURGUNDY_HP_RIGHT /a>)1 590 /a> : ~( a href="+code=BURGUNDY_OUTPUT_LEFT" class="sref">BURGUNDY_OUTPUT_LEFT /a> | a href="+code=BURGUNDY_OUTPUT_RIGHT" class="sref">BURGUNDY_OUTPUT_RIGHT /a>1 591 /a> | a href="+code=BURGUNDY_OUTPUT_INTERN" class="sref">BURGUNDY_OUTPUT_INTERN /a>);1 592 /a> if ( a href="+code=snd_pmac_burgundy_detect_headphone" class="sref">snd_pmac_burgundy_detect_headphone /a>( a href="+code=chip" class="sref">chip /a>))1 593 /a> a href="+code=reg" class="sref">reg /a> |= a href="+code=imac" class="sref">imac /a> ? ( a href="+code=BURGUNDY_HP_LEFT" class="sref">BURGUNDY_HP_LEFT /a> | a href="+code=BURGUNDY_HP_RIGHT" class="sref">BURGUNDY_HP_RIGHT /a>)1 594 /a> : ( a href="+code=BURGUNDY_OUTPUT_LEFT" class="sref">BURGUNDY_OUTPUT_LEFT /a>1 595 /a> | a href="+code=BURGUNDY_OUTPUT_RIGHT" class="sref">BURGUNDY_OUTPUT_RIGHT /a>);1 596 /a> else1 597 /a> a href="+code=reg" class="sref">reg /a> |= a href="+code=imac" class="sref">imac /a> ? ( a href="+code=BURGUNDY_OUTPUT_LEFT" class="sref">BURGUNDY_OUTPUT_LEFT /a>1 598 /a> | a href="+code=BURGUNDY_OUTPUT_RIGHT" class="sref">BURGUNDY_OUTPUT_RIGHT /a>)1 599 /a> : ( a href="+code=BURGUNDY_OUTPUT_INTERN" class="sref">BURGUNDY_OUTPUT_INTERN /a>);1 600 /a> if ( a href="+code=do_notify" class="sref">do_notify /a> && a href="+code=reg" class="sref">reg /a> == a href="+code=oreg" class="sref">oreg /a>)1 601 /a> return;1 602 /a> a href="+code=snd_pmac_burgundy_wcb" class="sref">snd_pmac_burgundy_wcb /a>( a href="+code=chip" class="sref">chip /a>,1 603 /a> a href="+code=MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES" class="sref">MASK_ADDR_BURGUNDY_MORE_OUTPUTENABLES /a>, a href="+code=reg" class="sref">reg /a>);1 604 /a> if ( a href="+code=do_notify" class="sref">do_notify /a>) {1 605 /a> a href="+code=snd_ctl_notify" class="sref">snd_ctl_notify /a>( a href="+code=chip" class="sref">chip /a>-> a href="+code=card" class="sref">card /a>, a href="+code=SNDRV_CTL_EVENT_MASK_VALUE" class="sref">SNDRV_CTL_EVENT_MASK_VALUE /a>,1 606 /a> & a href="+code=chip" class="sref">chip /a>-> a href="+code=master_sw_ctl" class="sref">master_sw_ctl /a>-> a href="+code=id" class="sref">id /a>);1 607 /a> a href="+code=snd_ctl_notify" class="sref">snd_ctl_notify /a>( a href="+code=chip" class="sref">chip /a>-> a href="+code=card" class="sref">card /a>, a href="+code=SNDRV_CTL_EVENT_MASK_VALUE" class="sref">SNDRV_CTL_EVENT_MASK_VALUE /a>,1 608 /a> & a href="+code=chip" class="sref">chip /a>-> a href="+code=speaker_sw_ctl" class="sref">speaker_sw_ctl /a>-> a href="+code=id" class="sref">id /a>);1 609 /a> a href="+code=snd_ctl_notify" class="sref">snd_ctl_notify /a>( a href="+code=chip" class="sref">chip /a>-> a href="+code=card" class="sref">card /a>, a href="+code=SNDRV_CTL_EVENT_MASK_VALUE" class="sref">SNDRV_CTL_EVENT_MASK_VALUE /a>,1 610 /a> & a href="+code=chip" class="sref">chip /a>-> a href="+code=hp_detect_ctl" class="sref">hp_detect_ctl /a>-> a href="+code=id" class="sref">id /a>);1 611 /a> }1 612 /a> }1 613 /a>}1 614 /a>#endif spa4 class="comment">/* PMAC_SUPPORT_AUTOMUTE */ /spa4.1 615 /a>1 616 /a>1 617 /a> spa4 class="comment">/* /spa4.1 618 /a> spa4 class="comment"> * initialize burgundy /spa4.1 619 /a> spa4 class="comment"> */ /spa4.1 620 /a>int a href="+code=__devinit" class="sref">__devinit /a> a href="+code=snd_pmac_burgundy_init" class="sref">snd_pmac_burgundy_init /a>(struct a href="+code=snd_pmac" class="sref">snd_pmac /a> * a href="+code=chip" class="sref">chip /a>)1 621 /a>{1 622 /a> int a href="+code=imac" class="sref">imac /a> = a href="+code=of_machine_is_compatible" class="sref">of_machine_is_compatible /a>( spa4 class="string">"iMac" /spa4.);1 623 /a> int a href="+code=i" class="sref">i /a>, a href="+code=err" class="sref">err /a>;1 624 /a>1 625 /a> spa4 class="comment">/* Checks to see the chip is alive and kicking */ /spa4.1 626 /a> if (( a href="+code=in_le32" class="sref">in_le32 /a>(& a href="+code=chip" class="sref">chip /a>-> a href="+code=awacs" class="sref">awacs /a>-> a href="+code=codec_ctrl" class="sref">codec_ctrl /a>) & a href="+code=MASK_ERRCODE" class="sref">MASK_ERRCODE /a>) == 0xf0000) {1 627 /a> a href="+code=printk" class="sref">printk /a>( a href="+code=KERN_WARNING" class="sref">KERN_WARNING /a> spa4 class="string">"pmac burgundy: disabled by MacOS :-(\n" /spa4.);1 628 /a> return 1;1 629 /a> }1 630 /a>1 6a>, a href="+code=BURGUNDY_Osnd_pmac_burgundy_wcl_new" class="sref">f="sound/ppc/burg6e_Osnd_pm" id< return 1;16quot;Line out Playback Volume&" class="line" namDEFurgundy_wcl_new" class="sref">f="soundDEFurgundy_wcl_new" class=="sref">chip /a>-> a href="+code=hp_SK_ADDR_B6RGUNDY_ATTENSPEAKER" cla6s="sr6f">MASK_ADDR_BURGUNDY_ATTENSP return;1 602 /a> Playback Switch" /spa4., 0,1 568 /a> a href="+code=MASK_A6URGUNDY_S6ITCH_W /a>( spa4 class="6tring6>"Line in Capture Switch&" class="line" namDEFurgundy_wca href="sound/ppc/burgundy.c#L568DEFurgundy_wca href="sound/ppc/="sref">chip /a>-> a href="+code=hp_Sr /a>;1MA6K_ADDR_BURGUNDY_CAPTURESELECT5 630 /a>1 6a>, a href="+code=BURGUNDY_Osnd_pmac_burgundy_wcl_new"undy.c#L536" id 536 /a> ">chip /a>-> a href="+code=hp_S TCH_W /a>( spa4 class="s6ring"6"Line in Playback Switch&" class="line" namDEFurgundy_wcl_new"undy.c#L536" idchip /a>-> a href="+code=hp_Sl /a>) &a_OUTPUTSELECTS" class="s6ef">M6SK_ADD">chip /a>-> a href="+code=hp_SG /a> sp/* BURGUNDY_SWITCH_6(&quo63ot;Headphone Playback Switch return;1 602 /a> Playback Switch" /spa4., 0,1 ">chip /a>-> a href="+code=hp_S/burgundyomment"> * 6ASK_A63IGHT" class="sref">BURGUNDY_OUTPlass="line" namDEFurgundy_wcINPund_pmac" clas/L536"DEFurgundy_wcINPund_p="sref">chip /a>-> a href="+code=hp_spa4.1 602 /a> Playback Switch" /spa4., 0,1 ">chip /a>-> a href="+code=hp_gundy_mas6er_sw_imac /a> a href="6code=64RIGHT" class="sref">BURGUNDY_OUT.c#L597" id lass="line" namDEFurgundy_wcINPund3_IMAundy.c#L528" idchip /a>-> a href="+code=hp_URGUNDY_S6ITCH_B /a>( spa4 class="6tring64uot;Line out Playback Volume&" c: lass="line" namDEFurgundy_wcINPund3_PMAundy.c#L528" idchip /a>-> a href="+code=hp_sK_ADDR_B6Y_MORE_OUTPUTENABLES" cl6ss="s6ef">MASK_ADDR_BURGUNDY_MORE_O return;1 602 /a> Playback Switch" /spa4., 0,1< namCDmac" clas/L536" class="line" nam5< namCDa> ">chip /a>-> a href="+code=hp_gRGUNDY_S6EFT /a> | a href="+code6BURGU64"Line in Capture Switch&" class="line" namDEFurgundy_wc namCDmac" clas/L536"DEFurgundy_wc namCD_ADDef">chip /a>-> a href="+code=hp_sr /a>;1 | a href="+code=BURGU6DY_HP64_ADDR_BURGUNDY_CAPTURESELECT5 630 /a>1 602 /a> Playback Switch" /spa4., 0,1< namrgundy.c#L504" id ">chip /a>-> a href="+code=hp_s er_sw_pmac /a> a href="6code=64quot;Line in Playback Switch&" class="line" namDEFurgundy_wc namrgundy.c#L504" idchip /a>-> a href="+code=hp_sl /a>) &aITCH_B /a>( spa4 class="6tring6>"Master Playback Switch5 630 /a>1 602 /a> Playback Switch" /spa4., 0,1< namrgundy.c#L528" idchip /a>-> a href="+code=hp_sG /a> spY_MORE_OUTPUTENABLES" cl6ss="s64 class="sref">SNDRV_CTL_EVENT_MAlass="line" namDEFurgundy_wc namrgundy.c#L528" idchip /a>-> a href="+code=hp_s/burgundya href="+code=BURGUNDY_O6TPUT_64f">MASK_ADDR_BURGUNDY_MORE_O5 630 /a>1 602 /a> Playback Switch" /spa4., 0,1< namrODEMndy.c#L528" idchip /a>-> a href="+code=hp_ /a>, a 6ref="+code=BURGUNDY_OUTP6T_RIG65 class="sref">SNDRV_CTL_EVENT_MAlass="line" namDEFurgundy_wc namrODEMndy.c#L528" idchip /a>-> a href="+code=hp_undy_spea6er_sw_imac /a> a href="6code=65" id6RGUNDY_SW6TCH_B /a>( spa4 class="s6ring"6"Speaker Playback Switch5 630 /a>1 602 /a> Playback Switch" /spa4., 0,1 532 /a> /L570" class="line" nam56RK_ADDR_B6Y_MORE_OUTPUTENABLES" cl6ss="s65>( a href="+code=chip" class="srlass="line" namDEFurgundy_wcc/burgundy.c#L532" idchip /a>-> a href="+code=hp_uRGUNDY_S6ref="+code=BURGUNDY_OUTP6T_RIG65uot;Line out Playback Switch5 630 /a>1 602 /a> Playback Switch" /spa4., 0,1 510 /a> ">chip /a>-> a href="+code=hp_ur /a>;1 a href="6code=65T_LEFT" class="sref">BURGUNDY_OUlass="line" namDEFurgundy_wcc/burgundy.c#L510" idchip /a>-> a href="+code=hp_u TCH_B /a>( spa4 class="s6ring"6"Speaker Playback Switch5 630 /a>1 602 /a> Playback Switch" /spa4., 0,1chip /a>-> a href="+code=hp_ul /a>) &aY_MORE_OUTPUTENABLES" cl6ss="s65>( a href="+code=chip" class="srlass="line" namDEFurgundy_wcc/burgundy.c#L512" idchip /a>-> a href="+code=hp_uG /a> sp+code=BURGUNDY_OUTPUT_IN6ERN" 6lass="">chip /a>-> a href="+code=hp_u/burgundyne_sw_imac /a> a href="6code=65f">MASK_ADDR_BURGUNDY_MORE_O5 630 /a>1 6a>, a href="+code=BURGUNDY_Osnd_pmac_burgundy_wcnd_TERgundy.cburgundy.c#L568" idchip /a>-> a href="+code=hp_GUNDY_SWI6CH_B /a>( spa4 class="st6ing">66 class="sref">SNDRV_CTL_EVENT_MAlass="line" namDEFurgundy_wcnd_TERgundy.cburgundy.c#L568DEFurgundy_wcnd_TERgundy.c_ADDef">chip /a>-> a href="+code=hp_DR_BURGUN6Y_MORE_OUTPUTENABLES" cl6ss="s6ef">MASK_ADDR_BURGUNDY_MORE_O5 630 /a>1 6a>, a href="+code=BURGUNDY_Osnd_pmac_burgundy_wcundCDmac" clas/L536" class="line" nam5chip /a>-> a href="+code=hp_GGUNDY_SW6f="+code=BURGUNDY_LINEOU6_RIGH66uot;Line out Playback Volume&" class="line" namDEFurgundy_wcundCDmac" clas/L536"DEFurgundy_wcundCD_ADDef">chip /a>-> a href="+code=hp_DK_ADDR_B6ne_sw_pmac /a> a href="6code=66f">MASK_ADDR_BURGUNDY_MORE_O return;1 6a>, a href="+code=BURGUNDY_Osnd_pmac_burgundy_wcundrgundy.c#L504" idchip /a>-> a href="+code=hp_GRGUNDY_S6CH_B /a>( spa4 class="st6ing">66"Line in Capture Switch&" class="line" namDEFurgundy_wcundrgundy.c#L504" idchip /a>-> a href="+code=hp_Dr /a>;1MASK_ADDR_BURGUNDY_MORE_O return;1 6a>, a href="+code=BURGUNDY_Osnd_pmac_burgundy_wcundurgundy.c#L526" idchip /a>-> a href="+code=hp_D ref="+code=BURGUNDY_OUTP6T_RIG66quot;Line in Playback Switch&" class="line" namDEFurgundy_wcundurgundy.c#L526" idDEFurgundy_wcundurg_ADDef">chip /a>-> a href="+code=hp_Dl /a>) &ahp_sw_imac /a> a href="6code=66K_ADD">chip /a>-> a href="+code=hp_UNDY_SWIT6H_B /a>( spa4 class="str6ng">&6uot;Headphone ass="line" nam5 582 /a>{1codec_sa hrede=codec_ctrl" class="sref">codec_ctDR_BURGUN6Y_MORE_OUTPUTENABLES" cl6ss="s66IGHT" class="sref">BUlass="line" nam5 set 2"> 592 /-j> 56 ion bit id 625 /a_HP_LEFT 6a>, a href="+code=BURGU6DY_HP67RN" class="sref">BURGUNDY_OUTPUT_INTERN 97" class="line" nam5(struct a href=a>, 1);1<6 href="sound/ppc/burgund6.c#L567RIGHT" class="sref">BURGUNDY_"line" nam5 582 /a>{1codec_sa a> |= a href="+code=imac" DETECT_IMAu_UPP.c#L532" idchip /a>-> a href="+code=hp_570 /a>1<6 href="sound/ppc/burgund6.c#L567uot;Line out Playback Volume&" cccccc/a> |= a href="+code=imac" DETECT_IMAu_LOW.c#L532" idchip /a>-> a href="+code=hp_5K_ADDR_B6 a href="+code=PMAC_SUP6ORT_A67>( a href="+code=chip" class="sref">c/a> |= a href="+code=imac" DETECT_IMAu_SIwacs" class="srefcode=imac" DETECT_IMAu_SIwa( a f">chip /a>-> a href="+code=hp_undy.c#L563" id 576 /a> 67code=do_notify" class="sref">do_notify /a>) 82"> 582 /a>{1codec_sa a> |= a href="+code=imac" DETECT_613 /BACKcs" class="srefcode=imac" DETECT_613 /BACK( a f">chip /a>-> a href="+code=hp_u " id return 1;1<"+code=sn6_pmac" class="sref">snd_6mac /67"Master PL616" class="line" nam5 616 /a>1 617 /a> spa4 class="ccccccccc* buildintk" cla mixer1chi6 /a>-> a href="+code=6p_sta67class="comment"> * initializcccccccc*d 625 /a1 : 0;1 6a>, a href=" a href="+code=snd_ctl_notify" c class="line" nam5 6ref="+code=KERN_WARNING" class="sref">KERN_WARNI79 /a>}1<6 href="sound/ppc/burgund6.c#L568" id6=chip" cl6ss="sref">chip /a>, int 6a hre68uot;Line out forDY_OUTPUT_INTERN 9class="line" namec_sa a0ip /a>-> a hre9class="line" namec_sa<ip /a>-> a hreARRAY_SIZacs" class="srefARRAY_SIZa/L631" class="line" +code=snd_kcontrol_ixer1href="sound/ppc/burgundy.c#L631" mixer1-> a hre9class="line" namec_s++de=codec_ctrl" class="sref">codec_cty /a>)1( a href="+code=chip /a>-> a hrendy.c#L623" id 586 /a> 609"ad"+code=snd_ctl_n> 609"ad"/L631" class="line" nam5 6a>, a href=" a href="+code=snd_ctl_notify" c2">chip /a>-> a href="+code=hp_chip" cla6s="sref">chip /a>-> a6href=6+code=auto_mute" classout Playback Switch c#L609" ewpmac" clas/L536" c#L609" ewp/L631rgundy.c#L626" id-> a hre9class="line" namec_s]+code=BURGUNDY_Os ( a href="+code=snd_pmac_burN_WARNING" class="sref">KERN_WARNI7574" cla6">of_machine_is_compatib6e /a>6 spa4 class="string">&qNDY_OUTPUT_INTERN ndy.c#L623" id(struct a href=t a href6"+code=reg" class="sref"6reg /6>, a href="+code=oregggggggggcOS :-(_OUTPUT_INTERN ndy.c#L623" idKERN_WARNI7+code=sn6="sref">snd_pmac_burgund6_rcb 6a>( a href="+c628 /a> return 1;1MASK_ADDR_BforDY_OUTPUT_INTERN 9class="line" namec_sa a0ip /a>-> a hre9class="line" namec_sa<ipY_OUTPUT_INTERN 97" class="line" nam5 lass="line" namARRAY_SIZacs" class="srefARRAY_SIZa/L631" class="line" +code=snd_kcontrol_ixer1tic struct a href="+code=snd_kcontrol_ixer1tic sL597_burgundy_init /a>(struct a href=LEFT /a> 6 a href="+code=BURGUNDY6OUTPU6_RIGHT" class="sref">BURGUNDY_: lass="line" namARRAY_SIZacs" class="srefARRAY_SIZa/L631" class="line" +code=snd_kcontrol_ixer1tic struct a href="+code=snd_kcontrol_ixer1tic sac_burNp /a>-> a hre9class="line" namec_s++de=codec_ctrl" class="sref">codec_ctNDY_HP_LE6T /a> | a href="+code=B6RGUND6_HP_RIGHT" class="sref /a>-> a hrendy.c#L623" id 586 /a> 609"ad"+code=snd_ctl_n> 609"ad"/L631" class="line" nam5 6a>, a href=" a href="+code=snd_ctl_notify" c2">chip /a>-> a href="+code=hp_LEFT /a> 6 a href="+code=BURGUNDY6OUTPU6_RIGHT" class="sref">BURGUPlayback Switch c#L609" ewpmac" clas/L536" c#L609" ewp/L631_OUTPUT_INTERN 97" class="line" nam5 rgundy.c#L626" idchip /a>-> a href="+code=hp_Lchip" cl6href="+code=BURGUNDY_OUT6UT_IN6ERN" class="sref">BURGNDY_: rgundy.c#L626" idKERN_WARNIef">snd_p6ac_burgundy_detect_headp6one /6>( a href="+code=chip"qNDY_OUTPUT_INTERN ndy.c#L623" id(struct a href=NDY_HP_LE6T /a> | a href="+code=B6RGUND6_HP_RIGHT" class="sref">BURGUNcOS :-(_OUTPUT_INTERN ndy.c#L623" idKERN_WARNI 6: ( a href="+code=BURGUN6Y_OUT6UT_LEFT" class628 /a> return 1;1< | 6a href="+code=BURGUNDY_O6TPUT_69quot;Speaker Playback Switch/burgundy.c#L606" id 606 /a> am5 586 /a> 609" ewpmac" clas/L536" c#L609" ewp/L631_OUTPUT_INTERN 97" class="line" nam5 return 1;1< +code=sn6gundy.c#L596" id 596 /a> > rgundy.c#L626" idBURGUNDY: rgundy.c#L626" idstatic struct a href="+code=snd_kcontrol_new" class="sref"+code=BURGUNDY_Os ( a href="+code=snd_pmac_buN_WARNING" class="sref">KERN_WARNI EFT /a> 6 a href="+code=BURGUNDY_6UTPUT69f">MASK_ADDR_BURGUNDY_MORE_Ondy.c#L623" id 586 /a> 609"ad"+code=snd_ctl_n> 609"ad"/L631" class="line" nam5 6a>, a href=" a href="+code=snd_ctl_notify" c2 Playback Switch/burgundy.c#L606" id 606 /a> uN_WARNING" class="sref">KERN_WARN7 : ( a7href="+code=BURGUNDY_OUT7UT_IN7ERN" class="srqNDY_OUTPUT_INTERN ndy.c#L623" id(struct a href7 a href="7code=reg" class="sref">r7g /a>7== a href="+code=oregcOS :-(_OUTPUT_INTERN ndy.c#L623" idKERN_WARN7undy.c#L671" id 606 /a> am5 586 /a> 609" ewpmac" clas/L536" c#L609" ewp/L631_OUTPUT_INTERN 97" class="line" nam5 return 1;17wcb" clas7="sref">snd_pmac_burgund7_wcb 7a>( a href="+code=chip" class=> rgundy.c#L626" idstatic struct a href="+code=snd_kcontrol_new" class="s28 /a> return 1;17w4b" clas7= /a> | a href="+code=B7BLES 7a>, a href="+code=regBURGUNDY: rgundy.c#L626" idKERN_WARN704"> 604 7a> if ( a7href=70f">MASK_ADDR_BURGUNDY_MORE_Ondy.c#L623" id 586 /a> 609"ad"+code=snd_ctl_n> 609"ad"/L631" class="line" nam5 6a>, a href=" a href="+code=snd_ctl_notify" c2 Playback Switch/burgundy.c#L606" id 606 /a> uN_WARNING" class="sref">KERN_WARN7 6"> 604 7a href="+code=BURGUNDY_O7_VALU70o see the chip is_OUTPUT_INTERN ndy.c#L623" id(struct a href7 7"> 604 7aundy.c#L596" id-> a href="+code=icOS :-(_OUTPUT_INTERN ndy.c#L623" idKERN_WARN7u8"> 604 7a ( a href="+code=BURGUN7_VALU70ot;Headphone ass="line" nam5codec_c7er_sw_ctl7 class="sref">speaker_sw7ctl /7>-> a href="+code=iPlayback Switch/burgundy.c#L606" id 606 /a> am5 586 /a> 609" ewpmac" clas/L536" c#L609" ewp/L631codec_ctrl" class="sref">codec_c7 a href="7code=SNDRV_CTL_EVENT_MAS7_VALU7" class="sref">SNDRV_CTL_EVENT_MASK_VArgundy.c#L626" idstatic struct a href="+code=snd_kcontrol_new" clas+code=BURGUNDY_Os ( a href="+code=snd_pmac_buN_WARNING" class="sref">KERN_WARN7detect_ct7" class="sref">hp_detect7ctl /7>-> a href="+code=iBURGUNDY_MORE_Ondy.c#L623" id 586 /a> 609"ad"+code=snd_ctl_n> 609"ad"/L631" class="line" nam5 6a>, a href=" a href="+code=snd_ctl_notify" c2 Playback Switch/burgundy.c#L606" id 606 /a> uN_WARNING" class="sref">KERN_WARN7sound/ppc7burgundy.c#L611" idBURGp is_OUTPUT_INTERN ndy.c#L623" id(struct a href7a href="s7und/ppc/burgundy.c#L612"7id( a href="+code=chip" class=cOS :-(_OUTPUT_INTERN ndy.c#L623" idKERN_WARN7 }1, a href="+628 /a> return 1;17ne" nam5<7L614"> 614 /a>#endif sp74 cla71f">MASK_ADDR_BURGUNDY_MORE_O/burgundy.c#L608" id 608 /a> am5 586 /a> 609" ewpmac" clas/L536" c#L609" ewp/L631_OUTPUT_INTERN 97" class="line" nam5 return 1;17 /spa4.1<7 href="sound/ppc/burgund7.c#L671, a href="+code=oreggggggggg> rgundy.c#L626" id 604 7 href="sound/ppc/burgund7.c#L671ine" nam5 596 /a> : rgundy.c#L626" idKERN_WARN7d8"> 604 77" id 586 /a> 609"ad"+code=snd_ctl_n> 609"ad"/L631" class="line" nam5 6a>, a href=" a href="+code=snd_ctl_notify" c2 Playback Switch/burgundy.c#L606" id 608 /a> uN_WARNING" class="sref">KERN_WARN7dr_sw_ctl7line" nam5 618 /7> spa71-> a href=p is_OUTPUT_INTERN ndy.c#L623" id(struct a href7ndy.c#L617" idSNDRV_CcOS :-(_OUTPUT_INTERN ndy.c#L623" idKERN_WARN7"+code=sn7_pmac" class="sref">snd_7mac /7_p="sr/L571" class="line" nam5 571 /a>1 577p /a>)1 586 /a> ode=sad"ound/ppc/burgundy.c#L581" id 6a>, a href="uN_WARNING" class="sref">KERN_WARN7lass="sre7">of_machine_is_compatib7e /a>7 spa4 class="st is_OUTPUT_INTERN ndy.c#L623" id(struct a href7n }1i72>, a href="+code=regcOS :-(_OUTPUT_INTERN ndy.c#L623" idKERN_WARN7"e" nam5<7 href="sound/ppc/burgund7.c#L672="comment">/* PMAC_SUPPORT_AUTOMUTE *7> 7spa4 class="comment">/* 7hecks72quot;Speaker Playback Switch/burgundy.c#L606" id 592 /a> am5 586 /a> nd/ppc/burgundy.c#L592" id 592 /a> N_WARNING" class="sref">KERN_WARN7"7"> 604 7mp; a href="+code=MASK_7RRCOD72"Master Playback Switch/burgundy.c#L606" idam5 586 /a> ref="sound/ppc/burgundy.c#L581" idN_WARNING" class="sref">KERN_WARN7"8"> 604 7a4 class="string">"7mac b72ot;Headphone Playback Switch return;1 Playback Switch/burgundy.c#L606" id "line"ef="ssrefus onlyc*d 625 /7c/burgund7.c#L628" id 625 /7a href="s7und/ppc/burgundy.c#L629"7id 629 /a> 7 }1<7 href="sound/ppc/burgund7.c#L670" idseturn 17ME_B /a>( spa4 class="st7ing">7quot;L628 /a> return 1;17SK_ADDR_B7RGUNDY_ATTENSPEAKER" cla7s="sr7f">MAS
T="soriginal LXR softwareprinf="s8 /a> http:// rceforge.net/proj/L5s/lx ">LXR am5 mailto:lx @NSPux.no">lx @NSPux.no606".
lx .NSPux.no kindlychost">prin8 /a> http://www.redpill-NSPpro.no">Redpill LSPpro A provider of LSPux amnsult25" ndy.opera ions services since 1995.