Dear Takashi Iwai, Tuesday, February 18, 2003, 8:03:56 PM, you wrote:
TI> At Tue, 18 Feb 2003 07:43:26 +0300, TI> Anton Worshevsky wrote: >> >> >> When I changed VIA_REV_8233A to TYPE_VIA8233A my onboard soundcard >> >> (VIA8233A + ALC650) works (2 channel, 4 cannel). >> >> 5.1 has problem - swaped channels. (LF, RF, Center - OK, LS - Woofer, >> >> RS - LS, Woofer - RS. >> >> As i posted before, i have similar channel swapping with VIA8235 + ALC650. >> If bits 14-15 (slot modify) set to 0 - channels has incorrect placement. >> It can be fixed by exchanging Rear and Center/LFE jacks. >> When i set bit 14 to 1 - OK >> Surely via8235 transmit multi-channel data in AC-Link in 3,4,6,9,7,8 order, >> instead of 3,4,7,8,6,9 as specified in AC97. >> I switch codec to 3,4,6,9,7,8 mode by setting bit 14 with following patch >> in attachment for ac97_patch.c. TI> well, then your investigation may be correct. i have also no TI> datasheet regarding this. TI> i'll ask VIA guys whether the correct order is 3/4/6/9/7/8 or TI> 3/4/7/8/6/9. There are following slot assignments accordantly AC97 spec. v2.2 and v.2.3 LF/RF/LR/RR/C/LFE -- 3/4/7/8/6/9 In this ALC650 data sheet http://www.realtek.com.tw/downloads/downloads1-3.aspx?refdesign=True&compamodel=ALC650 there are next: LF/RF/LR/RR/C/LFE -- 3/4/7/8/6/9 if 0x6a.14=0 (default) LF/RF/LR/RR/C/LFE -- 3/4/6/9/7/8 if 0x6a.14=1 As i see on VIA website, there is no via82xx spec freely available. I don't understand their position in this question. Now i made tests with last cvs for 4 channel too : VIA8235 + ALC650 0x6a.14=0 : 4ch - OK; 5.1 - swaped 0x6a.14=1 : 4ch - swaped; 5.1 - OK As you see - setting bit 14 of 0x6a reg is not an option. We need to apply following patch again. =) @@ -919,8 +920,8 @@ case 2: slots = (1<<0) | (2<<4); break; case 3: slots = (1<<0) | (2<<4) | (5<<8); break; case 4: slots = (1<<0) | (2<<4) | (3<<8) | (4<<12); break; - case 5: slots = (1<<0) | (2<<4) | (5<<8) | (3<<12) | (4<<16); break; - case 6: slots = (1<<0) | (2<<4) | (5<<8) | (6<<12) | (3<<16) | (4<<20); break; + case 5: slots = (1<<0) | (2<<4) | (3<<8) | (4<<12) | (5<<16); break; + case 6: slots = (1<<0) | (2<<4) | (3<<8) | (4<<12) | (5<<16) | (6<<20); break; default: slots = 0; break; } /* STOP index is never reached */ All working fine with this for VIA8235 + ALC650 It does not affect on VIA8233A as you remembered. =) What chip combination is working wrong with this ? It's much better solution for via8235, than if (runtime->channels > 4) val = 0x4000; else val = 0; snd_ac97_update_bits(chip->ac97, AC97_ALC650_MULTICH, 0xc000, val); Sincerely yours Anton Worshevsky ------------------------------------------------------- This SF.net email is sponsored by: SlickEdit Inc. Develop an edge. The most comprehensive and flexible code editor you can use. Code faster. C/C++, C#, Java, HTML, XML, many more. FREE 30-Day Trial. www.slickedit.com/sourceforge _______________________________________________ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel