diff options
| -rw-r--r-- | drivers/gpu/drm/radeon/radeon_legacy_encoders.c | 58 |
1 files changed, 33 insertions, 25 deletions
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c index cf389ce50a8a..2441cca7d775 100644 --- a/drivers/gpu/drm/radeon/radeon_legacy_encoders.c +++ b/drivers/gpu/drm/radeon/radeon_legacy_encoders.c | |||
| @@ -830,8 +830,8 @@ static void radeon_legacy_tv_dac_dpms(struct drm_encoder *encoder, int mode) | |||
| 830 | crtc2_gen_cntl &= ~RADEON_CRTC2_CRT2_ON; | 830 | crtc2_gen_cntl &= ~RADEON_CRTC2_CRT2_ON; |
| 831 | 831 | ||
| 832 | if (rdev->family == CHIP_R420 || | 832 | if (rdev->family == CHIP_R420 || |
| 833 | rdev->family == CHIP_R423 || | 833 | rdev->family == CHIP_R423 || |
| 834 | rdev->family == CHIP_RV410) | 834 | rdev->family == CHIP_RV410) |
| 835 | tv_dac_cntl |= (R420_TV_DAC_RDACPD | | 835 | tv_dac_cntl |= (R420_TV_DAC_RDACPD | |
| 836 | R420_TV_DAC_GDACPD | | 836 | R420_TV_DAC_GDACPD | |
| 837 | R420_TV_DAC_BDACPD | | 837 | R420_TV_DAC_BDACPD | |
| @@ -907,35 +907,43 @@ static void radeon_legacy_tv_dac_mode_set(struct drm_encoder *encoder, | |||
| 907 | if (rdev->family != CHIP_R200) { | 907 | if (rdev->family != CHIP_R200) { |
| 908 | tv_dac_cntl = RREG32(RADEON_TV_DAC_CNTL); | 908 | tv_dac_cntl = RREG32(RADEON_TV_DAC_CNTL); |
| 909 | if (rdev->family == CHIP_R420 || | 909 | if (rdev->family == CHIP_R420 || |
| 910 | rdev->family == CHIP_R423 || | 910 | rdev->family == CHIP_R423 || |
| 911 | rdev->family == CHIP_RV410) { | 911 | rdev->family == CHIP_RV410) { |
| 912 | tv_dac_cntl &= ~(RADEON_TV_DAC_STD_MASK | | 912 | tv_dac_cntl &= ~(RADEON_TV_DAC_STD_MASK | |
| 913 | RADEON_TV_DAC_BGADJ_MASK | | 913 | RADEON_TV_DAC_BGADJ_MASK | |
| 914 | R420_TV_DAC_DACADJ_MASK | | 914 | R420_TV_DAC_DACADJ_MASK | |
| 915 | R420_TV_DAC_RDACPD | | 915 | R420_TV_DAC_RDACPD | |
| 916 | R420_TV_DAC_GDACPD | | 916 | R420_TV_DAC_GDACPD | |
| 917 | R420_TV_DAC_BDACPD | | 917 | R420_TV_DAC_BDACPD | |
| 918 | R420_TV_DAC_TVENABLE); | 918 | R420_TV_DAC_TVENABLE); |
| 919 | } else { | 919 | } else { |
| 920 | tv_dac_cntl &= ~(RADEON_TV_DAC_STD_MASK | | 920 | tv_dac_cntl &= ~(RADEON_TV_DAC_STD_MASK | |
| 921 | RADEON_TV_DAC_BGADJ_MASK | | 921 | RADEON_TV_DAC_BGADJ_MASK | |
| 922 | RADEON_TV_DAC_DACADJ_MASK | | 922 | RADEON_TV_DAC_DACADJ_MASK | |
| 923 | RADEON_TV_DAC_RDACPD | | 923 | RADEON_TV_DAC_RDACPD | |
| 924 | RADEON_TV_DAC_GDACPD | | 924 | RADEON_TV_DAC_GDACPD | |
| 925 | RADEON_TV_DAC_BDACPD); | 925 | RADEON_TV_DAC_BDACPD); |
| 926 | } | 926 | } |
| 927 | 927 | ||
| 928 | /* FIXME TV */ | 928 | tv_dac_cntl |= RADEON_TV_DAC_NBLANK | RADEON_TV_DAC_NHOLD; |
| 929 | if (tv_dac) { | 929 | |
| 930 | struct radeon_encoder_tv_dac *tv_dac = radeon_encoder->enc_priv; | 930 | if (is_tv) { |
| 931 | tv_dac_cntl |= (RADEON_TV_DAC_NBLANK | | 931 | if (tv_dac->tv_std == TV_STD_NTSC || |
| 932 | RADEON_TV_DAC_NHOLD | | 932 | tv_dac->tv_std == TV_STD_NTSC_J || |
| 933 | RADEON_TV_DAC_STD_PS2 | | 933 | tv_dac->tv_std == TV_STD_PAL_M || |
| 934 | tv_dac->ps2_tvdac_adj); | 934 | tv_dac->tv_std == TV_STD_PAL_60) |
| 935 | tv_dac_cntl |= tv_dac->ntsc_tvdac_adj; | ||
| 936 | else | ||
| 937 | tv_dac_cntl |= tv_dac->pal_tvdac_adj; | ||
| 938 | |||
| 939 | if (tv_dac->tv_std == TV_STD_NTSC || | ||
| 940 | tv_dac->tv_std == TV_STD_NTSC_J) | ||
| 941 | tv_dac_cntl |= RADEON_TV_DAC_STD_NTSC; | ||
| 942 | else | ||
| 943 | tv_dac_cntl |= RADEON_TV_DAC_STD_PAL; | ||
| 935 | } else | 944 | } else |
| 936 | tv_dac_cntl |= (RADEON_TV_DAC_NBLANK | | 945 | tv_dac_cntl |= (RADEON_TV_DAC_STD_PS2 | |
| 937 | RADEON_TV_DAC_NHOLD | | 946 | tv_dac->ps2_tvdac_adj); |
| 938 | RADEON_TV_DAC_STD_PS2); | ||
| 939 | 947 | ||
| 940 | WREG32(RADEON_TV_DAC_CNTL, tv_dac_cntl); | 948 | WREG32(RADEON_TV_DAC_CNTL, tv_dac_cntl); |
| 941 | } | 949 | } |
