On Mon, 3 Mar 2014 13:38:36 -0800 Stéphane Marchesin <marcheu@xxxxxxxxxxxx> wrote: > Some drivers like exynos need the crtc to be able to disable the plane, > so set it before calling disable_plane. > > Signed-off-by: Stéphane Marchesin <marcheu@xxxxxxxxxxxx> > --- > drivers/gpu/drm/drm_crtc.c | 21 +++++++++++---------- > 1 file changed, 11 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index 3b7d32d..0943316 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -1947,10 +1947,21 @@ int drm_mode_setplane(struct drm_device *dev, void *data, > } > plane = obj_to_plane(obj); > > + obj = drm_mode_object_find(dev, plane_req->crtc_id, > + DRM_MODE_OBJECT_CRTC); > + if (!obj) { > + DRM_DEBUG_KMS("Unknown crtc ID %d\n", > + plane_req->crtc_id); > + ret = -ENOENT; > + goto out; > + } > + crtc = obj_to_crtc(obj); > + > /* No fb means shut it down */ > if (!plane_req->fb_id) { > drm_modeset_lock_all(dev); > old_fb = plane->fb; > + plane->crtc = crtc; > plane->funcs->disable_plane(plane); > plane->crtc = NULL; > plane->fb = NULL; > @@ -1958,16 +1969,6 @@ int drm_mode_setplane(struct drm_device *dev, void *data, > goto out; > } > > - obj = drm_mode_object_find(dev, plane_req->crtc_id, > - DRM_MODE_OBJECT_CRTC); > - if (!obj) { > - DRM_DEBUG_KMS("Unknown crtc ID %d\n", > - plane_req->crtc_id); > - ret = -ENOENT; > - goto out; > - } > - crtc = obj_to_crtc(obj); > - > fb = drm_framebuffer_lookup(dev, plane_req->fb_id); > if (!fb) { > DRM_DEBUG_KMS("Unknown framebuffer ID %d\n", I'm pretty sure this is ok since we don't have much userspace using this that might fail to pass in a crtc when shutting down a plane... Reviewed-by: Jesse Barnes <jbarnes@xxxxxxxxxxxxxxxx> -- Jesse Barnes, Intel Open Source Technology Center _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel