mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	drm/probe-helper: use drm_kms_helper_connector_hotplug_event
If an hotplug event only updates a single connector, use drm_kms_helper_connector_hotplug_event instead of drm_kms_helper_hotplug_event. Changes in v4: - Simplify loop logic (Ville, Sam) - Update drm_connector_helper_hpd_irq_event (Maxime) Signed-off-by: Simon Ser <contact@emersion.fr> Cc: Ville Syrjala <ville.syrjala@linux.intel.com> Reviewed-by: Maxime Ripard <maxime@cerno.tech> Reviewed-by: Sam Ravnborg <sam@ravnborg.org> Acked-by: Pekka Paalanen <pekka.paalanen@collabora.com> Link: https://patchwork.freedesktop.org/patch/msgid/20211018084707.32253-6-contact@emersion.fr
This commit is contained in:
		
							parent
							
								
									fc320a6f64
								
							
						
					
					
						commit
						d35d4dbcc8
					
				
					 1 changed files with 17 additions and 8 deletions
				
			
		| 
						 | 
				
			
			@ -888,7 +888,7 @@ bool drm_connector_helper_hpd_irq_event(struct drm_connector *connector)
 | 
			
		|||
	mutex_unlock(&dev->mode_config.mutex);
 | 
			
		||||
 | 
			
		||||
	if (changed) {
 | 
			
		||||
		drm_kms_helper_hotplug_event(dev);
 | 
			
		||||
		drm_kms_helper_connector_hotplug_event(connector);
 | 
			
		||||
		drm_dbg_kms(dev, "[CONNECTOR:%d:%s] Sent hotplug event\n",
 | 
			
		||||
			    connector->base.id,
 | 
			
		||||
			    connector->name);
 | 
			
		||||
| 
						 | 
				
			
			@ -927,9 +927,9 @@ EXPORT_SYMBOL(drm_connector_helper_hpd_irq_event);
 | 
			
		|||
 */
 | 
			
		||||
bool drm_helper_hpd_irq_event(struct drm_device *dev)
 | 
			
		||||
{
 | 
			
		||||
	struct drm_connector *connector;
 | 
			
		||||
	struct drm_connector *connector, *first_changed_connector = NULL;
 | 
			
		||||
	struct drm_connector_list_iter conn_iter;
 | 
			
		||||
	bool changed = false;
 | 
			
		||||
	int changed = 0;
 | 
			
		||||
 | 
			
		||||
	if (!dev->mode_config.poll_enabled)
 | 
			
		||||
		return false;
 | 
			
		||||
| 
						 | 
				
			
			@ -941,16 +941,25 @@ bool drm_helper_hpd_irq_event(struct drm_device *dev)
 | 
			
		|||
		if (!(connector->polled & DRM_CONNECTOR_POLL_HPD))
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		if (check_connector_changed(connector))
 | 
			
		||||
			changed = true;
 | 
			
		||||
		if (check_connector_changed(connector)) {
 | 
			
		||||
			if (!first_changed_connector) {
 | 
			
		||||
				drm_connector_get(connector);
 | 
			
		||||
				first_changed_connector = connector;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			changed++;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	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);
 | 
			
		||||
		DRM_DEBUG_KMS("Sent hotplug event\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (first_changed_connector)
 | 
			
		||||
		drm_connector_put(first_changed_connector);
 | 
			
		||||
 | 
			
		||||
	return changed;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue