diff options
Diffstat (limited to 'drivers/gpu/drm/rockchip/analogix_dp-rockchip.c')
| -rw-r--r-- | drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c index d8fa7a9c9240..1bccd827d2e4 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | |||
| @@ -104,26 +104,18 @@ static void analogix_dp_psr_work(struct work_struct *work) | |||
| 104 | { | 104 | { |
| 105 | struct rockchip_dp_device *dp = | 105 | struct rockchip_dp_device *dp = |
| 106 | container_of(work, typeof(*dp), psr_work); | 106 | container_of(work, typeof(*dp), psr_work); |
| 107 | struct drm_crtc *crtc = dp->encoder.crtc; | ||
| 108 | int psr_state = dp->psr_state; | ||
| 109 | int vact_end; | ||
| 110 | int ret; | 107 | int ret; |
| 111 | unsigned long flags; | 108 | unsigned long flags; |
| 112 | 109 | ||
| 113 | if (!crtc) | 110 | ret = rockchip_drm_wait_vact_end(dp->encoder.crtc, |
| 114 | return; | 111 | PSR_WAIT_LINE_FLAG_TIMEOUT_MS); |
| 115 | |||
| 116 | vact_end = crtc->mode.vtotal - crtc->mode.vsync_start + crtc->mode.vdisplay; | ||
| 117 | |||
| 118 | ret = rockchip_drm_wait_line_flag(dp->encoder.crtc, vact_end, | ||
| 119 | PSR_WAIT_LINE_FLAG_TIMEOUT_MS); | ||
| 120 | if (ret) { | 112 | if (ret) { |
| 121 | dev_err(dp->dev, "line flag interrupt did not arrive\n"); | 113 | dev_err(dp->dev, "line flag interrupt did not arrive\n"); |
| 122 | return; | 114 | return; |
| 123 | } | 115 | } |
| 124 | 116 | ||
| 125 | spin_lock_irqsave(&dp->psr_lock, flags); | 117 | spin_lock_irqsave(&dp->psr_lock, flags); |
| 126 | if (psr_state == EDP_VSC_PSR_STATE_ACTIVE) | 118 | if (dp->psr_state == EDP_VSC_PSR_STATE_ACTIVE) |
| 127 | analogix_dp_enable_psr(dp->dev); | 119 | analogix_dp_enable_psr(dp->dev); |
| 128 | else | 120 | else |
| 129 | analogix_dp_disable_psr(dp->dev); | 121 | analogix_dp_disable_psr(dp->dev); |
