drm/radeon/kms: add dynamic engine reclocking (V9)
V2: reorganize functions, fix modesetting calls V3: rebase patch, use radeon's workqueue V4: enable on tested chipsets only, request VBLANK IRQs V5: enable PM on older hardware (IRQs, mode_fixup, dpms) V6: use separate dynpm module parameter V7: drop RADEON_ prefix, set minimum mode for dpms off V8: update legacy encoder call, fix order in rs600 IRQ V9: update compute_clocks call in legacy, not only DPMS_OFF Signed-off-by: Rafał Miłecki <zajec5@gmail.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:

committed by
Dave Airlie

parent
18917b60bc
commit
c913e23a14
@@ -406,10 +406,16 @@ int rs600_irq_process(struct radeon_device *rdev)
|
||||
if (G_000044_SW_INT(status))
|
||||
radeon_fence_process(rdev);
|
||||
/* Vertical blank interrupts */
|
||||
if (G_007EDC_LB_D1_VBLANK_INTERRUPT(r500_disp_int))
|
||||
if (G_007EDC_LB_D1_VBLANK_INTERRUPT(r500_disp_int)) {
|
||||
drm_handle_vblank(rdev->ddev, 0);
|
||||
if (G_007EDC_LB_D2_VBLANK_INTERRUPT(r500_disp_int))
|
||||
if (rdev->pm.vblank_callback)
|
||||
queue_work(rdev->wq, &rdev->pm.reclock_work);
|
||||
}
|
||||
if (G_007EDC_LB_D2_VBLANK_INTERRUPT(r500_disp_int)) {
|
||||
drm_handle_vblank(rdev->ddev, 1);
|
||||
if (rdev->pm.vblank_callback)
|
||||
queue_work(rdev->wq, &rdev->pm.reclock_work);
|
||||
}
|
||||
if (G_007EDC_DC_HOT_PLUG_DETECT1_INTERRUPT(r500_disp_int)) {
|
||||
queue_hotplug = true;
|
||||
DRM_DEBUG("HPD1\n");
|
||||
|
Reference in New Issue
Block a user