diff options
author | Dave Airlie <airlied@redhat.com> | 2010-06-07 20:42:28 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2010-06-08 01:17:48 -0400 |
commit | b62e948fd00bda1be2af31b591e5284374de551f (patch) | |
tree | 59e41d5f72f2a5bed8a1a3969a37b22d2d9abc52 /drivers/gpu/drm/radeon/radeon_legacy_encoders.c | |
parent | d294ed69408b54c18f0420516ea057b2a734624d (diff) |
drm/radeon: don't poll tv dac if crtc2 is in use.
So when we added output polling, we'd suddenly use this code more often, and the fact that it always takes over crtc2 and messes with it during probing isn't what we really want to be happening. A more complete fix would to change it to use whatever crtc was free at the time, but for now lets stay simple and just don't poll if crtc2 is already in use.
Although a more correct fix was found I suspect we should do this as well, until we get a chance to readdres the tv out polling issues.
Reported-by: Torsten Kaiser <just.for.lkml@googlemail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_legacy_encoders.c')
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_legacy_encoders.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c index 5a13b3eeef19..5b07b8848e09 100644 --- a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c +++ b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c | |||
@@ -1168,6 +1168,17 @@ static enum drm_connector_status radeon_legacy_tv_dac_detect(struct drm_encoder | |||
1168 | struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); | 1168 | struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); |
1169 | struct radeon_encoder_tv_dac *tv_dac = radeon_encoder->enc_priv; | 1169 | struct radeon_encoder_tv_dac *tv_dac = radeon_encoder->enc_priv; |
1170 | bool color = true; | 1170 | bool color = true; |
1171 | struct drm_crtc *crtc; | ||
1172 | |||
1173 | /* find out if crtc2 is in use or if this encoder is using it */ | ||
1174 | list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { | ||
1175 | struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc); | ||
1176 | if ((radeon_crtc->crtc_id == 1) && crtc->enabled) { | ||
1177 | if (encoder->crtc != crtc) { | ||
1178 | return connector_status_disconnected; | ||
1179 | } | ||
1180 | } | ||
1181 | } | ||
1171 | 1182 | ||
1172 | if (connector->connector_type == DRM_MODE_CONNECTOR_SVIDEO || | 1183 | if (connector->connector_type == DRM_MODE_CONNECTOR_SVIDEO || |
1173 | connector->connector_type == DRM_MODE_CONNECTOR_Composite || | 1184 | connector->connector_type == DRM_MODE_CONNECTOR_Composite || |