drm/vc4: hdmi: Make sure the controller is powered in detect
If the HPD GPIO is not available and drm_probe_ddc fails, we end up
reading the HDMI_HOTPLUG register, but the controller might be powered
off resulting in a CPU hang. Make sure we have the power domain and the
HSM clock powered during the detect cycle to prevent the hang from
happening.
Fixes: 4f6e3d66ac ("drm/vc4: Add runtime PM support to the HDMI encoder driver")
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210525091059.234116-4-maxime@cerno.tech
			
			
This commit is contained in:
		
							parent
							
								
									411efa18e4
								
							
						
					
					
						commit
						9984d6664c
					
				| @ -159,6 +159,8 @@ vc4_hdmi_connector_detect(struct drm_connector *connector, bool force) | |||||||
| 	struct vc4_hdmi *vc4_hdmi = connector_to_vc4_hdmi(connector); | 	struct vc4_hdmi *vc4_hdmi = connector_to_vc4_hdmi(connector); | ||||||
| 	bool connected = false; | 	bool connected = false; | ||||||
| 
 | 
 | ||||||
|  | 	WARN_ON(pm_runtime_resume_and_get(&vc4_hdmi->pdev->dev)); | ||||||
|  | 
 | ||||||
| 	if (vc4_hdmi->hpd_gpio) { | 	if (vc4_hdmi->hpd_gpio) { | ||||||
| 		if (gpio_get_value_cansleep(vc4_hdmi->hpd_gpio) ^ | 		if (gpio_get_value_cansleep(vc4_hdmi->hpd_gpio) ^ | ||||||
| 		    vc4_hdmi->hpd_active_low) | 		    vc4_hdmi->hpd_active_low) | ||||||
| @ -180,10 +182,12 @@ vc4_hdmi_connector_detect(struct drm_connector *connector, bool force) | |||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  | 		pm_runtime_put(&vc4_hdmi->pdev->dev); | ||||||
| 		return connector_status_connected; | 		return connector_status_connected; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	cec_phys_addr_invalidate(vc4_hdmi->cec_adap); | 	cec_phys_addr_invalidate(vc4_hdmi->cec_adap); | ||||||
|  | 	pm_runtime_put(&vc4_hdmi->pdev->dev); | ||||||
| 	return connector_status_disconnected; | 	return connector_status_disconnected; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user