Hi Thomas,

thanks for your info.

At Wed, 16 Jan 2002 21:55:49 +0100,
Thomas Tonino wrote:
> 
> Takashi Iwai wrote:
> 
> >
> >interesting..  are you using MC6 model?
> >
> On the chip is the text:
> 6CH
> C3DX
> CMI8738/PCI-6ch-MX
> HRTF 3D Audio
> M4822-0127
> UGG1DA
 
Ok, that's a 6-channel model, which I've not tested yet.

> >
> >which module options did you set to OSS cmpci driver?
> >
> I use no options - just a modprobe cmpci. I enabled legacy FM, MPU401, 
> joystick, and have chosen support for CMI8738 based audio cards. 2 
> speakers selected, no other options.
> 
> >
> >looking at the code of oss driver, it sets "DAC To Out" bit when the
> >chip version is 39 or later (and toggled off on ac3 mode).
> >there is nothing special except for that when no module options are
> >set.
> >i'm not sure whether this matters...
> >
> Dac to out does give signal in Alsa on spdif after using alsamizer, but 
> it is very distorted.

This is not strange.  It's so on mine, too.

> The oss driver is not distorted.

Perhaps there is a register bit to be toggled.

> And one can work 
> around the distortion by changing the data format from signed to 
> unsigned (or other way around, don't remember off hand). That will also 
> give you an indication of what the distortion is like.
 
As long as looking at the codes of OSS driver, there is no routine to
convert signed/unsigned.  So all should be done in h/w.

> Also different: in oss, the volume control affects only the analog 
> output. Spdif is always at full level. In Alsa, the volume control has 
> an effect: if I change the signedness, the sound is okay if the slider 
> is at max. Reducing volume introduces a lot of distortion.
> 
> In any case a theory could be that the DAC can used signed or unsigned 
> data, while SPDIF handles only one of these. And the DAC is set up the 
> wrong way, so the data used is incompatible with the spdif output.
> 
> Can you do anything with a dump of the pci registers? I'm happy to 
> provide them, but do not know if these cover the values you need.

Please try the attached program.  You'll get the same register dump
during using OSS driver.

Compile it with -O2 option, i.e.

        % gcc -O2 -o readport readport.c

And run with root priv.,

        % su
        # ./readport 0xbc00 0x40

where the first argument (0xbc00 above) is the address of CMIPCI
device, which can be checked from /proc/asound/cards.

It'd appreciated if you can send me register dumps for both OSS and
ALSA drivers.


ciao,

Takashi

Attachment: readport.c
Description: Binary data

Reply via email to