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

Li Bo liboat at gmail.com
Tue Oct 6 17:43:20 CEST 2009


On Tue, Oct 6, 2009 at 2:03 PM, Takashi Iwai <tiwai at suse.de> wrote:
> 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
>

Oh I understand, thank you. We'll update this patch to build independent
control & substreams for 2nd SPDIF.

>> 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