[PATCH 0/2] drm_radeon_kms: Some Regression Fixes for Extended DDC Probe

Thomas Reim reimth at googlemail.com
Mon Nov 28 08:20:08 PST 2011


Since Linux 3.2-rc2 the following two patches have changed the DDC detect and
and probe behaviour of the radeon driver:
- drm/radeon/kms: always do extended edid probe
- drm/radeon/kms: remove useless radeon_ddc_dump()

The first patch makes an EDID header check mandatory during DDC detection/probe.
The second patch removes the DDC check during Radeon device setup, that was done
before the actual connector detection. The log output of this check confused
users with DP, eDP, or DP bridge connectors.

Found regression:
(1) The stop of DDC detection for floating connectors, i. e. connectors with
    improperly wired/terminated i2c bus, of RS690/RS740 family chipsets does
    not work anymore.
(2) HW bugs that result in the DDC being available, but unusable EDID (header)
    do now lead to connectors silently probed via i2c but not being used. There
    is no notification to the user (via kernel logs). Even with drm debugging
    enabled at kernel boot time, there is no information. No chance for a user
    to identify the root cause of the connector being probed but not being
    used.
    
The attached two fixes restore the RS690/RS740 floating connectors quirk,
i. e. stop of DDC detection. In addition, the detection of such floating
connectors is now more comprehensive: Also floating connectors with a few (<= 8)
random byte values other than zero reported during i2c transaction are now
properly detected.

During discussion of patch "drm/radeon/kms: remove useless radeon_ddc_dump()"
(see http://www.spinics.net/lists/dri-devel/msg15523.html) the proposal was
made to include the log information of the removed function radeon_ddc_dump()
into function drm_fb_helper_initial_config(). Further investigations showed,
that during intial framebuffer configuration the connector (type) specific
detect function will be called surrounded by kernel debug log message output.
In the here important radeon DVI connector case function radeon_dvi_detect()
is called. As this function is anyway touched by the present patch,
I decided to move the unusable EDID logging there. Counter radeon_connector->
broken_edid_header_counter will ensure, that kernel logs are not flooded, as
it was the case before implementation of extended DDC/EDID probe.


Thomas Reim (2):
  drm: Improve detection of floating connectors
  drm/radeon/kms: wrap-up handling of floating connectors and connector
    unavailability status logging

 drivers/gpu/drm/drm_edid.c                 |   13 ++++++-
 drivers/gpu/drm/radeon/radeon_connectors.c |   54 +++++++++++++++++++++++-----
 drivers/gpu/drm/radeon/radeon_i2c.c        |    7 +++-
 drivers/gpu/drm/radeon/radeon_mode.h       |    3 ++
 4 files changed, 65 insertions(+), 12 deletions(-)



More information about the dri-devel mailing list