drm/radeon/kms/atom: fix tv-out
D1MODE_INTERLEAVE_EN was getting set in some cases
in the encoder quirks function due to the changes in
5a9bcacc0a
Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
	
	
This commit is contained in:
		
					parent
					
						
							
								0294cf4f7f
							
						
					
				
			
			
				commit
				
					
						ceefedd8e8
					
				
			
		
					 2 changed files with 6 additions and 7 deletions
				
			
		| 
						 | 
					@ -31,10 +31,6 @@
 | 
				
			||||||
#include "atom.h"
 | 
					#include "atom.h"
 | 
				
			||||||
#include "atom-bits.h"
 | 
					#include "atom-bits.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* evil but including atombios.h is much worse */
 | 
					 | 
				
			||||||
bool radeon_atom_get_tv_timings(struct radeon_device *rdev, int index,
 | 
					 | 
				
			||||||
				SET_CRTC_TIMING_PARAMETERS_PS_ALLOCATION *crtc_timing,
 | 
					 | 
				
			||||||
				int32_t *pixel_clock);
 | 
					 | 
				
			||||||
static void atombios_overscan_setup(struct drm_crtc *crtc,
 | 
					static void atombios_overscan_setup(struct drm_crtc *crtc,
 | 
				
			||||||
				    struct drm_display_mode *mode,
 | 
									    struct drm_display_mode *mode,
 | 
				
			||||||
				    struct drm_display_mode *adjusted_mode)
 | 
									    struct drm_display_mode *adjusted_mode)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -206,7 +206,7 @@ static bool radeon_atom_mode_fixup(struct drm_encoder *encoder,
 | 
				
			||||||
	    && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2)))
 | 
						    && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2)))
 | 
				
			||||||
		adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2;
 | 
							adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (radeon_encoder->active_device & ATOM_DEVICE_TV_SUPPORT) {
 | 
						if (radeon_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT)) {
 | 
				
			||||||
		struct radeon_encoder_atom_dac *tv_dac = radeon_encoder->enc_priv;
 | 
							struct radeon_encoder_atom_dac *tv_dac = radeon_encoder->enc_priv;
 | 
				
			||||||
		if (tv_dac) {
 | 
							if (tv_dac) {
 | 
				
			||||||
			if (tv_dac->tv_std == TV_STD_NTSC ||
 | 
								if (tv_dac->tv_std == TV_STD_NTSC ||
 | 
				
			||||||
| 
						 | 
					@ -1085,8 +1085,11 @@ atombios_apply_encoder_quirks(struct drm_encoder *encoder,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* set scaler clears this on some chips */
 | 
						/* set scaler clears this on some chips */
 | 
				
			||||||
	if (ASIC_IS_AVIVO(rdev) && (mode->flags & DRM_MODE_FLAG_INTERLACE))
 | 
						if (!(radeon_encoder->active_device & (ATOM_DEVICE_TV_SUPPORT))) {
 | 
				
			||||||
		WREG32(AVIVO_D1MODE_DATA_FORMAT + radeon_crtc->crtc_offset, AVIVO_D1MODE_INTERLEAVE_EN);
 | 
							if (ASIC_IS_AVIVO(rdev) && (mode->flags & DRM_MODE_FLAG_INTERLACE))
 | 
				
			||||||
 | 
								WREG32(AVIVO_D1MODE_DATA_FORMAT + radeon_crtc->crtc_offset,
 | 
				
			||||||
 | 
								       AVIVO_D1MODE_INTERLEAVE_EN);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue