mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 14:53:58 -04:00
Merge tag 'drm-misc-next-2020-08-27' of git://anongit.freedesktop.org/drm/drm-misc into drm-next
drm-misc-next for 5.10:
UAPI Changes:
Cross-subsystem Changes:
Core Changes:
- ttm: various cleanups and reworks of the API
Driver Changes:
- ast: various cleanups
- gma500: A few fixes, conversion to GPIOd API
- hisilicon: Change of maintainer, various reworks
- ingenic: Clock handling and formats support improvements
- mcde: improvements to the DSI support
- mgag200: Support G200 desktop cards
- mxsfb: Support the i.MX7 and i.MX8M and the alpha plane
- panfrost: support devfreq
- ps8640: Retrieve the EDID from eDP control, misc improvements
- tidss: Add a workaround for AM65xx YUV formats handling
- virtio: a few cleanups, support for virtio-gpu exported resources
- bridges: Support the chained bridges on more drivers,
new bridges: Toshiba TC358762, Toshiba TC358775, Lontium LT9611
- panels: Convert to dev_ based logging, read orientation from the DT,
various fixes, new panels: Mantix MLAF057WE51-X, Chefree CH101OLHLWH-002,
Powertip PH800480T013, KingDisplay KD116N21-30NV-A010
Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Maxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/20200827155517.do6emeacetpturli@gilmour.lan
This commit is contained in:
@@ -127,6 +127,42 @@ MODULE_FIRMWARE(FIRMWARE_NAVI12_DMCU);
|
||||
static int amdgpu_dm_init(struct amdgpu_device *adev);
|
||||
static void amdgpu_dm_fini(struct amdgpu_device *adev);
|
||||
|
||||
static enum drm_mode_subconnector get_subconnector_type(struct dc_link *link)
|
||||
{
|
||||
switch (link->dpcd_caps.dongle_type) {
|
||||
case DISPLAY_DONGLE_NONE:
|
||||
return DRM_MODE_SUBCONNECTOR_Native;
|
||||
case DISPLAY_DONGLE_DP_VGA_CONVERTER:
|
||||
return DRM_MODE_SUBCONNECTOR_VGA;
|
||||
case DISPLAY_DONGLE_DP_DVI_CONVERTER:
|
||||
case DISPLAY_DONGLE_DP_DVI_DONGLE:
|
||||
return DRM_MODE_SUBCONNECTOR_DVID;
|
||||
case DISPLAY_DONGLE_DP_HDMI_CONVERTER:
|
||||
case DISPLAY_DONGLE_DP_HDMI_DONGLE:
|
||||
return DRM_MODE_SUBCONNECTOR_HDMIA;
|
||||
case DISPLAY_DONGLE_DP_HDMI_MISMATCHED_DONGLE:
|
||||
default:
|
||||
return DRM_MODE_SUBCONNECTOR_Unknown;
|
||||
}
|
||||
}
|
||||
|
||||
static void update_subconnector_property(struct amdgpu_dm_connector *aconnector)
|
||||
{
|
||||
struct dc_link *link = aconnector->dc_link;
|
||||
struct drm_connector *connector = &aconnector->base;
|
||||
enum drm_mode_subconnector subconnector = DRM_MODE_SUBCONNECTOR_Unknown;
|
||||
|
||||
if (connector->connector_type != DRM_MODE_CONNECTOR_DisplayPort)
|
||||
return;
|
||||
|
||||
if (aconnector->dc_sink)
|
||||
subconnector = get_subconnector_type(link);
|
||||
|
||||
drm_object_property_set_value(&connector->base,
|
||||
connector->dev->mode_config.dp_subconnector_property,
|
||||
subconnector);
|
||||
}
|
||||
|
||||
/*
|
||||
* initializes drm_device display related structures, based on the information
|
||||
* provided by DAL. The drm strcutures are: drm_crtc, drm_connector,
|
||||
@@ -2095,7 +2131,6 @@ void amdgpu_dm_update_connector_after_detect(
|
||||
if (aconnector->mst_mgr.mst_state == true)
|
||||
return;
|
||||
|
||||
|
||||
sink = aconnector->dc_link->local_sink;
|
||||
if (sink)
|
||||
dc_sink_retain(sink);
|
||||
@@ -2222,6 +2257,8 @@ void amdgpu_dm_update_connector_after_detect(
|
||||
|
||||
mutex_unlock(&dev->mode_config.mutex);
|
||||
|
||||
update_subconnector_property(aconnector);
|
||||
|
||||
if (sink)
|
||||
dc_sink_release(sink);
|
||||
}
|
||||
@@ -4757,6 +4794,8 @@ amdgpu_dm_connector_detect(struct drm_connector *connector, bool force)
|
||||
else
|
||||
connected = (aconnector->base.force == DRM_FORCE_ON);
|
||||
|
||||
update_subconnector_property(aconnector);
|
||||
|
||||
return (connected ? connector_status_connected :
|
||||
connector_status_disconnected);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user