Lines Matching full:plane

29 #define DPU_DEBUG_PLANE(pl, fmt, ...) DRM_DEBUG_ATOMIC("plane%d " fmt,\
32 #define DPU_ERROR_PLANE(pl, fmt, ...) DPU_ERROR("plane%d " fmt,\
72 * struct dpu_plane - local dpu plane structure
76 * @revalidate: force revalidation of all the plane properties
99 static struct dpu_kms *_dpu_plane_get_kms(struct drm_plane *plane) in _dpu_plane_get_kms() argument
101 struct msm_drm_private *priv = plane->dev->dev_private; in _dpu_plane_get_kms()
107 * _dpu_plane_calc_bw - calculate bandwidth required for a plane
112 * Result: Updates calculated bandwidth in the plane state.
159 * _dpu_plane_calc_clk - calculate clock required for a plane
162 * Result: Updates calculated clock in the plane state.
189 * @plane: Pointer to drm plane
196 static int _dpu_plane_calc_fill_level(struct drm_plane *plane, in _dpu_plane_calc_fill_level() argument
213 pdpu = to_dpu_plane(plane); in _dpu_plane_calc_fill_level()
247 * _dpu_plane_set_qos_lut - set QoS LUT of the given plane
248 * @plane: Pointer to drm plane
253 static void _dpu_plane_set_qos_lut(struct drm_plane *plane, in _dpu_plane_set_qos_lut() argument
257 struct dpu_plane *pdpu = to_dpu_plane(plane); in _dpu_plane_set_qos_lut()
270 total_fl = _dpu_plane_calc_fill_level(plane, pipe, lut_usage, fmt, in _dpu_plane_set_qos_lut()
313 * _dpu_plane_set_qos_ctrl - set QoS control of the given plane
314 * @plane: Pointer to drm plane
318 static void _dpu_plane_set_qos_ctrl(struct drm_plane *plane, in _dpu_plane_set_qos_ctrl() argument
322 struct dpu_plane *pdpu = to_dpu_plane(plane); in _dpu_plane_set_qos_ctrl()
337 * _dpu_plane_set_ot_limit - set OT limit for the given plane
338 * @plane: Pointer to drm plane
343 static void _dpu_plane_set_ot_limit(struct drm_plane *plane, in _dpu_plane_set_ot_limit() argument
348 struct dpu_plane *pdpu = to_dpu_plane(plane); in _dpu_plane_set_ot_limit()
350 struct dpu_kms *dpu_kms = _dpu_plane_get_kms(plane); in _dpu_plane_set_ot_limit()
367 * _dpu_plane_set_qos_remap - set vbif QoS for the given plane
368 * @plane: Pointer to drm plane
371 static void _dpu_plane_set_qos_remap(struct drm_plane *plane, in _dpu_plane_set_qos_remap() argument
374 struct dpu_plane *pdpu = to_dpu_plane(plane); in _dpu_plane_set_qos_remap()
376 struct dpu_kms *dpu_kms = _dpu_plane_get_kms(plane); in _dpu_plane_set_qos_remap()
610 * _dpu_plane_color_fill - enables color fill on plane
611 * @pdpu: Pointer to DPU plane object
619 const struct drm_plane *plane = &pdpu->base; in _dpu_plane_color_fill() local
620 struct dpu_plane_state *pstate = to_dpu_plane_state(plane->state); in _dpu_plane_color_fill()
643 static int dpu_plane_prepare_fb(struct drm_plane *plane, in dpu_plane_prepare_fb() argument
647 struct dpu_plane *pdpu = to_dpu_plane(plane); in dpu_plane_prepare_fb()
666 drm_gem_plane_helper_prepare_fb(plane, new_state); in dpu_plane_prepare_fb()
688 static void dpu_plane_cleanup_fb(struct drm_plane *plane, in dpu_plane_cleanup_fb() argument
691 struct dpu_plane *pdpu = to_dpu_plane(plane); in dpu_plane_cleanup_fb()
748 "plane doesn't have scaler/csc for yuv\n"); in dpu_plane_atomic_check_pipe()
781 DPU_DEBUG_PLANE(pdpu, "plane exceeds max mdp core clk limits\n"); in dpu_plane_atomic_check_pipe()
788 static int dpu_plane_atomic_check(struct drm_plane *plane, in dpu_plane_atomic_check() argument
792 plane); in dpu_plane_atomic_check()
794 struct dpu_plane *pdpu = to_dpu_plane(plane); in dpu_plane_atomic_check()
819 DPU_DEBUG_PLANE(pdpu, "Check plane state failed (%d)\n", ret); in dpu_plane_atomic_check()
833 DPU_ERROR("> %d plane stages assigned\n", in dpu_plane_atomic_check()
893 * Use multirect for wide plane. We do not support dynamic in dpu_plane_atomic_check()
964 void dpu_plane_flush(struct drm_plane *plane) in dpu_plane_flush() argument
969 if (!plane || !plane->state) { in dpu_plane_flush()
970 DPU_ERROR("invalid plane\n"); in dpu_plane_flush()
974 pdpu = to_dpu_plane(plane); in dpu_plane_flush()
975 pstate = to_dpu_plane_state(plane->state); in dpu_plane_flush()
978 * These updates have to be done immediately before the plane flush in dpu_plane_flush()
993 if (plane->state) in dpu_plane_flush()
999 * @plane: pointer to drm_plane structure
1002 void dpu_plane_set_error(struct drm_plane *plane, bool error) in dpu_plane_set_error() argument
1006 if (!plane) in dpu_plane_set_error()
1009 pdpu = to_dpu_plane(plane); in dpu_plane_set_error()
1013 static void dpu_plane_sspp_update_pipe(struct drm_plane *plane, in dpu_plane_sspp_update_pipe() argument
1021 struct dpu_plane *pdpu = to_dpu_plane(plane); in dpu_plane_sspp_update_pipe()
1022 struct drm_plane_state *state = plane->state; in dpu_plane_sspp_update_pipe()
1032 _dpu_plane_set_qos_ctrl(plane, pipe, false); in dpu_plane_sspp_update_pipe()
1074 _dpu_plane_set_qos_lut(plane, pipe, fmt, pipe_cfg); in dpu_plane_sspp_update_pipe()
1078 _dpu_plane_set_ot_limit(plane, pipe, pipe_cfg, frame_rate); in dpu_plane_sspp_update_pipe()
1081 _dpu_plane_set_qos_remap(plane, pipe); in dpu_plane_sspp_update_pipe()
1084 static void dpu_plane_sspp_atomic_update(struct drm_plane *plane) in dpu_plane_sspp_atomic_update() argument
1086 struct dpu_plane *pdpu = to_dpu_plane(plane); in dpu_plane_sspp_atomic_update()
1087 struct drm_plane_state *state = plane->state; in dpu_plane_sspp_atomic_update()
1121 dpu_plane_sspp_update_pipe(plane, pipe, pipe_cfg, fmt, in dpu_plane_sspp_atomic_update()
1126 dpu_plane_sspp_update_pipe(plane, r_pipe, r_pipe_cfg, fmt, in dpu_plane_sspp_atomic_update()
1146 static void _dpu_plane_atomic_disable(struct drm_plane *plane) in _dpu_plane_atomic_disable() argument
1148 struct drm_plane_state *state = plane->state; in _dpu_plane_atomic_disable()
1152 trace_dpu_plane_disable(DRMID(plane), false, in _dpu_plane_atomic_disable()
1166 static void dpu_plane_atomic_update(struct drm_plane *plane, in dpu_plane_atomic_update() argument
1169 struct dpu_plane *pdpu = to_dpu_plane(plane); in dpu_plane_atomic_update()
1171 plane); in dpu_plane_atomic_update()
1178 _dpu_plane_atomic_disable(plane); in dpu_plane_atomic_update()
1180 dpu_plane_sspp_atomic_update(plane); in dpu_plane_atomic_update()
1184 static void dpu_plane_destroy(struct drm_plane *plane) in dpu_plane_destroy() argument
1186 struct dpu_plane *pdpu = plane ? to_dpu_plane(plane) : NULL; in dpu_plane_destroy()
1192 pstate = to_dpu_plane_state(plane->state); in dpu_plane_destroy()
1193 _dpu_plane_set_qos_ctrl(plane, &pstate->pipe, false); in dpu_plane_destroy()
1196 _dpu_plane_set_qos_ctrl(plane, &pstate->r_pipe, false); in dpu_plane_destroy()
1201 drm_plane_cleanup(plane); in dpu_plane_destroy()
1207 static void dpu_plane_destroy_state(struct drm_plane *plane, in dpu_plane_destroy_state() argument
1215 dpu_plane_duplicate_state(struct drm_plane *plane) in dpu_plane_duplicate_state() argument
1221 if (!plane) { in dpu_plane_duplicate_state()
1222 DPU_ERROR("invalid plane\n"); in dpu_plane_duplicate_state()
1224 } else if (!plane->state) { in dpu_plane_duplicate_state()
1225 DPU_ERROR("invalid plane state\n"); in dpu_plane_duplicate_state()
1229 old_state = to_dpu_plane_state(plane->state); in dpu_plane_duplicate_state()
1230 pdpu = to_dpu_plane(plane); in dpu_plane_duplicate_state()
1241 __drm_atomic_helper_plane_duplicate_state(plane, &pstate->base); in dpu_plane_duplicate_state()
1303 static void dpu_plane_reset(struct drm_plane *plane) in dpu_plane_reset() argument
1307 struct dpu_kms *dpu_kms = _dpu_plane_get_kms(plane); in dpu_plane_reset()
1309 if (!plane) { in dpu_plane_reset()
1310 DPU_ERROR("invalid plane\n"); in dpu_plane_reset()
1314 pdpu = to_dpu_plane(plane); in dpu_plane_reset()
1318 if (plane->state) { in dpu_plane_reset()
1319 dpu_plane_destroy_state(plane, plane->state); in dpu_plane_reset()
1320 plane->state = NULL; in dpu_plane_reset()
1339 __drm_atomic_helper_plane_reset(plane, &pstate->base); in dpu_plane_reset()
1343 void dpu_plane_danger_signal_ctrl(struct drm_plane *plane, bool enable) in dpu_plane_danger_signal_ctrl() argument
1345 struct dpu_plane *pdpu = to_dpu_plane(plane); in dpu_plane_danger_signal_ctrl()
1346 struct dpu_plane_state *pstate = to_dpu_plane_state(plane->state); in dpu_plane_danger_signal_ctrl()
1347 struct dpu_kms *dpu_kms = _dpu_plane_get_kms(plane); in dpu_plane_danger_signal_ctrl()
1353 _dpu_plane_set_qos_ctrl(plane, &pstate->pipe, enable); in dpu_plane_danger_signal_ctrl()
1355 _dpu_plane_set_qos_ctrl(plane, &pstate->r_pipe, enable); in dpu_plane_danger_signal_ctrl()
1360 static bool dpu_plane_format_mod_supported(struct drm_plane *plane, in dpu_plane_format_mod_supported() argument
1391 /* initialize plane */
1396 struct drm_plane *plane = NULL; in dpu_plane_init() local
1409 DPU_ERROR("[%u]failed to allocate local plane struct\n", pipe); in dpu_plane_init()
1415 plane = &pdpu->base; in dpu_plane_init()
1428 ret = drm_universal_plane_init(dev, plane, 0xff, &dpu_plane_funcs, in dpu_plane_init()
1436 ret = drm_plane_create_zpos_property(plane, 0, 0, DPU_ZPOS_MAX); in dpu_plane_init()
1440 drm_plane_create_alpha_property(plane); in dpu_plane_init()
1441 drm_plane_create_blend_mode_property(plane, in dpu_plane_init()
1451 drm_plane_create_rotation_property(plane, in dpu_plane_init()
1454 drm_plane_enable_fb_damage_clips(plane); in dpu_plane_init()
1457 drm_plane_helper_add(plane, &dpu_plane_helper_funcs); in dpu_plane_init()
1461 DPU_DEBUG("%s created for pipe:%u id:%u\n", plane->name, in dpu_plane_init()
1462 pipe, plane->base.id); in dpu_plane_init()
1463 return plane; in dpu_plane_init()