drm/client: Send pending hotplug events after resume

If a hotplug event arrives while the client has been suspended,
DRM's client code will deliver the event after resuming. The
functionality has been taken form i915, where it can be removed
by a later commit.

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-4-tzimmermann@suse.de
Signed-off-by: Maarten Lankhorst <dev@lankhorst.se>
This commit is contained in:
Thomas Zimmermann
2024-12-12 18:08:44 +01:00
committed by Maarten Lankhorst
parent 603cc828aa
commit a93247b58d
2 changed files with 17 additions and 0 deletions

View File

@@ -60,6 +60,12 @@ static void drm_client_hotplug(struct drm_client_dev *client)
if (client->hotplug_failed)
return;
if (client->suspended) {
client->hotplug_pending = true;
return;
}
client->hotplug_pending = false;
ret = client->funcs->hotplug(client);
drm_dbg_kms(dev, "%s: ret=%d\n", client->name, ret);
if (ret)
@@ -159,6 +165,9 @@ static int drm_client_resume(struct drm_client_dev *client, bool holds_console_l
client->suspended = false;
if (client->hotplug_pending)
drm_client_hotplug(client);
return ret;
}

View File

@@ -142,6 +142,14 @@ struct drm_client_dev {
*/
bool suspended;
/**
* @hotplug_pending:
*
* A hotplug event has been received while the client was suspended.
* Try again on resume.
*/
bool hotplug_pending;
/**
* @hotplug_failed:
*