mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-15 15:04:27 +08:00
drm/radeon: fix dual-head on rv250
Plugged in FireMV with the rv250 on it, and the second crtc/dac didn't work, we were reading/writing different registers than we were modifying in the code. Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
7e27d6e778
commit
1ab064de4f
@ -928,16 +928,14 @@ static void radeon_legacy_tv_dac_mode_set(struct drm_encoder *encoder,
|
|||||||
if (ASIC_IS_R300(rdev)) {
|
if (ASIC_IS_R300(rdev)) {
|
||||||
gpiopad_a = RREG32(RADEON_GPIOPAD_A) | 1;
|
gpiopad_a = RREG32(RADEON_GPIOPAD_A) | 1;
|
||||||
disp_output_cntl = RREG32(RADEON_DISP_OUTPUT_CNTL);
|
disp_output_cntl = RREG32(RADEON_DISP_OUTPUT_CNTL);
|
||||||
}
|
} else if (rdev->family != CHIP_R200)
|
||||||
|
|
||||||
if (rdev->family == CHIP_R200 || ASIC_IS_R300(rdev))
|
|
||||||
disp_tv_out_cntl = RREG32(RADEON_DISP_TV_OUT_CNTL);
|
|
||||||
else
|
|
||||||
disp_hw_debug = RREG32(RADEON_DISP_HW_DEBUG);
|
disp_hw_debug = RREG32(RADEON_DISP_HW_DEBUG);
|
||||||
|
else if (rdev->family == CHIP_R200)
|
||||||
if (rdev->family == CHIP_R200)
|
|
||||||
fp2_gen_cntl = RREG32(RADEON_FP2_GEN_CNTL);
|
fp2_gen_cntl = RREG32(RADEON_FP2_GEN_CNTL);
|
||||||
|
|
||||||
|
if (rdev->family >= CHIP_R200)
|
||||||
|
disp_tv_out_cntl = RREG32(RADEON_DISP_TV_OUT_CNTL);
|
||||||
|
|
||||||
if (is_tv) {
|
if (is_tv) {
|
||||||
uint32_t dac_cntl;
|
uint32_t dac_cntl;
|
||||||
|
|
||||||
@ -1002,15 +1000,13 @@ static void radeon_legacy_tv_dac_mode_set(struct drm_encoder *encoder,
|
|||||||
if (ASIC_IS_R300(rdev)) {
|
if (ASIC_IS_R300(rdev)) {
|
||||||
WREG32_P(RADEON_GPIOPAD_A, gpiopad_a, ~1);
|
WREG32_P(RADEON_GPIOPAD_A, gpiopad_a, ~1);
|
||||||
WREG32(RADEON_DISP_OUTPUT_CNTL, disp_output_cntl);
|
WREG32(RADEON_DISP_OUTPUT_CNTL, disp_output_cntl);
|
||||||
}
|
} else if (rdev->family != CHIP_R200)
|
||||||
|
WREG32(RADEON_DISP_HW_DEBUG, disp_hw_debug);
|
||||||
|
else if (rdev->family == CHIP_R200)
|
||||||
|
WREG32(RADEON_FP2_GEN_CNTL, fp2_gen_cntl);
|
||||||
|
|
||||||
if (rdev->family >= CHIP_R200)
|
if (rdev->family >= CHIP_R200)
|
||||||
WREG32(RADEON_DISP_TV_OUT_CNTL, disp_tv_out_cntl);
|
WREG32(RADEON_DISP_TV_OUT_CNTL, disp_tv_out_cntl);
|
||||||
else
|
|
||||||
WREG32(RADEON_DISP_HW_DEBUG, disp_hw_debug);
|
|
||||||
|
|
||||||
if (rdev->family == CHIP_R200)
|
|
||||||
WREG32(RADEON_FP2_GEN_CNTL, fp2_gen_cntl);
|
|
||||||
|
|
||||||
if (is_tv)
|
if (is_tv)
|
||||||
radeon_legacy_tv_mode_set(encoder, mode, adjusted_mode);
|
radeon_legacy_tv_mode_set(encoder, mode, adjusted_mode);
|
||||||
|
Loading…
Reference in New Issue
Block a user