Lines Matching refs:plane
26 static int mdp5_plane_mode_set(struct drm_plane *plane,
30 static struct mdp5_kms *get_kms(struct drm_plane *plane) in get_kms() argument
32 struct msm_drm_private *priv = plane->dev->dev_private; in get_kms()
41 static void mdp5_plane_destroy(struct drm_plane *plane) in mdp5_plane_destroy() argument
43 struct mdp5_plane *mdp5_plane = to_mdp5_plane(plane); in mdp5_plane_destroy()
45 drm_plane_cleanup(plane); in mdp5_plane_destroy()
51 static void mdp5_plane_install_properties(struct drm_plane *plane, in mdp5_plane_install_properties() argument
56 drm_plane_create_rotation_property(plane, in mdp5_plane_install_properties()
62 drm_plane_create_alpha_property(plane); in mdp5_plane_install_properties()
63 drm_plane_create_blend_mode_property(plane, in mdp5_plane_install_properties()
68 if (plane->type == DRM_PLANE_TYPE_PRIMARY) in mdp5_plane_install_properties()
71 zpos = STAGE0 + drm_plane_index(plane); in mdp5_plane_install_properties()
72 drm_plane_create_zpos_property(plane, zpos, 1, 255); in mdp5_plane_install_properties()
80 struct mdp5_kms *mdp5_kms = get_kms(state->plane); in mdp5_plane_atomic_print_state()
95 static void mdp5_plane_reset(struct drm_plane *plane) in mdp5_plane_reset() argument
99 if (plane->state) in mdp5_plane_reset()
100 __drm_atomic_helper_plane_destroy_state(plane->state); in mdp5_plane_reset()
102 kfree(to_mdp5_plane_state(plane->state)); in mdp5_plane_reset()
103 plane->state = NULL; in mdp5_plane_reset()
107 __drm_atomic_helper_plane_reset(plane, &mdp5_state->base); in mdp5_plane_reset()
111 mdp5_plane_duplicate_state(struct drm_plane *plane) in mdp5_plane_duplicate_state() argument
115 if (WARN_ON(!plane->state)) in mdp5_plane_duplicate_state()
118 mdp5_state = kmemdup(to_mdp5_plane_state(plane->state), in mdp5_plane_duplicate_state()
123 __drm_atomic_helper_plane_duplicate_state(plane, &mdp5_state->base); in mdp5_plane_duplicate_state()
128 static void mdp5_plane_destroy_state(struct drm_plane *plane, in mdp5_plane_destroy_state() argument
149 static int mdp5_plane_prepare_fb(struct drm_plane *plane, in mdp5_plane_prepare_fb() argument
152 struct msm_drm_private *priv = plane->dev->dev_private; in mdp5_plane_prepare_fb()
159 drm_gem_plane_helper_prepare_fb(plane, new_state); in mdp5_plane_prepare_fb()
164 static void mdp5_plane_cleanup_fb(struct drm_plane *plane, in mdp5_plane_cleanup_fb() argument
167 struct mdp5_kms *mdp5_kms = get_kms(plane); in mdp5_plane_cleanup_fb()
175 DBG("%s: cleanup: FB[%u]", plane->name, fb->base.id); in mdp5_plane_cleanup_fb()
183 struct drm_plane *plane = state->plane; in mdp5_plane_atomic_check_with_state() local
184 struct drm_plane_state *old_state = plane->state; in mdp5_plane_atomic_check_with_state()
185 struct mdp5_cfg *config = mdp5_cfg_get_config(get_kms(plane)->cfg); in mdp5_plane_atomic_check_with_state()
194 DBG("%s: check (%d -> %d)", plane->name, in mdp5_plane_atomic_check_with_state()
236 struct mdp5_kms *mdp5_kms = get_kms(plane); in mdp5_plane_atomic_check_with_state()
258 if (plane->type == DRM_PLANE_TYPE_CURSOR) in mdp5_plane_atomic_check_with_state()
297 ret = mdp5_pipe_assign(state->state, plane, caps, in mdp5_plane_atomic_check_with_state()
303 plane->name); in mdp5_plane_atomic_check_with_state()
343 static int mdp5_plane_atomic_check(struct drm_plane *plane, in mdp5_plane_atomic_check() argument
347 plane); in mdp5_plane_atomic_check()
349 plane); in mdp5_plane_atomic_check()
365 static void mdp5_plane_atomic_update(struct drm_plane *plane, in mdp5_plane_atomic_update() argument
369 plane); in mdp5_plane_atomic_update()
371 DBG("%s: update", plane->name); in mdp5_plane_atomic_update()
376 ret = mdp5_plane_mode_set(plane, in mdp5_plane_atomic_update()
384 static int mdp5_plane_atomic_async_check(struct drm_plane *plane, in mdp5_plane_atomic_async_check() argument
388 plane); in mdp5_plane_atomic_async_check()
407 if (plane->state->crtc != new_plane_state->crtc || in mdp5_plane_atomic_async_check()
408 plane->state->src_w != new_plane_state->src_w || in mdp5_plane_atomic_async_check()
409 plane->state->src_h != new_plane_state->src_h || in mdp5_plane_atomic_async_check()
410 plane->state->crtc_w != new_plane_state->crtc_w || in mdp5_plane_atomic_async_check()
411 plane->state->crtc_h != new_plane_state->crtc_h || in mdp5_plane_atomic_async_check()
412 !plane->state->fb || in mdp5_plane_atomic_async_check()
413 plane->state->fb != new_plane_state->fb) in mdp5_plane_atomic_async_check()
432 if (new_plane_state->visible != plane->state->visible) in mdp5_plane_atomic_async_check()
438 static void mdp5_plane_atomic_async_update(struct drm_plane *plane, in mdp5_plane_atomic_async_update() argument
442 plane); in mdp5_plane_atomic_async_update()
443 struct drm_framebuffer *old_fb = plane->state->fb; in mdp5_plane_atomic_async_update()
445 plane->state->src_x = new_state->src_x; in mdp5_plane_atomic_async_update()
446 plane->state->src_y = new_state->src_y; in mdp5_plane_atomic_async_update()
447 plane->state->crtc_x = new_state->crtc_x; in mdp5_plane_atomic_async_update()
448 plane->state->crtc_y = new_state->crtc_y; in mdp5_plane_atomic_async_update()
456 ret = mdp5_plane_mode_set(plane, new_state->crtc, new_state->fb, in mdp5_plane_atomic_async_update()
462 mdp5_ctl_commit(ctl, pipeline, mdp5_plane_get_flush(plane), true); in mdp5_plane_atomic_async_update()
465 *to_mdp5_plane_state(plane->state) = in mdp5_plane_atomic_async_update()
591 static int calc_scalex_steps(struct drm_plane *plane, in calc_scalex_steps() argument
596 struct mdp5_kms *mdp5_kms = get_kms(plane); in calc_scalex_steps()
614 static int calc_scaley_steps(struct drm_plane *plane, in calc_scaley_steps() argument
619 struct mdp5_kms *mdp5_kms = get_kms(plane); in calc_scaley_steps()
859 static int mdp5_plane_mode_set(struct drm_plane *plane, in mdp5_plane_mode_set() argument
863 struct drm_plane_state *pstate = plane->state; in mdp5_plane_mode_set()
865 struct mdp5_kms *mdp5_kms = get_kms(plane); in mdp5_plane_mode_set()
911 DBG("%s: FB[%u] %u,%u,%u,%u -> CRTC[%u] %d,%d,%u,%u", plane->name, in mdp5_plane_mode_set()
927 ret = calc_scalex_steps(plane, pix_format, src_w, crtc_w, step.x); in mdp5_plane_mode_set()
931 ret = calc_scaley_steps(plane, pix_format, src_h, crtc_h, step.y); in mdp5_plane_mode_set()
975 enum mdp5_pipe mdp5_plane_pipe(struct drm_plane *plane) in mdp5_plane_pipe() argument
977 struct mdp5_plane_state *pstate = to_mdp5_plane_state(plane->state); in mdp5_plane_pipe()
985 enum mdp5_pipe mdp5_plane_right_pipe(struct drm_plane *plane) in mdp5_plane_right_pipe() argument
987 struct mdp5_plane_state *pstate = to_mdp5_plane_state(plane->state); in mdp5_plane_right_pipe()
995 uint32_t mdp5_plane_get_flush(struct drm_plane *plane) in mdp5_plane_get_flush() argument
997 struct mdp5_plane_state *pstate = to_mdp5_plane_state(plane->state); in mdp5_plane_get_flush()
1015 struct drm_plane *plane = NULL; in mdp5_plane_init() local
1025 plane = &mdp5_plane->base; in mdp5_plane_init()
1030 ret = drm_universal_plane_init(dev, plane, 0xff, &mdp5_plane_funcs, in mdp5_plane_init()
1036 drm_plane_helper_add(plane, &mdp5_plane_helper_funcs); in mdp5_plane_init()
1038 mdp5_plane_install_properties(plane, &plane->base); in mdp5_plane_init()
1040 drm_plane_enable_fb_damage_clips(plane); in mdp5_plane_init()
1042 return plane; in mdp5_plane_init()
1045 if (plane) in mdp5_plane_init()
1046 mdp5_plane_destroy(plane); in mdp5_plane_init()