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
148 static int mdp5_plane_prepare_fb(struct drm_plane *plane, in mdp5_plane_prepare_fb() argument
151 struct msm_drm_private *priv = plane->dev->dev_private; in mdp5_plane_prepare_fb()
158 drm_gem_plane_helper_prepare_fb(plane, new_state); in mdp5_plane_prepare_fb()
163 static void mdp5_plane_cleanup_fb(struct drm_plane *plane, in mdp5_plane_cleanup_fb() argument
166 struct mdp5_kms *mdp5_kms = get_kms(plane); in mdp5_plane_cleanup_fb()
174 DBG("%s: cleanup: FB[%u]", plane->name, fb->base.id); in mdp5_plane_cleanup_fb()
182 struct drm_plane *plane = state->plane; in mdp5_plane_atomic_check_with_state() local
183 struct drm_plane_state *old_state = plane->state; in mdp5_plane_atomic_check_with_state()
184 struct mdp5_cfg *config = mdp5_cfg_get_config(get_kms(plane)->cfg); in mdp5_plane_atomic_check_with_state()
193 DBG("%s: check (%d -> %d)", plane->name, in mdp5_plane_atomic_check_with_state()
235 struct mdp5_kms *mdp5_kms = get_kms(plane); in mdp5_plane_atomic_check_with_state()
257 if (plane->type == DRM_PLANE_TYPE_CURSOR) in mdp5_plane_atomic_check_with_state()
296 ret = mdp5_pipe_assign(state->state, plane, caps, in mdp5_plane_atomic_check_with_state()
302 plane->name); in mdp5_plane_atomic_check_with_state()
342 static int mdp5_plane_atomic_check(struct drm_plane *plane, in mdp5_plane_atomic_check() argument
346 plane); in mdp5_plane_atomic_check()
348 plane); in mdp5_plane_atomic_check()
364 static void mdp5_plane_atomic_update(struct drm_plane *plane, in mdp5_plane_atomic_update() argument
368 plane); in mdp5_plane_atomic_update()
370 DBG("%s: update", plane->name); in mdp5_plane_atomic_update()
375 ret = mdp5_plane_mode_set(plane, in mdp5_plane_atomic_update()
383 static int mdp5_plane_atomic_async_check(struct drm_plane *plane, in mdp5_plane_atomic_async_check() argument
387 plane); in mdp5_plane_atomic_async_check()
406 if (plane->state->crtc != new_plane_state->crtc || in mdp5_plane_atomic_async_check()
407 plane->state->src_w != new_plane_state->src_w || in mdp5_plane_atomic_async_check()
408 plane->state->src_h != new_plane_state->src_h || in mdp5_plane_atomic_async_check()
409 plane->state->crtc_w != new_plane_state->crtc_w || in mdp5_plane_atomic_async_check()
410 plane->state->crtc_h != new_plane_state->crtc_h || in mdp5_plane_atomic_async_check()
411 !plane->state->fb || in mdp5_plane_atomic_async_check()
412 plane->state->fb != new_plane_state->fb) in mdp5_plane_atomic_async_check()
431 if (new_plane_state->visible != plane->state->visible) in mdp5_plane_atomic_async_check()
437 static void mdp5_plane_atomic_async_update(struct drm_plane *plane, in mdp5_plane_atomic_async_update() argument
441 plane); in mdp5_plane_atomic_async_update()
442 struct drm_framebuffer *old_fb = plane->state->fb; in mdp5_plane_atomic_async_update()
444 plane->state->src_x = new_state->src_x; in mdp5_plane_atomic_async_update()
445 plane->state->src_y = new_state->src_y; in mdp5_plane_atomic_async_update()
446 plane->state->crtc_x = new_state->crtc_x; in mdp5_plane_atomic_async_update()
447 plane->state->crtc_y = new_state->crtc_y; in mdp5_plane_atomic_async_update()
455 ret = mdp5_plane_mode_set(plane, new_state->crtc, new_state->fb, in mdp5_plane_atomic_async_update()
461 mdp5_ctl_commit(ctl, pipeline, mdp5_plane_get_flush(plane), true); in mdp5_plane_atomic_async_update()
464 *to_mdp5_plane_state(plane->state) = in mdp5_plane_atomic_async_update()
590 static int calc_scalex_steps(struct drm_plane *plane, in calc_scalex_steps() argument
595 struct mdp5_kms *mdp5_kms = get_kms(plane); in calc_scalex_steps()
613 static int calc_scaley_steps(struct drm_plane *plane, in calc_scaley_steps() argument
618 struct mdp5_kms *mdp5_kms = get_kms(plane); in calc_scaley_steps()
858 static int mdp5_plane_mode_set(struct drm_plane *plane, in mdp5_plane_mode_set() argument
862 struct drm_plane_state *pstate = plane->state; in mdp5_plane_mode_set()
864 struct mdp5_kms *mdp5_kms = get_kms(plane); in mdp5_plane_mode_set()
910 DBG("%s: FB[%u] %u,%u,%u,%u -> CRTC[%u] %d,%d,%u,%u", plane->name, in mdp5_plane_mode_set()
926 ret = calc_scalex_steps(plane, pix_format, src_w, crtc_w, step.x); in mdp5_plane_mode_set()
930 ret = calc_scaley_steps(plane, pix_format, src_h, crtc_h, step.y); in mdp5_plane_mode_set()
974 enum mdp5_pipe mdp5_plane_pipe(struct drm_plane *plane) in mdp5_plane_pipe() argument
976 struct mdp5_plane_state *pstate = to_mdp5_plane_state(plane->state); in mdp5_plane_pipe()
984 enum mdp5_pipe mdp5_plane_right_pipe(struct drm_plane *plane) in mdp5_plane_right_pipe() argument
986 struct mdp5_plane_state *pstate = to_mdp5_plane_state(plane->state); in mdp5_plane_right_pipe()
994 uint32_t mdp5_plane_get_flush(struct drm_plane *plane) in mdp5_plane_get_flush() argument
996 struct mdp5_plane_state *pstate = to_mdp5_plane_state(plane->state); in mdp5_plane_get_flush()
1014 struct drm_plane *plane = NULL; in mdp5_plane_init() local
1024 plane = &mdp5_plane->base; in mdp5_plane_init()
1029 ret = drm_universal_plane_init(dev, plane, 0xff, &mdp5_plane_funcs, in mdp5_plane_init()
1035 drm_plane_helper_add(plane, &mdp5_plane_helper_funcs); in mdp5_plane_init()
1037 mdp5_plane_install_properties(plane, &plane->base); in mdp5_plane_init()
1039 drm_plane_enable_fb_damage_clips(plane); in mdp5_plane_init()
1041 return plane; in mdp5_plane_init()
1044 if (plane) in mdp5_plane_init()
1045 mdp5_plane_destroy(plane); in mdp5_plane_init()