[Intel-gfx] [PATCH v5] drm/i915: pass ELD to HDMI/DP audio driver

Sander Jansen s.jansen at gmail.com
Wed Nov 2 07:10:44 CET 2011


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.

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:

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.

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.

Cheers,

Sander

PS. Hope the attachments are not too big.
-------------- next part --------------
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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: g45-samsung.edid
Type: application/octet-stream
Size: 256 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/intel-gfx/attachments/20111102/c2d7b9b7/attachment.obj>
-------------- next part --------------
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