On Fri, Jun 04, 2010 at 09:05:59AM +0800, Wu Fengguang wrote:
> On Fri, Jun 04, 2010 at 05:04:37AM +0800, David Härdeman wrote:
> > On Tue, Jun 01, 2010 at 10:07:59PM +0800, Wu Fengguang wrote:
> > > On Mon, May 31, 2010 at 10:06:23AM +0800, Zhenyu Wang wrote:
> > >>On 2010.05.31 09:34:04 +0800, Wu, Fengguang wrote:
> > >>>On Sun, May 30, 2010 at 07:49:13PM +0800, David Härdeman wrote:
> > >>>> I recently tried played with the video= kernel parameter, and
> > >>>> booting with:
> > >>>> video="HDMI Type A-1:1920x1080@60D"
> > >>>>
> > >>>> gives me a proper video mode from the beginning. However, it also
> > >>>> seems to break HDMI audio. Booting with that parameter ->no audio,
> > >>>> receiver doesn't light up, etc. Booting without that parameter
> > >>>> ->audio works as expected.
> > >>>>
> > >>
> > >> yeah, I think that won't setup the audio enable bit on HDMI port
> > >> properly, as drm/i915 driver checks EDID block for real HDMI sink
> > >> device, and only in that case it will enable audio, ignore other case
> > >> like DVI.
> > >
> > > Maybe could allow users to manually set/unset that bit.
> >
> > Yes please? :)
> >
> > > David, you may check the intel_audio_dump tool in
> > >
> > > git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
> > >
> > > It will show whether your SDVO_AUDIO_ENABLE bit is set (grep for
> > > "Audio_Output_Enable" or "audio enabled").
> > >
> > > If unset, you can trivially set the bit with
> > > intel_reg_read/intel_reg_write.
> > > (I'm not sure if this will magically make audio work though.)
> >
> > I tried manually changing the SDVOB bits, and it temporarily enabled
> > audio (until I changed from one video clip to another). There's also
> > other bits that differ so I guess that the channel mapping etc might be
> > messed up.
>
> It seems that besides the SDVOB audio enabled bit, the ALSA driver
> thinks that there are no HDMI monitor attached. This can be verified
> with
> $ head -1 /proc/asound/card0/eld\#1.0
> monitor_present 0
>
> You may try manually setting it
>
> # echo monitor_present 1 > /proc/asound/card0/eld\#1.0
>
> > Attached is the output from intel_audio_dump with working audio (without
> > forced KMS mode) and without (with forced KMS mode). The diff between
> > them is:
>
> If the above trick does not work, would you please post the dmesg and
> intel_audio_dump output in forced KMS mode for the first clip (with
> sound) and second clip (silence again)?
It doesn't work, but I can't seem to get a good handle on the exact
order of when it works and when it doesn't.
scott:~# dmesg -c > /dev/null 2>&1
scott:~# head -1 /proc/asound/card0/eld#3.0
monitor_present 0
scott:~# echo monitor_present 1 > /proc/asound/card0/eld#3.0
scott:~# head -1 /proc/asound/card0/eld#3.0
monitor_present 1
scott:~# ./intel_reg_read 0x61140
0x61140 : 0x8000089C
scott:~# ./intel_reg_write 0x61140 0x800008dc
Value before: 0x8000089C
Value after: 0x800008DC
scott:~# ./intel_reg_read 0x61140
0x61140 : 0x800008DC
<playing first clip, dolby digital, silence>
scott:~# ../intel_reg_write 0x61140 0x800008dc
Value before: 0x8000089C
Value after: 0x800008DC
scott:~# ./intel_audio_dump > first.dump
<stop playing>
scott:~/# head -1 /proc/asound/card0/eld#3.0
monitor_present 0
scott:~# ../intel_reg_write 0x61140 0x800008dc
Value before: 0x8000089C
Value after: 0x800008DC
<start playing, silence>
<stop playing>
scott:~/# ../intel_reg_read 0x61140
0x61140 : 0x8000089C
<start playing, silence>
scott:~# ./intel_audio_dump > second.dump
scott:~/wu# dmesg
[ 1342.868567] HDMI hot plug event: Pin=3 Presence_Detect=0 ELD_Valid=0
[ 1348.930668] HDMI hot plug event: Pin=3 Presence_Detect=1 ELD_Valid=0
[ 1404.372097] HDMI hot plug event: Pin=3 Presence_Detect=0 ELD_Valid=0
[ 1440.618564] HDMI hot plug event: Pin=3 Presence_Detect=1 ELD_Valid=0
[ 1490.584063] HDMI hot plug event: Pin=3 Presence_Detect=0 ELD_Valid=0
--
David Härdeman
VIDEO_DIP_CTL 0x20000600 Video DIP Control
SDVOB 0x800008dc Digital Display Port B Control Register
SDVOC 0x0000089c Digital Display Port C Control Register
PORT_HOTPLUG_EN 0x38000320 Hot Plug Detect Enable
AUD_CONFIG 0x00000004 Audio Configuration
AUD_DEBUG 0x00000000 Audio Debug
AUD_VID_DID 0x80862803 Audio Vendor ID / Device ID
AUD_RID 0x00100000 Audio Revision ID
AUD_SUBN_CNT 0x00010001 Audio Subordinate Node Count
AUD_FUNC_GRP 0x00000001 Audio Function Group Type
AUD_SUBN_CNT2 0x00020002 Audio Subordinate Node Count
AUD_GRP_CAP 0x00000004 Audio Function Group Capabilities
AUD_PWRST 0x00000000 Audio Power State
AUD_SUPPWR 0x00000009 Audio Supported Power States
AUD_SID 0x80860101 Audio Root Node Subsystem ID
AUD_OUT_CWCAP 0x00006211 Audio Output Converter Widget Capabilities
AUD_OUT_PCMSIZE 0x001e07f0 Audio PCM Size and Rates
AUD_OUT_STR 0x00000005 Audio Stream Formats
AUD_OUT_DIG_CNVT 0x00000001 Audio Digital Converter
AUD_OUT_CH_STR 0x00000080 Audio Channel ID and Stream ID
AUD_OUT_STR_DESC 0x00000011 Audio Stream Descriptor Format
AUD_PINW_CAP 0x004073bd Audio Pin Complex Widget Capabilities
AUD_PIN_CAP 0x00000094 Audio Pin Capabilities
AUD_PINW_CONNLNG 0x00000001 Audio Connection List Length
AUD_PINW_CONNLST 0x00000002 Audio Connection List Entry
AUD_PINW_CNTR 0x00000040 Audio Pin Widget Control
AUD_PINW_UNSOLRESP 0x80000003 Audio Unsolicited Response Enable
AUD_CNTL_ST 0x20232068 Audio Control State Register
AUD_PINW_CONFIG 0x18560010 Audio Configuration Default
AUD_HDMIW_STATUS 0x80000000 Audio HDMI Status
AUD_HDMIW_HDMIEDID 0x00000000 Audio HDMI Data EDID Block
AUD_HDMIW_INFOFR 0x00000000 Audio HDMI Widget Data Island Packet
AUD_CONV_CHCNT 0x000001f7 Audio Converter Channel Count
AUD_CTS_ENABLE 0x00000000 Audio CTS Programming Enable
Details:
AUD_VID_DID vendor id 0x8086
AUD_VID_DID device id 0x2803
AUD_RID major revision 0x1
AUD_RID minor revision 0x0
AUD_RID revision id 0x0
AUD_RID stepping id 0x0
SDVOB enable 1
SDVOB HDMI encoding 1
SDVOB SDVO encoding 0
SDVOB null packets 0
SDVOB audio enabled 1
SDVOC enable 0
SDVOC HDMI encoding 1
SDVOC SDVO encoding 0
SDVOC null packets 0
SDVOC audio enabled 0
PORT_HOTPLUG_EN DisplayPort/HDMI port B 1
PORT_HOTPLUG_EN DisplayPort/HDMI port C 1
PORT_HOTPLUG_EN DisplayPort port D 1
PORT_HOTPLUG_EN SDVOB 0
PORT_HOTPLUG_EN SDVOC 0
PORT_HOTPLUG_EN audio 0
PORT_HOTPLUG_EN TV 0
PORT_HOTPLUG_EN CRT 1
VIDEO_DIP_CTL enable graphics DIP 0
VIDEO_DIP_CTL port select [0x1] Digital Port B
VIDEO_DIP_CTL DIP buffer trans active 0
VIDEO_DIP_CTL AVI DIP enabled 0
VIDEO_DIP_CTL vendor DIP enabled 0
VIDEO_DIP_CTL SPD DIP enabled 0
VIDEO_DIP_CTL DIP buffer index [0x0] AVI DIP
VIDEO_DIP_CTL DIP trans freq [0x0] send once
VIDEO_DIP_CTL DIP buffer size 6
VIDEO_DIP_CTL DIP address 0
AUD_CONFIG pixel clock [0x0] 25.2 / 1.001 MHz
AUD_CONFIG fabrication enabled 1
AUD_CONFIG professional use allowed 0
AUD_CONFIG fuse enabled 0
AUD_DEBUG function reset 0
AUD_SUBN_CNT starting node number 0x1
AUD_SUBN_CNT total number of nodes 0x1
AUD_SUBN_CNT2 starting node number 0x2
AUD_SUBN_CNT2 total number of nodes 0x2
AUD_FUNC_GRP unsol capable 0
AUD_FUNC_GRP node type 0x1
AUD_GRP_CAP beep 0 0
AUD_GRP_CAP input delay 0
AUD_GRP_CAP output delay 4
AUD_PWRST device power state D0
AUD_PWRST device power state setting D0
AUD_SUPPWR support D0 1
AUD_SUPPWR support D1 0
AUD_SUPPWR support D2 0
AUD_SUPPWR support D3 1
AUD_OUT_CWCAP widget type 0x0
AUD_OUT_CWCAP sample delay 0x0
AUD_OUT_CWCAP channel count 8
AUD_OUT_CWCAP L-R swap 0
AUD_OUT_CWCAP power control 0
AUD_OUT_CWCAP digital 1
AUD_OUT_CWCAP conn list 0
AUD_OUT_CWCAP unsol 0
AUD_OUT_CWCAP mute 0
AUD_OUT_CWCAP format override 1
AUD_OUT_CWCAP amp param override 0
AUD_OUT_CWCAP out amp present 0
AUD_OUT_CWCAP in amp present 0
AUD_OUT_DIG_CNVT SPDIF category 0x0
AUD_OUT_DIG_CNVT SPDIF level 0
AUD_OUT_DIG_CNVT professional 0
AUD_OUT_DIG_CNVT non PCM 0
AUD_OUT_DIG_CNVT copyright asserted 0
AUD_OUT_DIG_CNVT filter preemphasis 0
AUD_OUT_DIG_CNVT validity config 0
AUD_OUT_DIG_CNVT validity flag 0
AUD_OUT_DIG_CNVT digital enable 1
AUD_OUT_CH_STR stream id 0x8
AUD_OUT_CH_STR lowest channel 0x0
AUD_OUT_STR_DESC stream channels 0x1
AUD_PINW_CAP widget type 0x4
AUD_PINW_CAP sample delay 0x0
AUD_PINW_CAP channel count 0x7
AUD_PINW_CAP HDCP 1
AUD_PINW_CAP L-R swap 0
AUD_PINW_CAP power control 0
AUD_PINW_CAP digital 1
AUD_PINW_CAP conn list 1
AUD_PINW_CAP unsol 1
AUD_PINW_CAP mute 1
AUD_PINW_CAP format override 1
AUD_PINW_CAP amp param override 1
AUD_PINW_CAP out amp present 1
AUD_PINW_CAP in amp present 0
AUD_PIN_CAP EAPD 0
AUD_PIN_CAP HDMI 1
AUD_PIN_CAP output 1
AUD_PIN_CAP presence detect 1
AUD_PINW_CNTR mute status 0
AUD_PINW_CNTR out enable 1
AUD_PINW_CNTR amp mute status 0
AUD_PINW_CNTR amp mute status 0
AUD_PINW_CNTR stream type [0x0] default samples
AUD_PINW_UNSOLRESP enable unsol resp 1
AUD_CNTL_ST DIP audio enabled 1
AUD_CNTL_ST DIP ACP enabled 0
AUD_CNTL_ST DIP ISRCx enabled 0
AUD_CNTL_ST DIP port select [0x1] Digital Port B
AUD_CNTL_ST DIP buffer index [0x0] Audio DIP
AUD_CNTL_ST DIP trans freq [0x3] best effort
AUD_CNTL_ST DIP address 9
AUD_CNTL_ST CP ready 0
AUD_CNTL_ST ELD valid 0
AUD_CNTL_ST ELD ack 0
AUD_CNTL_ST ELD bufsize 16
AUD_CNTL_ST ELD address 4
AUD_HDMIW_STATUS CDCLK/DOTCLK underrun 1
AUD_HDMIW_STATUS CDCLK/DOTCLK overrun 0
AUD_HDMIW_STATUS BCLK/CDCLK underrun 0
AUD_HDMIW_STATUS BCLK/CDCLK overrun 0
AUD_CONV_CHCNT HDMI HBR enabled 0
AUD_CONV_CHCNT HDMI channel count 2
AUD_CONV_CHCNT HDMI channel mapping:
[0x100] 0 => 0
[0x111] 1 => 1
[0x1f2] 2 => 15
[0x1f3] 3 => 15
[0x1f4] 4 => 15
[0x1f5] 5 => 15
[0x1f6] 6 => 15
[0x1f7] 7 => 15
AUD_HDMIW_INFOFR HDMI audio Infoframe:
84010a70 01000000 00000000 00000000 00000000 00000000 00000000 00000000
VIDEO_DIP_CTL 0x20000600 Video DIP Control
SDVOB 0x8000089c Digital Display Port B Control Register
SDVOC 0x0000089c Digital Display Port C Control Register
PORT_HOTPLUG_EN 0x38000320 Hot Plug Detect Enable
AUD_CONFIG 0x00000004 Audio Configuration
AUD_DEBUG 0x00000000 Audio Debug
AUD_VID_DID 0x80862803 Audio Vendor ID / Device ID
AUD_RID 0x00100000 Audio Revision ID
AUD_SUBN_CNT 0x00010001 Audio Subordinate Node Count
AUD_FUNC_GRP 0x00000001 Audio Function Group Type
AUD_SUBN_CNT2 0x00020002 Audio Subordinate Node Count
AUD_GRP_CAP 0x00000004 Audio Function Group Capabilities
AUD_PWRST 0x00000000 Audio Power State
AUD_SUPPWR 0x00000009 Audio Supported Power States
AUD_SID 0x80860101 Audio Root Node Subsystem ID
AUD_OUT_CWCAP 0x00006211 Audio Output Converter Widget Capabilities
AUD_OUT_PCMSIZE 0x001e07f0 Audio PCM Size and Rates
AUD_OUT_STR 0x00000005 Audio Stream Formats
AUD_OUT_DIG_CNVT 0x00000001 Audio Digital Converter
AUD_OUT_CH_STR 0x00000080 Audio Channel ID and Stream ID
AUD_OUT_STR_DESC 0x00000011 Audio Stream Descriptor Format
AUD_PINW_CAP 0x004073bd Audio Pin Complex Widget Capabilities
AUD_PIN_CAP 0x00000094 Audio Pin Capabilities
AUD_PINW_CONNLNG 0x00000001 Audio Connection List Length
AUD_PINW_CONNLST 0x00000002 Audio Connection List Entry
AUD_PINW_CNTR 0x00000040 Audio Pin Widget Control
AUD_PINW_UNSOLRESP 0x80000003 Audio Unsolicited Response Enable
AUD_CNTL_ST 0x00232088 Audio Control State Register
AUD_PINW_CONFIG 0x18560010 Audio Configuration Default
AUD_HDMIW_STATUS 0x80000000 Audio HDMI Status
AUD_HDMIW_HDMIEDID 0x00000000 Audio HDMI Data EDID Block
AUD_HDMIW_INFOFR 0x00000000 Audio HDMI Widget Data Island Packet
AUD_CONV_CHCNT 0x000001f7 Audio Converter Channel Count
AUD_CTS_ENABLE 0x00000000 Audio CTS Programming Enable
Details:
AUD_VID_DID vendor id 0x8086
AUD_VID_DID device id 0x2803
AUD_RID major revision 0x1
AUD_RID minor revision 0x0
AUD_RID revision id 0x0
AUD_RID stepping id 0x0
SDVOB enable 1
SDVOB HDMI encoding 1
SDVOB SDVO encoding 0
SDVOB null packets 0
SDVOB audio enabled 0
SDVOC enable 0
SDVOC HDMI encoding 1
SDVOC SDVO encoding 0
SDVOC null packets 0
SDVOC audio enabled 0
PORT_HOTPLUG_EN DisplayPort/HDMI port B 1
PORT_HOTPLUG_EN DisplayPort/HDMI port C 1
PORT_HOTPLUG_EN DisplayPort port D 1
PORT_HOTPLUG_EN SDVOB 0
PORT_HOTPLUG_EN SDVOC 0
PORT_HOTPLUG_EN audio 0
PORT_HOTPLUG_EN TV 0
PORT_HOTPLUG_EN CRT 1
VIDEO_DIP_CTL enable graphics DIP 0
VIDEO_DIP_CTL port select [0x1] Digital Port B
VIDEO_DIP_CTL DIP buffer trans active 0
VIDEO_DIP_CTL AVI DIP enabled 0
VIDEO_DIP_CTL vendor DIP enabled 0
VIDEO_DIP_CTL SPD DIP enabled 0
VIDEO_DIP_CTL DIP buffer index [0x0] AVI DIP
VIDEO_DIP_CTL DIP trans freq [0x0] send once
VIDEO_DIP_CTL DIP buffer size 6
VIDEO_DIP_CTL DIP address 0
AUD_CONFIG pixel clock [0x0] 25.2 / 1.001 MHz
AUD_CONFIG fabrication enabled 1
AUD_CONFIG professional use allowed 0
AUD_CONFIG fuse enabled 0
AUD_DEBUG function reset 0
AUD_SUBN_CNT starting node number 0x1
AUD_SUBN_CNT total number of nodes 0x1
AUD_SUBN_CNT2 starting node number 0x2
AUD_SUBN_CNT2 total number of nodes 0x2
AUD_FUNC_GRP unsol capable 0
AUD_FUNC_GRP node type 0x1
AUD_GRP_CAP beep 0 0
AUD_GRP_CAP input delay 0
AUD_GRP_CAP output delay 4
AUD_PWRST device power state D0
AUD_PWRST device power state setting D0
AUD_SUPPWR support D0 1
AUD_SUPPWR support D1 0
AUD_SUPPWR support D2 0
AUD_SUPPWR support D3 1
AUD_OUT_CWCAP widget type 0x0
AUD_OUT_CWCAP sample delay 0x0
AUD_OUT_CWCAP channel count 8
AUD_OUT_CWCAP L-R swap 0
AUD_OUT_CWCAP power control 0
AUD_OUT_CWCAP digital 1
AUD_OUT_CWCAP conn list 0
AUD_OUT_CWCAP unsol 0
AUD_OUT_CWCAP mute 0
AUD_OUT_CWCAP format override 1
AUD_OUT_CWCAP amp param override 0
AUD_OUT_CWCAP out amp present 0
AUD_OUT_CWCAP in amp present 0
AUD_OUT_DIG_CNVT SPDIF category 0x0
AUD_OUT_DIG_CNVT SPDIF level 0
AUD_OUT_DIG_CNVT professional 0
AUD_OUT_DIG_CNVT non PCM 0
AUD_OUT_DIG_CNVT copyright asserted 0
AUD_OUT_DIG_CNVT filter preemphasis 0
AUD_OUT_DIG_CNVT validity config 0
AUD_OUT_DIG_CNVT validity flag 0
AUD_OUT_DIG_CNVT digital enable 1
AUD_OUT_CH_STR stream id 0x8
AUD_OUT_CH_STR lowest channel 0x0
AUD_OUT_STR_DESC stream channels 0x1
AUD_PINW_CAP widget type 0x4
AUD_PINW_CAP sample delay 0x0
AUD_PINW_CAP channel count 0x7
AUD_PINW_CAP HDCP 1
AUD_PINW_CAP L-R swap 0
AUD_PINW_CAP power control 0
AUD_PINW_CAP digital 1
AUD_PINW_CAP conn list 1
AUD_PINW_CAP unsol 1
AUD_PINW_CAP mute 1
AUD_PINW_CAP format override 1
AUD_PINW_CAP amp param override 1
AUD_PINW_CAP out amp present 1
AUD_PINW_CAP in amp present 0
AUD_PIN_CAP EAPD 0
AUD_PIN_CAP HDMI 1
AUD_PIN_CAP output 1
AUD_PIN_CAP presence detect 1
AUD_PINW_CNTR mute status 0
AUD_PINW_CNTR out enable 1
AUD_PINW_CNTR amp mute status 0
AUD_PINW_CNTR amp mute status 0
AUD_PINW_CNTR stream type [0x0] default samples
AUD_PINW_UNSOLRESP enable unsol resp 1
AUD_CNTL_ST DIP audio enabled 1
AUD_CNTL_ST DIP ACP enabled 0
AUD_CNTL_ST DIP ISRCx enabled 0
AUD_CNTL_ST DIP port select [0x0] Reserved
AUD_CNTL_ST DIP buffer index [0x0] Audio DIP
AUD_CNTL_ST DIP trans freq [0x3] best effort
AUD_CNTL_ST DIP address 9
AUD_CNTL_ST CP ready 0
AUD_CNTL_ST ELD valid 0
AUD_CNTL_ST ELD ack 0
AUD_CNTL_ST ELD bufsize 16
AUD_CNTL_ST ELD address 5
AUD_HDMIW_STATUS CDCLK/DOTCLK underrun 1
AUD_HDMIW_STATUS CDCLK/DOTCLK overrun 0
AUD_HDMIW_STATUS BCLK/CDCLK underrun 0
AUD_HDMIW_STATUS BCLK/CDCLK overrun 0
AUD_CONV_CHCNT HDMI HBR enabled 0
AUD_CONV_CHCNT HDMI channel count 2
AUD_CONV_CHCNT HDMI channel mapping:
[0x100] 0 => 0
[0x111] 1 => 1
[0x1f2] 2 => 15
[0x1f3] 3 => 15
[0x1f4] 4 => 15
[0x1f5] 5 => 15
[0x1f6] 6 => 15
[0x1f7] 7 => 15
AUD_HDMIW_INFOFR HDMI audio Infoframe:
84010a70 01000000 00000000 00000000 00000000 00000000 00000000 00000000
------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Alsa-user mailing list
Alsa-user@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-user