aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/radeon_encoders.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2009-10-08 15:09:31 -0400
committerDave Airlie <airlied@redhat.com>2009-10-11 23:42:44 -0400
commit5a9bcacc0a56f0d9577494e834519480018a6cc3 (patch)
treef46fe410f8c875cf28d3905d23fdffcea4f374c0 /drivers/gpu/drm/radeon/radeon_encoders.c
parent2606c88608122339cbd5c6b5c149a2eb74ccfe9e (diff)
drm/radeon/kms/atom: rework crtc modeset
- clean up tv timing handling - unify SetCRTC_Timing and SetCRTC_UsingDTDTiming Signed-off-by: Alex Deucher <alexdeucher@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/radeon/radeon_encoders.c')
-rw-r--r--drivers/gpu/drm/radeon/radeon_encoders.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_encoders.c b/drivers/gpu/drm/radeon/radeon_encoders.c
index a65ab1a0dad2..3e58c6eccea5 100644
--- a/drivers/gpu/drm/radeon/radeon_encoders.c
+++ b/drivers/gpu/drm/radeon/radeon_encoders.c
@@ -31,6 +31,10 @@
31 31
32extern int atom_debug; 32extern int atom_debug;
33 33
34/* evil but including atombios.h is much worse */
35bool radeon_atom_get_tv_timings(struct radeon_device *rdev, int index,
36 struct drm_display_mode *mode);
37
34uint32_t 38uint32_t
35radeon_get_encoder_id(struct drm_device *dev, uint32_t supported_device, uint8_t dac) 39radeon_get_encoder_id(struct drm_device *dev, uint32_t supported_device, uint8_t dac)
36{ 40{
@@ -219,6 +223,8 @@ static bool radeon_atom_mode_fixup(struct drm_encoder *encoder,
219 struct drm_display_mode *adjusted_mode) 223 struct drm_display_mode *adjusted_mode)
220{ 224{
221 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder); 225 struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
226 struct drm_device *dev = encoder->dev;
227 struct radeon_device *rdev = dev->dev_private;
222 228
223 drm_mode_set_crtcinfo(adjusted_mode, 0); 229 drm_mode_set_crtcinfo(adjusted_mode, 0);
224 230
@@ -230,6 +236,18 @@ static bool radeon_atom_mode_fixup(struct drm_encoder *encoder,
230 && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2))) 236 && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2)))
231 adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2; 237 adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2;
232 238
239 if (radeon_encoder->active_device & ATOM_DEVICE_TV_SUPPORT) {
240 struct radeon_encoder_atom_dac *tv_dac = radeon_encoder->enc_priv;
241 if (tv_dac) {
242 if (tv_dac->tv_std == TV_STD_NTSC ||
243 tv_dac->tv_std == TV_STD_NTSC_J ||
244 tv_dac->tv_std == TV_STD_PAL_M)
245 radeon_atom_get_tv_timings(rdev, 0, adjusted_mode);
246 else
247 radeon_atom_get_tv_timings(rdev, 1, adjusted_mode);
248 }
249 }
250
233 return true; 251 return true;
234} 252}
235 253