[PATCH 23/27] drm: Replace fb_helper->atomic with mode_config->atomic_commit

Ying Liu gnuiyl at gmail.com
Sun Jun 12 09:01:27 UTC 2016


On Wed, Jun 8, 2016 at 8:19 PM, Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
> Drivers transitioning to atomic might not yet want to enable full
> DRIVER_ATOMIC support when it's not entirely working. But using atomic
> internally makes a lot more sense earlier.
>
> Instead of spreading such flags to more places I figured it's simpler
> to just check for mode_config->funcs->atomic_commit, and use atomic
> paths if that is set. For the only driver currently transitioning
> (i915) this does the right thing.

Well, imx-drm is transitioning.
Unfortunately, after applying this patch, legacy fbdev cannot enable
displays when the imx-drm transitional patch set reaches phase 3 step 1[1].

For those transitioning drivers with fine-grained steps, this patch
is likely to expose the atomic function __drm_atomic_helper_set_config
to legacy fbdev support too early. They could still be using
drm_crtc_helper_set_config when adding ->atomic_commit.

BTW, this patch and those for generic nonblocking commit are making
the imx-drm transition a bit harder.  Not good timing probably.
But, I'll go on with the task anyway.

[1] https://patchwork.kernel.org/patch/9144035/

Regards,
Liu Ying

>
> Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
> ---
>  drivers/gpu/drm/drm_fb_helper.c    |  6 ++----
>  drivers/gpu/drm/i915/intel_fbdev.c |  2 --
>  include/drm/drm_fb_helper.h        | 11 -----------
>  3 files changed, 2 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
> index c0e0a2e78d75..ba2fcb2a68ad 100644
> --- a/drivers/gpu/drm/drm_fb_helper.c
> +++ b/drivers/gpu/drm/drm_fb_helper.c
> @@ -385,7 +385,7 @@ static int restore_fbdev_mode(struct drm_fb_helper *fb_helper)
>
>         drm_warn_on_modeset_not_all_locked(dev);
>
> -       if (fb_helper->atomic)
> +       if (dev->mode_config.funcs->atomic_commit)
>                 return restore_fbdev_mode_atomic(fb_helper);
>
>         drm_for_each_plane(plane, dev) {
> @@ -716,8 +716,6 @@ int drm_fb_helper_init(struct drm_device *dev,
>                 i++;
>         }
>
> -       fb_helper->atomic = !!drm_core_check_feature(dev, DRIVER_ATOMIC);
> -
>         return 0;
>  out_free:
>         drm_fb_helper_crtc_free(fb_helper);
> @@ -1344,7 +1342,7 @@ int drm_fb_helper_pan_display(struct fb_var_screeninfo *var,
>                 return -EBUSY;
>         }
>
> -       if (fb_helper->atomic) {
> +       if (dev->mode_config.funcs->atomic_commit) {
>                 ret = pan_display_atomic(var, info);
>                 goto unlock;
>         }
> diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c
> index ef8e67690f3d..4c725ad6fb54 100644
> --- a/drivers/gpu/drm/i915/intel_fbdev.c
> +++ b/drivers/gpu/drm/i915/intel_fbdev.c
> @@ -724,8 +724,6 @@ int intel_fbdev_init(struct drm_device *dev)
>                 return ret;
>         }
>
> -       ifbdev->helper.atomic = true;
> -
>         dev_priv->fbdev = ifbdev;
>         INIT_WORK(&dev_priv->fbdev_suspend_work, intel_fbdev_suspend_worker);
>
> diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h
> index 5b4aa35026a3..db8d4780eaa2 100644
> --- a/include/drm/drm_fb_helper.h
> +++ b/include/drm/drm_fb_helper.h
> @@ -212,17 +212,6 @@ struct drm_fb_helper {
>          * needs to be reprobe when fbdev is in control again.
>          */
>         bool delayed_hotplug;
> -
> -       /**
> -        * @atomic:
> -        *
> -        * Use atomic updates for restore_fbdev_mode(), etc.  This defaults to
> -        * true if driver has DRIVER_ATOMIC feature flag, but drivers can
> -        * override it to true after drm_fb_helper_init() if they support atomic
> -        * modeset but do not yet advertise DRIVER_ATOMIC (note that fb-helper
> -        * does not require ASYNC commits).
> -        */
> -       bool atomic;
>  };
>
>  #ifdef CONFIG_DRM_FBDEV_EMULATION
> --
> 2.8.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel


More information about the dri-devel mailing list