Bug 88876 - [SKL][Audio][HD-A Display]: Can't refresh ELD information with cable hot-plug
Summary: [SKL][Audio][HD-A Display]: Can't refresh ELD information with cable hot-plug
Status: CLOSED FIXED
Alias: None
Product: DRI
Classification: Unclassified
Component: DRM/Intel (show other bugs)
Version: XOrg git
Hardware: Other All
: medium normal
Assignee: Intel GFX Bugs mailing list
QA Contact: Intel GFX Bugs mailing list
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-01-30 08:56 UTC by Libin Yang
Modified: 2015-04-21 01:40 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments

Description Libin Yang 2015-01-30 08:56:53 UTC
Bug detailed description
=======
Connected with a HDMI or DisplayPort monitor, can get the correct ELD information;
then unplug and plug the cable to another monitor, also get the original ELD information, it can't be refreshed.

Reproduce Steps
==============
1. connected with one HDMI monitor, enter command: cat /proc/asound/PCH/eld#2.0
2. unplug the HDMI cable, enter command: cat /proc/asound/PCH/eld#2.0
3. plug the HDMI cable to another monitor, then enter command: cat /proc/asound/PCH/eld#2.0

Expected Result
=============

Actual Result
===========

Analysis & Root Cause
===================


The old drm-intel-nightly is OK and the latest kernel drm-intel-nightly doesn't work
Comment 1 Jani Nikula 2015-01-30 09:07:57 UTC
We're possibly still missing something in SKL audio enabling. The fact that it did work may be just a chance. A bisect might be helpful.
Comment 2 Libin Yang 2015-01-30 12:41:28 UTC
OK. We will try to do the bisect and let you know the result.
Comment 3 jinliangx.wang 2015-02-02 08:01:12 UTC
Bisect from drm-intel-nightly kernel tree.

first bad commit:
commit f03e4179cef145253eba87bbf037047e54e728dd
Author:     Jani Nikula <jani.nikula@intel.com>
AuthorDate: Fri Jan 16 14:27:16 2015 +0200
Commit:     Daniel Vetter <daniel.vetter@ffwll.ch>
CommitDate: Tue Jan 27 09:51:11 2015 +0100

    drm/i915/dsi: call dpi_send_cmd() for each dsi port at a higher level

    Instead of having the for each dsi port loop within dpi_send_cmd(), add
    a port parameter to the function and call it for each port instead.

    This is a rewrite of

    commit 4510cd779e5897eeb8691aecbd639bb62ec27d55
    Author: Gaurav K Singh <gaurav.k.singh@intel.com>
    Date:   Thu Dec 4 10:58:51 2014 +0530

        drm/i915: Dual link needs Shutdown and Turn on packet for both ports

    to add more flexibility in using dpi_send_cmd() for just one port as
    necessary. No functional changes.

    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    Reviewed-By: Shobhit Kumar <shobhit.kumar@intel.com>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Comment 4 Jani Nikula 2015-02-03 12:50:46 UTC
