diff options
| author | Alex Deucher <alexdeucher@gmail.com> | 2010-03-10 18:33:03 -0500 |
|---|---|---|
| committer | Dave Airlie <airlied@redhat.com> | 2010-03-14 19:57:42 -0400 |
| commit | 15f7207761cfcf8f53fb6e5cacffe060478782c3 (patch) | |
| tree | 967cce5f416c7bdb7e2fe57cdb9bfc05d7daa828 | |
| parent | 267364ac17f6474c69b03034340f769b22f46105 (diff) | |
drm/radeon/kms: fix pal tv-out support on legacy IGP chips
Based on ddx patch by Andrzej Hajda.
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Cc: stable@kernel.org
Signed-off-by: Dave Airlie <airlied@redhat.com>
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_legacy_tv.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_tv.c b/drivers/gpu/drm/radeon/radeon_legacy_tv.c index 417684daef4c..f2ed27c8055b 100644 --- a/drivers/gpu/drm/radeon/radeon_legacy_tv.c +++ b/drivers/gpu/drm/radeon/radeon_legacy_tv.c | |||
| @@ -57,6 +57,10 @@ | |||
| 57 | #define NTSC_TV_PLL_N_14 693 | 57 | #define NTSC_TV_PLL_N_14 693 |
| 58 | #define NTSC_TV_PLL_P_14 7 | 58 | #define NTSC_TV_PLL_P_14 7 |
| 59 | 59 | ||
| 60 | #define PAL_TV_PLL_M_14 19 | ||
| 61 | #define PAL_TV_PLL_N_14 353 | ||
| 62 | #define PAL_TV_PLL_P_14 5 | ||
| 63 | |||
| 60 | #define VERT_LEAD_IN_LINES 2 | 64 | #define VERT_LEAD_IN_LINES 2 |
| 61 | #define FRAC_BITS 0xe | 65 | #define FRAC_BITS 0xe |
| 62 | #define FRAC_MASK 0x3fff | 66 | #define FRAC_MASK 0x3fff |
| @@ -205,9 +209,24 @@ static const struct radeon_tv_mode_constants available_tv_modes[] = { | |||
| 205 | 630627, /* defRestart */ | 209 | 630627, /* defRestart */ |
| 206 | 347, /* crtcPLL_N */ | 210 | 347, /* crtcPLL_N */ |
| 207 | 14, /* crtcPLL_M */ | 211 | 14, /* crtcPLL_M */ |
| 208 | 8, /* crtcPLL_postDiv */ | 212 | 8, /* crtcPLL_postDiv */ |
| 209 | 1022, /* pixToTV */ | 213 | 1022, /* pixToTV */ |
| 210 | }, | 214 | }, |
| 215 | { /* PAL timing for 14 Mhz ref clk */ | ||
| 216 | 800, /* horResolution */ | ||
| 217 | 600, /* verResolution */ | ||
| 218 | TV_STD_PAL, /* standard */ | ||
| 219 | 1131, /* horTotal */ | ||
| 220 | 742, /* verTotal */ | ||
| 221 | 813, /* horStart */ | ||
| 222 | 840, /* horSyncStart */ | ||
| 223 | 633, /* verSyncStart */ | ||
| 224 | 708369, /* defRestart */ | ||
| 225 | 211, /* crtcPLL_N */ | ||
| 226 | 9, /* crtcPLL_M */ | ||
| 227 | 8, /* crtcPLL_postDiv */ | ||
| 228 | 759, /* pixToTV */ | ||
| 229 | }, | ||
| 211 | }; | 230 | }; |
| 212 | 231 | ||
| 213 | #define N_AVAILABLE_MODES ARRAY_SIZE(available_tv_modes) | 232 | #define N_AVAILABLE_MODES ARRAY_SIZE(available_tv_modes) |
| @@ -242,7 +261,7 @@ static const struct radeon_tv_mode_constants *radeon_legacy_tv_get_std_mode(stru | |||
| 242 | if (pll->reference_freq == 2700) | 261 | if (pll->reference_freq == 2700) |
| 243 | const_ptr = &available_tv_modes[1]; | 262 | const_ptr = &available_tv_modes[1]; |
| 244 | else | 263 | else |
| 245 | const_ptr = &available_tv_modes[1]; /* FIX ME */ | 264 | const_ptr = &available_tv_modes[3]; |
| 246 | } | 265 | } |
| 247 | return const_ptr; | 266 | return const_ptr; |
| 248 | } | 267 | } |
| @@ -685,9 +704,9 @@ void radeon_legacy_tv_mode_set(struct drm_encoder *encoder, | |||
| 685 | n = PAL_TV_PLL_N_27; | 704 | n = PAL_TV_PLL_N_27; |
| 686 | p = PAL_TV_PLL_P_27; | 705 | p = PAL_TV_PLL_P_27; |
| 687 | } else { | 706 | } else { |
| 688 | m = PAL_TV_PLL_M_27; | 707 | m = PAL_TV_PLL_M_14; |
| 689 | n = PAL_TV_PLL_N_27; | 708 | n = PAL_TV_PLL_N_14; |
| 690 | p = PAL_TV_PLL_P_27; | 709 | p = PAL_TV_PLL_P_14; |
| 691 | } | 710 | } |
| 692 | } | 711 | } |
| 693 | 712 | ||
