Lines Matching full:plane

343 		 * - pipe and plane scaling (TODO verify this)  in skl_plane_max_width()
351 /* FIXME AUX plane? */ in skl_plane_max_width()
379 /* FIXME AUX plane? */ in glk_plane_max_width()
474 plane_max_stride(struct intel_plane *plane, in plane_max_stride() argument
490 adl_plane_max_stride(struct intel_plane *plane, in adl_plane_max_stride() argument
497 return plane_max_stride(plane, pixel_format, in adl_plane_max_stride()
503 skl_plane_max_stride(struct intel_plane *plane, in skl_plane_max_stride() argument
510 return plane_max_stride(plane, pixel_format, in skl_plane_max_stride()
515 static u32 tgl_plane_min_alignment(struct intel_plane *plane, in tgl_plane_min_alignment() argument
519 struct drm_i915_private *i915 = to_i915(plane->base.dev); in tgl_plane_min_alignment()
562 static u32 skl_plane_min_alignment(struct intel_plane *plane, in skl_plane_min_alignment() argument
605 struct intel_plane *plane, in icl_program_input_csc() argument
608 struct intel_display *display = to_intel_display(plane->base.dev); in icl_program_input_csc()
609 enum pipe pipe = plane->pipe; in icl_program_input_csc()
610 enum plane_id plane_id = plane->id; in icl_program_input_csc()
750 struct intel_plane *plane, in skl_write_plane_wm() argument
753 struct intel_display *display = to_intel_display(plane->base.dev); in skl_write_plane_wm()
754 enum plane_id plane_id = plane->id; in skl_write_plane_wm()
755 enum pipe pipe = plane->pipe; in skl_write_plane_wm()
796 struct intel_plane *plane, in skl_plane_disable_arm() argument
799 struct intel_display *display = to_intel_display(plane->base.dev); in skl_plane_disable_arm()
800 enum plane_id plane_id = plane->id; in skl_plane_disable_arm()
801 enum pipe pipe = plane->pipe; in skl_plane_disable_arm()
803 skl_write_plane_wm(dsb, plane, crtc_state); in skl_plane_disable_arm()
810 struct intel_plane *plane, in icl_plane_disable_sel_fetch_arm() argument
813 struct intel_display *display = to_intel_display(plane->base.dev); in icl_plane_disable_sel_fetch_arm()
814 enum pipe pipe = plane->pipe; in icl_plane_disable_sel_fetch_arm()
819 intel_de_write_dsb(display, dsb, SEL_FETCH_PLANE_CTL(pipe, plane->id), 0); in icl_plane_disable_sel_fetch_arm()
824 struct intel_plane *plane, in icl_plane_disable_arm() argument
827 struct intel_display *display = to_intel_display(plane->base.dev); in icl_plane_disable_arm()
828 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in icl_plane_disable_arm()
829 enum plane_id plane_id = plane->id; in icl_plane_disable_arm()
830 enum pipe pipe = plane->pipe; in icl_plane_disable_arm()
835 skl_write_plane_wm(dsb, plane, crtc_state); in icl_plane_disable_arm()
837 icl_plane_disable_sel_fetch_arm(dsb, plane, crtc_state); in icl_plane_disable_arm()
843 skl_plane_get_hw_state(struct intel_plane *plane, in skl_plane_get_hw_state() argument
846 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in skl_plane_get_hw_state()
848 enum plane_id plane_id = plane->id; in skl_plane_get_hw_state()
852 power_domain = POWER_DOMAIN_PIPE(plane->pipe); in skl_plane_get_hw_state()
857 ret = intel_de_read(dev_priv, PLANE_CTL(plane->pipe, plane_id)) & PLANE_CTL_ENABLE; in skl_plane_get_hw_state()
859 *pipe = plane->pipe; in skl_plane_get_hw_state()
1097 to_i915(plane_state->uapi.plane->dev); in skl_plane_ctl()
1157 to_i915(plane_state->uapi.plane->dev); in glk_plane_color_ctl()
1159 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in glk_plane_color_ctl() local
1165 if (fb->format->is_yuv && !icl_is_hdr_plane(dev_priv, plane->id)) { in glk_plane_color_ctl()
1195 struct drm_i915_private *i915 = to_i915(plane_state->uapi.plane->dev); in skl_surf_address()
1231 struct drm_i915_private *i915 = to_i915(plane_state->uapi.plane->dev); in skl_plane_aux_dist()
1277 struct intel_plane *plane, in icl_plane_csc_load_black() argument
1280 struct intel_display *display = to_intel_display(plane->base.dev); in icl_plane_csc_load_black()
1281 enum plane_id plane_id = plane->id; in icl_plane_csc_load_black()
1282 enum pipe pipe = plane->pipe; in icl_plane_csc_load_black()
1304 /* Program the UV plane on planar master */ in icl_plane_color_plane()
1313 struct intel_plane *plane, in skl_plane_update_noarm() argument
1317 struct intel_display *display = to_intel_display(plane->base.dev); in skl_plane_update_noarm()
1318 enum plane_id plane_id = plane->id; in skl_plane_update_noarm()
1319 enum pipe pipe = plane->pipe; in skl_plane_update_noarm()
1339 skl_write_plane_wm(dsb, plane, crtc_state); in skl_plane_update_noarm()
1344 struct intel_plane *plane, in skl_plane_update_arm() argument
1348 struct intel_display *display = to_intel_display(plane->base.dev); in skl_plane_update_arm()
1349 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in skl_plane_update_arm()
1350 enum plane_id plane_id = plane->id; in skl_plane_update_arm()
1351 enum pipe pipe = plane->pipe; in skl_plane_update_arm()
1360 if (plane->need_async_flip_toggle_wa && in skl_plane_update_arm()
1361 crtc_state->async_flip_planes & BIT(plane->id)) in skl_plane_update_arm()
1390 * Enable the scaler before the plane so that we don't in skl_plane_update_arm()
1397 skl_program_plane_scaler(plane, crtc_state, plane_state); in skl_plane_update_arm()
1400 * The control register self-arms if the plane was previously in skl_plane_update_arm()
1401 * disabled. Try to make the plane enable atomic by writing in skl_plane_update_arm()
1411 struct intel_plane *plane, in icl_plane_update_sel_fetch_noarm() argument
1416 struct intel_display *display = to_intel_display(plane->base.dev); in icl_plane_update_sel_fetch_noarm()
1417 enum pipe pipe = plane->pipe; in icl_plane_update_sel_fetch_noarm()
1433 intel_de_write_dsb(display, dsb, SEL_FETCH_PLANE_POS(pipe, plane->id), val); in icl_plane_update_sel_fetch_noarm()
1438 * From Bspec: UV surface Start Y Position = half of Y plane Y in icl_plane_update_sel_fetch_noarm()
1448 intel_de_write_dsb(display, dsb, SEL_FETCH_PLANE_OFFSET(pipe, plane->id), val); in icl_plane_update_sel_fetch_noarm()
1453 intel_de_write_dsb(display, dsb, SEL_FETCH_PLANE_SIZE(pipe, plane->id), val); in icl_plane_update_sel_fetch_noarm()
1458 struct intel_plane *plane, in icl_plane_update_noarm() argument
1462 struct intel_display *display = to_intel_display(plane->base.dev); in icl_plane_update_noarm()
1463 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in icl_plane_update_noarm()
1464 enum plane_id plane_id = plane->id; in icl_plane_update_noarm()
1465 enum pipe pipe = plane->pipe; in icl_plane_update_noarm()
1523 icl_program_input_csc(dsb, plane, plane_state); in icl_plane_update_noarm()
1525 skl_write_plane_wm(dsb, plane, crtc_state); in icl_plane_update_noarm()
1532 icl_plane_csc_load_black(dsb, plane, crtc_state); in icl_plane_update_noarm()
1534 icl_plane_update_sel_fetch_noarm(dsb, plane, crtc_state, plane_state, color_plane); in icl_plane_update_noarm()
1538 struct intel_plane *plane, in icl_plane_update_sel_fetch_arm() argument
1542 struct intel_display *display = to_intel_display(plane->base.dev); in icl_plane_update_sel_fetch_arm()
1543 enum pipe pipe = plane->pipe; in icl_plane_update_sel_fetch_arm()
1549 intel_de_write_dsb(display, dsb, SEL_FETCH_PLANE_CTL(pipe, plane->id), in icl_plane_update_sel_fetch_arm()
1552 icl_plane_disable_sel_fetch_arm(dsb, plane, crtc_state); in icl_plane_update_sel_fetch_arm()
1557 struct intel_plane *plane, in icl_plane_update_arm() argument
1561 struct intel_display *display = to_intel_display(plane->base.dev); in icl_plane_update_arm()
1562 enum plane_id plane_id = plane->id; in icl_plane_update_arm()
1563 enum pipe pipe = plane->pipe; in icl_plane_update_arm()
1571 * Enable the scaler before the plane so that we don't in icl_plane_update_arm()
1578 skl_program_plane_scaler(plane, crtc_state, plane_state); in icl_plane_update_arm()
1580 icl_plane_update_sel_fetch_arm(dsb, plane, crtc_state, plane_state); in icl_plane_update_arm()
1583 * The control register self-arms if the plane was previously in icl_plane_update_arm()
1584 * disabled. Try to make the plane enable atomic by writing in icl_plane_update_arm()
1595 struct intel_plane *plane, in skl_plane_async_flip() argument
1600 struct intel_display *display = to_intel_display(plane->base.dev); in skl_plane_async_flip()
1601 enum plane_id plane_id = plane->id; in skl_plane_async_flip()
1602 enum pipe pipe = plane->pipe; in skl_plane_async_flip()
1636 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in skl_plane_check_fb() local
1637 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in skl_plane_check_fb()
1731 to_i915(plane_state->uapi.plane->dev); in skl_plane_check_dst_coordinates()
1748 "requested plane X %s position %d invalid (valid range %d-%d)\n", in skl_plane_check_dst_coordinates()
1760 struct drm_i915_private *i915 = to_i915(plane_state->uapi.plane->dev); in skl_plane_check_nv12_rotation()
1793 static int intel_plane_min_width(struct intel_plane *plane, in intel_plane_min_width() argument
1798 if (plane->min_width) in intel_plane_min_width()
1799 return plane->min_width(fb, color_plane, rotation); in intel_plane_min_width()
1804 static int intel_plane_max_width(struct intel_plane *plane, in intel_plane_max_width() argument
1809 if (plane->max_width) in intel_plane_max_width()
1810 return plane->max_width(fb, color_plane, rotation); in intel_plane_max_width()
1815 static int intel_plane_max_height(struct intel_plane *plane, in intel_plane_max_height() argument
1820 if (plane->max_height) in intel_plane_max_height()
1821 return plane->max_height(fb, color_plane, rotation); in intel_plane_max_height()
1831 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in skl_check_main_ccs_coordinates() local
1836 unsigned int alignment = plane->min_alignment(plane, fb, ccs_plane); in skl_check_main_ccs_coordinates()
1875 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in skl_calc_main_surface_offset() local
1876 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in skl_calc_main_surface_offset()
1880 unsigned int alignment = plane->min_alignment(plane, fb, 0); in skl_calc_main_surface_offset()
1899 * When using an X-tiled surface, the plane blows up in skl_calc_main_surface_offset()
1925 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in skl_check_main_surface() local
1926 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in skl_check_main_surface()
1933 int min_width = intel_plane_min_width(plane, fb, 0, rotation); in skl_check_main_surface()
1934 int max_width = intel_plane_max_width(plane, fb, 0, rotation); in skl_check_main_surface()
1935 int max_height = intel_plane_max_height(plane, fb, 0, rotation); in skl_check_main_surface()
1936 unsigned int alignment = plane->min_alignment(plane, fb, 0); in skl_check_main_surface()
1955 * there's no aux plane on fb so skip this checking. in skl_check_main_surface()
1996 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in skl_check_nv12_aux_surface() local
1997 struct drm_i915_private *i915 = to_i915(plane->base.dev); in skl_check_nv12_aux_surface()
2003 int max_width = intel_plane_max_width(plane, fb, uv_plane, rotation); in skl_check_nv12_aux_surface()
2004 int max_height = intel_plane_max_height(plane, fb, uv_plane, rotation); in skl_check_nv12_aux_surface()
2011 /* FIXME not quite sure how/if these apply to the chroma plane */ in skl_check_nv12_aux_surface()
2025 unsigned int alignment = plane->min_alignment(plane, fb, uv_plane); in skl_check_nv12_aux_surface()
2160 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in check_protection() local
2161 struct drm_i915_private *i915 = to_i915(plane->base.dev); in check_protection()
2176 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in skl_plane_check() local
2177 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in skl_plane_check()
2219 /* HW only has 8 bits pixel precision, disable plane if invisible */ in skl_plane_check()
2230 icl_is_hdr_plane(dev_priv, plane->id)) in skl_plane_check()
2330 struct intel_plane *plane = to_intel_plane(_plane); in skl_plane_format_mod_supported() local
2332 if (!intel_fb_plane_supports_modifier(plane, modifier)) in skl_plane_format_mod_supported()
2384 struct intel_plane *plane = to_intel_plane(_plane); in icl_plane_format_mod_supported() local
2386 if (!intel_fb_plane_supports_modifier(plane, modifier)) in icl_plane_format_mod_supported()
2438 struct intel_plane *plane = to_intel_plane(_plane); in tgl_plane_format_mod_supported() local
2440 if (!intel_fb_plane_supports_modifier(plane, modifier)) in tgl_plane_format_mod_supported()
2515 skl_plane_enable_flip_done(struct intel_plane *plane) in skl_plane_enable_flip_done() argument
2517 struct drm_i915_private *i915 = to_i915(plane->base.dev); in skl_plane_enable_flip_done()
2518 enum pipe pipe = plane->pipe; in skl_plane_enable_flip_done()
2521 bdw_enable_pipe_irq(i915, pipe, GEN9_PIPE_PLANE_FLIP_DONE(plane->id)); in skl_plane_enable_flip_done()
2526 skl_plane_disable_flip_done(struct intel_plane *plane) in skl_plane_disable_flip_done() argument
2528 struct drm_i915_private *i915 = to_i915(plane->base.dev); in skl_plane_disable_flip_done()
2529 enum pipe pipe = plane->pipe; in skl_plane_disable_flip_done()
2532 bdw_disable_pipe_irq(i915, pipe, GEN9_PIPE_PLANE_FLIP_DONE(plane->id)); in skl_plane_disable_flip_done()
2607 struct intel_plane *plane; in skl_universal_plane_create() local
2616 plane = intel_plane_alloc(); in skl_universal_plane_create()
2617 if (IS_ERR(plane)) in skl_universal_plane_create()
2618 return plane; in skl_universal_plane_create()
2620 plane->pipe = pipe; in skl_universal_plane_create()
2621 plane->id = plane_id; in skl_universal_plane_create()
2622 plane->frontbuffer_bit = INTEL_FRONTBUFFER(pipe, plane_id); in skl_universal_plane_create()
2624 intel_fbc_add_plane(skl_plane_fbc(dev_priv, pipe, plane_id), plane); in skl_universal_plane_create()
2627 plane->max_width = xe3_plane_max_width; in skl_universal_plane_create()
2628 plane->max_height = icl_plane_max_height; in skl_universal_plane_create()
2629 plane->min_cdclk = icl_plane_min_cdclk; in skl_universal_plane_create()
2631 plane->min_width = icl_plane_min_width; in skl_universal_plane_create()
2633 plane->max_width = icl_hdr_plane_max_width; in skl_universal_plane_create()
2635 plane->max_width = icl_sdr_plane_max_width; in skl_universal_plane_create()
2636 plane->max_height = icl_plane_max_height; in skl_universal_plane_create()
2637 plane->min_cdclk = icl_plane_min_cdclk; in skl_universal_plane_create()
2639 plane->max_width = glk_plane_max_width; in skl_universal_plane_create()
2640 plane->max_height = skl_plane_max_height; in skl_universal_plane_create()
2641 plane->min_cdclk = glk_plane_min_cdclk; in skl_universal_plane_create()
2643 plane->max_width = skl_plane_max_width; in skl_universal_plane_create()
2644 plane->max_height = skl_plane_max_height; in skl_universal_plane_create()
2645 plane->min_cdclk = skl_plane_min_cdclk; in skl_universal_plane_create()
2649 plane->max_stride = adl_plane_max_stride; in skl_universal_plane_create()
2651 plane->max_stride = skl_plane_max_stride; in skl_universal_plane_create()
2654 plane->min_alignment = tgl_plane_min_alignment; in skl_universal_plane_create()
2656 plane->min_alignment = skl_plane_min_alignment; in skl_universal_plane_create()
2659 plane->update_noarm = icl_plane_update_noarm; in skl_universal_plane_create()
2660 plane->update_arm = icl_plane_update_arm; in skl_universal_plane_create()
2661 plane->disable_arm = icl_plane_disable_arm; in skl_universal_plane_create()
2663 plane->update_noarm = skl_plane_update_noarm; in skl_universal_plane_create()
2664 plane->update_arm = skl_plane_update_arm; in skl_universal_plane_create()
2665 plane->disable_arm = skl_plane_disable_arm; in skl_universal_plane_create()
2667 plane->get_hw_state = skl_plane_get_hw_state; in skl_universal_plane_create()
2668 plane->check_plane = skl_plane_check; in skl_universal_plane_create()
2671 plane->need_async_flip_toggle_wa = IS_DISPLAY_VER(dev_priv, 9, 10); in skl_universal_plane_create()
2672 plane->async_flip = skl_plane_async_flip; in skl_universal_plane_create()
2673 plane->enable_flip_done = skl_plane_enable_flip_done; in skl_universal_plane_create()
2674 plane->disable_flip_done = skl_plane_disable_flip_done; in skl_universal_plane_create()
2702 ret = drm_universal_plane_init(&dev_priv->drm, &plane->base, in skl_universal_plane_create()
2706 "plane %d%c", plane_id + 1, in skl_universal_plane_create()
2724 drm_plane_create_rotation_property(&plane->base, in skl_universal_plane_create()
2733 drm_plane_create_color_properties(&plane->base, in skl_universal_plane_create()
2740 drm_plane_create_alpha_property(&plane->base); in skl_universal_plane_create()
2741 drm_plane_create_blend_mode_property(&plane->base, in skl_universal_plane_create()
2746 drm_plane_create_zpos_immutable_property(&plane->base, plane_id); in skl_universal_plane_create()
2749 drm_plane_enable_fb_damage_clips(&plane->base); in skl_universal_plane_create()
2752 drm_plane_create_scaling_filter_property(&plane->base, in skl_universal_plane_create()
2756 intel_plane_helper_add(plane); in skl_universal_plane_create()
2758 return plane; in skl_universal_plane_create()
2761 intel_plane_free(plane); in skl_universal_plane_create()
2774 struct intel_plane *plane = to_intel_plane(crtc->base.primary); in skl_get_initial_plane_config() local
2775 enum plane_id plane_id = plane->id; in skl_get_initial_plane_config()
2784 if (!plane->get_hw_state(plane, &pipe)) in skl_get_initial_plane_config()
2929 crtc->base.name, plane->base.name, fb->width, fb->height, in skl_get_initial_plane_config()
2944 struct intel_plane *plane = to_intel_plane(crtc->base.primary); in skl_fixup_initial_plane_config() local
2946 to_intel_plane_state(plane->base.state); in skl_fixup_initial_plane_config()
2947 enum plane_id plane_id = plane->id; in skl_fixup_initial_plane_config()
2958 * part of ggtt, make the plane aware of that. in skl_fixup_initial_plane_config()