mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 09:04:39 +02:00
i915/display/hotplug: 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.
v2: don't rely on the changed HPD pin bitmask to count changed
connectors (Jani)
Signed-off-by: Simon Ser <contact@emersion.fr>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Gustavo Sousa <gustavo.sousa@intel.com>
Cc: Imre Deak <imre.deak@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230623094229.120264-1-contact@emersion.fr
This commit is contained in:
parent
8290bcee57
commit
a811c2e42a
|
|
@ -376,6 +376,8 @@ static void i915_hotplug_work_func(struct work_struct *work)
|
|||
u32 changed = 0, retry = 0;
|
||||
u32 hpd_event_bits;
|
||||
u32 hpd_retry_bits;
|
||||
struct drm_connector *first_changed_connector = NULL;
|
||||
int changed_connectors = 0;
|
||||
|
||||
mutex_lock(&dev_priv->drm.mode_config.mutex);
|
||||
drm_dbg_kms(&dev_priv->drm, "running encoder hotplug functions\n");
|
||||
|
|
@ -428,6 +430,11 @@ static void i915_hotplug_work_func(struct work_struct *work)
|
|||
break;
|
||||
case INTEL_HOTPLUG_CHANGED:
|
||||
changed |= hpd_bit;
|
||||
changed_connectors++;
|
||||
if (!first_changed_connector) {
|
||||
drm_connector_get(&connector->base);
|
||||
first_changed_connector = &connector->base;
|
||||
}
|
||||
break;
|
||||
case INTEL_HOTPLUG_RETRY:
|
||||
retry |= hpd_bit;
|
||||
|
|
@ -438,9 +445,14 @@ static void i915_hotplug_work_func(struct work_struct *work)
|
|||
drm_connector_list_iter_end(&conn_iter);
|
||||
mutex_unlock(&dev_priv->drm.mode_config.mutex);
|
||||
|
||||
if (changed)
|
||||
if (changed_connectors == 1)
|
||||
drm_kms_helper_connector_hotplug_event(first_changed_connector);
|
||||
else if (changed_connectors > 0)
|
||||
drm_kms_helper_hotplug_event(&dev_priv->drm);
|
||||
|
||||
if (first_changed_connector)
|
||||
drm_connector_put(first_changed_connector);
|
||||
|
||||
/* Remove shared HPD pins that have changed */
|
||||
retry &= ~changed;
|
||||
if (retry) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user