[Intel-gfx] [PATCH v5] drm/i915: pass ELD to HDMI/DP audio driver
Wu Fengguang
fengguang.wu at intel.com
Wed Nov 2 09:52:46 CET 2011
Hi Sander,
> On Tue, Nov 1, 2011 at 8:45 PM, Wu Fengguang <fengguang.wu at intel.com> wrote:
> > Hi Christopher,
> >
> >> The log does confirm that the drm_edid_to_eld function is running, and
> >> that we're not far from a solution:
> >> [ 21.061417] [drm:drm_edid_to_eld], ELD monitor TX-SR607
> >> [ 21.061421] [drm:drm_edid_to_eld], ELD size 13, SAD count 8
> >
> > It looks all sane to this point.
> >
> >> As for where I am getting the EDID dump from, I am getting it from
> >> /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-HDMI-A-2/edid,
> >> which provides direct virtual access to the EDID response of the
> >> connected device.
> >>
> >> I'm completely confident that the device doesn't report too small of a
> >> buffer size, and that it's completely compliant with the spec: If you
> >
> > Agreed.
> >
> >> have a Windows virtual machine (or if you're masochistic enough - a real
> >> machine) you should download the excellent, free "Monitor Asset Manager"
> >> by EnTech Taiwan from http://www.entechtaiwan.com/util/moninfo.shtm. It
> >> will let you analyze EDID + ELD + extended timings, etc from an EDID
> >> dump, such as the one taken above. It understands every part of EDID.
> >>
> >> I've put together a small archive containing my exact EDID binary dump
> >> (taken from the above device path), the FULL dmesg log, as well as
> >> EnTech's interpretation of the EDID dump, showing the full list of
> >> supported channels, formats, etc.
> >>
> >> I'm guessing there is some tiny bug in your interpretation of how to
> >> read ELD, maybe an incorrect 1 byte offset or something like that.
> >>
> >> Here's the pack:
> >> http://www.pulseforce.com/node/edid_to_eld.zip
> >
> > Thanks! It's great tool and information!
> >
> >> If you do a hex analysis of my EDID dump and compare it to what the
> >> edid_to_eld function is trying to do, it will probably show what's
> >> wrong. I'd love to have a look at that myself but am really busy with a
> >> project over here so I can't help out other than to recompile and test
> >> as fast as I can.
> >
> > Would you install the "intel-gpu-tools" package and run its
> > intel_audio_dump utility? If not shipped with your distribution, the
> > source code is also available in
> >
> > git://anongit.freedesktop.org/git/xorg/app/intel-gpu-tools
> >
> > You'll need to install packages "autotools-dev pkg-config
> > libpciaccess-dev libdrm-dev libdrm-intel1" in order to build it from
> > source.
> >
> > intel_audio_dump will dump the ELD data in the hardware buffer for use
> > by the audio driver. By verifying if that data is correct, we are able
> > to analyze whether and how the audio driver goes wrong.
> >
>
> I think I experience similar issues. In my case the multi-channel pcm
> playback through HDMI doesn't work. Stereo and passthrough seem to
> work fine though !? It's hookedup to my TV via a yamaha receiver.
Yeah, multi-channel playback should not work due to the audio driver
not knowing the HDMI sink is multi-channel capable.
Stereo and passthrough should work always.
> I'm currently running Linux 3.1 with a G45 chipset.
>
> libdrm 2.4.27-1
> xf86-video-intel 2.16.0-1
>
> The eld seems be incorrectly parsed, though the kernel log didn't give
> much info. The eld info from alsa is rather empty:
In fact Linux 3.1 does not have the ELD patch yet. It should go into
the upcoming 3.2.
> cat /proc/asound/Intel/eld#3.0
> monitor_present 1
> eld_valid 0
>
> Using the same Monitor Asset Manager I was able to verify that the edid from
> (/sys/devices/pci0000\:00/0000\:00\:02.0/drm/card0/card0-HDMI-A-1/edid
> ) does seem to contain the correct information.
That's good.
> I've attached both the edid and the output of Monitor Asset Manager.In
> addition I also run the intel_audio_dump.
>
> Let me know if you need anymore information.
>
As the ELD patch is not there, intel_audio_dump correctly reports
AUD_CNTL_ST ELD valid 0
I'm not sure if it's convenient for you to compile new kernels (with
the ELD patch applied). If not, we can wait Christopher White for the
feedback.
Thanks,
Fengguang
> Monitor
> Model name............... SAMSUNG
> Manufacturer............. Samsung
> Plug and Play ID......... SAM050D
> Serial number............ 1
> Manufacture date......... 2008, ISO week 48
> Filter driver............ None
> -------------------------
> EDID revision............ 1.3
> Input signal type........ Digital
> Color bit depth.......... Undefined
> Display type............. RGB color
> Screen size.............. 160 x 90 mm (7.2 in)
> Power management......... Not supported
> Extension blocs.......... 1 (CEA-EXT)
> -------------------------
> DDC/CI................... n/a
>
> Color characteristics
> Default color space...... Non-sRGB
> Display gamma............ 2.20
> Red chromaticity......... Rx 0.640 - Ry 0.330
> Green chromaticity....... Gx 0.300 - Gy 0.600
> Blue chromaticity........ Bx 0.150 - By 0.060
> White point (default).... Wx 0.313 - Wy 0.329
> Additional descriptors... None
>
> Timing characteristics
> Horizontal scan range.... 26-81kHz
> Vertical scan range...... 24-75Hz
> Video bandwidth.......... 150MHz
> CVT standard............. Not supported
> GTF standard............. Not supported
> Additional descriptors... None
> Preferred timing......... Yes
> Native/preferred timing.. 1920x1080p at 60Hz (16:9)
> Modeline............... "1920x1080" 148.500 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
> Detailed timing #1....... 1280x720p at 60Hz (16:9)
> Modeline............... "1280x720" 74.250 1280 1390 1430 1650 720 725 730 750 +hsync +vsync
>
> Standard timings supported
> 720 x 400p at 70Hz - IBM VGA
> 640 x 480p at 60Hz - IBM VGA
> 640 x 480p at 67Hz - Apple Mac II
> 640 x 480p at 72Hz - VESA
> 640 x 480p at 75Hz - VESA
> 800 x 600p at 60Hz - VESA
> 800 x 600p at 72Hz - VESA
> 800 x 600p at 75Hz - VESA
> 832 x 624p at 75Hz - Apple Mac II
> 1024 x 768p at 60Hz - VESA
> 1024 x 768p at 70Hz - VESA
> 1024 x 768p at 75Hz - VESA
> 1280 x 1024p at 75Hz - VESA
> 1152 x 870p at 75Hz - Apple Mac II
> 1152 x 864p at 75Hz - VESA STD
> 1280 x 800p at 60Hz - VESA STD
> 1280 x 960p at 60Hz - VESA STD
> 1280 x 1024p at 60Hz - VESA STD
> 1440 x 900p at 60Hz - VESA STD
> 1440 x 900p at 75Hz - VESA STD
> 1680 x 1050p at 60Hz - VESA STD
>
> EIA/CEA-861 Information
> Revision number.......... 3
> IT underscan............. Supported
> Basic audio.............. Supported
> YCbCr 4:4:4.............. Supported
> YCbCr 4:2:2.............. Supported
> Native formats........... 4
> Detailed timing #1....... 1920x1080i at 60Hz (16:9)
> Modeline............... "1920x1080" 74.250 1920 2008 2052 2200 1080 1084 1094 1124 interlace +hsync +vsync
> Detailed timing #2....... 720x480p at 60Hz (16:9)
> Modeline............... "720x480" 27.000 720 736 798 858 480 489 495 525 -hsync -vsync
>
> CE video identifiers (VICs) - timing/formats supported
> 1920 x 1080p at 60Hz - HDTV (16:9, 1:1) [Native]
> 1280 x 720p at 60Hz - HDTV (16:9, 1:1)
> 1920 x 1080i at 60Hz - HDTV (16:9, 1:1)
> 720 x 480p at 60Hz - EDTV (16:9, 32:27)
> 1920 x 1080p at 24Hz - HDTV (16:9, 1:1)
> 1920 x 1080p at 30Hz - HDTV (16:9, 1:1)
> 1440 x 480p at 60Hz - DVD (16:9, 16:27)
> 2880 x 480p at 60Hz - Console (16:9, 8:27)
> NB: NTSC refresh rate = (Hz*1000)/1001
>
> CE audio data (formats supported)
> LPCM 2-channel, 16/20/24 bit depths at 32/44/48/88/96/176/192 kHz
> LPCM 8-channel, 16/20/24 bit depths at 32/44/48/88/96/176/192 kHz
> AC-3 6-channel, 640k max. bit rate at 32/44/48 kHz
> DTS 7-channel, 1536k max. bit rate at 32/44/48/88/96 kHz
> SACD 6-channel at 44 kHz
> DD+ 8-channel at 44/48 kHz
> DVD-A 8-channel at 48/96/192 kHz
> DTS-HD 8-channel, 16-bit at 48/96/192 kHz
>
> CE speaker allocation data
> Channel configuration.... 7.1
> Front left/right......... Yes
> Front LFE................ Yes
> Front center............. Yes
> Rear left/right.......... Yes
> Rear center.............. Yes
> Front left/right center.. No
> Rear left/right center... Yes
> Rear LFE................. No
>
> CE video capability data
> CE scan behavior......... Supports overscan and underscan
> IT scan behavior......... Supports overscan and underscan
> PT scan behavior......... Not supported
> RGB quantization range... Not supported
> YCC quantization range... Not supported
>
> CE colorimetry data
> xvYCC709 support......... Yes
> xvYCC601 support......... Yes
> sYCC601 support.......... No
> AdobeYCC601 support...... No
> AdobeRGB support......... No
> Metadata profile flags... 0x01
>
> CE vendor specific data (VSDB)
> IEEE registration number. 0x000C03
> CEC physical address..... 1.1.0.0
> Supports AI (ACP, ISRC).. Yes
> Supports 48bpp........... No
> Supports 36bpp........... Yes
> Supports 30bpp........... Yes
> Supports YCbCr 4:4:4..... Yes
> Supports dual-link DVI... No
> Maximum TMDS clock....... 225MHz
> Audio/video latency (p).. n/a
> Audio/video latency (i).. n/a
> HDMI video capabilities.. No
> Data payload............. 030C001100B82D00
>
> Report information
> Date generated........... 11/2/2011
> Software revision........ 2.60.0.972
> Data source.............. File
> Operating system......... 5.1.2600.2.Service Pack 3 (Vista masked)
>
> Raw data
> 00,FF,FF,FF,FF,FF,FF,00,4C,2D,0D,05,01,00,00,00,30,12,01,03,80,10,09,78,0A,EE,91,A3,54,4C,99,26,
> 0F,50,54,BD,EF,80,71,4F,81,00,81,40,81,80,95,00,95,0F,B3,00,01,01,02,3A,80,18,71,38,2D,40,58,2C,
> 45,00,A0,5A,00,00,00,1E,01,1D,00,72,51,D0,1E,20,6E,28,55,00,A0,5A,00,00,00,1E,00,00,00,FD,00,18,
> 4B,1A,51,0F,00,0A,20,20,20,20,20,20,00,00,00,FC,00,53,41,4D,53,55,4E,47,0A,20,20,20,20,20,01,A2,
> 02,03,3A,F4,48,90,04,05,03,20,22,0F,24,38,09,7F,07,0F,7F,07,15,07,50,3E,1F,C0,4D,02,00,57,06,00,
> 67,54,00,5F,54,01,83,5F,00,00,E2,00,0F,E3,05,03,01,68,03,0C,00,11,00,B8,2D,00,01,1D,80,18,71,1C,
> 16,20,58,2C,25,00,A0,5A,00,00,00,9E,8C,0A,D0,8A,20,E0,2D,10,10,3E,96,00,A0,5A,00,00,00,18,00,00,
> 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,6B
> VIDEO_DIP_CTL 0xa13b0000 Video DIP Control
> SDVOB 0x00000adc Digital Display Port B Control Register
> SDVOC 0x0000089c Digital Display Port C Control Register
> PORT_HOTPLUG_EN 0x30000320 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 0x00000000 Audio Channel ID and Stream ID
> AUD_OUT_STR_DESC 0x00000032 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 0x00000000 Audio Pin Widget Control
> AUD_PINW_UNSOLRESP 0x80000003 Audio Unsolicited Response Enable
> AUD_CNTL_ST 0x00002028 Audio Control State Register
> AUD_PINW_CONFIG 0x18560010 Audio Configuration Default
> AUD_HDMIW_STATUS 0x00000000 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 0x00000077 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 0
> SDVOB HDMI encoding 1
> SDVOB SDVO encoding 0
> SDVOB null packets 1
> 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 0
> 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 1
> VIDEO_DIP_CTL port select [0x1] Digital Port B
> VIDEO_DIP_CTL DIP buffer trans active 0
> VIDEO_DIP_CTL AVI DIP enabled 1
> VIDEO_DIP_CTL vendor DIP enabled 0
> VIDEO_DIP_CTL SPD DIP enabled 1
> VIDEO_DIP_CTL DIP buffer index [0x3] Source Product Description DIP
> VIDEO_DIP_CTL DIP trans freq [0x3] reserved
> VIDEO_DIP_CTL DIP buffer size 0
> 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 0x0
> AUD_OUT_CH_STR lowest channel 0x0
> AUD_OUT_STR_DESC stream channels 0x2
> 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 0
> 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 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 0
> 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 1
> AUD_CONV_CHCNT HDMI channel mapping:
> [0x0] 0 => 0
> [0x11] 1 => 1
> [0x22] 2 => 2
> [0x33] 3 => 3
> [0x44] 4 => 4
> [0x55] 5 => 5
> [0x66] 6 => 6
> [0x77] 7 => 7
> AUD_HDMIW_INFOFR HDMI audio Infoframe:
> 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
More information about the Intel-gfx
mailing list