Lines Matching full:plane
22 /* Primary plane formats for gen <= 3 */
30 /* Primary plane formats for ivb (no fp16 due to hw issue) */
40 /* Primary plane formats for gen >= 4, except ivb */
51 /* Primary plane formats for vlv/chv */
135 static bool i9xx_plane_has_windowing(struct intel_plane *plane) in i9xx_plane_has_windowing() argument
137 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_has_windowing()
138 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_has_windowing()
155 to_i915(plane_state->uapi.plane->dev); in i9xx_plane_ctl()
227 to_i915(plane_state->uapi.plane->dev); in i9xx_check_plane_surface()
257 * When using an X-tiled surface the plane starts to in i9xx_check_plane_surface()
322 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in i9xx_plane_check() local
332 i9xx_plane_has_windowing(plane)); in i9xx_plane_check()
379 * of cdclk when the sprite plane is enabled on the in i9xx_plane_ratio()
417 static void i9xx_plane_update_noarm(struct intel_plane *plane, in i9xx_plane_update_noarm() argument
421 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_update_noarm()
422 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_update_noarm()
445 static void i9xx_plane_update_arm(struct intel_plane *plane, in i9xx_plane_update_arm() argument
449 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_update_arm()
450 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_update_arm()
488 * The control register self-arms if the plane was previously in i9xx_plane_update_arm()
489 * disabled. Try to make the plane enable atomic by writing in i9xx_plane_update_arm()
502 static void i830_plane_update_arm(struct intel_plane *plane, in i830_plane_update_arm() argument
512 i9xx_plane_update_noarm(plane, crtc_state, plane_state); in i830_plane_update_arm()
513 i9xx_plane_update_arm(plane, crtc_state, plane_state); in i830_plane_update_arm()
516 static void i9xx_plane_disable_arm(struct intel_plane *plane, in i9xx_plane_disable_arm() argument
519 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_disable_arm()
520 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_disable_arm()
526 * well, so we must configure them even if the plane in i9xx_plane_disable_arm()
544 g4x_primary_async_flip(struct intel_plane *plane, in g4x_primary_async_flip() argument
549 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in g4x_primary_async_flip()
552 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in g4x_primary_async_flip()
564 vlv_primary_async_flip(struct intel_plane *plane, in vlv_primary_async_flip() argument
569 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in vlv_primary_async_flip()
571 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in vlv_primary_async_flip()
578 bdw_primary_enable_flip_done(struct intel_plane *plane) in bdw_primary_enable_flip_done() argument
580 struct drm_i915_private *i915 = to_i915(plane->base.dev); in bdw_primary_enable_flip_done()
581 enum pipe pipe = plane->pipe; in bdw_primary_enable_flip_done()
589 bdw_primary_disable_flip_done(struct intel_plane *plane) in bdw_primary_disable_flip_done() argument
591 struct drm_i915_private *i915 = to_i915(plane->base.dev); in bdw_primary_disable_flip_done()
592 enum pipe pipe = plane->pipe; in bdw_primary_disable_flip_done()
600 ivb_primary_enable_flip_done(struct intel_plane *plane) in ivb_primary_enable_flip_done() argument
602 struct drm_i915_private *i915 = to_i915(plane->base.dev); in ivb_primary_enable_flip_done()
605 ilk_enable_display_irq(i915, DE_PLANE_FLIP_DONE_IVB(plane->i9xx_plane)); in ivb_primary_enable_flip_done()
610 ivb_primary_disable_flip_done(struct intel_plane *plane) in ivb_primary_disable_flip_done() argument
612 struct drm_i915_private *i915 = to_i915(plane->base.dev); in ivb_primary_disable_flip_done()
615 ilk_disable_display_irq(i915, DE_PLANE_FLIP_DONE_IVB(plane->i9xx_plane)); in ivb_primary_disable_flip_done()
620 ilk_primary_enable_flip_done(struct intel_plane *plane) in ilk_primary_enable_flip_done() argument
622 struct drm_i915_private *i915 = to_i915(plane->base.dev); in ilk_primary_enable_flip_done()
625 ilk_enable_display_irq(i915, DE_PLANE_FLIP_DONE(plane->i9xx_plane)); in ilk_primary_enable_flip_done()
630 ilk_primary_disable_flip_done(struct intel_plane *plane) in ilk_primary_disable_flip_done() argument
632 struct drm_i915_private *i915 = to_i915(plane->base.dev); in ilk_primary_disable_flip_done()
635 ilk_disable_display_irq(i915, DE_PLANE_FLIP_DONE(plane->i9xx_plane)); in ilk_primary_disable_flip_done()
640 vlv_primary_enable_flip_done(struct intel_plane *plane) in vlv_primary_enable_flip_done() argument
642 struct drm_i915_private *i915 = to_i915(plane->base.dev); in vlv_primary_enable_flip_done()
643 enum pipe pipe = plane->pipe; in vlv_primary_enable_flip_done()
651 vlv_primary_disable_flip_done(struct intel_plane *plane) in vlv_primary_disable_flip_done() argument
653 struct drm_i915_private *i915 = to_i915(plane->base.dev); in vlv_primary_disable_flip_done()
654 enum pipe pipe = plane->pipe; in vlv_primary_disable_flip_done()
661 static bool i9xx_plane_get_hw_state(struct intel_plane *plane, in i9xx_plane_get_hw_state() argument
664 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_get_hw_state()
666 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_plane_get_hw_state()
676 power_domain = POWER_DOMAIN_PIPE(plane->pipe); in i9xx_plane_get_hw_state()
686 *pipe = plane->pipe; in i9xx_plane_get_hw_state()
696 hsw_primary_max_stride(struct intel_plane *plane, in hsw_primary_max_stride() argument
708 ilk_primary_max_stride(struct intel_plane *plane, in ilk_primary_max_stride() argument
723 i965_plane_max_stride(struct intel_plane *plane, in i965_plane_max_stride() argument
738 i9xx_plane_max_stride(struct intel_plane *plane, in i9xx_plane_max_stride() argument
742 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in i9xx_plane_max_stride()
750 if (plane->i9xx_plane == PLANE_C) in i9xx_plane_max_stride()
778 struct intel_plane *plane; in intel_primary_plane_create() local
786 plane = intel_plane_alloc(); in intel_primary_plane_create()
787 if (IS_ERR(plane)) in intel_primary_plane_create()
788 return plane; in intel_primary_plane_create()
790 plane->pipe = pipe; in intel_primary_plane_create()
792 * On gen2/3 only plane A can do FBC, but the panel fitter and LVDS in intel_primary_plane_create()
793 * port is hooked to pipe B. Hence we want plane A feeding pipe B. in intel_primary_plane_create()
797 plane->i9xx_plane = (enum i9xx_plane_id) !pipe; in intel_primary_plane_create()
799 plane->i9xx_plane = (enum i9xx_plane_id) pipe; in intel_primary_plane_create()
800 plane->id = PLANE_PRIMARY; in intel_primary_plane_create()
801 plane->frontbuffer_bit = INTEL_FRONTBUFFER(pipe, plane->id); in intel_primary_plane_create()
803 intel_fbc_add_plane(i9xx_plane_fbc(dev_priv, plane->i9xx_plane), plane); in intel_primary_plane_create()
811 * "Workaround : When using the 64-bit format, the plane in intel_primary_plane_create()
815 * multiply the plane output by four." in intel_primary_plane_create()
817 * There is no dedicated plane gamma for the primary plane, in intel_primary_plane_create()
840 plane->min_cdclk = vlv_plane_min_cdclk; in intel_primary_plane_create()
842 plane->min_cdclk = hsw_plane_min_cdclk; in intel_primary_plane_create()
844 plane->min_cdclk = ivb_plane_min_cdclk; in intel_primary_plane_create()
846 plane->min_cdclk = i9xx_plane_min_cdclk; in intel_primary_plane_create()
850 plane->max_stride = i965_plane_max_stride; in intel_primary_plane_create()
852 plane->max_stride = i9xx_plane_max_stride; in intel_primary_plane_create()
855 plane->max_stride = hsw_primary_max_stride; in intel_primary_plane_create()
857 plane->max_stride = ilk_primary_max_stride; in intel_primary_plane_create()
861 plane->update_arm = i830_plane_update_arm; in intel_primary_plane_create()
863 plane->update_noarm = i9xx_plane_update_noarm; in intel_primary_plane_create()
864 plane->update_arm = i9xx_plane_update_arm; in intel_primary_plane_create()
866 plane->disable_arm = i9xx_plane_disable_arm; in intel_primary_plane_create()
867 plane->get_hw_state = i9xx_plane_get_hw_state; in intel_primary_plane_create()
868 plane->check_plane = i9xx_plane_check; in intel_primary_plane_create()
871 plane->async_flip = vlv_primary_async_flip; in intel_primary_plane_create()
872 plane->enable_flip_done = vlv_primary_enable_flip_done; in intel_primary_plane_create()
873 plane->disable_flip_done = vlv_primary_disable_flip_done; in intel_primary_plane_create()
875 plane->need_async_flip_disable_wa = true; in intel_primary_plane_create()
876 plane->async_flip = g4x_primary_async_flip; in intel_primary_plane_create()
877 plane->enable_flip_done = bdw_primary_enable_flip_done; in intel_primary_plane_create()
878 plane->disable_flip_done = bdw_primary_disable_flip_done; in intel_primary_plane_create()
880 plane->async_flip = g4x_primary_async_flip; in intel_primary_plane_create()
881 plane->enable_flip_done = ivb_primary_enable_flip_done; in intel_primary_plane_create()
882 plane->disable_flip_done = ivb_primary_disable_flip_done; in intel_primary_plane_create()
884 plane->async_flip = g4x_primary_async_flip; in intel_primary_plane_create()
885 plane->enable_flip_done = ilk_primary_enable_flip_done; in intel_primary_plane_create()
886 plane->disable_flip_done = ilk_primary_disable_flip_done; in intel_primary_plane_create()
892 ret = drm_universal_plane_init(&dev_priv->drm, &plane->base, in intel_primary_plane_create()
899 ret = drm_universal_plane_init(&dev_priv->drm, &plane->base, in intel_primary_plane_create()
904 "plane %c", in intel_primary_plane_create()
905 plane_name(plane->i9xx_plane)); in intel_primary_plane_create()
924 drm_plane_create_rotation_property(&plane->base, in intel_primary_plane_create()
929 drm_plane_create_zpos_immutable_property(&plane->base, zpos); in intel_primary_plane_create()
931 intel_plane_helper_add(plane); in intel_primary_plane_create()
933 return plane; in intel_primary_plane_create()
936 intel_plane_free(plane); in intel_primary_plane_create()
980 struct intel_plane *plane = to_intel_plane(crtc->base.primary); in i9xx_get_initial_plane_config() local
981 enum i9xx_plane_id i9xx_plane = plane->i9xx_plane; in i9xx_get_initial_plane_config()
989 if (!plane->get_hw_state(plane, &pipe)) in i9xx_get_initial_plane_config()
1056 crtc->base.name, plane->base.name, fb->width, fb->height, in i9xx_get_initial_plane_config()