Lines Matching full:plane
17 #include "plane.h"
19 static void tegra_plane_destroy(struct drm_plane *plane) in tegra_plane_destroy() argument
21 struct tegra_plane *p = to_tegra_plane(plane); in tegra_plane_destroy()
23 drm_plane_cleanup(plane); in tegra_plane_destroy()
27 static void tegra_plane_reset(struct drm_plane *plane) in tegra_plane_reset() argument
29 struct tegra_plane *p = to_tegra_plane(plane); in tegra_plane_reset()
33 if (plane->state) in tegra_plane_reset()
34 __drm_atomic_helper_plane_destroy_state(plane->state); in tegra_plane_reset()
36 kfree(plane->state); in tegra_plane_reset()
37 plane->state = NULL; in tegra_plane_reset()
41 plane->state = &state->base; in tegra_plane_reset()
42 plane->state->plane = plane; in tegra_plane_reset()
43 plane->state->zpos = p->index; in tegra_plane_reset()
44 plane->state->normalized_zpos = p->index; in tegra_plane_reset()
52 tegra_plane_atomic_duplicate_state(struct drm_plane *plane) in tegra_plane_atomic_duplicate_state() argument
54 struct tegra_plane_state *state = to_tegra_plane_state(plane->state); in tegra_plane_atomic_duplicate_state()
62 __drm_atomic_helper_plane_duplicate_state(plane, ©->base); in tegra_plane_atomic_duplicate_state()
84 static void tegra_plane_atomic_destroy_state(struct drm_plane *plane, in tegra_plane_atomic_destroy_state() argument
91 static bool tegra_plane_supports_sector_layout(struct drm_plane *plane) in tegra_plane_supports_sector_layout() argument
95 drm_for_each_crtc(crtc, plane->dev) { in tegra_plane_supports_sector_layout()
96 if (plane->possible_crtcs & drm_crtc_mask(crtc)) { in tegra_plane_supports_sector_layout()
107 static bool tegra_plane_format_mod_supported(struct drm_plane *plane, in tegra_plane_format_mod_supported() argument
119 if (!tegra_plane_supports_sector_layout(plane)) in tegra_plane_format_mod_supported()
178 dev_err(dc->dev, "failed to map plane %u: %d\n", i, err); in tegra_dc_pin()
200 int tegra_plane_prepare_fb(struct drm_plane *plane, in tegra_plane_prepare_fb() argument
209 err = drm_gem_plane_helper_prepare_fb(plane, state); in tegra_plane_prepare_fb()
216 void tegra_plane_cleanup_fb(struct drm_plane *plane, in tegra_plane_cleanup_fb() argument
297 int tegra_plane_state_add(struct tegra_plane *plane, in tegra_plane_state_add() argument
309 /* Check plane state for visibility and calculate clipping bounds */ in tegra_plane_state_add()
321 tegra->planes |= WIN_A_ACT_REQ << plane->index; in tegra_plane_state_add()
621 struct drm_plane *plane; in tegra_plane_check_transparency() local
631 drm_for_each_plane(plane, tegra->base.dev) { in tegra_plane_check_transparency()
632 struct tegra_plane *p = to_tegra_plane(plane); in tegra_plane_check_transparency()
634 /* skip this plane and planes on different CRTCs */ in tegra_plane_check_transparency()
639 plane); in tegra_plane_check_transparency()
647 static unsigned int tegra_plane_get_overlap_index(struct tegra_plane *plane, in tegra_plane_get_overlap_index() argument
652 WARN_ON(plane == other); in tegra_plane_get_overlap_index()
655 if (i == plane->index) in tegra_plane_get_overlap_index()
671 struct drm_plane *plane; in tegra_plane_update_transparency() local
674 for_each_new_plane_in_state(state->base.state, plane, new, i) { in tegra_plane_update_transparency()
675 struct tegra_plane *p = to_tegra_plane(plane); in tegra_plane_update_transparency()
678 /* skip this plane and planes on different CRTCs */ in tegra_plane_update_transparency()
695 * Missing framebuffer means that plane is disabled, in this in tegra_plane_update_transparency()
710 struct drm_plane *plane; in tegra_plane_setup_transparency() local
724 * transparency state for each plane. in tegra_plane_setup_transparency()
726 drm_for_each_plane(plane, tegra->base.dev) { in tegra_plane_setup_transparency()
727 struct tegra_plane *p = to_tegra_plane(plane); in tegra_plane_setup_transparency()
733 new = drm_atomic_get_new_plane_state(state->base.state, plane); in tegra_plane_setup_transparency()
738 * plane. in tegra_plane_setup_transparency()
767 int tegra_plane_interconnect_init(struct tegra_plane *plane) in tegra_plane_interconnect_init() argument
769 const char *icc_name = tegra_plane_icc_names[plane->index]; in tegra_plane_interconnect_init()
770 struct device *dev = plane->dc->dev; in tegra_plane_interconnect_init()
771 struct tegra_dc *dc = plane->dc; in tegra_plane_interconnect_init()
774 if (WARN_ON(plane->index >= TEGRA_DC_LEGACY_PLANES_NUM) || in tegra_plane_interconnect_init()
775 WARN_ON(!tegra_plane_icc_names[plane->index])) in tegra_plane_interconnect_init()
778 plane->icc_mem = devm_of_icc_get(dev, icc_name); in tegra_plane_interconnect_init()
779 err = PTR_ERR_OR_ZERO(plane->icc_mem); in tegra_plane_interconnect_init()
784 /* plane B on T20/30 has a dedicated memory client for a 6-tap vertical filter */ in tegra_plane_interconnect_init()
785 if (plane->index == 1 && dc->soc->has_win_b_vfilter_mem_client) { in tegra_plane_interconnect_init()
786 plane->icc_mem_vfilter = devm_of_icc_get(dev, "winb-vfilter"); in tegra_plane_interconnect_init()
787 err = PTR_ERR_OR_ZERO(plane->icc_mem_vfilter); in tegra_plane_interconnect_init()