]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - queue-4.19/drm-edid-abstract-override-firmware-edid-retrieval.patch
Fix up backported ptrace patch
[thirdparty/kernel/stable-queue.git] / queue-4.19 / drm-edid-abstract-override-firmware-edid-retrieval.patch
1 From 56a2b7f2a39a8d4b16a628e113decde3d7400879 Mon Sep 17 00:00:00 2001
2 From: Jani Nikula <jani.nikula@intel.com>
3 Date: Fri, 7 Jun 2019 14:05:12 +0300
4 Subject: drm/edid: abstract override/firmware EDID retrieval
5
6 From: Jani Nikula <jani.nikula@intel.com>
7
8 commit 56a2b7f2a39a8d4b16a628e113decde3d7400879 upstream.
9
10 Abstract the debugfs override and the firmware EDID retrieval
11 function. We'll be needing it in the follow-up. No functional changes.
12
13 Cc: Daniel Vetter <daniel@ffwll.ch>
14 Cc: Harish Chegondi <harish.chegondi@intel.com>
15 Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
16 Tested-by: Tested-by: Paul Wise <pabs3@bonedaddy.net>
17 Signed-off-by: Jani Nikula <jani.nikula@intel.com>
18 Link: https://patchwork.freedesktop.org/patch/msgid/20190607110513.12072-1-jani.nikula@intel.com
19 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
20
21 ---
22 drivers/gpu/drm/drm_edid.c | 25 +++++++++++++++++--------
23 1 file changed, 17 insertions(+), 8 deletions(-)
24
25 --- a/drivers/gpu/drm/drm_edid.c
26 +++ b/drivers/gpu/drm/drm_edid.c
27 @@ -1580,6 +1580,20 @@ static void connector_bad_edid(struct dr
28 }
29 }
30
31 +/* Get override or firmware EDID */
32 +static struct edid *drm_get_override_edid(struct drm_connector *connector)
33 +{
34 + struct edid *override = NULL;
35 +
36 + if (connector->override_edid)
37 + override = drm_edid_duplicate(connector->edid_blob_ptr->data);
38 +
39 + if (!override)
40 + override = drm_load_edid_firmware(connector);
41 +
42 + return IS_ERR(override) ? NULL : override;
43 +}
44 +
45 /**
46 * drm_do_get_edid - get EDID data using a custom EDID block read function
47 * @connector: connector we're probing
48 @@ -1607,15 +1621,10 @@ struct edid *drm_do_get_edid(struct drm_
49 {
50 int i, j = 0, valid_extensions = 0;
51 u8 *edid, *new;
52 - struct edid *override = NULL;
53 -
54 - if (connector->override_edid)
55 - override = drm_edid_duplicate(connector->edid_blob_ptr->data);
56 -
57 - if (!override)
58 - override = drm_load_edid_firmware(connector);
59 + struct edid *override;
60
61 - if (!IS_ERR_OR_NULL(override))
62 + override = drm_get_override_edid(connector);
63 + if (override)
64 return override;
65
66 if ((edid = kmalloc(EDID_LENGTH, GFP_KERNEL)) == NULL)