mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
synced 2026-04-18 06:33:43 -04:00
drm/amd/display: Refactor amdgpu_dm_connector_detect (v2)
Prepare for polling analog connectors. Document the function better. Signed-off-by: Timur Kristóf <timur.kristof@gmail.com> Reviewed-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
e45d60a769
commit
8223a60574
@@ -7226,29 +7226,32 @@ finish:
|
||||
return stream;
|
||||
}
|
||||
|
||||
/**
|
||||
* amdgpu_dm_connector_detect() - Detect whether a DRM connector is connected to a display
|
||||
*
|
||||
* A connector is considered connected when it has a sink that is not NULL.
|
||||
* For connectors that support HPD (hotplug detection), the connection is
|
||||
* handled in the HPD interrupt.
|
||||
*
|
||||
* Notes:
|
||||
* 1. This interface is NOT called in context of HPD irq.
|
||||
* 2. This interface *is called* in context of user-mode ioctl. Which
|
||||
* makes it a bad place for *any* MST-related activity.
|
||||
*/
|
||||
static enum drm_connector_status
|
||||
amdgpu_dm_connector_detect(struct drm_connector *connector, bool force)
|
||||
{
|
||||
bool connected;
|
||||
struct amdgpu_dm_connector *aconnector = to_amdgpu_dm_connector(connector);
|
||||
|
||||
/*
|
||||
* Notes:
|
||||
* 1. This interface is NOT called in context of HPD irq.
|
||||
* 2. This interface *is called* in context of user-mode ioctl. Which
|
||||
* makes it a bad place for *any* MST-related activity.
|
||||
*/
|
||||
|
||||
if (aconnector->base.force == DRM_FORCE_UNSPECIFIED &&
|
||||
!aconnector->fake_enable)
|
||||
connected = (aconnector->dc_sink != NULL);
|
||||
else
|
||||
connected = (aconnector->base.force == DRM_FORCE_ON ||
|
||||
aconnector->base.force == DRM_FORCE_ON_DIGITAL);
|
||||
|
||||
update_subconnector_property(aconnector);
|
||||
|
||||
return (connected ? connector_status_connected :
|
||||
if (aconnector->base.force == DRM_FORCE_ON ||
|
||||
aconnector->base.force == DRM_FORCE_ON_DIGITAL)
|
||||
return connector_status_connected;
|
||||
else if (aconnector->base.force == DRM_FORCE_OFF)
|
||||
return connector_status_disconnected;
|
||||
|
||||
return (aconnector->dc_sink ? connector_status_connected :
|
||||
connector_status_disconnected);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user