[PATCH 2/2] drm/radeon: use a fetch function to get the edid

Daniel Vetter daniel at ffwll.ch
Tue Jul 15 08:18:51 PDT 2014


On Tue, Jul 15, 2014 at 11:08:11AM -0400, Alex Deucher wrote:
> We keep a cached version of the edid in radeon_connector which
> we use for determining connectedness and when to enable certain
> features like hdmi audio, etc.  When the user uses the firmware
> interface to override the driver with some other edid the driver's
> copy is never updated.  The fetch function will check if there
> is a user supplied edid and update the driver's copy if there
> is.
> 
> bug:
> https://bugs.freedesktop.org/show_bug.cgi?id=80691
> 
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>

[snip]

> +struct edid *radeon_connector_edid(struct drm_connector *connector)
> +{
> +	struct radeon_connector *radeon_connector = to_radeon_connector(connector);
> +	struct drm_property_blob *edid_blob = connector->edid_blob_ptr;
> +
> +	if (radeon_connector->edid) {
> +		return radeon_connector->edid;
> +	} else if (edid_blob) {
> +		struct edid *edid = kmemdup(edid_blob->data, edid_blob->length, GFP_KERNEL);
> +		if (edid)
> +			radeon_connector->edid = edid;
> +	}
> +	return radeon_connector->edid;
> +}

We have similar issues on intel now that we use the debugfs interface to
force certain edids (for validating e.g. 4k or 3d) - our code doesn't see
the forced edid. Should we have a helper somewhere or just change
drm_get_edid to dtrt here?

Adding Thomas who's working on this.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch


More information about the dri-devel mailing list