Re: 2.6.12-rc3-mm3: ALSA broken ?

From: J.A. Magallon
Date: Tue May 17 2005 - 17:50:18 EST



On 05.17, Takashi Iwai wrote:
...
> >
> > Example: go into 4ch mode. Check this control. Then switch to 6ch mode.
> > The Center jack has no sound (it should, shouldn't ?). Check it and voilà.
> > It looks that the logic in the channel selection needs to set this flag also...
>
> Yep, you're right. Try the patch below.
>
>

Thanks, this patch worked. When in 6ch mode, the boolen flag we talk about
still controls if the line jack is input or output. In 4ch mode, it is always
input. If i chech it, switching to 6ch does not toggle it. They are
independent controls.

Anyways. I can't get rid of the flag. It is initialized to on by default.
Isn't strange to have two ways of controlling this ?

Now we have:

Surround jack mode: [Shared/Independent]
Channel mode [2/4/6]
Center/LFE jack as mic [on/off]
Spread Front... [on/off]


Would not be nice something like:

Surround jacks mode: [Shared/Independent]
Line Jack: [in/surround-out/extra-front-out]
Mic Jack: [in/center-out/extra-front-out]

It looks like internally you can control all ouputs independently.
Just an idea that looks more logical/intuitive to me...
Ah, and could the input level controllers for line and mic be forced
to mute when used as inputs ?

TIA

> Takashi
>
> --- linux/sound/pci/ac97/ac97_patch.c 13 May 2005 09:58:46 -0000 1.83
> +++ linux/sound/pci/ac97/ac97_patch.c 17 May 2005 12:18:24 -0000
> @@ -1526,13 +1526,8 @@
> .get = snd_ac97_ad1888_downmix_get,
> .put = snd_ac97_ad1888_downmix_put
> },
> -#if 0
> - AC97_SINGLE("Surround Jack as Input", AC97_AD_MISC, 12, 1, 0),
> - AC97_SINGLE("Center/LFE Jack as Input", AC97_AD_MISC, 11, 1, 0),
> -#else
> AC97_SURROUND_JACK_MODE_CTL,
> AC97_CHANNEL_MODE_CTL,
> -#endif
> };
>
> static int patch_ad1888_specific(ac97_t *ac97)
> @@ -1601,6 +1596,18 @@
> AC97_SINGLE("Exchange Center/LFE", AC97_AD_SERIAL_CFG, 3, 1, 0)
> };
>
> +static void ad1985_update_jacks(ac97_t *ac97)
> +{
> + /* shared Line-In */
> + snd_ac97_update_bits(ac97, AC97_AD_MISC, 1 << 12,
> + is_shared_linein(ac97) ? 0 : 1 << 12);
> + /* shared Mic */
> + snd_ac97_update_bits(ac97, AC97_AD_MISC, 1 << 11,
> + is_shared_micin(ac97) ? 0 : 1 << 11);
> + snd_ac97_update_bits(ac97, AC97_AD_SERIAL_CFG, 9 << 11,
> + is_shared_micin(ac97) ? 0 : 9 << 11);
> +}
> +
> static int patch_ad1985_specific(ac97_t *ac97)
> {
> int err;
> @@ -1616,7 +1623,7 @@
> #ifdef CONFIG_PM
> .resume = ad18xx_resume,
> #endif
> - .update_jacks = ad1888_update_jacks,
> + .update_jacks = ad1985_update_jacks,
> };
>
> int patch_ad1985(ac97_t * ac97)
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
>

--
J.A. Magallon <jamagallon()able!es> \ Software is like sex:
werewolf!able!es \ It's better when it's free
Mandriva Linux release 2006.0 (Cooker) for i586
Linux 2.6.11-jam19 (gcc 4.0.0 (4.0.0-3mdk for Mandriva Linux release 2006.0))


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/