提交 f89931f3 编写于 作者: A Alex Deucher 提交者: Dave Airlie

drm/radeon/kms: fix handling of DP to LVDS bridges

They need to be treated like eDP rather than DP.

May fix:
https://bugzilla.kernel.org/show_bug.cgi?id=34822Signed-off-by: NAlex Deucher <alexdeucher@gmail.com>
Signed-off-by: NDave Airlie <airlied@redhat.com>
上级 d6c66952
...@@ -1075,7 +1075,8 @@ static int radeon_dp_get_modes(struct drm_connector *connector) ...@@ -1075,7 +1075,8 @@ static int radeon_dp_get_modes(struct drm_connector *connector)
struct drm_encoder *encoder = radeon_best_single_encoder(connector); struct drm_encoder *encoder = radeon_best_single_encoder(connector);
int ret; int ret;
if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) ||
(connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) {
struct drm_display_mode *mode; struct drm_display_mode *mode;
if (!radeon_dig_connector->edp_on) if (!radeon_dig_connector->edp_on)
...@@ -1208,7 +1209,8 @@ radeon_dp_detect(struct drm_connector *connector, bool force) ...@@ -1208,7 +1209,8 @@ radeon_dp_detect(struct drm_connector *connector, bool force)
radeon_connector->edid = NULL; radeon_connector->edid = NULL;
} }
if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) ||
(connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) {
if (encoder) { if (encoder) {
struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
struct drm_display_mode *native_mode = &radeon_encoder->native_mode; struct drm_display_mode *native_mode = &radeon_encoder->native_mode;
...@@ -1271,7 +1273,8 @@ static int radeon_dp_mode_valid(struct drm_connector *connector, ...@@ -1271,7 +1273,8 @@ static int radeon_dp_mode_valid(struct drm_connector *connector,
/* XXX check mode bandwidth */ /* XXX check mode bandwidth */
if (connector->connector_type == DRM_MODE_CONNECTOR_eDP) { if ((connector->connector_type == DRM_MODE_CONNECTOR_eDP) ||
(connector->connector_type == DRM_MODE_CONNECTOR_LVDS)) {
struct drm_encoder *encoder = radeon_best_single_encoder(connector); struct drm_encoder *encoder = radeon_best_single_encoder(connector);
if ((mode->hdisplay < 320) || (mode->vdisplay < 240)) if ((mode->hdisplay < 320) || (mode->vdisplay < 240))
...@@ -1281,7 +1284,7 @@ static int radeon_dp_mode_valid(struct drm_connector *connector, ...@@ -1281,7 +1284,7 @@ static int radeon_dp_mode_valid(struct drm_connector *connector,
struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
struct drm_display_mode *native_mode = &radeon_encoder->native_mode; struct drm_display_mode *native_mode = &radeon_encoder->native_mode;
/* AVIVO hardware supports downscaling modes larger than the panel /* AVIVO hardware supports downscaling modes larger than the panel
* to the panel size, but I'm not sure this is desirable. * to the panel size, but I'm not sure this is desirable.
*/ */
if ((mode->hdisplay > native_mode->hdisplay) || if ((mode->hdisplay > native_mode->hdisplay) ||
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册