From: Ville Syrj?l? <ville.syrjala at linux.intel.com> Add an optional driver specific restore_fbdev_mode() hook to drm_fb_helper. If the driver doesn't provide the hook, drm_fb_helper_restore_fbdev_mode() is called directly as before. In this hook the driver can disable additional planes, cursors etc. that shouldn't be visible while fbdev is in control. Signed-off-by: Ville Syrj?l? <ville.syrjala at linux.intel.com> --- drivers/gpu/drm/drm_fb_helper.c | 5 ++++- include/drm/drm_fb_helper.h | 1 + 2 files changed, 5 insertions(+), 1 deletions(-) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 05e623a..6902097 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -265,7 +265,10 @@ static bool drm_fb_helper_force_kernel_mode(void) if (helper->dev->switch_power_state == DRM_SWITCH_POWER_OFF) continue; - ret = drm_fb_helper_restore_fbdev_mode(helper); + if (helper->funcs->restore_fbdev_mode) + ret = helper->funcs->restore_fbdev_mode(helper); + else + ret = drm_fb_helper_restore_fbdev_mode(helper); if (ret) error = true; } diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index 5120b01..7f76e9c 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -56,6 +56,7 @@ struct drm_fb_helper_funcs { int (*fb_probe)(struct drm_fb_helper *helper, struct drm_fb_helper_surface_size *sizes); + int (*restore_fbdev_mode)(struct drm_fb_helper *helper); }; struct drm_fb_helper_connector { -- 1.7.8.6