Lines Matching full:plane
23 /* Primary plane formats for gen <= 3 */
31 /* Primary plane formats for ivb (no fp16 due to hw issue) */
41 /* Primary plane formats for gen >= 4, except ivb */
52 /* Primary plane formats for vlv/chv */
136 static bool i9xx_plane_has_windowing(struct intel_plane *plane) in i9xx_plane_has_windowing() argument
138 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_has_windowing()
139 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_has_windowing()
156 to_i915(plane_state->uapi.plane->dev); in i9xx_plane_ctl()
228 to_i915(plane_state->uapi.plane->dev); in i9xx_check_plane_surface()
258 * When using an X-tiled surface the plane starts to in i9xx_check_plane_surface()
323 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in i9xx_plane_check() local
333 i9xx_plane_has_windowing(plane)); in i9xx_plane_check()
380 * of cdclk when the sprite plane is enabled on the in i9xx_plane_ratio()
418 static void i9xx_plane_update_noarm(struct intel_plane *plane, in i9xx_plane_update_noarm() argument
422 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_update_noarm()
423 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_update_noarm()
446 static void i9xx_plane_update_arm(struct intel_plane *plane, in i9xx_plane_update_arm() argument
450 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_update_arm()
451 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_update_arm()
489 * The control register self-arms if the plane was previously in i9xx_plane_update_arm()
490 * disabled. Try to make the plane enable atomic by writing in i9xx_plane_update_arm()
503 static void i830_plane_update_arm(struct intel_plane *plane, in i830_plane_update_arm() argument
513 i9xx_plane_update_noarm(plane, crtc_state, plane_state); in i830_plane_update_arm()
514 i9xx_plane_update_arm(plane, crtc_state, plane_state); in i830_plane_update_arm()
517 static void i9xx_plane_disable_arm(struct intel_plane *plane, in i9xx_plane_disable_arm() argument
520 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_disable_arm()
521 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_disable_arm()
527 * well, so we must configure them even if the plane in i9xx_plane_disable_arm()
545 g4x_primary_async_flip(struct intel_plane *plane, in g4x_primary_async_flip() argument
550 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in g4x_primary_async_flip()
553 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in g4x_primary_async_flip()
565 vlv_primary_async_flip(struct intel_plane *plane, in vlv_primary_async_flip() argument
570 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in vlv_primary_async_flip()
572 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in vlv_primary_async_flip()
579 bdw_primary_enable_flip_done(struct intel_plane *plane) in bdw_primary_enable_flip_done() argument
581 struct drm_i915_private *i915 = to_i915(plane->base.dev); in bdw_primary_enable_flip_done()
582 enum pipe pipe = plane->pipe; in bdw_primary_enable_flip_done()
590 bdw_primary_disable_flip_done(struct intel_plane *plane) in bdw_primary_disable_flip_done() argument
592 struct drm_i915_private *i915 = to_i915(plane->base.dev); in bdw_primary_disable_flip_done()
593 enum pipe pipe = plane->pipe; in bdw_primary_disable_flip_done()
601 ivb_primary_enable_flip_done(struct intel_plane *plane) in ivb_primary_enable_flip_done() argument
603 struct drm_i915_private *i915 = to_i915(plane->base.dev); in ivb_primary_enable_flip_done()
606 ilk_enable_display_irq(i915, DE_PLANE_FLIP_DONE_IVB(plane->i9xx_plane)); in ivb_primary_enable_flip_done()
611 ivb_primary_disable_flip_done(struct intel_plane *plane) in ivb_primary_disable_flip_done() argument
613 struct drm_i915_private *i915 = to_i915(plane->base.dev); in ivb_primary_disable_flip_done()
616 ilk_disable_display_irq(i915, DE_PLANE_FLIP_DONE_IVB(plane->i9xx_plane)); in ivb_primary_disable_flip_done()
621 ilk_primary_enable_flip_done(struct intel_plane *plane) in ilk_primary_enable_flip_done() argument
623 struct drm_i915_private *i915 = to_i915(plane->base.dev); in ilk_primary_enable_flip_done()
626 ilk_enable_display_irq(i915, DE_PLANE_FLIP_DONE(plane->i9xx_plane)); in ilk_primary_enable_flip_done()
631 ilk_primary_disable_flip_done(struct intel_plane *plane) in ilk_primary_disable_flip_done() argument
633 struct drm_i915_private *i915 = to_i915(plane->base.dev); in ilk_primary_disable_flip_done()
636 ilk_disable_display_irq(i915, DE_PLANE_FLIP_DONE(plane->i9xx_plane)); in ilk_primary_disable_flip_done()
641 vlv_primary_enable_flip_done(struct intel_plane *plane) in vlv_primary_enable_flip_done() argument
643 struct drm_i915_private *i915 = to_i915(plane->base.dev); in vlv_primary_enable_flip_done()
644 enum pipe pipe = plane->pipe; in vlv_primary_enable_flip_done()
652 vlv_primary_disable_flip_done(struct intel_plane *plane) in vlv_primary_disable_flip_done() argument
654 struct drm_i915_private *i915 = to_i915(plane->base.dev); in vlv_primary_disable_flip_done()
655 enum pipe pipe = plane->pipe; in vlv_primary_disable_flip_done()
662 static bool i9xx_plane_get_hw_state(struct intel_plane *plane, in i9xx_plane_get_hw_state() argument
665 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_get_hw_state()
667 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_get_hw_state()
677 power_domain = POWER_DOMAIN_PIPE(plane->pipe); in i9xx_plane_get_hw_state()
687 *pipe = plane->pipe; in i9xx_plane_get_hw_state()
697 hsw_primary_max_stride(struct intel_plane *plane, in hsw_primary_max_stride() argument
709 ilk_primary_max_stride(struct intel_plane *plane, in ilk_primary_max_stride() argument
724 i965_plane_max_stride(struct intel_plane *plane, in i965_plane_max_stride() argument
739 i9xx_plane_max_stride(struct intel_plane *plane, in i9xx_plane_max_stride() argument
743 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_max_stride()
751 if (plane->i9xx_plane == PLANE_C) in i9xx_plane_max_stride()
779 struct intel_plane *plane; in intel_primary_plane_create() local
787 plane = intel_plane_alloc(); in intel_primary_plane_create()
788 if (IS_ERR(plane)) in intel_primary_plane_create()
789 return plane; in intel_primary_plane_create()
791 plane->pipe = pipe; in intel_primary_plane_create()
793 * On gen2/3 only plane A can do FBC, but the panel fitter and LVDS in intel_primary_plane_create()
794 * port is hooked to pipe B. Hence we want plane A feeding pipe B. in intel_primary_plane_create()
798 plane->i9xx_plane = (enum i9xx_plane_id) !pipe; in intel_primary_plane_create()
800 plane->i9xx_plane = (enum i9xx_plane_id) pipe; in intel_primary_plane_create()
801 plane->id = PLANE_PRIMARY; in intel_primary_plane_create()
802 plane->frontbuffer_bit = INTEL_FRONTBUFFER(pipe, plane->id); in intel_primary_plane_create()
804 intel_fbc_add_plane(i9xx_plane_fbc(dev_priv, plane->i9xx_plane), plane); in intel_primary_plane_create()
812 * "Workaround : When using the 64-bit format, the plane in intel_primary_plane_create()
816 * multiply the plane output by four." in intel_primary_plane_create()
818 * There is no dedicated plane gamma for the primary plane, in intel_primary_plane_create()
841 plane->min_cdclk = vlv_plane_min_cdclk; in intel_primary_plane_create()
843 plane->min_cdclk = hsw_plane_min_cdclk; in intel_primary_plane_create()
845 plane->min_cdclk = ivb_plane_min_cdclk; in intel_primary_plane_create()
847 plane->min_cdclk = i9xx_plane_min_cdclk; in intel_primary_plane_create()
851 plane->max_stride = i965_plane_max_stride; in intel_primary_plane_create()
853 plane->max_stride = i9xx_plane_max_stride; in intel_primary_plane_create()
856 plane->max_stride = hsw_primary_max_stride; in intel_primary_plane_create()
858 plane->max_stride = ilk_primary_max_stride; in intel_primary_plane_create()
862 plane->update_arm = i830_plane_update_arm; in intel_primary_plane_create()
864 plane->update_noarm = i9xx_plane_update_noarm; in intel_primary_plane_create()
865 plane->update_arm = i9xx_plane_update_arm; in intel_primary_plane_create()
867 plane->disable_arm = i9xx_plane_disable_arm; in intel_primary_plane_create()
868 plane->get_hw_state = i9xx_plane_get_hw_state; in intel_primary_plane_create()
869 plane->check_plane = i9xx_plane_check; in intel_primary_plane_create()
872 plane->async_flip = vlv_primary_async_flip; in intel_primary_plane_create()
873 plane->enable_flip_done = vlv_primary_enable_flip_done; in intel_primary_plane_create()
874 plane->disable_flip_done = vlv_primary_disable_flip_done; in intel_primary_plane_create()
876 plane->need_async_flip_disable_wa = true; in intel_primary_plane_create()
877 plane->async_flip = g4x_primary_async_flip; in intel_primary_plane_create()
878 plane->enable_flip_done = bdw_primary_enable_flip_done; in intel_primary_plane_create()
879 plane->disable_flip_done = bdw_primary_disable_flip_done; in intel_primary_plane_create()
881 plane->async_flip = g4x_primary_async_flip; in intel_primary_plane_create()
882 plane->enable_flip_done = ivb_primary_enable_flip_done; in intel_primary_plane_create()
883 plane->disable_flip_done = ivb_primary_disable_flip_done; in intel_primary_plane_create()
885 plane->async_flip = g4x_primary_async_flip; in intel_primary_plane_create()
886 plane->enable_flip_done = ilk_primary_enable_flip_done; in intel_primary_plane_create()
887 plane->disable_flip_done = ilk_primary_disable_flip_done; in intel_primary_plane_create()
893 ret = drm_universal_plane_init(&dev_priv->drm, &plane->base, in intel_primary_plane_create()
900 ret = drm_universal_plane_init(&dev_priv->drm, &plane->base, in intel_primary_plane_create()
905 "plane %c", in intel_primary_plane_create()
906 plane_name(plane->i9xx_plane)); in intel_primary_plane_create()
925 drm_plane_create_rotation_property(&plane->base, in intel_primary_plane_create()
930 drm_plane_create_zpos_immutable_property(&plane->base, zpos); in intel_primary_plane_create()
932 intel_plane_helper_add(plane); in intel_primary_plane_create()
934 return plane; in intel_primary_plane_create()
937 intel_plane_free(plane); in intel_primary_plane_create()
981 struct intel_plane *plane = to_intel_plane(crtc->base.primary); in i9xx_get_initial_plane_config() local
982 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_get_initial_plane_config()
990 if (!plane->get_hw_state(plane, &pipe)) in i9xx_get_initial_plane_config()
1057 crtc->base.name, plane->base.name, fb->width, fb->height, in i9xx_get_initial_plane_config()