[alsa-devel] [PATCH] Dmux mixer conflict
DMUX mixers need to be created before input source mixers, otherwise some STAC9228 codecs fail to record correctly or at all.
--- Signed-off-by: Matthew Ranostay mranostay@embeddedalley.com
diff -r fbe3540c8df4 pci/hda/patch_sigmatel.c --- a/pci/hda/patch_sigmatel.c Tue Dec 18 18:05:52 2007 +0100 +++ b/pci/hda/patch_sigmatel.c Tue Dec 18 15:27:34 2007 -0700 @@ -834,15 +834,16 @@ static int stac92xx_build_controls(struc if (err < 0) return err;
- for (i = 0; i < spec->num_mixers; i++) { - err = snd_hda_add_new_ctls(codec, spec->mixers[i]); - if (err < 0) - return err; - } if (spec->num_dmuxes > 0) { stac_dmux_mixer.count = spec->num_dmuxes; err = snd_ctl_add(codec->bus->card, snd_ctl_new1(&stac_dmux_mixer, codec)); + if (err < 0) + return err; + } + + for (i = 0; i < spec->num_mixers; i++) { + err = snd_hda_add_new_ctls(codec, spec->mixers[i]); if (err < 0) return err; }
At Tue, 18 Dec 2007 17:40:05 -0500, Matthew Ranostay wrote:
DMUX mixers need to be created before input source mixers, otherwise some STAC9228 codecs fail to record correctly or at all.
Signed-off-by: Matthew Ranostay mranostay@embeddedalley.com
The fix looks doubtful. The order of mixer elements should be irrelevant with the functionality.
I suspect it might be the result of failure of 'alsactl restore'. Some distros don't call alsactl properly with -F option. (This option is set default in the latest HG version now.)
Takashi
diff -r fbe3540c8df4 pci/hda/patch_sigmatel.c --- a/pci/hda/patch_sigmatel.c Tue Dec 18 18:05:52 2007 +0100 +++ b/pci/hda/patch_sigmatel.c Tue Dec 18 15:27:34 2007 -0700 @@ -834,15 +834,16 @@ static int stac92xx_build_controls(struc if (err < 0) return err;
- for (i = 0; i < spec->num_mixers; i++) {
err = snd_hda_add_new_ctls(codec, spec->mixers[i]);
if (err < 0)
return err;
- } if (spec->num_dmuxes > 0) { stac_dmux_mixer.count = spec->num_dmuxes; err = snd_ctl_add(codec->bus->card, snd_ctl_new1(&stac_dmux_mixer, codec));
if (err < 0)
return err;
- }
- for (i = 0; i < spec->num_mixers; i++) {
if (err < 0) return err; }err = snd_hda_add_new_ctls(codec, spec->mixers[i]);
Takashi Iwai wrote:
At Tue, 18 Dec 2007 17:40:05 -0500, Matthew Ranostay wrote:
DMUX mixers need to be created before input source mixers, otherwise some STAC9228 codecs fail to record correctly or at all.
Signed-off-by: Matthew Ranostay mranostay@embeddedalley.com
The fix looks doubtful. The order of mixer elements should be irrelevant with the functionality.
I suspect it might be the result of failure of 'alsactl restore'. Some distros don't call alsactl properly with -F option. (This option is set default in the latest HG version now.)
Takashi
diff -r fbe3540c8df4 pci/hda/patch_sigmatel.c --- a/pci/hda/patch_sigmatel.c Tue Dec 18 18:05:52 2007 +0100 +++ b/pci/hda/patch_sigmatel.c Tue Dec 18 15:27:34 2007 -0700 @@ -834,15 +834,16 @@ static int stac92xx_build_controls(struc if (err < 0) return err;
- for (i = 0; i < spec->num_mixers; i++) {
err = snd_hda_add_new_ctls(codec, spec->mixers[i]);
if (err < 0)
return err;
- } if (spec->num_dmuxes > 0) { stac_dmux_mixer.count = spec->num_dmuxes; err = snd_ctl_add(codec->bus->card, snd_ctl_new1(&stac_dmux_mixer, codec));
if (err < 0)
return err;
- }
- for (i = 0; i < spec->num_mixers; i++) {
if (err < 0) return err; }err = snd_hda_add_new_ctls(codec, spec->mixers[i]);
Ok thanks, I tried that and now it works as before.
-Matt Ranostay
participants (2)
-
Matthew Ranostay
-
Takashi Iwai