|
@@ -158,16 +158,18 @@ u32 r600_dpm_get_vblank_time(struct radeon_device *rdev)
|
|
|
u32 line_time_us, vblank_lines;
|
|
|
u32 vblank_time_us = 0xffffffff; /* if the displays are off, vblank time is max */
|
|
|
|
|
|
- list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
|
|
|
- radeon_crtc = to_radeon_crtc(crtc);
|
|
|
- if (crtc->enabled && radeon_crtc->enabled && radeon_crtc->hw_mode.clock) {
|
|
|
- line_time_us = (radeon_crtc->hw_mode.crtc_htotal * 1000) /
|
|
|
- radeon_crtc->hw_mode.clock;
|
|
|
- vblank_lines = radeon_crtc->hw_mode.crtc_vblank_end -
|
|
|
- radeon_crtc->hw_mode.crtc_vdisplay +
|
|
|
- (radeon_crtc->v_border * 2);
|
|
|
- vblank_time_us = vblank_lines * line_time_us;
|
|
|
- break;
|
|
|
+ if (rdev->num_crtc && rdev->mode_info.mode_config_initialized) {
|
|
|
+ list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
|
|
|
+ radeon_crtc = to_radeon_crtc(crtc);
|
|
|
+ if (crtc->enabled && radeon_crtc->enabled && radeon_crtc->hw_mode.clock) {
|
|
|
+ line_time_us = (radeon_crtc->hw_mode.crtc_htotal * 1000) /
|
|
|
+ radeon_crtc->hw_mode.clock;
|
|
|
+ vblank_lines = radeon_crtc->hw_mode.crtc_vblank_end -
|
|
|
+ radeon_crtc->hw_mode.crtc_vdisplay +
|
|
|
+ (radeon_crtc->v_border * 2);
|
|
|
+ vblank_time_us = vblank_lines * line_time_us;
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -181,14 +183,15 @@ u32 r600_dpm_get_vrefresh(struct radeon_device *rdev)
|
|
|
struct radeon_crtc *radeon_crtc;
|
|
|
u32 vrefresh = 0;
|
|
|
|
|
|
- list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
|
|
|
- radeon_crtc = to_radeon_crtc(crtc);
|
|
|
- if (crtc->enabled && radeon_crtc->enabled && radeon_crtc->hw_mode.clock) {
|
|
|
- vrefresh = radeon_crtc->hw_mode.vrefresh;
|
|
|
- break;
|
|
|
+ if (rdev->num_crtc && rdev->mode_info.mode_config_initialized) {
|
|
|
+ list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
|
|
|
+ radeon_crtc = to_radeon_crtc(crtc);
|
|
|
+ if (crtc->enabled && radeon_crtc->enabled && radeon_crtc->hw_mode.clock) {
|
|
|
+ vrefresh = radeon_crtc->hw_mode.vrefresh;
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
return vrefresh;
|
|
|
}
|
|
|
|