drm/edid: abstract override/firmware EDID retrieval
Abstract the debugfs override and the firmware EDID retrieval function. We'll be needing it in the follow-up. No functional changes. Cc: Daniel Vetter <daniel@ffwll.ch> Cc: Harish Chegondi <harish.chegondi@intel.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Tested-by: Tested-by: Paul Wise <pabs3@bonedaddy.net> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190607110513.12072-1-jani.nikula@intel.com
This commit is contained in:
parent
de060de333
commit
56a2b7f2a3
@ -1570,6 +1570,20 @@ static void connector_bad_edid(struct drm_connector *connector,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Get override or firmware EDID */
|
||||||
|
static struct edid *drm_get_override_edid(struct drm_connector *connector)
|
||||||
|
{
|
||||||
|
struct edid *override = NULL;
|
||||||
|
|
||||||
|
if (connector->override_edid)
|
||||||
|
override = drm_edid_duplicate(connector->edid_blob_ptr->data);
|
||||||
|
|
||||||
|
if (!override)
|
||||||
|
override = drm_load_edid_firmware(connector);
|
||||||
|
|
||||||
|
return IS_ERR(override) ? NULL : override;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* drm_do_get_edid - get EDID data using a custom EDID block read function
|
* drm_do_get_edid - get EDID data using a custom EDID block read function
|
||||||
* @connector: connector we're probing
|
* @connector: connector we're probing
|
||||||
@ -1597,15 +1611,10 @@ struct edid *drm_do_get_edid(struct drm_connector *connector,
|
|||||||
{
|
{
|
||||||
int i, j = 0, valid_extensions = 0;
|
int i, j = 0, valid_extensions = 0;
|
||||||
u8 *edid, *new;
|
u8 *edid, *new;
|
||||||
struct edid *override = NULL;
|
struct edid *override;
|
||||||
|
|
||||||
if (connector->override_edid)
|
override = drm_get_override_edid(connector);
|
||||||
override = drm_edid_duplicate(connector->edid_blob_ptr->data);
|
if (override)
|
||||||
|
|
||||||
if (!override)
|
|
||||||
override = drm_load_edid_firmware(connector);
|
|
||||||
|
|
||||||
if (!IS_ERR_OR_NULL(override))
|
|
||||||
return override;
|
return override;
|
||||||
|
|
||||||
if ((edid = kmalloc(EDID_LENGTH, GFP_KERNEL)) == NULL)
|
if ((edid = kmalloc(EDID_LENGTH, GFP_KERNEL)) == NULL)
|
||||||
|
Loading…
Reference in New Issue
Block a user