[alsa-devel] [PATCH 17/31] HDA patch_via.c: Add second S/PDIF out control for VT1708S and VT1702.

Takashi Iwai tiwai at suse.de
Tue Oct 6 08:03:57 CEST 2009


At Tue, 6 Oct 2009 13:01:42 +0800,
Li Bo wrote:
> 
> They are separate S/PDIFs, and in our test, slave SPDIF  seems can work
>  independently with master SPDIF. I'll do some test later.

The problem is that master SPDIF will change both master and slaves.
In your implementation, the slave can be used freely only while the
master isn't used.  Or, it'll conflict later once when the master is
used.


Takashi

> On Mon, Oct 5, 2009 at 11:14 PM, Takashi Iwai <tiwai at suse.de> wrote:
> > At Mon, 5 Oct 2009 22:27:35 +0800,
> > Li Bo wrote:
> >>
> >> [ALSA] HDA VIA: Add second S/PDIF out control for VT1708S and VT1702.
> >>
> >> Signed-off-by: Lydia Wang <lydiawang at viatech.com.cn>
> >
> > The slave SPDIFs are really slaves.  They are supposed to have identical
> > SPDIF status bits as the master.  So, creating the individual SPDIF status
> > controls is wrong.
> >
> > If they have to be handled separately, we shouldn't use slave SPDIF but
> > create different streams, etc.
> >
> >
> > Takashi
> >
> >
> >>
> >> Index: sound-2.6/sound/pci/hda/patch_via.c
> >> ===================================================================
> >> --- sound-2.6.orig/sound/pci/hda/patch_via.c  2009-10-05 15:10:59.000000000 +0800
> >> +++ sound-2.6/sound/pci/hda/patch_via.c       2009-10-05 15:11:02.000000000 +0800
> >> @@ -1265,6 +1265,13 @@
> >>               if (err < 0)
> >>                       return err;
> >>               spec->multiout.share_spdif = 1;
> >> +             /* lydia add for second spdif out */
> >> +             if (spec->slave_dig_outs[0]) {
> >> +                     err = snd_hda_create_spdif_out_ctls(codec,
> >> +                                                 spec->slave_dig_outs[0]);
> >> +                     if (err < 0)
> >> +                             return err;
> >> +             }
> >>       }
> >>       if (spec->dig_in_nid) {
> >>               err = snd_hda_create_spdif_in_ctls(codec, spec->dig_in_nid);
> >> @@ -3127,7 +3134,7 @@
> >>  };
> >>
> >>  static struct hda_pcm_stream vt1708S_pcm_digital_playback = {
> >> -     .substreams = 1,
> >> +     .substreams = 2,
> >>       .channels_min = 2,
> >>       .channels_max = 2,
> >>       /* NID is set in via_build_pcms */
> >>
> >
> 


More information about the Alsa-devel mailing list