Lines Matching defs:plane

31 #define DPU_DEBUG_PLANE(pl, fmt, ...) DRM_DEBUG_ATOMIC("plane%d " fmt,\
34 #define DPU_ERROR_PLANE(pl, fmt, ...) DPU_ERROR("plane%d " fmt,\
74 * struct dpu_plane - local dpu plane structure
78 * @revalidate: force revalidation of all the plane properties
99 static struct dpu_kms *_dpu_plane_get_kms(struct drm_plane *plane)
101 struct msm_drm_private *priv = plane->dev->dev_private;
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,
213 pdpu = to_dpu_plane(plane);
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,
257 struct dpu_plane *pdpu = to_dpu_plane(plane);
270 total_fl = _dpu_plane_calc_fill_level(plane, pipe, lut_usage, fmt,
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,
322 struct dpu_plane *pdpu = to_dpu_plane(plane);
354 * _dpu_plane_set_ot_limit - set OT limit for the given plane
355 * @plane: Pointer to drm plane
360 static void _dpu_plane_set_ot_limit(struct drm_plane *plane,
365 struct dpu_plane *pdpu = to_dpu_plane(plane);
367 struct dpu_kms *dpu_kms = _dpu_plane_get_kms(plane);
392 * _dpu_plane_set_qos_remap - set vbif QoS for the given plane
393 * @plane: Pointer to drm plane
396 static void _dpu_plane_set_qos_remap(struct drm_plane *plane,
399 struct dpu_plane *pdpu = to_dpu_plane(plane);
401 struct dpu_kms *dpu_kms = _dpu_plane_get_kms(plane);
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;
620 struct msm_drm_private *priv = plane->dev->dev_private;
621 struct dpu_plane_state *pstate = to_dpu_plane_state(plane->state);
644 static int dpu_plane_prepare_fb(struct drm_plane *plane,
648 struct dpu_plane *pdpu = to_dpu_plane(plane);
662 drm_gem_plane_helper_prepare_fb(plane, new_state);
673 static void dpu_plane_cleanup_fb(struct drm_plane *plane,
676 struct dpu_plane *pdpu = to_dpu_plane(plane);
765 "plane doesn't have csc for yuv\n");
804 DPU_DEBUG_PLANE(pdpu, "plane exceeds max mdp core clk limits\n");
814 static int dpu_plane_atomic_check_nosspp(struct drm_plane *plane,
819 struct dpu_plane *pdpu = to_dpu_plane(plane);
836 DPU_DEBUG_PLANE(pdpu, "Check plane state failed (%d)\n", ret);
844 DPU_ERROR("> %d plane stages assigned\n",
867 DPU_ERROR_PLANE(pdpu, "failed to get format plane sizes, %d\n", ret);
953 static int dpu_plane_atomic_check_sspp(struct drm_plane *plane,
958 drm_atomic_get_new_plane_state(state, plane);
959 struct dpu_plane *pdpu = to_dpu_plane(plane);
1077 static int dpu_plane_atomic_check(struct drm_plane *plane,
1081 plane);
1083 struct dpu_plane *pdpu = to_dpu_plane(plane);
1085 struct dpu_kms *dpu_kms = _dpu_plane_get_kms(plane);
1102 ret = dpu_plane_atomic_check_nosspp(plane, new_plane_state, crtc_state);
1121 return dpu_plane_atomic_check_sspp(plane, state, crtc_state);
1124 static int dpu_plane_virtual_atomic_check(struct drm_plane *plane,
1128 drm_atomic_get_plane_state(state, plane);
1130 drm_atomic_get_old_plane_state(state, plane);
1142 ret = dpu_plane_atomic_check_nosspp(plane, plane_state, crtc_state);
1160 * plane than the one used previously.
1181 struct drm_plane *plane = plane_state->plane;
1182 struct dpu_kms *dpu_kms = _dpu_plane_get_kms(plane);
1254 return dpu_plane_atomic_check_sspp(plane, state, crtc_state);
1308 * dpu_plane_flush - final plane operations before commit flush
1309 * @plane: Pointer to drm plane structure
1311 void dpu_plane_flush(struct drm_plane *plane)
1316 if (!plane || !plane->state) {
1317 DPU_ERROR("invalid plane\n");
1321 pdpu = to_dpu_plane(plane);
1322 pstate = to_dpu_plane_state(plane->state);
1325 * These updates have to be done immediately before the plane flush
1340 if (plane->state)
1346 * @plane: pointer to drm_plane structure
1349 void dpu_plane_set_error(struct drm_plane *plane, bool error)
1353 if (!plane)
1356 pdpu = to_dpu_plane(plane);
1360 static void dpu_plane_sspp_update_pipe(struct drm_plane *plane,
1368 struct dpu_plane *pdpu = to_dpu_plane(plane);
1369 struct drm_plane_state *state = plane->state;
1379 _dpu_plane_set_qos_ctrl(plane, pipe, false);
1421 _dpu_plane_set_qos_lut(plane, pipe, fmt, pipe_cfg);
1425 _dpu_plane_set_ot_limit(plane, pipe, pipe_cfg, frame_rate);
1428 _dpu_plane_set_qos_remap(plane, pipe);
1431 static void dpu_plane_sspp_atomic_update(struct drm_plane *plane,
1434 struct dpu_plane *pdpu = to_dpu_plane(plane);
1435 struct drm_plane_state *state = plane->state;
1460 dpu_plane_sspp_update_pipe(plane, pipe, pipe_cfg, fmt,
1465 dpu_plane_sspp_update_pipe(plane, r_pipe, r_pipe_cfg, fmt,
1485 static void _dpu_plane_atomic_disable(struct drm_plane *plane)
1487 struct drm_plane_state *state = plane->state;
1491 trace_dpu_plane_disable(DRMID(plane), false,
1505 static void dpu_plane_atomic_update(struct drm_plane *plane,
1508 struct dpu_plane *pdpu = to_dpu_plane(plane);
1510 plane);
1517 _dpu_plane_atomic_disable(plane);
1519 dpu_plane_sspp_atomic_update(plane, new_state);
1523 static void dpu_plane_destroy_state(struct drm_plane *plane,
1531 dpu_plane_duplicate_state(struct drm_plane *plane)
1537 if (!plane) {
1538 DPU_ERROR("invalid plane\n");
1540 } else if (!plane->state) {
1541 DPU_ERROR("invalid plane state\n");
1545 old_state = to_dpu_plane_state(plane->state);
1546 pdpu = to_dpu_plane(plane);
1557 __drm_atomic_helper_plane_duplicate_state(plane, &pstate->base);
1622 static void dpu_plane_reset(struct drm_plane *plane)
1627 if (!plane) {
1628 DPU_ERROR("invalid plane\n");
1632 pdpu = to_dpu_plane(plane);
1636 if (plane->state) {
1637 dpu_plane_destroy_state(plane, plane->state);
1638 plane->state = NULL;
1647 __drm_atomic_helper_plane_reset(plane, &pstate->base);
1651 void dpu_plane_danger_signal_ctrl(struct drm_plane *plane, bool enable)
1653 struct dpu_plane *pdpu = to_dpu_plane(plane);
1654 struct dpu_plane_state *pstate = to_dpu_plane_state(plane->state);
1655 struct dpu_kms *dpu_kms = _dpu_plane_get_kms(plane);
1661 _dpu_plane_set_qos_ctrl(plane, &pstate->pipe, enable);
1663 _dpu_plane_set_qos_ctrl(plane, &pstate->r_pipe, enable);
1668 static bool dpu_plane_format_mod_supported(struct drm_plane *plane,
1671 struct dpu_kms *dpu_kms = _dpu_plane_get_kms(plane);
1709 /* initialize plane */
1718 struct drm_plane *plane = NULL;
1733 plane = &pdpu->base;
1738 ret = drm_plane_create_zpos_property(plane, 0, 0, DPU_ZPOS_MAX);
1742 drm_plane_create_alpha_property(plane);
1743 drm_plane_create_blend_mode_property(plane,
1753 drm_plane_create_rotation_property(plane,
1756 drm_plane_enable_fb_damage_clips(plane);
1758 DPU_DEBUG("%s created for pipe:%u id:%u\n", plane->name,
1759 pipe, plane->base.id);
1760 return plane;
1764 * dpu_plane_init - create new dpu plane for the given pipe
1770 * Initialize the plane.
1776 struct drm_plane *plane = NULL;
1789 plane = dpu_plane_init_common(dev, type, possible_crtcs,
1794 if (IS_ERR(plane))
1795 return plane;
1797 drm_plane_helper_add(plane, &dpu_plane_helper_funcs);
1799 DPU_DEBUG("%s created for pipe:%u id:%u\n", plane->name,
1800 pipe, plane->base.id);
1802 return plane;
1806 * dpu_plane_init_virtual - create new virtualized DPU plane
1811 * Initialize the virtual plane with no backing SSPP / pipe.
1817 struct drm_plane *plane = NULL;
1839 plane = dpu_plane_init_common(dev, type, possible_crtcs,
1844 if (IS_ERR(plane))
1845 return plane;
1847 drm_plane_helper_add(plane, &dpu_plane_virtual_helper_funcs);
1849 DPU_DEBUG("%s created virtual id:%u\n", plane->name, plane->base.id);
1851 return plane;