|
@@ -1580,6 +1580,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
|
|
@@ -1607,15 +1621,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;
|
|
|
|
|
-
|
|
|
|
|
- if (connector->override_edid)
|
|
|
|
|
- override = drm_edid_duplicate(connector->edid_blob_ptr->data);
|
|
|
|
|
-
|
|
|
|
|
- if (!override)
|
|
|
|
|
- override = drm_load_edid_firmware(connector);
|
|
|
|
|
|
|
+ struct edid *override;
|
|
|
|
|
|
|
|
- if (!IS_ERR_OR_NULL(override))
|
|
|
|
|
|
|
+ override = drm_get_override_edid(connector);
|
|
|
|
|
+ if (override)
|
|
|
return override;
|
|
return override;
|
|
|
|
|
|
|
|
if ((edid = kmalloc(EDID_LENGTH, GFP_KERNEL)) == NULL)
|
|
if ((edid = kmalloc(EDID_LENGTH, GFP_KERNEL)) == NULL)
|