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:1920x1...@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@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/alsa-user

Reply via email to