(In reply to jinliangx.wang from comment #3)
> Bisect from drm-intel-nightly kernel tree.
> 
> first bad commit:
> commit f03e4179cef145253eba87bbf037047e54e728dd
> Author:     Jani Nikula <jani.nikula@intel.com>
> AuthorDate: Fri Jan 16 14:27:16 2015 +0200
> Commit:     Daniel Vetter <daniel.vetter@ffwll.ch>
> CommitDate: Tue Jan 27 09:51:11 2015 +0100
> 
>     drm/i915/dsi: call dpi_send_cmd() for each dsi port at a higher level

This bisect result can't be right, SKL does not even have DSI.
Comment 5 jinliangx.wang 2015-03-02 06:42:37 UTC
bisect pending.
Comment 6 jinliangx.wang 2015-03-03 03:25:22 UTC
Hi Jani,

After bisect with drm-intel-nightly kernel tree, I think this bug should not be a regression, it can be defined as a new bug for SKL.

Test the kernel on 2014-12-04 (hasn't merged any SKL GFX patch from drm-intel-internal at Dec 2014), boot with HDMI monitor connected, do the test steps:
1.  cat /proc/asound/PCH/eld#2.0
monitor_present         1
eld_valid               1
monitor_name            ASUS PA238
connection_type         HDMI
eld_version             [0x2] CEA-861D or below
edid_version            [0x3] CEA-861-B, C or D
manufacture_id          0x6904
product_id              0x23b1
port_id                 0x0
support_hdcp            0
support_ai              0
audio_sync_delay        0
speakers                [0x1] FL/FR
sad_count               1
sad0_coding_type        [0x1] LPCM
sad0_channels           2
sad0_rates              [0x4e0] 32000 44100 48000 96000
sad0_bits               [0xe0000] 16 20 24
(Can get ELD info of monitor, it's correct)
2. unplug HDMI cable, cat /proc/asound/PCH/eld#2.0
monitor_present         1
eld_valid               1
monitor_name            ASUS PA238
connection_type         HDMI
eld_version             [0x2] CEA-861D or below
edid_version            [0x3] CEA-861-B, C or D
manufacture_id          0x6904
product_id              0x23b1
port_id                 0x0
support_hdcp            0
support_ai              0
audio_sync_delay        0
speakers                [0x1] FL/FR
sad_count               1
sad0_coding_type        [0x1] LPCM
sad0_channels           2
sad0_rates              [0x4e0] 32000 44100 48000 96000
sad0_bits               [0xe0000] 16 20 24
(The ELD info can't be refreshed, it' wrong)

With HDMI monitor disconnect, the ELD info should be refresh to 
monitor_present         0
eld_valid               0
But the reproducibility of the bug was not 100%, need hotplug HDMI cable for many times.

I also tried other kernels of a few days between 2014-12-04 to 2015-12-31, the test results are same as above. 

So I can't find the good commit, it should not be regression.


Next I test kernel on 2015-01-30 and 2015-02-28, (has merged SKL GFX patches from drm-intel-internal tree), boot with HDMI monitor connected, do the test steps:
1.  cat /proc/asound/PCH/eld#2.0
monitor_present         1
eld_valid               1
monitor_name            ASUS PA238
connection_type         HDMI
eld_version             [0x2] CEA-861D or below
edid_version            [0x3] CEA-861-B, C or D
manufacture_id          0x6904
product_id              0x23b1
port_id                 0x0
support_hdcp            0
support_ai              0
audio_sync_delay        0
speakers                [0x1] FL/FR
sad_count               1
sad0_coding_type        [0x1] LPCM
sad0_channels           2
sad0_rates              [0x4e0] 32000 44100 48000 96000
sad0_bits               [0xe0000] 16 20 24
(Can get ELD info of monitor, it's correct)
2. unplug HDMI cable, cat /proc/asound/PCH/eld#2.0
monitor_present         0
eld_valid               0
(With HDMI monitor disconnect, the ELD info can be refresh to 0, it's correct)
3. plug HDMI cable to another monitor, cat /proc/asound/PCH/eld#2.0
monitor_present         0
eld_valid               0
(Can't get ELD info of new monitor, it's wrong)

The phenomenon is different from Dec 2014, but still unable to match the requirement of ELD info refresh.

Hardware	
Platform: 	Skylake Client
CPU:	        Skylake C0
Chipset PCH:	SKL PCH-LP A2
CRB:	        Skylake Y LPDDR3 RVP3  FAB2
Audio card:	ALC286
Reworks:	FBS02, FBS03
Software
Linux distribution: 	Ubuntu 14.04 64 bits
BIOS:           SKLSE2R1.86C.B068.R00.150109090
Comment 7 Jani Nikula 2015-03-03 09:46:04 UTC
I can't find anything missing on display side, might be a problem in the audio driver. That's where /proc/asound/PCH/eld#2.0 comes from anyway.
Comment 8 Libin Yang 2015-03-05 01:09:32 UTC
From the audio driver viewpointer, we need an interrupt to notify audio driver for the hotplug event. But there is no such interrupt. So audio driver will never know this event.
Comment 9 Jani Nikula 2015-03-05 11:30:20 UTC
(In reply to Libin Yang from comment #8)
> From the audio driver viewpointer, we need an interrupt to notify audio
> driver for the hotplug event. But there is no such interrupt. So audio
> driver will never know this event.

Do you get a picture on screen?
Comment 10 Libin Yang 2015-03-06 00:44:22 UTC
Yes. The screen is OK. But there are no interrupts for audio driver.
Comment 11 Libin Yang 2015-04-02 08:55:05 UTC
Hi Jani,

Do you have some suggestion on this issue?

Thanks,
Libin
Comment 12 Libin Yang 2015-04-08 03:16:43 UTC
Hi Jani,

This bug is fixed on the latest kernel. Do you know which patches in gfx may be related with this issue?

BTW: We upgrade the CPU. It is said CPU has issue with hotplug and HDMI audio codec detection.

Thanks,
Libin
Comment 13 Mengdong Lin 2015-04-21 01:40:12 UTC
This issue cannot be reproduced on latest drm-intel kernel, hot-plug works well.
So we close this issue. 

Thanks gfx driver support!


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.