Commit 3b85641a authored by Simon Ser's avatar Simon Ser
Browse files

drm/nouveau/disp: use drm_kms_helper_connector_hotplug_event()



This adds more information to the hotplug uevent and lets user-space
know that it's about a particular connector only.

Signed-off-by: default avatarSimon Ser <contact@emersion.fr>
Cc: Ben Skeggs <bskeggs@redhat.com>
Cc: Lyude Paul <lyude@redhat.com>
Cc: David Airlie <airlied@linux.ie>
Cc: Karol Herbst <kherbst@redhat.com>
Reviewed-by: default avatarLyude Paul <lyude@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230620181547.272476-1-contact@emersion.fr
parent 815d091f
Loading
Loading
Loading
Loading
+14 −3
Original line number Diff line number Diff line
@@ -465,7 +465,8 @@ nouveau_display_hpd_work(struct work_struct *work)
	struct drm_connector *connector;
	struct drm_connector_list_iter conn_iter;
	u32 pending;
	bool changed = false;
	int changed = 0;
	struct drm_connector *first_changed_connector = NULL;

	pm_runtime_get_sync(dev->dev);

@@ -509,7 +510,12 @@ nouveau_display_hpd_work(struct work_struct *work)
		if (old_epoch_counter == connector->epoch_counter)
			continue;

		changed = true;
		changed++;
		if (!first_changed_connector) {
			drm_connector_get(connector);
			first_changed_connector = connector;
		}

		drm_dbg_kms(dev, "[CONNECTOR:%d:%s] status updated from %s to %s (epoch counter %llu->%llu)\n",
			    connector->base.id, connector->name,
			    drm_get_connector_status_name(old_status),
@@ -520,9 +526,14 @@ nouveau_display_hpd_work(struct work_struct *work)
	drm_connector_list_iter_end(&conn_iter);
	mutex_unlock(&dev->mode_config.mutex);

	if (changed)
	if (changed == 1)
		drm_kms_helper_connector_hotplug_event(first_changed_connector);
	else if (changed > 0)
		drm_kms_helper_hotplug_event(dev);

	if (first_changed_connector)
		drm_connector_put(first_changed_connector);

	pm_runtime_mark_last_busy(drm->dev->dev);
noop:
	pm_runtime_put_autosuspend(dev->dev);