On Tue, 30 Aug 2016 10:32:01 +0200, Markus Trippelsdorf wrote:
On 2016.08.30 at 10:04 +0200, Takashi Iwai wrote:
On Mon, 29 Aug 2016 16:02:33 +0200, Markus Trippelsdorf wrote:
On 2016.08.29 at 14:06 +0200, Markus Trippelsdorf wrote:
On 2016.08.29 at 11:32 +0200, Takashi Iwai wrote:
On Mon, 29 Aug 2016 11:20:47 +0200, Markus Trippelsdorf wrote:
output:ALSA def-222 [003] .... 422.035002: hda_send_cmd: [0000:00:14.2:0] val=0x01570d01 output:ALSA def-222 [003] .... 422.035061: hda_get_response: [0000:00:14.2:0] val=0x00000000
Actually it right here that sound starts again:
markus@x4 hda-emu % ./a.out 0x01570d01 raw value = 0x01570d01 cid = 0, nid = 0x15, verb = 0x70d, parm = 0x01 raw value: verb = 0x70d, parm = 0x1 verbname = set_digi_cvt_1
So, the program itself sets the value. Which sound backend are you using? PulseAudio, whatever?
No backend at all. I use mpd directly on type hw:
pcm.!default { type hw card 0 device 3 }
Hmm, it's assigned to device 3? This was supposed to be assigned to HDMI/DP.
In anyway, for device 3, you can use
pcm.!default "hdmi:0"
Then the IEC958 status parameter is set via alsa-lib properly.
Takashi
Basically you need to track the verb 0x01570dXX that changes the digital converter parameter.
When the driver was loaded and initialized, what value does the node have? Also check the raw ctl elements, too. The value is controlled via "IEC958 Status" controls. If the value at the init time is wrong, you may set the initial value via "iecset" program included in alsa-utils.
The driver is build directly into my monolithic kernel (I don't have modules enabled at all). At boot time I run "alsactl restore" in an init script. alsamixer shows that S/PDIF is unmuted, but as I wrote it doesn't work for several minutes. If I toggle the S/PDIF setting in alsamixer from unmuted to muted to unmuted then sounds starts working.
Anyway: /usr/bin/hda-verb /dev/snd/hwC0D0 0x15 SET_DIGI_CONVERT_1 0x01 &> /dev/null works fine in my init script, so the issue is solved for me.
Thanks.
-- Markus