Lines Matching full:plane
20 /* Primary plane formats for gen <= 3 */
28 /* Primary plane formats for ivb (no fp16 due to hw issue) */
38 /* Primary plane formats for gen >= 4, except ivb */
49 /* Primary plane formats for vlv/chv */
133 static bool i9xx_plane_has_windowing(struct intel_plane *plane) in i9xx_plane_has_windowing() argument
135 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_has_windowing()
136 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_has_windowing()
153 to_i915(plane_state->uapi.plane->dev); in i9xx_plane_ctl()
225 to_i915(plane_state->uapi.plane->dev); in i9xx_check_plane_surface()
255 * When using an X-tiled surface the plane starts to in i9xx_check_plane_surface()
320 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in i9xx_plane_check() local
330 i9xx_plane_has_windowing(plane)); in i9xx_plane_check()
377 * of cdclk when the sprite plane is enabled on the in i9xx_plane_ratio()
415 static void i9xx_plane_update_noarm(struct intel_plane *plane, in i9xx_plane_update_noarm() argument
419 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_update_noarm()
420 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_update_noarm()
443 static void i9xx_plane_update_arm(struct intel_plane *plane, in i9xx_plane_update_arm() argument
447 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_update_arm()
448 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_update_arm()
486 * The control register self-arms if the plane was previously in i9xx_plane_update_arm()
487 * disabled. Try to make the plane enable atomic by writing in i9xx_plane_update_arm()
500 static void i830_plane_update_arm(struct intel_plane *plane, in i830_plane_update_arm() argument
510 i9xx_plane_update_noarm(plane, crtc_state, plane_state); in i830_plane_update_arm()
511 i9xx_plane_update_arm(plane, crtc_state, plane_state); in i830_plane_update_arm()
514 static void i9xx_plane_disable_arm(struct intel_plane *plane, in i9xx_plane_disable_arm() argument
517 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_disable_arm()
518 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_disable_arm()
524 * well, so we must configure them even if the plane in i9xx_plane_disable_arm()
542 g4x_primary_async_flip(struct intel_plane *plane, in g4x_primary_async_flip() argument
547 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in g4x_primary_async_flip()
550 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in g4x_primary_async_flip()
562 vlv_primary_async_flip(struct intel_plane *plane, in vlv_primary_async_flip() argument
567 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in vlv_primary_async_flip()
569 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in vlv_primary_async_flip()
576 bdw_primary_enable_flip_done(struct intel_plane *plane) in bdw_primary_enable_flip_done() argument
578 struct drm_i915_private *i915 = to_i915(plane->base.dev); in bdw_primary_enable_flip_done()
579 enum pipe pipe = plane->pipe; in bdw_primary_enable_flip_done()
587 bdw_primary_disable_flip_done(struct intel_plane *plane) in bdw_primary_disable_flip_done() argument
589 struct drm_i915_private *i915 = to_i915(plane->base.dev); in bdw_primary_disable_flip_done()
590 enum pipe pipe = plane->pipe; in bdw_primary_disable_flip_done()
598 ivb_primary_enable_flip_done(struct intel_plane *plane) in ivb_primary_enable_flip_done() argument
600 struct drm_i915_private *i915 = to_i915(plane->base.dev); in ivb_primary_enable_flip_done()
603 ilk_enable_display_irq(i915, DE_PLANE_FLIP_DONE_IVB(plane->i9xx_plane)); in ivb_primary_enable_flip_done()
608 ivb_primary_disable_flip_done(struct intel_plane *plane) in ivb_primary_disable_flip_done() argument
610 struct drm_i915_private *i915 = to_i915(plane->base.dev); in ivb_primary_disable_flip_done()
613 ilk_disable_display_irq(i915, DE_PLANE_FLIP_DONE_IVB(plane->i9xx_plane)); in ivb_primary_disable_flip_done()
618 ilk_primary_enable_flip_done(struct intel_plane *plane) in ilk_primary_enable_flip_done() argument
620 struct drm_i915_private *i915 = to_i915(plane->base.dev); in ilk_primary_enable_flip_done()
623 ilk_enable_display_irq(i915, DE_PLANE_FLIP_DONE(plane->i9xx_plane)); in ilk_primary_enable_flip_done()
628 ilk_primary_disable_flip_done(struct intel_plane *plane) in ilk_primary_disable_flip_done() argument
630 struct drm_i915_private *i915 = to_i915(plane->base.dev); in ilk_primary_disable_flip_done()
633 ilk_disable_display_irq(i915, DE_PLANE_FLIP_DONE(plane->i9xx_plane)); in ilk_primary_disable_flip_done()
638 vlv_primary_enable_flip_done(struct intel_plane *plane) in vlv_primary_enable_flip_done() argument
640 struct drm_i915_private *i915 = to_i915(plane->base.dev); in vlv_primary_enable_flip_done()
641 enum pipe pipe = plane->pipe; in vlv_primary_enable_flip_done()
649 vlv_primary_disable_flip_done(struct intel_plane *plane) in vlv_primary_disable_flip_done() argument
651 struct drm_i915_private *i915 = to_i915(plane->base.dev); in vlv_primary_disable_flip_done()
652 enum pipe pipe = plane->pipe; in vlv_primary_disable_flip_done()
659 static bool i9xx_plane_get_hw_state(struct intel_plane *plane, in i9xx_plane_get_hw_state() argument
662 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_get_hw_state()
664 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_get_hw_state()
674 power_domain = POWER_DOMAIN_PIPE(plane->pipe); in i9xx_plane_get_hw_state()
684 *pipe = plane->pipe; in i9xx_plane_get_hw_state()
694 hsw_primary_max_stride(struct intel_plane *plane, in hsw_primary_max_stride() argument
706 ilk_primary_max_stride(struct intel_plane *plane, in ilk_primary_max_stride() argument
721 i965_plane_max_stride(struct intel_plane *plane, in i965_plane_max_stride() argument
736 i9xx_plane_max_stride(struct intel_plane *plane, in i9xx_plane_max_stride() argument
740 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_max_stride()
748 if (plane->i9xx_plane == PLANE_C) in i9xx_plane_max_stride()
776 struct intel_plane *plane; in intel_primary_plane_create() local
784 plane = intel_plane_alloc(); in intel_primary_plane_create()
785 if (IS_ERR(plane)) in intel_primary_plane_create()
786 return plane; in intel_primary_plane_create()
788 plane->pipe = pipe; in intel_primary_plane_create()
790 * On gen2/3 only plane A can do FBC, but the panel fitter and LVDS in intel_primary_plane_create()
791 * port is hooked to pipe B. Hence we want plane A feeding pipe B. in intel_primary_plane_create()
795 plane->i9xx_plane = (enum i9xx_plane_id) !pipe; in intel_primary_plane_create()
797 plane->i9xx_plane = (enum i9xx_plane_id) pipe; in intel_primary_plane_create()
798 plane->id = PLANE_PRIMARY; in intel_primary_plane_create()
799 plane->frontbuffer_bit = INTEL_FRONTBUFFER(pipe, plane->id); in intel_primary_plane_create()
801 intel_fbc_add_plane(i9xx_plane_fbc(dev_priv, plane->i9xx_plane), plane); in intel_primary_plane_create()
809 * "Workaround : When using the 64-bit format, the plane in intel_primary_plane_create()
813 * multiply the plane output by four." in intel_primary_plane_create()
815 * There is no dedicated plane gamma for the primary plane, in intel_primary_plane_create()
838 plane->min_cdclk = vlv_plane_min_cdclk; in intel_primary_plane_create()
840 plane->min_cdclk = hsw_plane_min_cdclk; in intel_primary_plane_create()
842 plane->min_cdclk = ivb_plane_min_cdclk; in intel_primary_plane_create()
844 plane->min_cdclk = i9xx_plane_min_cdclk; in intel_primary_plane_create()
848 plane->max_stride = i965_plane_max_stride; in intel_primary_plane_create()
850 plane->max_stride = i9xx_plane_max_stride; in intel_primary_plane_create()
853 plane->max_stride = hsw_primary_max_stride; in intel_primary_plane_create()
855 plane->max_stride = ilk_primary_max_stride; in intel_primary_plane_create()
859 plane->update_arm = i830_plane_update_arm; in intel_primary_plane_create()
861 plane->update_noarm = i9xx_plane_update_noarm; in intel_primary_plane_create()
862 plane->update_arm = i9xx_plane_update_arm; in intel_primary_plane_create()
864 plane->disable_arm = i9xx_plane_disable_arm; in intel_primary_plane_create()
865 plane->get_hw_state = i9xx_plane_get_hw_state; in intel_primary_plane_create()
866 plane->check_plane = i9xx_plane_check; in intel_primary_plane_create()
869 plane->async_flip = vlv_primary_async_flip; in intel_primary_plane_create()
870 plane->enable_flip_done = vlv_primary_enable_flip_done; in intel_primary_plane_create()
871 plane->disable_flip_done = vlv_primary_disable_flip_done; in intel_primary_plane_create()
873 plane->need_async_flip_disable_wa = true; in intel_primary_plane_create()
874 plane->async_flip = g4x_primary_async_flip; in intel_primary_plane_create()
875 plane->enable_flip_done = bdw_primary_enable_flip_done; in intel_primary_plane_create()
876 plane->disable_flip_done = bdw_primary_disable_flip_done; in intel_primary_plane_create()
878 plane->async_flip = g4x_primary_async_flip; in intel_primary_plane_create()
879 plane->enable_flip_done = ivb_primary_enable_flip_done; in intel_primary_plane_create()
880 plane->disable_flip_done = ivb_primary_disable_flip_done; in intel_primary_plane_create()
882 plane->async_flip = g4x_primary_async_flip; in intel_primary_plane_create()
883 plane->enable_flip_done = ilk_primary_enable_flip_done; in intel_primary_plane_create()
884 plane->disable_flip_done = ilk_primary_disable_flip_done; in intel_primary_plane_create()
890 ret = drm_universal_plane_init(&dev_priv->drm, &plane->base, in intel_primary_plane_create()
897 ret = drm_universal_plane_init(&dev_priv->drm, &plane->base, in intel_primary_plane_create()
902 "plane %c", in intel_primary_plane_create()
903 plane_name(plane->i9xx_plane)); in intel_primary_plane_create()
922 drm_plane_create_rotation_property(&plane->base, in intel_primary_plane_create()
927 drm_plane_create_zpos_immutable_property(&plane->base, zpos); in intel_primary_plane_create()
929 intel_plane_helper_add(plane); in intel_primary_plane_create()
931 return plane; in intel_primary_plane_create()
934 intel_plane_free(plane); in intel_primary_plane_create()
978 struct intel_plane *plane = to_intel_plane(crtc->base.primary); in i9xx_get_initial_plane_config() local
979 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_get_initial_plane_config()
987 if (!plane->get_hw_state(plane, &pipe)) in i9xx_get_initial_plane_config()
1051 crtc->base.name, plane->base.name, fb->width, fb->height, in i9xx_get_initial_plane_config()