it's better that radeon_crtc_commit and radeon_crtc_prepare call crtc-specific dpms functions instead of hard-coding them to radeon_crtc_dpms.
Signed-off-by: Ilija Hadzic ihadzic@research.bell-labs.com --- drivers/gpu/drm/radeon/radeon_legacy_crtc.c | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c index 41a5d48..0690a5b 100644 --- a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c +++ b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c @@ -1036,8 +1036,11 @@ static void radeon_crtc_prepare(struct drm_crtc *crtc) * The hardware wedges sometimes if you reconfigure one CRTC * whilst another is running (see fdo bug #24611). */ - list_for_each_entry(crtci, &dev->mode_config.crtc_list, head) - radeon_crtc_dpms(crtci, DRM_MODE_DPMS_OFF); + list_for_each_entry(crtci, &dev->mode_config.crtc_list, head) { + struct drm_crtc_helper_funcs *crtc_funcs = crtci->helper_private; + if (crtc_funcs->dpms) + crtc_funcs->dpms(crtci, DRM_MODE_DPMS_OFF); + } }
static void radeon_crtc_commit(struct drm_crtc *crtc) @@ -1049,8 +1052,11 @@ static void radeon_crtc_commit(struct drm_crtc *crtc) * Reenable the CRTCs that should be running. */ list_for_each_entry(crtci, &dev->mode_config.crtc_list, head) { - if (crtci->enabled) - radeon_crtc_dpms(crtci, DRM_MODE_DPMS_ON); + if (crtci->enabled) { + struct drm_crtc_helper_funcs *crtc_funcs = crtci->helper_private; + if (crtc_funcs->dpms) + crtc_funcs->dpms(crtci, DRM_MODE_DPMS_ON); + } } }