amd/display: enable panel orientation quirks
This patch allows panel orientation quirks from DRM core to be used. They attach a DRM connector property "panel orientation" which indicates in which direction the panel has been mounted. Some machines have the internal screen mounted with a rotation. Since the panel orientation quirks need the native mode from the EDID, check for it in amdgpu_dm_connector_ddc_get_modes. Signed-off-by: Simon Ser <contact@emersion.fr> Cc: Alex Deucher <alexander.deucher@amd.com> Cc: Harry Wentland <hwentlan@amd.com> Cc: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Reviewed-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
31ea43442d
commit
d77de7880e
1 changed files with 28 additions and 0 deletions
|
@ -7826,6 +7826,32 @@ static void amdgpu_dm_connector_add_common_modes(struct drm_encoder *encoder,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void amdgpu_set_panel_orientation(struct drm_connector *connector)
|
||||||
|
{
|
||||||
|
struct drm_encoder *encoder;
|
||||||
|
struct amdgpu_encoder *amdgpu_encoder;
|
||||||
|
const struct drm_display_mode *native_mode;
|
||||||
|
|
||||||
|
if (connector->connector_type != DRM_MODE_CONNECTOR_eDP &&
|
||||||
|
connector->connector_type != DRM_MODE_CONNECTOR_LVDS)
|
||||||
|
return;
|
||||||
|
|
||||||
|
encoder = amdgpu_dm_connector_to_encoder(connector);
|
||||||
|
if (!encoder)
|
||||||
|
return;
|
||||||
|
|
||||||
|
amdgpu_encoder = to_amdgpu_encoder(encoder);
|
||||||
|
|
||||||
|
native_mode = &amdgpu_encoder->native_mode;
|
||||||
|
if (native_mode->hdisplay == 0 || native_mode->vdisplay == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
drm_connector_set_panel_orientation_with_quirk(connector,
|
||||||
|
DRM_MODE_PANEL_ORIENTATION_UNKNOWN,
|
||||||
|
native_mode->hdisplay,
|
||||||
|
native_mode->vdisplay);
|
||||||
|
}
|
||||||
|
|
||||||
static void amdgpu_dm_connector_ddc_get_modes(struct drm_connector *connector,
|
static void amdgpu_dm_connector_ddc_get_modes(struct drm_connector *connector,
|
||||||
struct edid *edid)
|
struct edid *edid)
|
||||||
{
|
{
|
||||||
|
@ -7854,6 +7880,8 @@ static void amdgpu_dm_connector_ddc_get_modes(struct drm_connector *connector,
|
||||||
* restored here.
|
* restored here.
|
||||||
*/
|
*/
|
||||||
amdgpu_dm_update_freesync_caps(connector, edid);
|
amdgpu_dm_update_freesync_caps(connector, edid);
|
||||||
|
|
||||||
|
amdgpu_set_panel_orientation(connector);
|
||||||
} else {
|
} else {
|
||||||
amdgpu_dm_connector->num_modes = 0;
|
amdgpu_dm_connector->num_modes = 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue