mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 02:24:24 +02:00
drm/i915/display: fbdev: Move custom restore code to new callback
i915's fbdev contains code for restoring the client's framebuffer. It is specific to i195 and cannot be ported to the common fbdev client. Introduce the callback struct drm_fb_helper.fb_restore and implement it for i915. The fbdev helpers invoke the callback after restoring the fbdev client. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20241212170913.185939-6-tzimmermann@suse.de Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
This commit is contained in:
parent
f4e43719d0
commit
2ef5754c96
|
|
@ -245,6 +245,9 @@ __drm_fb_helper_restore_fbdev_mode_unlocked(struct drm_fb_helper *fb_helper,
|
|||
if (do_delayed)
|
||||
drm_fb_helper_hotplug_event(fb_helper);
|
||||
|
||||
if (fb_helper->funcs->fb_restore)
|
||||
fb_helper->funcs->fb_restore(fb_helper);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -278,9 +278,17 @@ static int intelfb_dirty(struct drm_fb_helper *helper, struct drm_clip_rect *cli
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void intelfb_restore(struct drm_fb_helper *fb_helper)
|
||||
{
|
||||
struct intel_fbdev *ifbdev = to_intel_fbdev(fb_helper);
|
||||
|
||||
intel_fbdev_invalidate(ifbdev);
|
||||
}
|
||||
|
||||
static const struct drm_fb_helper_funcs intel_fb_helper_funcs = {
|
||||
.fb_probe = intelfb_create,
|
||||
.fb_dirty = intelfb_dirty,
|
||||
.fb_restore = intelfb_restore,
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
@ -518,8 +526,6 @@ static int intel_fbdev_restore_mode(struct drm_i915_private *dev_priv)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
intel_fbdev_invalidate(ifbdev);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -99,6 +99,19 @@ struct drm_fb_helper_funcs {
|
|||
* 0 on success, or an error code otherwise.
|
||||
*/
|
||||
int (*fb_dirty)(struct drm_fb_helper *helper, struct drm_clip_rect *clip);
|
||||
|
||||
/**
|
||||
* @fb_restore:
|
||||
*
|
||||
* Driver callback to restore internal fbdev state. If set, fbdev
|
||||
* emulation will invoke this callback after restoring the display
|
||||
* mode.
|
||||
*
|
||||
* Only for i915. Do not use in new code.
|
||||
*
|
||||
* TODO: Fix i915 to not require this callback.
|
||||
*/
|
||||
void (*fb_restore)(struct drm_fb_helper *helper);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user