Skip to content

Commit 6987779

Browse files
Lyudegregkh
authored andcommitted
drm/radeon: Unbreak HPD handling for r600+
commit 3d18e33735a02b1a90aecf14410bf3edbfd4d3dc upstream. We end up reading the interrupt register for HPD5, and then writing it to HPD6 which on systems without anything using HPD5 results in permanently disabling hotplug on one of the display outputs after the first time we acknowledge a hotplug interrupt from the GPU. This code is really bad. But for now, let's just fix this. I will hopefully have a large patch series to refactor all of this soon. Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Lyude <lyude@redhat.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 15de2e4 commit 6987779

4 files changed

Lines changed: 7 additions & 7 deletions

File tree

drivers/gpu/drm/radeon/cik.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7762,7 +7762,7 @@ static inline void cik_irq_ack(struct radeon_device *rdev)
77627762
WREG32(DC_HPD5_INT_CONTROL, tmp);
77637763
}
77647764
if (rdev->irq.stat_regs.cik.disp_int_cont5 & DC_HPD6_INTERRUPT) {
7765-
tmp = RREG32(DC_HPD5_INT_CONTROL);
7765+
tmp = RREG32(DC_HPD6_INT_CONTROL);
77667766
tmp |= DC_HPDx_INT_ACK;
77677767
WREG32(DC_HPD6_INT_CONTROL, tmp);
77687768
}
@@ -7792,7 +7792,7 @@ static inline void cik_irq_ack(struct radeon_device *rdev)
77927792
WREG32(DC_HPD5_INT_CONTROL, tmp);
77937793
}
77947794
if (rdev->irq.stat_regs.cik.disp_int_cont5 & DC_HPD6_RX_INTERRUPT) {
7795-
tmp = RREG32(DC_HPD5_INT_CONTROL);
7795+
tmp = RREG32(DC_HPD6_INT_CONTROL);
77967796
tmp |= DC_HPDx_RX_INT_ACK;
77977797
WREG32(DC_HPD6_INT_CONTROL, tmp);
77987798
}

drivers/gpu/drm/radeon/evergreen.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4924,7 +4924,7 @@ static void evergreen_irq_ack(struct radeon_device *rdev)
49244924
WREG32(DC_HPD5_INT_CONTROL, tmp);
49254925
}
49264926
if (rdev->irq.stat_regs.evergreen.disp_int_cont5 & DC_HPD6_INTERRUPT) {
4927-
tmp = RREG32(DC_HPD5_INT_CONTROL);
4927+
tmp = RREG32(DC_HPD6_INT_CONTROL);
49284928
tmp |= DC_HPDx_INT_ACK;
49294929
WREG32(DC_HPD6_INT_CONTROL, tmp);
49304930
}
@@ -4955,7 +4955,7 @@ static void evergreen_irq_ack(struct radeon_device *rdev)
49554955
WREG32(DC_HPD5_INT_CONTROL, tmp);
49564956
}
49574957
if (rdev->irq.stat_regs.evergreen.disp_int_cont5 & DC_HPD6_RX_INTERRUPT) {
4958-
tmp = RREG32(DC_HPD5_INT_CONTROL);
4958+
tmp = RREG32(DC_HPD6_INT_CONTROL);
49594959
tmp |= DC_HPDx_RX_INT_ACK;
49604960
WREG32(DC_HPD6_INT_CONTROL, tmp);
49614961
}

drivers/gpu/drm/radeon/r600.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3945,7 +3945,7 @@ static void r600_irq_ack(struct radeon_device *rdev)
39453945
WREG32(DC_HPD5_INT_CONTROL, tmp);
39463946
}
39473947
if (rdev->irq.stat_regs.r600.disp_int_cont2 & DC_HPD6_INTERRUPT) {
3948-
tmp = RREG32(DC_HPD5_INT_CONTROL);
3948+
tmp = RREG32(DC_HPD6_INT_CONTROL);
39493949
tmp |= DC_HPDx_INT_ACK;
39503950
WREG32(DC_HPD6_INT_CONTROL, tmp);
39513951
}

drivers/gpu/drm/radeon/si.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6335,7 +6335,7 @@ static inline void si_irq_ack(struct radeon_device *rdev)
63356335
WREG32(DC_HPD5_INT_CONTROL, tmp);
63366336
}
63376337
if (rdev->irq.stat_regs.evergreen.disp_int_cont5 & DC_HPD6_INTERRUPT) {
6338-
tmp = RREG32(DC_HPD5_INT_CONTROL);
6338+
tmp = RREG32(DC_HPD6_INT_CONTROL);
63396339
tmp |= DC_HPDx_INT_ACK;
63406340
WREG32(DC_HPD6_INT_CONTROL, tmp);
63416341
}
@@ -6366,7 +6366,7 @@ static inline void si_irq_ack(struct radeon_device *rdev)
63666366
WREG32(DC_HPD5_INT_CONTROL, tmp);
63676367
}
63686368
if (rdev->irq.stat_regs.evergreen.disp_int_cont5 & DC_HPD6_RX_INTERRUPT) {
6369-
tmp = RREG32(DC_HPD5_INT_CONTROL);
6369+
tmp = RREG32(DC_HPD6_INT_CONTROL);
63706370
tmp |= DC_HPDx_RX_INT_ACK;
63716371
WREG32(DC_HPD6_INT_CONTROL, tmp);
63726372
}

0 commit comments

Comments
 (0)