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.
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:
--- intel-hdmiaudio-not-working.dump 2010-06-03 22:56:23.648866447 +0200
+++ intel-hdmiaudio-working.dump 2010-06-03 22:56:23.659851798 +0200
@@ -1,5 +1,5 @@
VIDEO_DIP_CTL 0x20000600 Video DIP Control
-SDVOB 0x8000089c Digital Display Port B Control Register
+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
@@ -25,12 +25,12 @@
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 0x00002000 Audio Control State Register
+AUD_CNTL_ST 0x20232028 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 0x00000100 Audio Converter Channel Count
+AUD_CONV_CHCNT 0x000001f7 Audio Converter Channel Count
AUD_CTS_ENABLE 0x00000000 Audio CTS Programming Enable
Details:
@@ -45,7 +45,7 @@
SDVOB HDMI encoding 1
SDVOB SDVO encoding 0
SDVOB null packets 0
-SDVOB audio enabled 0
+SDVOB audio enabled 1
SDVOC enable 0
SDVOC HDMI encoding 1
SDVOC SDVO encoding 0
@@ -138,18 +138,18 @@
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 0
+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 port select [0x1] Digital Port B
AUD_CNTL_ST DIP buffer index [0x0] Audio DIP
-AUD_CNTL_ST DIP trans freq [0x0] disabled
-AUD_CNTL_ST DIP address 1
+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 1
+AUD_CNTL_ST ELD address 2
AUD_HDMIW_STATUS CDCLK/DOTCLK underrun 1
AUD_HDMIW_STATUS CDCLK/DOTCLK overrun 0
AUD_HDMIW_STATUS BCLK/CDCLK underrun 0
@@ -159,11 +159,11 @@
AUD_CONV_CHCNT HDMI channel mapping:
[0x100] 0 => 0
[0x111] 1 => 1
- [0x122] 2 => 2
- [0x133] 3 => 3
- [0x144] 4 => 4
- [0x155] 5 => 5
- [0x166] 6 => 6
- [0x177] 7 => 7
+ [0x1f2] 2 => 15
+ [0x1f3] 3 => 15
+ [0x1f4] 4 => 15
+ [0x1f5] 5 => 15
+ [0x1f6] 6 => 15
+ [0x1f7] 7 => 15
AUD_HDMIW_INFOFR HDMI audio Infoframe:
- 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
+ 84010a70 01000000 00000000 00000000 00000000 00000000 00000000 00000000
--
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 0x20232028 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 2
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 0x00002000 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 0x00000100 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 0
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 [0x0] disabled
AUD_CNTL_ST DIP address 1
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 1
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
[0x122] 2 => 2
[0x133] 3 => 3
[0x144] 4 => 4
[0x155] 5 => 5
[0x166] 6 => 6
[0x177] 7 => 7
AUD_HDMIW_INFOFR HDMI audio Infoframe:
00000000 00000000 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