list_entry);
spin_unlock_irqrestore(&acrtc->wb_conn->job_lock, flags);
- if (job) {
- unsigned int v_total, refresh_hz;
- struct dc_stream_state *stream = acrtc->dm_irq_params.stream;
-
- v_total = stream->adjust.v_total_max ?
- stream->adjust.v_total_max : stream->timing.v_total;
- refresh_hz = div_u64((uint64_t) stream->timing.pix_clk_100hz *
- 100LL, (v_total * stream->timing.h_total));
- mdelay(1000 / refresh_hz);
-
+ if (job)
drm_writeback_signal_completion(acrtc->wb_conn, 0);
- dc_stream_fc_disable_writeback(adev->dm.dc,
- acrtc->dm_irq_params.stream, 0);
- }
} else
DRM_ERROR("%s: no amdgpu_crtc wb_conn\n", __func__);
acrtc->wb_pending = false;
return true;
}
-bool dc_stream_fc_disable_writeback(struct dc *dc,
- struct dc_stream_state *stream,
- uint32_t dwb_pipe_inst)
-{
- struct dwbc *dwb = dc->res_pool->dwbc[dwb_pipe_inst];
-
- if (stream == NULL) {
- dm_error("DC: dc_stream is NULL!\n");
- return false;
- }
-
- if (dwb_pipe_inst >= MAX_DWB_PIPES) {
- dm_error("DC: writeback pipe is invalid!\n");
- return false;
- }
-
- if (stream->num_wb_info > MAX_DWB_PIPES) {
- dm_error("DC: num_wb_info is invalid!\n");
- return false;
- }
-
- if (dwb->funcs->set_fc_enable)
- dwb->funcs->set_fc_enable(dwb, DWB_FRAME_CAPTURE_DISABLE);
-
- return true;
-}
-
bool dc_stream_remove_writeback(struct dc *dc,
struct dc_stream_state *stream,
uint32_t dwb_pipe_inst)
struct dc_stream_state *stream,
struct dc_writeback_info *wb_info);
-bool dc_stream_fc_disable_writeback(struct dc *dc,
- struct dc_stream_state *stream,
- uint32_t dwb_pipe_inst);
-
bool dc_stream_remove_writeback(struct dc *dc,
struct dc_stream_state *stream,
uint32_t dwb_pipe_inst);