alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH] fix dig out type to SPDIF when there are two digital pins with different type - VT1708S lost SPDIF device after upgrade
@ 2015-04-02  0:42 Raymond Yau
  0 siblings, 0 replies; only message in thread
From: Raymond Yau @ 2015-04-02  0:42 UTC (permalink / raw)
  To: tiwai, ALSA Development Mailing List

> >
> > Thank you for your reply,
> >
> > Please see below the output of alsa-info.sh before and after the
headphone plugged in
> >
> > Before:
http://www.alsa-project.org/db/?f=a316eebf7b150b5897838be37bce4e8c9d95eaae
> > After:
http://www.alsa-project.org/db/?f=0f163003e9005972db5f97f21a45be67816e3801
> >
> > I have 6 Jacks at the rear panel and two at the top (one output one
input)
> > I am afraid I do not know how to switch channel mode to retask.
> >
> > Also, the computer is of a certain age, and the issue has started
several month ago but I never really looked into it, so I am not sure that
change in power management will be relevant has it seems quite recent.
> >

What is the model of your asus motherbroad ?

>
> Seem lost the digial device 1 for SPDIF out
>
> Pin Default 0x985601f0: [Fixed] Digital Out at Int HDMI
>
> Is this internal spdif connector ?
>
> Control: name="IEC958 Default PCM Playback Switch", index=0, device=0
>   Device: name="VT1708S Digital", type="HDMI", device=3
>
> APLAY
>
> **** List of PLAYBACK Hardware Devices ****
> card 0: Intel [HDA Intel], device 0: VT1708S Analog [VT1708S Analog]
>   Subdevices: 1/1
>   Subdevice #0: subdevice #0
> card 0: Intel [HDA Intel], device 3: VT1708S Digital [VT1708S Digital]
>   Subdevices: 1/1
>   Subdevice #0: subdevice #0
>
>
> Node 0x12 [Audio Output] wcaps 0x611: Stereo Digital
>   Control: name="IEC958 Playback Con Mask", index=0, device=0
>   Control: name="IEC958 Playback Pro Mask", index=0, device=0
>   Control: name="IEC958 Playback Default", index=0, device=0
>   Control: name="IEC958 Playback Switch", index=0, device=0
>   Control: name="IEC958 Default PCM Playback Switch", index=0, device=0
>   Device: name="VT1708S Digital", type="HDMI", device=3
>   Converter: stream=5, channel=0
>   Digital:
>   Digital category: 0x0
>   IEC Coding Type: 0x0
>   PCM:
>     rates [0x5e0]: 44100 48000 88200 96000 192000
>     bits [0xe]: 16 20 24
>     formats [0x1]: PCM
>
>   Power states:  D0 D1 D2 D3
>   Power: setting=D0, actual=D0
>
> Node 0x15 [Audio Output] wcaps 0x611: Stereo Digital
>   Converter: stream=5, channel=0
>   Digital:
>   Digital category: 0x0
>   IEC Coding Type: 0x0
>   PCM:
>     rates [0x5e0]: 44100 48000 88200 96000 192000
>     bits [0xe]: 16 20 24
>     formats [0x1]: PCM
>
>   Power states:  D0 D1 D2 D3
>   Power: setting=D0, actual=D0
>
> Node 0x20 [Pin Complex] wcaps 0x400701: Stereo Digital
>   Control: name="HDMI Phantom Jack", index=0, device=0
>   Pincap 0x00000010: OUT
>   Pin Default 0x985601f0: [Fixed] Digital Out at Int HDMI
>     Conn = Digital, Color = Unknown
>     DefAssociation = 0xf, Sequence = 0x0
>     Misc = NO_PRESENCE
>   Pin-ctls: 0x40: OUT
>
>   Power states:  D0 D1 D2 D3
>   Power: setting=D0, actual=D0
>   Connection: 1
>      0x12
> Node 0x21 [Pin Complex] wcaps 0x400701: Stereo Digital
>   Control: name="SPDIF Phantom Jack", index=0, device=0
>   Pincap 0x00000010: OUT
>   Pin Default 0x074511f0: [Jack] SPDIF Out at Ext Rear Panel
>     Conn = Optical, Color = Black
>     DefAssociation = 0xf, Sequence = 0x0
>     Misc = NO_PRESENCE
>   Pin-ctls: 0x40: OUT
>
>   Power states:  D0 D1 D2 D3
>   Power: setting=D0, actual=D0
>   Connection: 1
>      0x15

Do the driver need a pin fixup for the digital pin or more check when
assign dig out type ?

If codec has two digital pin complex with diffferent type, check whether
the primary digital pin complex support DETECT

case AC_JACK_SPDIF_OUT:
case AC_JACK_DIG_OTHER_OUT:
if (cfg->dig_outs >= ARRAY_SIZE(cfg->dig_out_pins)) {
codec_info(codec,
   "ignore pin 0x%x, too many assigned pins\n",
   nid);
continue;
}
cfg->dig_out_pins[cfg->dig_outs] = nid;
cfg->dig_out_type[cfg->dig_outs] =
(loc == AC_JACK_LOC_HDMI) ?
HDA_PCM_TYPE_HDMI : HDA_PCM_TYPE_SPDIF;
cfg->dig_outs++;
+        if (cfg->dig_outs == 2)
+             if (cfg->dig_out_type[0] != cfg->dig_out_type[1])
+                  if (! snd_hda_query_pin_caps(codec,
cfg->dig_out_pins[0]) & AC_PINCAP_PRES_DETECT))
+                        cfg-> dig_out_type[0] = HDA_PCM_TYPE_SPDIF;

break;

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2015-04-02  0:42 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-02  0:42 [PATCH] fix dig out type to SPDIF when there are two digital pins with different type - VT1708S lost SPDIF device after upgrade Raymond Yau

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).