Lines Matching full:pipe

83 	enum dpu_sspp pipe;  member
111 * @pipe_cfg: Pointer to pipe configuration
161 * @pipe_cfg: Pointer to pipe configuration
190 * @pipe: Pointer to software pipe
197 struct dpu_sw_pipe *pipe, in _dpu_plane_calc_fill_level() argument
205 if (!fmt || !pipe || !src_width || !fmt->bpp) { in _dpu_plane_calc_fill_level()
229 if (pipe->multirect_mode == DPU_SSPP_MULTIRECT_PARALLEL) { in _dpu_plane_calc_fill_level()
239 pipe->sspp->idx - SSPP_VIG0, in _dpu_plane_calc_fill_level()
249 * @pipe: Pointer to software pipe
251 * @pipe_cfg: Pointer to pipe configuration
254 struct dpu_sw_pipe *pipe, in _dpu_plane_set_qos_lut() argument
270 total_fl = _dpu_plane_calc_fill_level(plane, pipe, lut_usage, fmt, in _dpu_plane_set_qos_lut()
277 if (pipe->sspp->idx != SSPP_CURSOR0 && in _dpu_plane_set_qos_lut()
278 pipe->sspp->idx != SSPP_CURSOR1 && in _dpu_plane_set_qos_lut()
283 pdpu->pipe - SSPP_VIG0, in _dpu_plane_set_qos_lut()
287 trace_dpu_perf_set_qos_luts(pipe->sspp->idx - SSPP_VIG0, in _dpu_plane_set_qos_lut()
292 pdpu->pipe - SSPP_VIG0, in _dpu_plane_set_qos_lut()
296 trace_dpu_perf_set_danger_luts(pdpu->pipe - SSPP_VIG0, in _dpu_plane_set_qos_lut()
303 pdpu->pipe - SSPP_VIG0, in _dpu_plane_set_qos_lut()
309 pipe->sspp->ops.setup_qos_lut(pipe->sspp, &cfg); in _dpu_plane_set_qos_lut()
315 * @pipe: Pointer to software pipe
319 struct dpu_sw_pipe *pipe, in _dpu_plane_set_qos_ctrl() argument
328 pdpu->pipe - SSPP_VIG0, in _dpu_plane_set_qos_ctrl()
332 pipe->sspp->ops.setup_qos_ctrl(pipe->sspp, in _dpu_plane_set_qos_ctrl()
356 * @pipe: Pointer to software pipe
357 * @pipe_cfg: Pointer to pipe configuration
361 struct dpu_sw_pipe *pipe, in _dpu_plane_set_ot_limit() argument
371 ot_params.xin_id = pipe->sspp->cap->xin_id; in _dpu_plane_set_ot_limit()
372 ot_params.num = pipe->sspp->idx - SSPP_NONE; in _dpu_plane_set_ot_limit()
380 if (!_dpu_plane_sspp_clk_force_ctrl(pipe->sspp, dpu_kms->hw_mdp, in _dpu_plane_set_ot_limit()
387 _dpu_plane_sspp_clk_force_ctrl(pipe->sspp, dpu_kms->hw_mdp, in _dpu_plane_set_ot_limit()
394 * @pipe: Pointer to software pipe
397 struct dpu_sw_pipe *pipe) in _dpu_plane_set_qos_remap() argument
406 qos_params.xin_id = pipe->sspp->cap->xin_id; in _dpu_plane_set_qos_remap()
407 qos_params.num = pipe->sspp->idx - SSPP_VIG0; in _dpu_plane_set_qos_remap()
410 DPU_DEBUG_PLANE(pdpu, "pipe:%d vbif:%d xin:%d rt:%d\n", in _dpu_plane_set_qos_remap()
415 if (!_dpu_plane_sspp_clk_force_ctrl(pipe->sspp, dpu_kms->hw_mdp, in _dpu_plane_set_qos_remap()
422 _dpu_plane_sspp_clk_force_ctrl(pipe->sspp, dpu_kms->hw_mdp, in _dpu_plane_set_qos_remap()
513 static const struct dpu_csc_cfg *_dpu_plane_get_csc(struct dpu_sw_pipe *pipe, in _dpu_plane_get_csc() argument
521 if (BIT(DPU_SSPP_CSC_10BIT) & pipe->sspp->cap->features) in _dpu_plane_get_csc()
529 static void _dpu_plane_setup_scaler(struct dpu_sw_pipe *pipe, in _dpu_plane_setup_scaler() argument
533 struct dpu_hw_sspp *pipe_hw = pipe->sspp; in _dpu_plane_setup_scaler()
570 pipe->multirect_index != DPU_SSPP_RECT_1) in _dpu_plane_setup_scaler()
577 struct dpu_sw_pipe *pipe, in _dpu_plane_color_fill_pipe() argument
585 if (!pipe->sspp->ops.setup_solidfill) in _dpu_plane_color_fill_pipe()
588 pipe->sspp->ops.setup_solidfill(pipe, fill_color); in _dpu_plane_color_fill_pipe()
600 if (pipe->sspp->ops.setup_format) in _dpu_plane_color_fill_pipe()
601 pipe->sspp->ops.setup_format(pipe, fmt, DPU_SSPP_SOLID_FILL); in _dpu_plane_color_fill_pipe()
603 if (pipe->sspp->ops.setup_rects) in _dpu_plane_color_fill_pipe()
604 pipe->sspp->ops.setup_rects(pipe, &pipe_cfg); in _dpu_plane_color_fill_pipe()
606 _dpu_plane_setup_scaler(pipe, fmt, true, &pipe_cfg); in _dpu_plane_color_fill_pipe()
636 _dpu_plane_color_fill_pipe(pstate, &pstate->pipe, &pstate->pipe_cfg.dst_rect, in _dpu_plane_color_fill()
690 struct dpu_sw_pipe *pipe, in dpu_plane_check_inline_rotation() argument
694 const struct dpu_sspp_sub_blks *sblk = pipe->sspp->cap->sblk; in dpu_plane_check_inline_rotation()
698 if (!test_bit(DPU_SSPP_INLINE_ROTATION, &pipe->sspp->cap->features)) in dpu_plane_check_inline_rotation()
723 struct dpu_sw_pipe *pipe, in dpu_plane_atomic_check_pipe() argument
736 pipe_hw_caps = pipe->sspp->cap; in dpu_plane_atomic_check_pipe()
737 sblk = pipe->sspp->cap->sblk; in dpu_plane_atomic_check_pipe()
763 !pipe->sspp->cap->sblk->csc_blk.len) { in dpu_plane_atomic_check_pipe()
797 ret = dpu_plane_check_inline_rotation(pdpu, pipe, pipe_cfg->src_rect, fmt); in dpu_plane_atomic_check_pipe()
964 struct dpu_sw_pipe *pipe = &pstate->pipe; in dpu_plane_atomic_check_sspp() local
970 ret = dpu_plane_atomic_check_pipe(pdpu, pipe, pipe_cfg, in dpu_plane_atomic_check_sspp()
987 static bool dpu_plane_try_multirect_parallel(struct dpu_sw_pipe *pipe, struct dpu_sw_pipe_cfg *pipe… in dpu_plane_try_multirect_parallel() argument
994 pipe->multirect_index = DPU_SSPP_RECT_SOLO; in dpu_plane_try_multirect_parallel()
995 pipe->multirect_mode = DPU_SSPP_MULTIRECT_NONE; in dpu_plane_try_multirect_parallel()
1001 if (!dpu_plane_is_multirect_parallel_capable(pipe->sspp, pipe_cfg, fmt, max_linewidth) || in dpu_plane_try_multirect_parallel()
1002 !dpu_plane_is_multirect_parallel_capable(pipe->sspp, r_pipe_cfg, fmt, max_linewidth)) in dpu_plane_try_multirect_parallel()
1005 r_pipe->sspp = pipe->sspp; in dpu_plane_try_multirect_parallel()
1007 pipe->multirect_index = DPU_SSPP_RECT_0; in dpu_plane_try_multirect_parallel()
1008 pipe->multirect_mode = DPU_SSPP_MULTIRECT_PARALLEL; in dpu_plane_try_multirect_parallel()
1022 struct dpu_sw_pipe *pipe = &pstate->pipe; in dpu_plane_try_multirect_shared() local
1025 struct dpu_sw_pipe *prev_pipe = &prev_adjacent_pstate->pipe; in dpu_plane_try_multirect_shared()
1035 if (!dpu_plane_is_multirect_capable(pipe->sspp, pipe_cfg, fmt) || in dpu_plane_try_multirect_shared()
1054 pipe->sspp = prev_pipe->sspp; in dpu_plane_try_multirect_shared()
1056 pipe->multirect_index = DPU_SSPP_RECT_1; in dpu_plane_try_multirect_shared()
1057 pipe->multirect_mode = DPU_SSPP_MULTIRECT_PARALLEL; in dpu_plane_try_multirect_shared()
1067 pipe->sspp = prev_pipe->sspp; in dpu_plane_try_multirect_shared()
1069 pipe->multirect_index = DPU_SSPP_RECT_1; in dpu_plane_try_multirect_shared()
1070 pipe->multirect_mode = DPU_SSPP_MULTIRECT_TIME_MX; in dpu_plane_try_multirect_shared()
1090 struct dpu_sw_pipe *pipe = &pstate->pipe; in dpu_plane_atomic_check() local
1101 pipe->sspp = dpu_rm_get_sspp(&dpu_kms->rm, pdpu->pipe); in dpu_plane_atomic_check()
1103 if (!pipe->sspp) in dpu_plane_atomic_check()
1113 if (!dpu_plane_try_multirect_parallel(pipe, pipe_cfg, r_pipe, r_pipe_cfg, in dpu_plane_atomic_check()
1114 pipe->sspp, in dpu_plane_atomic_check()
1155 pstate->pipe.sspp = NULL; in dpu_plane_virtual_atomic_check()
1189 struct dpu_sw_pipe *pipe; in dpu_plane_virtual_assign_resources() local
1202 pipe = &pstate->pipe; in dpu_plane_virtual_assign_resources()
1207 pipe->sspp = NULL; in dpu_plane_virtual_assign_resources()
1224 pipe->sspp = dpu_rm_reserve_sspp(&dpu_kms->rm, global_state, crtc, &reqs); in dpu_plane_virtual_assign_resources()
1225 if (!pipe->sspp) in dpu_plane_virtual_assign_resources()
1230 pipe->multirect_index = DPU_SSPP_RECT_SOLO; in dpu_plane_virtual_assign_resources()
1231 pipe->multirect_mode = DPU_SSPP_MULTIRECT_NONE; in dpu_plane_virtual_assign_resources()
1237 pipe->sspp = dpu_rm_reserve_sspp(&dpu_kms->rm, global_state, crtc, &reqs); in dpu_plane_virtual_assign_resources()
1238 if (!pipe->sspp) in dpu_plane_virtual_assign_resources()
1241 if (!dpu_plane_try_multirect_parallel(pipe, pipe_cfg, r_pipe, r_pipe_cfg, in dpu_plane_virtual_assign_resources()
1242 pipe->sspp, in dpu_plane_virtual_assign_resources()
1250 pipe->multirect_index = DPU_SSPP_RECT_SOLO; in dpu_plane_virtual_assign_resources()
1251 pipe->multirect_mode = DPU_SSPP_MULTIRECT_NONE; in dpu_plane_virtual_assign_resources()
1289 static void dpu_plane_flush_csc(struct dpu_plane *pdpu, struct dpu_sw_pipe *pipe) in dpu_plane_flush_csc() argument
1295 if (!pipe->sspp || !pipe->sspp->ops.setup_csc) in dpu_plane_flush_csc()
1298 csc_ptr = _dpu_plane_get_csc(pipe, format); in dpu_plane_flush_csc()
1307 pipe->sspp->ops.setup_csc(pipe->sspp, csc_ptr); in dpu_plane_flush_csc()
1333 /* force white frame with 100% alpha pipe output on error */ in dpu_plane_flush()
1339 dpu_plane_flush_csc(pdpu, &pstate->pipe); in dpu_plane_flush()
1365 struct dpu_sw_pipe *pipe, in dpu_plane_sspp_update_pipe() argument
1376 if (layout && pipe->sspp->ops.setup_sourceaddress) { in dpu_plane_sspp_update_pipe()
1377 trace_dpu_plane_set_scanout(pipe, layout); in dpu_plane_sspp_update_pipe()
1378 pipe->sspp->ops.setup_sourceaddress(pipe, layout); in dpu_plane_sspp_update_pipe()
1383 _dpu_plane_set_qos_ctrl(plane, pipe, false); in dpu_plane_sspp_update_pipe()
1389 if (pipe->sspp->ops.setup_rects) { in dpu_plane_sspp_update_pipe()
1390 pipe->sspp->ops.setup_rects(pipe, in dpu_plane_sspp_update_pipe()
1394 _dpu_plane_setup_scaler(pipe, fmt, false, pipe_cfg); in dpu_plane_sspp_update_pipe()
1396 if (pipe->sspp->ops.setup_multirect) in dpu_plane_sspp_update_pipe()
1397 pipe->sspp->ops.setup_multirect( in dpu_plane_sspp_update_pipe()
1398 pipe); in dpu_plane_sspp_update_pipe()
1400 if (pipe->sspp->ops.setup_format) { in dpu_plane_sspp_update_pipe()
1415 pipe->sspp->ops.setup_format(pipe, fmt, src_flags); in dpu_plane_sspp_update_pipe()
1417 if (pipe->sspp->ops.setup_cdp) { in dpu_plane_sspp_update_pipe()
1420 pipe->sspp->ops.setup_cdp(pipe, fmt, in dpu_plane_sspp_update_pipe()
1425 _dpu_plane_set_qos_lut(plane, pipe, fmt, pipe_cfg); in dpu_plane_sspp_update_pipe()
1427 if (pipe->sspp->idx != SSPP_CURSOR0 && in dpu_plane_sspp_update_pipe()
1428 pipe->sspp->idx != SSPP_CURSOR1) in dpu_plane_sspp_update_pipe()
1429 _dpu_plane_set_ot_limit(plane, pipe, pipe_cfg, frame_rate); in dpu_plane_sspp_update_pipe()
1432 _dpu_plane_set_qos_remap(plane, pipe); in dpu_plane_sspp_update_pipe()
1441 struct dpu_sw_pipe *pipe = &pstate->pipe; in dpu_plane_sspp_atomic_update() local
1464 dpu_plane_sspp_update_pipe(plane, pipe, pipe_cfg, fmt, in dpu_plane_sspp_atomic_update()
1496 pstate->pipe.multirect_mode); in _dpu_plane_atomic_disable()
1598 const struct dpu_sw_pipe *pipe = &pstate->pipe; in dpu_plane_atomic_print_state() local
1605 if (pipe->sspp) { in dpu_plane_atomic_print_state()
1606 drm_printf(p, "\tsspp[0]=%s\n", pipe->sspp->cap->name); in dpu_plane_atomic_print_state()
1608 dpu_get_multirect_mode(pipe->multirect_mode)); in dpu_plane_atomic_print_state()
1610 dpu_get_multirect_index(pipe->multirect_index)); in dpu_plane_atomic_print_state()
1665 _dpu_plane_set_qos_ctrl(plane, &pstate->pipe, enable); in dpu_plane_danger_signal_ctrl()
1720 enum dpu_sspp pipe) in dpu_plane_init_common() argument
1738 pdpu->pipe = pipe; in dpu_plane_init_common()
1762 DPU_DEBUG("%s created for pipe:%u id:%u\n", plane->name, in dpu_plane_init_common()
1763 pipe, plane->base.id); in dpu_plane_init_common()
1768 * dpu_plane_init - create new dpu plane for the given pipe
1770 * @pipe: dpu hardware pipe identifier
1772 * @possible_crtcs: bitmask of crtc that can be attached to the given pipe
1777 uint32_t pipe, enum drm_plane_type type, in dpu_plane_init() argument
1786 pipe_hw = dpu_rm_get_sspp(&kms->rm, pipe); in dpu_plane_init()
1788 DPU_ERROR("[%u]SSPP is invalid\n", pipe); in dpu_plane_init()
1797 pipe); in dpu_plane_init()
1803 DPU_DEBUG("%s created for pipe:%u id:%u\n", plane->name, in dpu_plane_init()
1804 pipe, plane->base.id); in dpu_plane_init()
1813 * @possible_crtcs: bitmask of crtc that can be attached to the given pipe
1815 * Initialize the virtual plane with no backing SSPP / pipe.