From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: Re: CMI8738-MC6 surround40 plugin on 4 SP systems] Date: Tue, 04 Nov 2003 17:27:32 +0100 Sender: alsa-devel-admin@lists.sourceforge.net Message-ID: References: <20031030174239.GB2771@dailyplanet.net> <20031031173918.GA29835@dailyplanet.net> Mime-Version: 1.0 (generated by SEMI 1.14.5 - "Awara-Onsen") Content-Type: multipart/mixed; boundary="Multipart_Tue_Nov__4_17:27:32_2003-1" Return-path: In-Reply-To: <20031031173918.GA29835@dailyplanet.net> Errors-To: alsa-devel-admin@lists.sourceforge.net List-Help: List-Post: List-Subscribe: , List-Unsubscribe: , List-Archive: To: Marcel Cc: alsa-devel@lists.sourceforge.net List-Id: alsa-devel@alsa-project.org --Multipart_Tue_Nov__4_17:27:32_2003-1 Content-Type: text/plain; charset=US-ASCII At Fri, 31 Oct 2003 12:39:18 -0500, Marcel wrote: > > * Takashi Iwai (tiwai@suse.de) wrote: > > At Thu, 30 Oct 2003 12:42:39 -0500, > > Marcel wrote: > > > > > > > > > I've been trying to finetune my cmipci for several weeks now. And this is > > > the best way I've been able to get transparent operation with various audio > > > material: stereo, mono, 4.0, 5.1. The main problem being no surround sound > > > iif "Exchange DAC" setting was not set, and sound on the rear speakers only > > > if it was. > > > > ah, this might be true. > > does it happen both on 4.0 and 5.1 outputs? > > i don't remember that it's necessary for 5.1 at the last time i > > tested. > > With surround40 plugin, 4 speakers, yes it's needed for both 4.0 and 5.1 > material. Applications such as mplayer or xine will remix 5.1 material to > 4 channels. For 6 speakers systems, I really don't know. could you try surround51 and check whether it somehow works? > > perhaps we should simply remove this control from user and handle > > internally for the MC6 chip. > > > > I agree. Its usage is confusing and may results in improper operation how about the attached patch? Takashi --Multipart_Tue_Nov__4_17:27:32_2003-1 Content-Type: application/octet-stream Content-Disposition: attachment; filename="cmipci-4ch-fix.dif" Content-Transfer-Encoding: 7bit Index: alsa-kernel/pci/cmipci.c =================================================================== RCS file: /suse/tiwai/cvs/alsa/alsa-kernel/pci/cmipci.c,v retrieving revision 1.57 diff -u -r1.57 cmipci.c --- alsa-kernel/pci/cmipci.c 28 Oct 2003 11:25:31 -0000 1.57 +++ alsa-kernel/pci/cmipci.c 4 Nov 2003 16:24:39 -0000 @@ -728,9 +728,11 @@ if (channels > 4) { snd_cmipci_clear_bit(cm, CM_REG_CHFORMAT, CM_CHB3D); snd_cmipci_set_bit(cm, CM_REG_CHFORMAT, CM_CHB3D5C); + snd_cmipci_clear_bit(cm, CM_REG_MISC_CTRL, CM_XCHGDAC); } else { snd_cmipci_clear_bit(cm, CM_REG_CHFORMAT, CM_CHB3D5C); snd_cmipci_set_bit(cm, CM_REG_CHFORMAT, CM_CHB3D); + snd_cmipci_set_bit(cm, CM_REG_MISC_CTRL, CM_XCHGDAC); } if (channels == 6) { snd_cmipci_set_bit(cm, CM_REG_LEGACY_CTRL, CM_CHB3D6C); @@ -749,6 +751,7 @@ snd_cmipci_clear_bit(cm, CM_REG_CHFORMAT, CM_CHB3D5C); snd_cmipci_clear_bit(cm, CM_REG_LEGACY_CTRL, CM_CHB3D6C); snd_cmipci_clear_bit(cm, CM_REG_MISC_CTRL, CM_ENCENTER); + snd_cmipci_clear_bit(cm, CM_REG_MISC_CTRL, CM_XCHGDAC); spin_unlock_irqrestore(&cm->reg_lock, flags); } } @@ -2671,11 +2674,14 @@ /* both for CM8338/8738 */ static snd_kcontrol_new_t snd_cmipci_mixer_switches[] __devinitdata = { - DEFINE_MIXER_SWITCH("Exchange DAC", exchange_dac), DEFINE_MIXER_SWITCH("Four Channel Mode", fourch), DEFINE_MIXER_SWITCH("Line-In As Rear", line_rear), }; +/* for non-multichannel chips */ +static snd_kcontrol_new_t snd_cmipci_nomulti_switch __devinitdata = +DEFINE_MIXER_SWITCH("Exchange DAC", exchange_dac); + /* only for CM8738 */ static snd_kcontrol_new_t snd_cmipci_8738_mixer_switches[] __devinitdata = { #if 0 /* controlled in pcm device */ @@ -2748,6 +2754,11 @@ sw = snd_cmipci_mixer_switches; for (idx = 0; idx < num_controls(snd_cmipci_mixer_switches); idx++, sw++) { err = snd_ctl_add(cm->card, snd_ctl_new1(sw, cm)); + if (err < 0) + return err; + } + if (! cm->can_multi_ch) { + err = snd_ctl_add(cm->card, snd_ctl_new1(&snd_cmipci_nomulti_switch, cm)); if (err < 0) return err; } --Multipart_Tue_Nov__4_17:27:32_2003-1-- ------------------------------------------------------- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/