diff options
| author | Jani Nikula <jani.nikula@intel.com> | 2019-06-07 07:05:12 -0400 |
|---|---|---|
| committer | Jani Nikula <jani.nikula@intel.com> | 2019-06-12 05:51:05 -0400 |
| commit | 56a2b7f2a39a8d4b16a628e113decde3d7400879 (patch) | |
| tree | ec05a2dc902f3508b04d722a9ed2ae5fe5b35956 | |
| parent | de060de333eff20c1c2dad0139983f19150f776b (diff) | |
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
| -rw-r--r-- | drivers/gpu/drm/drm_edid.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 649cfd8b4200..c1952b6e5747 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c | |||
| @@ -1570,6 +1570,20 @@ static void connector_bad_edid(struct drm_connector *connector, | |||
| 1570 | } | 1570 | } |
| 1571 | } | 1571 | } |
| 1572 | 1572 | ||
| 1573 | /* Get override or firmware EDID */ | ||
| 1574 | static struct edid *drm_get_override_edid(struct drm_connector *connector) | ||
| 1575 | { | ||
| 1576 | struct edid *override = NULL; | ||
| 1577 | |||
| 1578 | if (connector->override_edid) | ||
| 1579 | override = drm_edid_duplicate(connector->edid_blob_ptr->data); | ||
| 1580 | |||
| 1581 | if (!override) | ||
| 1582 | override = drm_load_edid_firmware(connector); | ||
| 1583 | |||
| 1584 | return IS_ERR(override) ? NULL : override; | ||
| 1585 | } | ||
| 1586 | |||
| 1573 | /** | 1587 | /** |
| 1574 | * drm_do_get_edid - get EDID data using a custom EDID block read function | 1588 | * drm_do_get_edid - get EDID data using a custom EDID block read function |
| 1575 | * @connector: connector we're probing | 1589 | * @connector: connector we're probing |
| @@ -1597,15 +1611,10 @@ struct edid *drm_do_get_edid(struct drm_connector *connector, | |||
| 1597 | { | 1611 | { |
| 1598 | int i, j = 0, valid_extensions = 0; | 1612 | int i, j = 0, valid_extensions = 0; |
| 1599 | u8 *edid, *new; | 1613 | u8 *edid, *new; |
| 1600 | struct edid *override = NULL; | 1614 | struct edid *override; |
| 1601 | |||
| 1602 | if (connector->override_edid) | ||
| 1603 | override = drm_edid_duplicate(connector->edid_blob_ptr->data); | ||
| 1604 | |||
| 1605 | if (!override) | ||
| 1606 | override = drm_load_edid_firmware(connector); | ||
| 1607 | 1615 | ||
| 1608 | if (!IS_ERR_OR_NULL(override)) | 1616 | override = drm_get_override_edid(connector); |
| 1617 | if (override) | ||
| 1609 | return override; | 1618 | return override; |
| 1610 | 1619 | ||
| 1611 | if ((edid = kmalloc(EDID_LENGTH, GFP_KERNEL)) == NULL) | 1620 | if ((edid = kmalloc(EDID_LENGTH, GFP_KERNEL)) == NULL) |
