mirror of https://gitee.com/openkylin/linux.git
drm/radeon/kms/atom: bios scratch reg handling updates
- Add missing DFP6 connection state handling - crtc routing bits not used on DCE4+ Noticed by sylware on phoronix. Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
40e8c73878
commit
6f9f8a6108
|
@ -2931,6 +2931,20 @@ radeon_atombios_connected_scratch_regs(struct drm_connector *connector,
|
||||||
bios_6_scratch &= ~ATOM_S6_ACC_REQ_DFP5;
|
bios_6_scratch &= ~ATOM_S6_ACC_REQ_DFP5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ((radeon_encoder->devices & ATOM_DEVICE_DFP6_SUPPORT) &&
|
||||||
|
(radeon_connector->devices & ATOM_DEVICE_DFP6_SUPPORT)) {
|
||||||
|
if (connected) {
|
||||||
|
DRM_DEBUG_KMS("DFP6 connected\n");
|
||||||
|
bios_0_scratch |= ATOM_S0_DFP6;
|
||||||
|
bios_3_scratch |= ATOM_S3_DFP6_ACTIVE;
|
||||||
|
bios_6_scratch |= ATOM_S6_ACC_REQ_DFP6;
|
||||||
|
} else {
|
||||||
|
DRM_DEBUG_KMS("DFP6 disconnected\n");
|
||||||
|
bios_0_scratch &= ~ATOM_S0_DFP6;
|
||||||
|
bios_3_scratch &= ~ATOM_S3_DFP6_ACTIVE;
|
||||||
|
bios_6_scratch &= ~ATOM_S6_ACC_REQ_DFP6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (rdev->family >= CHIP_R600) {
|
if (rdev->family >= CHIP_R600) {
|
||||||
WREG32(R600_BIOS_0_SCRATCH, bios_0_scratch);
|
WREG32(R600_BIOS_0_SCRATCH, bios_0_scratch);
|
||||||
|
@ -2951,6 +2965,9 @@ radeon_atombios_encoder_crtc_scratch_regs(struct drm_encoder *encoder, int crtc)
|
||||||
struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
|
struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
|
||||||
uint32_t bios_3_scratch;
|
uint32_t bios_3_scratch;
|
||||||
|
|
||||||
|
if (ASIC_IS_DCE4(rdev))
|
||||||
|
return;
|
||||||
|
|
||||||
if (rdev->family >= CHIP_R600)
|
if (rdev->family >= CHIP_R600)
|
||||||
bios_3_scratch = RREG32(R600_BIOS_3_SCRATCH);
|
bios_3_scratch = RREG32(R600_BIOS_3_SCRATCH);
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue