• Wu Fengguang's avatar
    drm/i915: pass ELD to HDMI/DP audio driver · e0dac65e
    Wu Fengguang authored
    Add ELD support for Intel Eaglelake, IbexPeak/Ironlake,
    SandyBridge/CougarPoint and IvyBridge/PantherPoint chips.
    
    ELD (EDID-Like Data) describes to the HDMI/DP audio driver the audio
    capabilities of the plugged monitor. It's built and passed to audio
    driver in 2 steps:
    
    (1) at get_modes time, parse EDID and save ELD to drm_connector.eld[]
    
    (2) at mode_set time, write drm_connector.eld[] to the Transcoder's hw
        ELD buffer and set the ELD_valid bit to inform HDMI/DP audio driver
    
    This patch is tested OK on G45/HDMI, IbexPeak/HDMI and IvyBridge/HDMI+DP.
    Test scheme: plug in the HDMI/DP monitor, and run
    
            cat /proc/asound/card0/eld*
    
    to check if the monitor name, HDMI/DP type, etc. show up correctly.
    
    Minor imperfection: the GEN5_AUD_CNTL_ST/DIP_Port_Select field always
    reads 0 (reserved). Without knowing the port number, I worked it around
    by setting the ELD_valid bit for ALL the three ports. It's tested to not
    be a problem, because the audio driver will find invalid ELD data and
    hence rightfully abort, even when it sees the ELD_valid indicator.
    
    Thanks to Zhenyu and Pierre-Louis for a lot of valuable help and testing.
    
    CC: Zhao Yakui <yakui.zhao@intel.com>
    CC: Wang Zhenyu <zhenyu.z.wang@intel.com>
    CC: Jeremy Bush <contractfrombelow@gmail.com>
    CC: Christopher White <c.white@pulseforce.com>
    CC: Pierre-Louis Bossart <pierre-louis.bossart@intel.com>
    CC: Paul Menzel <paulepanter@users.sourceforge.net>
    Signed-off-by: default avatarWu Fengguang <fengguang.wu@intel.com>
    Signed-off-by: default avatarKeith Packard <keithp@keithp.com>
    e0dac65e
intel_display.c 236 KB