[alsa-devel] [PATCH 2/2] ALSA: ca0106: Fix mixer and dac channel assignments.

Takashi Iwai tiwai at suse.de
Tue Sep 21 17:27:56 CEST 2010

At Wed, 22 Sep 2010 00:24:56 +1000,
Andy Owen wrote:
> On Tue, 2010-09-21 at 16:00 +0200, Takashi Iwai wrote:
> > I wonder whether this can regress on other boards.
> > The front channel is the obvious channel so this must have been
> > tested.  Maybe we should change the mapping only for your specific
> > model by adding some flag.
> The behaviour I was seeing was that if I just added the device id, then
> the front channel would work fine, but I would get no sound from the
> rears, and the mixer controls didn't quite match the labels. 

Hrm, but you changed the DAC number of the front channel.  Doesn't change
the front channel behavior...?

> I was a bit suspect of this change:
> > -     if (chip->details->spi_dac && channel_id != PCM_FRONT_CHANNEL) {
> > +     if (chip->details->spi_dac) {
> But I convinced myself that it was a hack to work around the registers
> being wrong in other places, and the card in its default state had the
> front dac already powered up. Looking at the code, I can see similar
> logic in the snd_ca0106_pcm_close_playback() function, which has a
> special case for the front channel, and I think should also be modified.

No, take a look at git commit 485100706b4b397f8072c756839878f634e21f85:

   [ALSA] ca0106: power down SPI DAC channels when not in use
    For cards with an SPI DAC (SB Live 24-bit / Audigy SE), power down channels
    0-2 when not in use.  They are powered up on PCM open and down again on PCM
    close.  Channel 4 (== Front) is not powered down, as it is used for capture
    feedback.  Powering it down would effectively kill line in pass-through.
So, it's the designed behavior.

Judging from the fact that this mapping hasn't been changed since that
time, I feel that it's not safe to change the mapping unconditionally
for your device.  That's why I suggest for some new flag.


More information about the Alsa-devel mailing list