| .. | .. |
|---|
| 1113 | 1113 | continue; |
|---|
| 1114 | 1114 | |
|---|
| 1115 | 1115 | ret = drm_crtc_vblank_get(crtc); |
|---|
| 1116 | | - WARN_ONCE(ret != -EINVAL, "driver forgot to call drm_crtc_vblank_off()\n"); |
|---|
| 1116 | + /* |
|---|
| 1117 | + * Self-refresh is not a true "disable"; ensure vblank remains |
|---|
| 1118 | + * enabled. |
|---|
| 1119 | + */ |
|---|
| 1120 | + if (new_crtc_state->self_refresh_active) |
|---|
| 1121 | + WARN_ONCE(ret != 0, |
|---|
| 1122 | + "driver disabled vblank in self-refresh\n"); |
|---|
| 1123 | + else |
|---|
| 1124 | + WARN_ONCE(ret != -EINVAL, |
|---|
| 1125 | + "driver forgot to call drm_crtc_vblank_off()\n"); |
|---|
| 1117 | 1126 | if (ret == 0) |
|---|
| 1118 | 1127 | drm_crtc_vblank_put(crtc); |
|---|
| 1119 | 1128 | } |
|---|