Lines Matching full:plane
25 /* Primary plane formats for gen <= 3 */
33 /* Primary plane formats for ivb (no fp16 due to hw issue) */
43 /* Primary plane formats for gen >= 4, except ivb */
54 /* Primary plane formats for vlv/chv */
138 static bool i9xx_plane_has_windowing(struct intel_plane *plane) in i9xx_plane_has_windowing() argument
140 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_has_windowing()
141 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_has_windowing()
158 to_i915(plane_state->uapi.plane->dev); in i9xx_plane_ctl()
229 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in i9xx_check_plane_surface() local
230 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_check_plane_surface()
260 * When using an X-tiled surface the plane starts to in i9xx_check_plane_surface()
271 unsigned int alignment = plane->min_alignment(plane, fb, 0); in i9xx_check_plane_surface()
325 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in i9xx_plane_check() local
335 i9xx_plane_has_windowing(plane)); in i9xx_plane_check()
382 * of cdclk when the sprite plane is enabled on the in i9xx_plane_ratio()
421 struct intel_plane *plane, in i9xx_plane_update_noarm() argument
425 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_update_noarm()
426 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_update_noarm()
450 struct intel_plane *plane, in i9xx_plane_update_arm() argument
454 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_update_arm()
455 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_update_arm()
463 if (plane->need_async_flip_toggle_wa && in i9xx_plane_update_arm()
464 crtc_state->async_flip_planes & BIT(plane->id)) in i9xx_plane_update_arm()
499 * The control register self-arms if the plane was previously in i9xx_plane_update_arm()
500 * disabled. Try to make the plane enable atomic by writing in i9xx_plane_update_arm()
514 struct intel_plane *plane, in i830_plane_update_arm() argument
524 i9xx_plane_update_noarm(dsb, plane, crtc_state, plane_state); in i830_plane_update_arm()
525 i9xx_plane_update_arm(dsb, plane, crtc_state, plane_state); in i830_plane_update_arm()
529 struct intel_plane *plane, in i9xx_plane_disable_arm() argument
532 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_disable_arm()
533 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_disable_arm()
539 * well, so we must configure them even if the plane in i9xx_plane_disable_arm()
558 struct intel_plane *plane, in g4x_primary_async_flip() argument
563 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in g4x_primary_async_flip()
566 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in g4x_primary_async_flip()
579 struct intel_plane *plane, in vlv_primary_async_flip() argument
584 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in vlv_primary_async_flip()
586 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in vlv_primary_async_flip()
593 bdw_primary_enable_flip_done(struct intel_plane *plane) in bdw_primary_enable_flip_done() argument
595 struct drm_i915_private *i915 = to_i915(plane->base.dev); in bdw_primary_enable_flip_done()
596 enum pipe pipe = plane->pipe; in bdw_primary_enable_flip_done()
604 bdw_primary_disable_flip_done(struct intel_plane *plane) in bdw_primary_disable_flip_done() argument
606 struct drm_i915_private *i915 = to_i915(plane->base.dev); in bdw_primary_disable_flip_done()
607 enum pipe pipe = plane->pipe; in bdw_primary_disable_flip_done()
615 ivb_primary_enable_flip_done(struct intel_plane *plane) in ivb_primary_enable_flip_done() argument
617 struct drm_i915_private *i915 = to_i915(plane->base.dev); in ivb_primary_enable_flip_done()
620 ilk_enable_display_irq(i915, DE_PLANE_FLIP_DONE_IVB(plane->i9xx_plane)); in ivb_primary_enable_flip_done()
625 ivb_primary_disable_flip_done(struct intel_plane *plane) in ivb_primary_disable_flip_done() argument
627 struct drm_i915_private *i915 = to_i915(plane->base.dev); in ivb_primary_disable_flip_done()
630 ilk_disable_display_irq(i915, DE_PLANE_FLIP_DONE_IVB(plane->i9xx_plane)); in ivb_primary_disable_flip_done()
635 ilk_primary_enable_flip_done(struct intel_plane *plane) in ilk_primary_enable_flip_done() argument
637 struct drm_i915_private *i915 = to_i915(plane->base.dev); in ilk_primary_enable_flip_done()
640 ilk_enable_display_irq(i915, DE_PLANE_FLIP_DONE(plane->i9xx_plane)); in ilk_primary_enable_flip_done()
645 ilk_primary_disable_flip_done(struct intel_plane *plane) in ilk_primary_disable_flip_done() argument
647 struct drm_i915_private *i915 = to_i915(plane->base.dev); in ilk_primary_disable_flip_done()
650 ilk_disable_display_irq(i915, DE_PLANE_FLIP_DONE(plane->i9xx_plane)); in ilk_primary_disable_flip_done()
655 vlv_primary_enable_flip_done(struct intel_plane *plane) in vlv_primary_enable_flip_done() argument
657 struct drm_i915_private *i915 = to_i915(plane->base.dev); in vlv_primary_enable_flip_done()
658 enum pipe pipe = plane->pipe; in vlv_primary_enable_flip_done()
666 vlv_primary_disable_flip_done(struct intel_plane *plane) in vlv_primary_disable_flip_done() argument
668 struct drm_i915_private *i915 = to_i915(plane->base.dev); in vlv_primary_disable_flip_done()
669 enum pipe pipe = plane->pipe; in vlv_primary_disable_flip_done()
676 static bool i9xx_plane_get_hw_state(struct intel_plane *plane, in i9xx_plane_get_hw_state() argument
679 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_get_hw_state()
681 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_get_hw_state()
691 power_domain = POWER_DOMAIN_PIPE(plane->pipe); in i9xx_plane_get_hw_state()
701 *pipe = plane->pipe; in i9xx_plane_get_hw_state()
711 hsw_primary_max_stride(struct intel_plane *plane, in hsw_primary_max_stride() argument
723 ilk_primary_max_stride(struct intel_plane *plane, in ilk_primary_max_stride() argument
738 i965_plane_max_stride(struct intel_plane *plane, in i965_plane_max_stride() argument
753 i915_plane_max_stride(struct intel_plane *plane, in i915_plane_max_stride() argument
764 i8xx_plane_max_stride(struct intel_plane *plane, in i8xx_plane_max_stride() argument
768 if (plane->i9xx_plane == PLANE_C) in i8xx_plane_max_stride()
774 static unsigned int vlv_primary_min_alignment(struct intel_plane *plane, in vlv_primary_min_alignment() argument
778 struct drm_i915_private *i915 = to_i915(plane->base.dev); in vlv_primary_min_alignment()
793 static unsigned int g4x_primary_min_alignment(struct intel_plane *plane, in g4x_primary_min_alignment() argument
797 struct drm_i915_private *i915 = to_i915(plane->base.dev); in g4x_primary_min_alignment()
812 static unsigned int i965_plane_min_alignment(struct intel_plane *plane, in i965_plane_min_alignment() argument
827 static unsigned int i9xx_plane_min_alignment(struct intel_plane *plane, in i9xx_plane_min_alignment() argument
855 struct intel_plane *plane; in intel_primary_plane_create() local
863 plane = intel_plane_alloc(); in intel_primary_plane_create()
864 if (IS_ERR(plane)) in intel_primary_plane_create()
865 return plane; in intel_primary_plane_create()
867 plane->pipe = pipe; in intel_primary_plane_create()
869 * On gen2/3 only plane A can do FBC, but the panel fitter and LVDS in intel_primary_plane_create()
870 * port is hooked to pipe B. Hence we want plane A feeding pipe B. in intel_primary_plane_create()
874 plane->i9xx_plane = (enum i9xx_plane_id) !pipe; in intel_primary_plane_create()
876 plane->i9xx_plane = (enum i9xx_plane_id) pipe; in intel_primary_plane_create()
877 plane->id = PLANE_PRIMARY; in intel_primary_plane_create()
878 plane->frontbuffer_bit = INTEL_FRONTBUFFER(pipe, plane->id); in intel_primary_plane_create()
880 intel_fbc_add_plane(i9xx_plane_fbc(dev_priv, plane->i9xx_plane), plane); in intel_primary_plane_create()
888 * "Workaround : When using the 64-bit format, the plane in intel_primary_plane_create()
892 * multiply the plane output by four." in intel_primary_plane_create()
894 * There is no dedicated plane gamma for the primary plane, in intel_primary_plane_create()
917 plane->min_cdclk = vlv_plane_min_cdclk; in intel_primary_plane_create()
919 plane->min_cdclk = hsw_plane_min_cdclk; in intel_primary_plane_create()
921 plane->min_cdclk = ivb_plane_min_cdclk; in intel_primary_plane_create()
923 plane->min_cdclk = i9xx_plane_min_cdclk; in intel_primary_plane_create()
927 plane->max_stride = i965_plane_max_stride; in intel_primary_plane_create()
929 plane->max_stride = i915_plane_max_stride; in intel_primary_plane_create()
931 plane->max_stride = i8xx_plane_max_stride; in intel_primary_plane_create()
934 plane->max_stride = hsw_primary_max_stride; in intel_primary_plane_create()
936 plane->max_stride = ilk_primary_max_stride; in intel_primary_plane_create()
940 plane->min_alignment = vlv_primary_min_alignment; in intel_primary_plane_create()
942 plane->min_alignment = g4x_primary_min_alignment; in intel_primary_plane_create()
944 plane->min_alignment = i965_plane_min_alignment; in intel_primary_plane_create()
946 plane->min_alignment = i9xx_plane_min_alignment; in intel_primary_plane_create()
949 plane->update_arm = i830_plane_update_arm; in intel_primary_plane_create()
951 plane->update_noarm = i9xx_plane_update_noarm; in intel_primary_plane_create()
952 plane->update_arm = i9xx_plane_update_arm; in intel_primary_plane_create()
954 plane->disable_arm = i9xx_plane_disable_arm; in intel_primary_plane_create()
955 plane->get_hw_state = i9xx_plane_get_hw_state; in intel_primary_plane_create()
956 plane->check_plane = i9xx_plane_check; in intel_primary_plane_create()
959 plane->async_flip = vlv_primary_async_flip; in intel_primary_plane_create()
960 plane->enable_flip_done = vlv_primary_enable_flip_done; in intel_primary_plane_create()
961 plane->disable_flip_done = vlv_primary_disable_flip_done; in intel_primary_plane_create()
963 plane->need_async_flip_toggle_wa = true; in intel_primary_plane_create()
964 plane->async_flip = g4x_primary_async_flip; in intel_primary_plane_create()
965 plane->enable_flip_done = bdw_primary_enable_flip_done; in intel_primary_plane_create()
966 plane->disable_flip_done = bdw_primary_disable_flip_done; in intel_primary_plane_create()
968 plane->async_flip = g4x_primary_async_flip; in intel_primary_plane_create()
969 plane->enable_flip_done = ivb_primary_enable_flip_done; in intel_primary_plane_create()
970 plane->disable_flip_done = ivb_primary_disable_flip_done; in intel_primary_plane_create()
972 plane->async_flip = g4x_primary_async_flip; in intel_primary_plane_create()
973 plane->enable_flip_done = ilk_primary_enable_flip_done; in intel_primary_plane_create()
974 plane->disable_flip_done = ilk_primary_disable_flip_done; in intel_primary_plane_create()
980 ret = drm_universal_plane_init(&dev_priv->drm, &plane->base, in intel_primary_plane_create()
987 ret = drm_universal_plane_init(&dev_priv->drm, &plane->base, in intel_primary_plane_create()
992 "plane %c", in intel_primary_plane_create()
993 plane_name(plane->i9xx_plane)); in intel_primary_plane_create()
1012 drm_plane_create_rotation_property(&plane->base, in intel_primary_plane_create()
1017 drm_plane_create_zpos_immutable_property(&plane->base, zpos); in intel_primary_plane_create()
1019 intel_plane_helper_add(plane); in intel_primary_plane_create()
1021 return plane; in intel_primary_plane_create()
1024 intel_plane_free(plane); in intel_primary_plane_create()
1068 struct intel_plane *plane = to_intel_plane(crtc->base.primary); in i9xx_get_initial_plane_config() local
1069 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_get_initial_plane_config()
1077 if (!plane->get_hw_state(plane, &pipe)) in i9xx_get_initial_plane_config()
1145 crtc->base.name, plane->base.name, fb->width, fb->height, in i9xx_get_initial_plane_config()
1156 struct intel_plane *plane = to_intel_plane(crtc->base.primary); in i9xx_fixup_initial_plane_config() local
1158 to_intel_plane_state(plane->base.state); in i9xx_fixup_initial_plane_config()
1159 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_fixup_initial_plane_config()
1169 * part of ggtt, make the plane aware of that. in i9xx_fixup_initial_plane_config()