Lines Matching full:plane

30 #define DPU_DEBUG_PLANE(pl, fmt, ...) DRM_DEBUG_ATOMIC("plane%d " fmt,\
33 #define DPU_ERROR_PLANE(pl, fmt, ...) DPU_ERROR("plane%d " fmt,\
73 * struct dpu_plane - local dpu plane structure
77 * @revalidate: force revalidation of all the plane properties
98 static struct dpu_kms *_dpu_plane_get_kms(struct drm_plane *plane) in _dpu_plane_get_kms() argument
100 struct msm_drm_private *priv = plane->dev->dev_private; in _dpu_plane_get_kms()
106 * _dpu_plane_calc_bw - calculate bandwidth required for a plane
111 * Result: Updates calculated bandwidth in the plane state.
158 * _dpu_plane_calc_clk - calculate clock required for a plane
161 * Result: Updates calculated clock in the plane state.
188 * @plane: Pointer to drm plane
195 static int _dpu_plane_calc_fill_level(struct drm_plane *plane, in _dpu_plane_calc_fill_level() argument
212 pdpu = to_dpu_plane(plane); in _dpu_plane_calc_fill_level()
246 * _dpu_plane_set_qos_lut - set QoS LUT of the given plane
247 * @plane: Pointer to drm plane
252 static void _dpu_plane_set_qos_lut(struct drm_plane *plane, in _dpu_plane_set_qos_lut() argument
256 struct dpu_plane *pdpu = to_dpu_plane(plane); in _dpu_plane_set_qos_lut()
269 total_fl = _dpu_plane_calc_fill_level(plane, pipe, lut_usage, fmt, in _dpu_plane_set_qos_lut()
312 * _dpu_plane_set_qos_ctrl - set QoS control of the given plane
313 * @plane: Pointer to drm plane
317 static void _dpu_plane_set_qos_ctrl(struct drm_plane *plane, in _dpu_plane_set_qos_ctrl() argument
321 struct dpu_plane *pdpu = to_dpu_plane(plane); in _dpu_plane_set_qos_ctrl()
353 * _dpu_plane_set_ot_limit - set OT limit for the given plane
354 * @plane: Pointer to drm plane
359 static void _dpu_plane_set_ot_limit(struct drm_plane *plane, in _dpu_plane_set_ot_limit() argument
364 struct dpu_plane *pdpu = to_dpu_plane(plane); in _dpu_plane_set_ot_limit()
366 struct dpu_kms *dpu_kms = _dpu_plane_get_kms(plane); in _dpu_plane_set_ot_limit()
391 * _dpu_plane_set_qos_remap - set vbif QoS for the given plane
392 * @plane: Pointer to drm plane
395 static void _dpu_plane_set_qos_remap(struct drm_plane *plane, in _dpu_plane_set_qos_remap() argument
398 struct dpu_plane *pdpu = to_dpu_plane(plane); in _dpu_plane_set_qos_remap()
400 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()
821 DPU_DEBUG_PLANE(pdpu, "Check plane state failed (%d)\n", ret); in dpu_plane_atomic_check()
835 DPU_ERROR("> %d plane stages assigned\n", in dpu_plane_atomic_check()
897 * Use multirect for wide plane. We do not support dynamic in dpu_plane_atomic_check()
968 void dpu_plane_flush(struct drm_plane *plane) in dpu_plane_flush() argument
973 if (!plane || !plane->state) { in dpu_plane_flush()
974 DPU_ERROR("invalid plane\n"); in dpu_plane_flush()
978 pdpu = to_dpu_plane(plane); in dpu_plane_flush()
979 pstate = to_dpu_plane_state(plane->state); in dpu_plane_flush()
982 * These updates have to be done immediately before the plane flush in dpu_plane_flush()
997 if (plane->state) in dpu_plane_flush()
1003 * @plane: pointer to drm_plane structure
1006 void dpu_plane_set_error(struct drm_plane *plane, bool error) in dpu_plane_set_error() argument
1010 if (!plane) in dpu_plane_set_error()
1013 pdpu = to_dpu_plane(plane); in dpu_plane_set_error()
1017 static void dpu_plane_sspp_update_pipe(struct drm_plane *plane, in dpu_plane_sspp_update_pipe() argument
1025 struct dpu_plane *pdpu = to_dpu_plane(plane); in dpu_plane_sspp_update_pipe()
1026 struct drm_plane_state *state = plane->state; in dpu_plane_sspp_update_pipe()
1036 _dpu_plane_set_qos_ctrl(plane, pipe, false); in dpu_plane_sspp_update_pipe()
1078 _dpu_plane_set_qos_lut(plane, pipe, fmt, pipe_cfg); in dpu_plane_sspp_update_pipe()
1082 _dpu_plane_set_ot_limit(plane, pipe, pipe_cfg, frame_rate); in dpu_plane_sspp_update_pipe()
1085 _dpu_plane_set_qos_remap(plane, pipe); in dpu_plane_sspp_update_pipe()
1088 static void dpu_plane_sspp_atomic_update(struct drm_plane *plane) in dpu_plane_sspp_atomic_update() argument
1090 struct dpu_plane *pdpu = to_dpu_plane(plane); in dpu_plane_sspp_atomic_update()
1091 struct drm_plane_state *state = plane->state; in dpu_plane_sspp_atomic_update()
1125 dpu_plane_sspp_update_pipe(plane, pipe, pipe_cfg, fmt, in dpu_plane_sspp_atomic_update()
1130 dpu_plane_sspp_update_pipe(plane, r_pipe, r_pipe_cfg, fmt, in dpu_plane_sspp_atomic_update()
1150 static void _dpu_plane_atomic_disable(struct drm_plane *plane) in _dpu_plane_atomic_disable() argument
1152 struct drm_plane_state *state = plane->state; in _dpu_plane_atomic_disable()
1156 trace_dpu_plane_disable(DRMID(plane), false, in _dpu_plane_atomic_disable()
1170 static void dpu_plane_atomic_update(struct drm_plane *plane, in dpu_plane_atomic_update() argument
1173 struct dpu_plane *pdpu = to_dpu_plane(plane); in dpu_plane_atomic_update()
1175 plane); in dpu_plane_atomic_update()
1182 _dpu_plane_atomic_disable(plane); in dpu_plane_atomic_update()
1184 dpu_plane_sspp_atomic_update(plane); in dpu_plane_atomic_update()
1188 static void dpu_plane_destroy_state(struct drm_plane *plane, in dpu_plane_destroy_state() argument
1196 dpu_plane_duplicate_state(struct drm_plane *plane) in dpu_plane_duplicate_state() argument
1202 if (!plane) { in dpu_plane_duplicate_state()
1203 DPU_ERROR("invalid plane\n"); in dpu_plane_duplicate_state()
1205 } else if (!plane->state) { in dpu_plane_duplicate_state()
1206 DPU_ERROR("invalid plane state\n"); in dpu_plane_duplicate_state()
1210 old_state = to_dpu_plane_state(plane->state); in dpu_plane_duplicate_state()
1211 pdpu = to_dpu_plane(plane); in dpu_plane_duplicate_state()
1222 __drm_atomic_helper_plane_duplicate_state(plane, &pstate->base); in dpu_plane_duplicate_state()
1284 static void dpu_plane_reset(struct drm_plane *plane) in dpu_plane_reset() argument
1288 struct dpu_kms *dpu_kms = _dpu_plane_get_kms(plane); in dpu_plane_reset()
1290 if (!plane) { in dpu_plane_reset()
1291 DPU_ERROR("invalid plane\n"); in dpu_plane_reset()
1295 pdpu = to_dpu_plane(plane); in dpu_plane_reset()
1299 if (plane->state) { in dpu_plane_reset()
1300 dpu_plane_destroy_state(plane, plane->state); in dpu_plane_reset()
1301 plane->state = NULL; in dpu_plane_reset()
1320 __drm_atomic_helper_plane_reset(plane, &pstate->base); in dpu_plane_reset()
1324 void dpu_plane_danger_signal_ctrl(struct drm_plane *plane, bool enable) in dpu_plane_danger_signal_ctrl() argument
1326 struct dpu_plane *pdpu = to_dpu_plane(plane); in dpu_plane_danger_signal_ctrl()
1327 struct dpu_plane_state *pstate = to_dpu_plane_state(plane->state); in dpu_plane_danger_signal_ctrl()
1328 struct dpu_kms *dpu_kms = _dpu_plane_get_kms(plane); in dpu_plane_danger_signal_ctrl()
1334 _dpu_plane_set_qos_ctrl(plane, &pstate->pipe, enable); in dpu_plane_danger_signal_ctrl()
1336 _dpu_plane_set_qos_ctrl(plane, &pstate->r_pipe, enable); in dpu_plane_danger_signal_ctrl()
1341 static bool dpu_plane_format_mod_supported(struct drm_plane *plane, in dpu_plane_format_mod_supported() argument
1371 /* initialize plane */
1376 struct drm_plane *plane = NULL; in dpu_plane_init() local
1404 plane = &pdpu->base; in dpu_plane_init()
1409 ret = drm_plane_create_zpos_property(plane, 0, 0, DPU_ZPOS_MAX); in dpu_plane_init()
1413 drm_plane_create_alpha_property(plane); in dpu_plane_init()
1414 drm_plane_create_blend_mode_property(plane, in dpu_plane_init()
1424 drm_plane_create_rotation_property(plane, in dpu_plane_init()
1427 drm_plane_enable_fb_damage_clips(plane); in dpu_plane_init()
1430 drm_plane_helper_add(plane, &dpu_plane_helper_funcs); in dpu_plane_init()
1432 DPU_DEBUG("%s created for pipe:%u id:%u\n", plane->name, in dpu_plane_init()
1433 pipe, plane->base.id); in dpu_plane_init()
1434 return plane; in dpu_plane_init()