[PATCH] drm: Set the plane's crtc before calling disable_plane.

Rob Clark robdclark at gmail.com
Mon Mar 3 14:06:01 PST 2014


On Mon, Mar 3, 2014 at 4:45 PM, Jesse Barnes <jbarnes at virtuousgeek.org> wrote:
> On Mon,  3 Mar 2014 13:38:36 -0800
> Stéphane Marchesin <marcheu at chromium.org> 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 at chromium.org>
>> ---
>>  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;

just curious, but how is the plane ending up enabled *without* a crtc?
 That sounds a bit.. odd..

BR,
-R

>>               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 at virtuousgeek.org>
>
> --
> Jesse Barnes, Intel Open Source Technology Center
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel


More information about the dri-devel mailing list