[PATCH] drm/radeon/kms: remove useless radeon_ddc_dump()

Alex Deucher alexdeucher at gmail.com
Sun Oct 30 13:05:48 PDT 2011


On Sat, Oct 29, 2011 at 8:55 AM, Thomas Reim <reimth at googlemail.com> wrote:
> Dear Alex,
>
> but we use DDC probing e. g. to identify connectors with improperly
> terminated i2c bus. Instead of flooding logs and terminals with EDID dumps,
> we decided some months ago to use this function during module loading to
> inform the user once (and only once!), which connector has a monitor
> connected with valid EDID and which connector has not.

There's nothing in that function that actually prevents the printing
of bad EDIDs.  All it does is call drm_get_edid() and report whether
it found an EDID or not.  radeon_dvi_detect() already takes into
account the requires_extended_probe flag. The connectors are probed by
the fb code for the console as well so it just adds to the module load
time.  If we want to print what connectors are connected, it should be
done from the fb code so we only have to do it once.

>
> Graphic solutions in general have several connectors integrated, and it's
> sometimes really difficult to identify, which one of the does not work as
> expected, based on the logs. From above log we see, that a monitor is
> connected to DVI connector, nothing is connected to the VGA connector, and
> we have a problem with the HDMI connector. Without this fuinction, nothing
> helpful from radeon module would be in the logs.

We should print the connector name in the generic drm error code then
if we want to print this info at boot time.

>
> Maybe we can keep this function, but call it only for connectors, for which
> it works, i. e. not for DP, eDP and DP bridge connectors.

That's just as bad.  Users won't understand why only certain
connectors are probed.

>
> Best regards
>
> Thomas Reim
>
> Am Dienstag, den 25.10.2011, 19:24 -0400 schrieb alexdeucher at gmail.com:
>
> From: Alex Deucher <alexander.deucher at amd.com>
>
> The function didn't work with DP, eDP, or DP bridge
> connectors and thus confused users as it lead them to
> believe nothing was connected or the EDID was invalid
> when in fact is was, just on the aux bus rather an i2c.
>
> It should also speed up module loading as it avoids a
> bunch of extra DDC probing.
>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> ---
>  drivers/gpu/drm/radeon/radeon_display.c |   33
> -------------------------------
>  1 files changed, 0 insertions(+), 33 deletions(-)
>
> diff --git a/drivers/gpu/drm/radeon/radeon_display.c
> b/drivers/gpu/drm/radeon/radeon_display.c
> index 6adb3e5..4998736 100644
> --- a/drivers/gpu/drm/radeon/radeon_display.c
> +++ b/drivers/gpu/drm/radeon/radeon_display.c
> @@ -33,8 +33,6 @@
>  #include "drm_crtc_helper.h"
>  #include "drm_edid.h"
>
> -static int radeon_ddc_dump(struct drm_connector *connector);
> -
>  static void avivo_crtc_load_lut(struct drm_crtc *crtc)
>  {
>  	struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
> @@ -669,7 +667,6 @@ static void radeon_print_display_setup(struct drm_device
> *dev)
>  static bool radeon_setup_enc_conn(struct drm_device *dev)
>  {
>  	struct radeon_device *rdev = dev->dev_private;
> -	struct drm_connector *drm_connector;
>  	bool ret = false;
>
>  	if (rdev->bios) {
> @@ -689,8 +686,6 @@ static bool radeon_setup_enc_conn(struct drm_device
> *dev)
>  	if (ret) {
>  		radeon_setup_encoder_clones(dev);
>  		radeon_print_display_setup(dev);
> -		list_for_each_entry(drm_connector, &dev->mode_config.connector_list,
> head)
> -			radeon_ddc_dump(drm_connector);
>  	}
>
>  	return ret;
> @@ -743,34 +738,6 @@ int radeon_ddc_get_modes(struct radeon_connector
> *radeon_connector)
>  	return 0;
>  }
>
> -static int radeon_ddc_dump(struct drm_connector *connector)
> -{
> -	struct edid *edid;
> -	struct radeon_connector *radeon_connector =
> to_radeon_connector(connector);
> -	int ret = 0;
> -
> -	/* on hw with routers, select right port */
> -	if (radeon_connector->router.ddc_valid)
> -		radeon_router_select_ddc_port(radeon_connector);
> -
> -	if (!radeon_connector->ddc_bus)
> -		return -1;
> -	edid = drm_get_edid(connector, &radeon_connector->ddc_bus->adapter);
> -	/* Log EDID retrieval status here. In particular with regard to
> -	 * connectors with requires_extended_probe flag set, that will prevent
> -	 * function radeon_dvi_detect() to fetch EDID on this connector,
> -	 * as long as there is no valid EDID header found */
> -	if (edid) {
> -		DRM_INFO("Radeon display connector %s: Found valid EDID",
> -				drm_get_connector_name(connector));
> -		kfree(edid);
> -	} else {
> -		DRM_INFO("Radeon display connector %s: No monitor connected or invalid
> EDID",
> -				drm_get_connector_name(connector));
> -	}
> -	return ret;
> -}
> -
>  /* avivo */
>  static void avivo_get_fb_div(struct radeon_pll *pll,
>  			     u32 target_clock,
>
>


More information about the dri-devel mailing list