drm/client: Move suspend/resume into DRM client callbacks
authorThomas Zimmermann <tzimmermann@suse.de>
Mon, 14 Oct 2024 08:55:21 +0000 (10:55 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Fri, 18 Oct 2024 07:23:03 +0000 (09:23 +0200)
commitbf17766f108309027aac2bfe184df6088dfd7384
tree45291dfe9d14f72c3e47c37105572b41bc91017b
parentdf7e8b522a6090162ecb50fd298ebc4db137562b
drm/client: Move suspend/resume into DRM client callbacks

Suspend and resume is still tied to fbdev emulation. Modeset helpers
and several drivers call drm_fb_helper_set_suspend_unlocked() to inform
the fbdev client about suspend/resume events.

To make it work with arbitrary clients, add per-client callback
functions for suspend and resume. Implement them for fbdev emulation
with the existing drm_fb_helper_set_suspend_unlocked(). Then update
DRM's modeset helpers to call the new interface.

Clients that are not fbdev can now implement suspend/resume to their
requirements.

The callback parameter holds_console_lock is a workaround for i915,
radeon and xe, which possibly call the interface while having the
console lock acquired. Even though the commit doesn't modify these
drivers, it already adds the flag to avoid churn later on. New code
should not hold the console lock.

v4:
- clarify holds_console_lock in commit description (Jonathan)

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241014085740.582287-8-tzimmermann@suse.de
drivers/gpu/drm/drm_client_event.c
drivers/gpu/drm/drm_fbdev_client.c
drivers/gpu/drm/drm_modeset_helper.c
include/drm/drm_client.h
include/drm/drm_client_event.h