diff options
| author | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-08-06 13:13:54 -0400 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-08-06 13:13:54 -0400 |
| commit | 11e4afb49b7fa1fc8e1ffd850c1806dd86a08204 (patch) | |
| tree | 9e57efcb106ae912f7bec718feb3f8ec607559bb /drivers/gpu/drm/drm_crtc.c | |
| parent | 162500b3a3ff39d941d29db49b41a16667ae44f0 (diff) | |
| parent | 9b2a606d3898fcb2eedb6faded3bb37549590ac4 (diff) | |
Merge branches 'gemini' and 'misc' into devel
Diffstat (limited to 'drivers/gpu/drm/drm_crtc.c')
| -rw-r--r-- | drivers/gpu/drm/drm_crtc.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index d91fb8c0b7b3..57cea01c4ffb 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c | |||
| @@ -30,9 +30,11 @@ | |||
| 30 | * Jesse Barnes <jesse.barnes@intel.com> | 30 | * Jesse Barnes <jesse.barnes@intel.com> |
| 31 | */ | 31 | */ |
| 32 | #include <linux/list.h> | 32 | #include <linux/list.h> |
| 33 | #include <linux/slab.h> | ||
| 33 | #include "drm.h" | 34 | #include "drm.h" |
| 34 | #include "drmP.h" | 35 | #include "drmP.h" |
| 35 | #include "drm_crtc.h" | 36 | #include "drm_crtc.h" |
| 37 | #include "drm_edid.h" | ||
| 36 | 38 | ||
| 37 | struct drm_prop_enum_list { | 39 | struct drm_prop_enum_list { |
| 38 | int type; | 40 | int type; |
| @@ -493,7 +495,6 @@ void drm_connector_cleanup(struct drm_connector *connector) | |||
| 493 | list_for_each_entry_safe(mode, t, &connector->user_modes, head) | 495 | list_for_each_entry_safe(mode, t, &connector->user_modes, head) |
| 494 | drm_mode_remove(connector, mode); | 496 | drm_mode_remove(connector, mode); |
| 495 | 497 | ||
| 496 | kfree(connector->fb_helper_private); | ||
| 497 | mutex_lock(&dev->mode_config.mutex); | 498 | mutex_lock(&dev->mode_config.mutex); |
| 498 | drm_mode_object_put(dev, &connector->base); | 499 | drm_mode_object_put(dev, &connector->base); |
| 499 | list_del(&connector->head); | 500 | list_del(&connector->head); |
| @@ -857,7 +858,6 @@ void drm_mode_config_init(struct drm_device *dev) | |||
| 857 | mutex_init(&dev->mode_config.mutex); | 858 | mutex_init(&dev->mode_config.mutex); |
| 858 | mutex_init(&dev->mode_config.idr_mutex); | 859 | mutex_init(&dev->mode_config.idr_mutex); |
| 859 | INIT_LIST_HEAD(&dev->mode_config.fb_list); | 860 | INIT_LIST_HEAD(&dev->mode_config.fb_list); |
| 860 | INIT_LIST_HEAD(&dev->mode_config.fb_kernel_list); | ||
| 861 | INIT_LIST_HEAD(&dev->mode_config.crtc_list); | 861 | INIT_LIST_HEAD(&dev->mode_config.crtc_list); |
| 862 | INIT_LIST_HEAD(&dev->mode_config.connector_list); | 862 | INIT_LIST_HEAD(&dev->mode_config.connector_list); |
| 863 | INIT_LIST_HEAD(&dev->mode_config.encoder_list); | 863 | INIT_LIST_HEAD(&dev->mode_config.encoder_list); |
| @@ -1840,8 +1840,10 @@ int drm_mode_dirtyfb_ioctl(struct drm_device *dev, | |||
| 1840 | 1840 | ||
| 1841 | ret = copy_from_user(clips, clips_ptr, | 1841 | ret = copy_from_user(clips, clips_ptr, |
| 1842 | num_clips * sizeof(*clips)); | 1842 | num_clips * sizeof(*clips)); |
| 1843 | if (ret) | 1843 | if (ret) { |
| 1844 | ret = -EFAULT; | ||
| 1844 | goto out_err2; | 1845 | goto out_err2; |
| 1846 | } | ||
| 1845 | } | 1847 | } |
| 1846 | 1848 | ||
| 1847 | if (fb->funcs->dirty) { | 1849 | if (fb->funcs->dirty) { |
| @@ -2349,7 +2351,7 @@ int drm_mode_connector_update_edid_property(struct drm_connector *connector, | |||
| 2349 | struct edid *edid) | 2351 | struct edid *edid) |
| 2350 | { | 2352 | { |
| 2351 | struct drm_device *dev = connector->dev; | 2353 | struct drm_device *dev = connector->dev; |
| 2352 | int ret = 0; | 2354 | int ret = 0, size; |
| 2353 | 2355 | ||
| 2354 | if (connector->edid_blob_ptr) | 2356 | if (connector->edid_blob_ptr) |
| 2355 | drm_property_destroy_blob(dev, connector->edid_blob_ptr); | 2357 | drm_property_destroy_blob(dev, connector->edid_blob_ptr); |
| @@ -2361,7 +2363,9 @@ int drm_mode_connector_update_edid_property(struct drm_connector *connector, | |||
| 2361 | return ret; | 2363 | return ret; |
| 2362 | } | 2364 | } |
| 2363 | 2365 | ||
| 2364 | connector->edid_blob_ptr = drm_property_create_blob(connector->dev, 128, edid); | 2366 | size = EDID_LENGTH * (1 + edid->extensions); |
| 2367 | connector->edid_blob_ptr = drm_property_create_blob(connector->dev, | ||
| 2368 | size, edid); | ||
| 2365 | 2369 | ||
| 2366 | ret = drm_connector_property_set_value(connector, | 2370 | ret = drm_connector_property_set_value(connector, |
| 2367 | dev->mode_config.edid_property, | 2371 | dev->mode_config.edid_property, |
