diff options
-rw-r--r-- | drivers/gpu/drm/drm_edid.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/drm_edid_load.c | 23 | ||||
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_connector.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_vidi.c | 13 | ||||
-rw-r--r-- | drivers/gpu/drm/gma500/cdv_intel_hdmi.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/gma500/oaktrail_hdmi.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/gma500/psb_intel_sdvo.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_hdmi.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_modes.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_sdvo.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/mgag200/mgag200_mode.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/udl/udl_connector.c | 3 | ||||
-rw-r--r-- | drivers/staging/omapdrm/omap_connector.c | 5 | ||||
-rw-r--r-- | include/drm/drm_crtc.h | 2 |
15 files changed, 15 insertions, 56 deletions
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index a8743c399e83..bcc472572cd0 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c | |||
@@ -399,10 +399,7 @@ struct edid *drm_get_edid(struct drm_connector *connector, | |||
399 | if (drm_probe_ddc(adapter)) | 399 | if (drm_probe_ddc(adapter)) |
400 | edid = (struct edid *)drm_do_get_edid(connector, adapter); | 400 | edid = (struct edid *)drm_do_get_edid(connector, adapter); |
401 | 401 | ||
402 | connector->display_info.raw_edid = (char *)edid; | ||
403 | |||
404 | return edid; | 402 | return edid; |
405 | |||
406 | } | 403 | } |
407 | EXPORT_SYMBOL(drm_get_edid); | 404 | EXPORT_SYMBOL(drm_get_edid); |
408 | 405 | ||
diff --git a/drivers/gpu/drm/drm_edid_load.c b/drivers/gpu/drm/drm_edid_load.c index 0303935d10e2..186832e1874e 100644 --- a/drivers/gpu/drm/drm_edid_load.c +++ b/drivers/gpu/drm/drm_edid_load.c | |||
@@ -114,8 +114,8 @@ static u8 generic_edid[GENERIC_EDIDS][128] = { | |||
114 | }, | 114 | }, |
115 | }; | 115 | }; |
116 | 116 | ||
117 | static int edid_load(struct drm_connector *connector, char *name, | 117 | static u8 *edid_load(struct drm_connector *connector, char *name, |
118 | char *connector_name) | 118 | char *connector_name) |
119 | { | 119 | { |
120 | const struct firmware *fw; | 120 | const struct firmware *fw; |
121 | struct platform_device *pdev; | 121 | struct platform_device *pdev; |
@@ -205,7 +205,6 @@ static int edid_load(struct drm_connector *connector, char *name, | |||
205 | edid = new_edid; | 205 | edid = new_edid; |
206 | } | 206 | } |
207 | 207 | ||
208 | connector->display_info.raw_edid = edid; | ||
209 | DRM_INFO("Got %s EDID base block and %d extension%s from " | 208 | DRM_INFO("Got %s EDID base block and %d extension%s from " |
210 | "\"%s\" for connector \"%s\"\n", builtin ? "built-in" : | 209 | "\"%s\" for connector \"%s\"\n", builtin ? "built-in" : |
211 | "external", valid_extensions, valid_extensions == 1 ? "" : "s", | 210 | "external", valid_extensions, valid_extensions == 1 ? "" : "s", |
@@ -215,7 +214,10 @@ relfw_out: | |||
215 | release_firmware(fw); | 214 | release_firmware(fw); |
216 | 215 | ||
217 | out: | 216 | out: |
218 | return err; | 217 | if (err) |
218 | return ERR_PTR(err); | ||
219 | |||
220 | return edid; | ||
219 | } | 221 | } |
220 | 222 | ||
221 | int drm_load_edid_firmware(struct drm_connector *connector) | 223 | int drm_load_edid_firmware(struct drm_connector *connector) |
@@ -223,6 +225,7 @@ int drm_load_edid_firmware(struct drm_connector *connector) | |||
223 | char *connector_name = drm_get_connector_name(connector); | 225 | char *connector_name = drm_get_connector_name(connector); |
224 | char *edidname = edid_firmware, *last, *colon; | 226 | char *edidname = edid_firmware, *last, *colon; |
225 | int ret; | 227 | int ret; |
228 | struct edid *edid; | ||
226 | 229 | ||
227 | if (*edidname == '\0') | 230 | if (*edidname == '\0') |
228 | return 0; | 231 | return 0; |
@@ -240,13 +243,13 @@ int drm_load_edid_firmware(struct drm_connector *connector) | |||
240 | if (*last == '\n') | 243 | if (*last == '\n') |
241 | *last = '\0'; | 244 | *last = '\0'; |
242 | 245 | ||
243 | ret = edid_load(connector, edidname, connector_name); | 246 | edid = (struct edid *) edid_load(connector, edidname, connector_name); |
244 | if (ret) | 247 | if (IS_ERR_OR_NULL(edid)) |
245 | return 0; | 248 | return 0; |
246 | 249 | ||
247 | drm_mode_connector_update_edid_property(connector, | 250 | drm_mode_connector_update_edid_property(connector, edid); |
248 | (struct edid *) connector->display_info.raw_edid); | 251 | ret = drm_add_edid_modes(connector, edid); |
252 | kfree(edid); | ||
249 | 253 | ||
250 | return drm_add_edid_modes(connector, (struct edid *) | 254 | return ret; |
251 | connector->display_info.raw_edid); | ||
252 | } | 255 | } |
diff --git a/drivers/gpu/drm/exynos/exynos_drm_connector.c b/drivers/gpu/drm/exynos/exynos_drm_connector.c index d9568198c300..9dce3b9c3896 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_connector.c +++ b/drivers/gpu/drm/exynos/exynos_drm_connector.c | |||
@@ -147,9 +147,7 @@ static int exynos_drm_connector_get_modes(struct drm_connector *connector) | |||
147 | 147 | ||
148 | drm_mode_connector_update_edid_property(connector, edid); | 148 | drm_mode_connector_update_edid_property(connector, edid); |
149 | count = drm_add_edid_modes(connector, edid); | 149 | count = drm_add_edid_modes(connector, edid); |
150 | 150 | kfree(edid); | |
151 | kfree(connector->display_info.raw_edid); | ||
152 | connector->display_info.raw_edid = edid; | ||
153 | } else { | 151 | } else { |
154 | struct drm_display_mode *mode = drm_mode_create(connector->dev); | 152 | struct drm_display_mode *mode = drm_mode_create(connector->dev); |
155 | struct exynos_drm_panel_info *panel; | 153 | struct exynos_drm_panel_info *panel; |
diff --git a/drivers/gpu/drm/exynos/exynos_drm_vidi.c b/drivers/gpu/drm/exynos/exynos_drm_vidi.c index bb1550c4dd57..92395258d641 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_vidi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_vidi.c | |||
@@ -102,7 +102,6 @@ static int vidi_get_edid(struct device *dev, struct drm_connector *connector, | |||
102 | u8 *edid, int len) | 102 | u8 *edid, int len) |
103 | { | 103 | { |
104 | struct vidi_context *ctx = get_vidi_context(dev); | 104 | struct vidi_context *ctx = get_vidi_context(dev); |
105 | struct edid *raw_edid; | ||
106 | 105 | ||
107 | DRM_DEBUG_KMS("%s\n", __FILE__); | 106 | DRM_DEBUG_KMS("%s\n", __FILE__); |
108 | 107 | ||
@@ -115,18 +114,6 @@ static int vidi_get_edid(struct device *dev, struct drm_connector *connector, | |||
115 | return -EFAULT; | 114 | return -EFAULT; |
116 | } | 115 | } |
117 | 116 | ||
118 | raw_edid = kzalloc(len, GFP_KERNEL); | ||
119 | if (!raw_edid) { | ||
120 | DRM_DEBUG_KMS("failed to allocate raw_edid.\n"); | ||
121 | return -ENOMEM; | ||
122 | } | ||
123 | |||
124 | memcpy(raw_edid, ctx->raw_edid, min((1 + ctx->raw_edid->extensions) | ||
125 | * EDID_LENGTH, len)); | ||
126 | |||
127 | /* attach the edid data to connector. */ | ||
128 | connector->display_info.raw_edid = (char *)raw_edid; | ||
129 | |||
130 | memcpy(edid, ctx->raw_edid, min((1 + ctx->raw_edid->extensions) | 117 | memcpy(edid, ctx->raw_edid, min((1 + ctx->raw_edid->extensions) |
131 | * EDID_LENGTH, len)); | 118 | * EDID_LENGTH, len)); |
132 | 119 | ||
diff --git a/drivers/gpu/drm/gma500/cdv_intel_hdmi.c b/drivers/gpu/drm/gma500/cdv_intel_hdmi.c index 0c90f0316db1..b1b77bb92a85 100644 --- a/drivers/gpu/drm/gma500/cdv_intel_hdmi.c +++ b/drivers/gpu/drm/gma500/cdv_intel_hdmi.c | |||
@@ -157,8 +157,6 @@ static enum drm_connector_status cdv_hdmi_detect( | |||
157 | hdmi_priv->has_hdmi_audio = | 157 | hdmi_priv->has_hdmi_audio = |
158 | drm_detect_monitor_audio(edid); | 158 | drm_detect_monitor_audio(edid); |
159 | } | 159 | } |
160 | |||
161 | psb_intel_connector->base.display_info.raw_edid = NULL; | ||
162 | kfree(edid); | 160 | kfree(edid); |
163 | } | 161 | } |
164 | return status; | 162 | return status; |
diff --git a/drivers/gpu/drm/gma500/oaktrail_hdmi.c b/drivers/gpu/drm/gma500/oaktrail_hdmi.c index 2eb3dc4e9c9b..69e51e903f35 100644 --- a/drivers/gpu/drm/gma500/oaktrail_hdmi.c +++ b/drivers/gpu/drm/gma500/oaktrail_hdmi.c | |||
@@ -252,7 +252,6 @@ static int oaktrail_hdmi_get_modes(struct drm_connector *connector) | |||
252 | if (edid) { | 252 | if (edid) { |
253 | drm_mode_connector_update_edid_property(connector, edid); | 253 | drm_mode_connector_update_edid_property(connector, edid); |
254 | ret = drm_add_edid_modes(connector, edid); | 254 | ret = drm_add_edid_modes(connector, edid); |
255 | connector->display_info.raw_edid = NULL; | ||
256 | } | 255 | } |
257 | 256 | ||
258 | /* | 257 | /* |
diff --git a/drivers/gpu/drm/gma500/psb_intel_sdvo.c b/drivers/gpu/drm/gma500/psb_intel_sdvo.c index 0466c7b985f8..a453d94f115c 100644 --- a/drivers/gpu/drm/gma500/psb_intel_sdvo.c +++ b/drivers/gpu/drm/gma500/psb_intel_sdvo.c | |||
@@ -1343,7 +1343,6 @@ psb_intel_sdvo_hdmi_sink_detect(struct drm_connector *connector) | |||
1343 | } | 1343 | } |
1344 | } else | 1344 | } else |
1345 | status = connector_status_disconnected; | 1345 | status = connector_status_disconnected; |
1346 | connector->display_info.raw_edid = NULL; | ||
1347 | kfree(edid); | 1346 | kfree(edid); |
1348 | } | 1347 | } |
1349 | 1348 | ||
@@ -1404,7 +1403,6 @@ psb_intel_sdvo_detect(struct drm_connector *connector, bool force) | |||
1404 | ret = connector_status_disconnected; | 1403 | ret = connector_status_disconnected; |
1405 | else | 1404 | else |
1406 | ret = connector_status_connected; | 1405 | ret = connector_status_connected; |
1407 | connector->display_info.raw_edid = NULL; | ||
1408 | kfree(edid); | 1406 | kfree(edid); |
1409 | } else | 1407 | } else |
1410 | ret = connector_status_connected; | 1408 | ret = connector_status_connected; |
@@ -1453,7 +1451,6 @@ static void psb_intel_sdvo_get_ddc_modes(struct drm_connector *connector) | |||
1453 | drm_add_edid_modes(connector, edid); | 1451 | drm_add_edid_modes(connector, edid); |
1454 | } | 1452 | } |
1455 | 1453 | ||
1456 | connector->display_info.raw_edid = NULL; | ||
1457 | kfree(edid); | 1454 | kfree(edid); |
1458 | } | 1455 | } |
1459 | } | 1456 | } |
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 977d9d216c73..d14b1e39244c 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
@@ -2145,7 +2145,6 @@ intel_dp_get_edid_modes(struct drm_connector *connector, struct i2c_adapter *ada | |||
2145 | ret = drm_add_edid_modes(connector, intel_dp->edid); | 2145 | ret = drm_add_edid_modes(connector, intel_dp->edid); |
2146 | drm_edid_to_eld(connector, | 2146 | drm_edid_to_eld(connector, |
2147 | intel_dp->edid); | 2147 | intel_dp->edid); |
2148 | connector->display_info.raw_edid = NULL; | ||
2149 | return intel_dp->edid_mode_count; | 2148 | return intel_dp->edid_mode_count; |
2150 | } | 2149 | } |
2151 | 2150 | ||
@@ -2191,7 +2190,6 @@ intel_dp_detect(struct drm_connector *connector, bool force) | |||
2191 | edid = intel_dp_get_edid(connector, &intel_dp->adapter); | 2190 | edid = intel_dp_get_edid(connector, &intel_dp->adapter); |
2192 | if (edid) { | 2191 | if (edid) { |
2193 | intel_dp->has_audio = drm_detect_monitor_audio(edid); | 2192 | intel_dp->has_audio = drm_detect_monitor_audio(edid); |
2194 | connector->display_info.raw_edid = NULL; | ||
2195 | kfree(edid); | 2193 | kfree(edid); |
2196 | } | 2194 | } |
2197 | } | 2195 | } |
@@ -2256,8 +2254,6 @@ intel_dp_detect_audio(struct drm_connector *connector) | |||
2256 | edid = intel_dp_get_edid(connector, &intel_dp->adapter); | 2254 | edid = intel_dp_get_edid(connector, &intel_dp->adapter); |
2257 | if (edid) { | 2255 | if (edid) { |
2258 | has_audio = drm_detect_monitor_audio(edid); | 2256 | has_audio = drm_detect_monitor_audio(edid); |
2259 | |||
2260 | connector->display_info.raw_edid = NULL; | ||
2261 | kfree(edid); | 2257 | kfree(edid); |
2262 | } | 2258 | } |
2263 | 2259 | ||
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c index e4c37bb572e8..35a6ee7a8cca 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c | |||
@@ -737,7 +737,6 @@ intel_hdmi_detect(struct drm_connector *connector, bool force) | |||
737 | drm_detect_hdmi_monitor(edid); | 737 | drm_detect_hdmi_monitor(edid); |
738 | intel_hdmi->has_audio = drm_detect_monitor_audio(edid); | 738 | intel_hdmi->has_audio = drm_detect_monitor_audio(edid); |
739 | } | 739 | } |
740 | connector->display_info.raw_edid = NULL; | ||
741 | kfree(edid); | 740 | kfree(edid); |
742 | } | 741 | } |
743 | 742 | ||
@@ -778,8 +777,6 @@ intel_hdmi_detect_audio(struct drm_connector *connector) | |||
778 | if (edid) { | 777 | if (edid) { |
779 | if (edid->input & DRM_EDID_INPUT_DIGITAL) | 778 | if (edid->input & DRM_EDID_INPUT_DIGITAL) |
780 | has_audio = drm_detect_monitor_audio(edid); | 779 | has_audio = drm_detect_monitor_audio(edid); |
781 | |||
782 | connector->display_info.raw_edid = NULL; | ||
783 | kfree(edid); | 780 | kfree(edid); |
784 | } | 781 | } |
785 | 782 | ||
diff --git a/drivers/gpu/drm/i915/intel_modes.c b/drivers/gpu/drm/i915/intel_modes.c index 45848b9b670b..7a5238fc1a02 100644 --- a/drivers/gpu/drm/i915/intel_modes.c +++ b/drivers/gpu/drm/i915/intel_modes.c | |||
@@ -50,7 +50,6 @@ int intel_ddc_get_modes(struct drm_connector *connector, | |||
50 | drm_mode_connector_update_edid_property(connector, edid); | 50 | drm_mode_connector_update_edid_property(connector, edid); |
51 | ret = drm_add_edid_modes(connector, edid); | 51 | ret = drm_add_edid_modes(connector, edid); |
52 | drm_edid_to_eld(connector, edid); | 52 | drm_edid_to_eld(connector, edid); |
53 | connector->display_info.raw_edid = NULL; | ||
54 | kfree(edid); | 53 | kfree(edid); |
55 | } | 54 | } |
56 | 55 | ||
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c index 5fb425bf4d03..434b1d1d3c84 100644 --- a/drivers/gpu/drm/i915/intel_sdvo.c +++ b/drivers/gpu/drm/i915/intel_sdvo.c | |||
@@ -1345,7 +1345,6 @@ intel_sdvo_tmds_sink_detect(struct drm_connector *connector) | |||
1345 | } | 1345 | } |
1346 | } else | 1346 | } else |
1347 | status = connector_status_disconnected; | 1347 | status = connector_status_disconnected; |
1348 | connector->display_info.raw_edid = NULL; | ||
1349 | kfree(edid); | 1348 | kfree(edid); |
1350 | } | 1349 | } |
1351 | 1350 | ||
@@ -1419,7 +1418,6 @@ intel_sdvo_detect(struct drm_connector *connector, bool force) | |||
1419 | else | 1418 | else |
1420 | ret = connector_status_disconnected; | 1419 | ret = connector_status_disconnected; |
1421 | 1420 | ||
1422 | connector->display_info.raw_edid = NULL; | ||
1423 | kfree(edid); | 1421 | kfree(edid); |
1424 | } else | 1422 | } else |
1425 | ret = connector_status_connected; | 1423 | ret = connector_status_connected; |
@@ -1465,7 +1463,6 @@ static void intel_sdvo_get_ddc_modes(struct drm_connector *connector) | |||
1465 | drm_add_edid_modes(connector, edid); | 1463 | drm_add_edid_modes(connector, edid); |
1466 | } | 1464 | } |
1467 | 1465 | ||
1468 | connector->display_info.raw_edid = NULL; | ||
1469 | kfree(edid); | 1466 | kfree(edid); |
1470 | } | 1467 | } |
1471 | } | 1468 | } |
diff --git a/drivers/gpu/drm/mgag200/mgag200_mode.c b/drivers/gpu/drm/mgag200/mgag200_mode.c index b69642d5d850..c7420e83c0b9 100644 --- a/drivers/gpu/drm/mgag200/mgag200_mode.c +++ b/drivers/gpu/drm/mgag200/mgag200_mode.c | |||
@@ -1399,7 +1399,6 @@ static int mga_vga_get_modes(struct drm_connector *connector) | |||
1399 | if (edid) { | 1399 | if (edid) { |
1400 | drm_mode_connector_update_edid_property(connector, edid); | 1400 | drm_mode_connector_update_edid_property(connector, edid); |
1401 | ret = drm_add_edid_modes(connector, edid); | 1401 | ret = drm_add_edid_modes(connector, edid); |
1402 | connector->display_info.raw_edid = NULL; | ||
1403 | kfree(edid); | 1402 | kfree(edid); |
1404 | } | 1403 | } |
1405 | return ret; | 1404 | return ret; |
diff --git a/drivers/gpu/drm/udl/udl_connector.c b/drivers/gpu/drm/udl/udl_connector.c index ba055e9ca007..2d98ff92f3ba 100644 --- a/drivers/gpu/drm/udl/udl_connector.c +++ b/drivers/gpu/drm/udl/udl_connector.c | |||
@@ -57,11 +57,8 @@ static int udl_get_modes(struct drm_connector *connector) | |||
57 | 57 | ||
58 | edid = (struct edid *)udl_get_edid(udl); | 58 | edid = (struct edid *)udl_get_edid(udl); |
59 | 59 | ||
60 | connector->display_info.raw_edid = (char *)edid; | ||
61 | |||
62 | drm_mode_connector_update_edid_property(connector, edid); | 60 | drm_mode_connector_update_edid_property(connector, edid); |
63 | ret = drm_add_edid_modes(connector, edid); | 61 | ret = drm_add_edid_modes(connector, edid); |
64 | connector->display_info.raw_edid = NULL; | ||
65 | kfree(edid); | 62 | kfree(edid); |
66 | return ret; | 63 | return ret; |
67 | } | 64 | } |
diff --git a/drivers/staging/omapdrm/omap_connector.c b/drivers/staging/omapdrm/omap_connector.c index 5e2856c0e0bb..9c2287b71d29 100644 --- a/drivers/staging/omapdrm/omap_connector.c +++ b/drivers/staging/omapdrm/omap_connector.c | |||
@@ -177,14 +177,11 @@ static int omap_connector_get_modes(struct drm_connector *connector) | |||
177 | drm_mode_connector_update_edid_property( | 177 | drm_mode_connector_update_edid_property( |
178 | connector, edid); | 178 | connector, edid); |
179 | n = drm_add_edid_modes(connector, edid); | 179 | n = drm_add_edid_modes(connector, edid); |
180 | kfree(connector->display_info.raw_edid); | ||
181 | connector->display_info.raw_edid = edid; | ||
182 | } else { | 180 | } else { |
183 | drm_mode_connector_update_edid_property( | 181 | drm_mode_connector_update_edid_property( |
184 | connector, NULL); | 182 | connector, NULL); |
185 | connector->display_info.raw_edid = NULL; | ||
186 | kfree(edid); | ||
187 | } | 183 | } |
184 | kfree(edid); | ||
188 | } else { | 185 | } else { |
189 | struct drm_display_mode *mode = drm_mode_create(dev); | 186 | struct drm_display_mode *mode = drm_mode_create(dev); |
190 | struct omap_video_timings timings; | 187 | struct omap_video_timings timings; |
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h index a1a0386e0160..0522044b7498 100644 --- a/include/drm/drm_crtc.h +++ b/include/drm/drm_crtc.h | |||
@@ -216,8 +216,6 @@ struct drm_display_info { | |||
216 | u32 color_formats; | 216 | u32 color_formats; |
217 | 217 | ||
218 | u8 cea_rev; | 218 | u8 cea_rev; |
219 | |||
220 | char *raw_edid; /* if any */ | ||
221 | }; | 219 | }; |
222 | 220 | ||
223 | struct drm_framebuffer_funcs { | 221 | struct drm_framebuffer_funcs { |