Lines Matching full:plane

342 		 * - 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()
464 skl_plane_max_stride(struct intel_plane *plane, in skl_plane_max_stride() argument
468 struct drm_i915_private *i915 = to_i915(plane->base.dev); in skl_plane_max_stride()
516 icl_program_input_csc(struct intel_plane *plane, in icl_program_input_csc() argument
520 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in icl_program_input_csc()
521 enum pipe pipe = plane->pipe; in icl_program_input_csc()
522 enum plane_id plane_id = plane->id; in icl_program_input_csc()
620 skl_plane_disable_arm(struct intel_plane *plane, in skl_plane_disable_arm() argument
623 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in skl_plane_disable_arm()
624 enum plane_id plane_id = plane->id; in skl_plane_disable_arm()
625 enum pipe pipe = plane->pipe; in skl_plane_disable_arm()
627 skl_write_plane_wm(plane, crtc_state); in skl_plane_disable_arm()
633 static void icl_plane_disable_sel_fetch_arm(struct intel_plane *plane, in icl_plane_disable_sel_fetch_arm() argument
636 struct drm_i915_private *i915 = to_i915(plane->base.dev); in icl_plane_disable_sel_fetch_arm()
637 enum pipe pipe = plane->pipe; in icl_plane_disable_sel_fetch_arm()
642 intel_de_write_fw(i915, PLANE_SEL_FETCH_CTL(pipe, plane->id), 0); in icl_plane_disable_sel_fetch_arm()
646 icl_plane_disable_arm(struct intel_plane *plane, in icl_plane_disable_arm() argument
649 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in icl_plane_disable_arm()
650 enum plane_id plane_id = plane->id; in icl_plane_disable_arm()
651 enum pipe pipe = plane->pipe; in icl_plane_disable_arm()
656 skl_write_plane_wm(plane, crtc_state); in icl_plane_disable_arm()
658 icl_plane_disable_sel_fetch_arm(plane, crtc_state); in icl_plane_disable_arm()
664 skl_plane_get_hw_state(struct intel_plane *plane, in skl_plane_get_hw_state() argument
667 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in skl_plane_get_hw_state()
669 enum plane_id plane_id = plane->id; in skl_plane_get_hw_state()
673 power_domain = POWER_DOMAIN_PIPE(plane->pipe); in skl_plane_get_hw_state()
678 ret = intel_de_read(dev_priv, PLANE_CTL(plane->pipe, plane_id)) & PLANE_CTL_ENABLE; in skl_plane_get_hw_state()
680 *pipe = plane->pipe; in skl_plane_get_hw_state()
915 to_i915(plane_state->uapi.plane->dev); in skl_plane_ctl()
975 to_i915(plane_state->uapi.plane->dev); in glk_plane_color_ctl()
977 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in glk_plane_color_ctl() local
983 if (fb->format->is_yuv && !icl_is_hdr_plane(dev_priv, plane->id)) { in glk_plane_color_ctl()
1013 struct drm_i915_private *i915 = to_i915(plane_state->uapi.plane->dev); in skl_surf_address()
1049 struct drm_i915_private *i915 = to_i915(plane_state->uapi.plane->dev); in skl_plane_aux_dist()
1094 static void icl_plane_csc_load_black(struct intel_plane *plane) in icl_plane_csc_load_black() argument
1096 struct drm_i915_private *i915 = to_i915(plane->base.dev); in icl_plane_csc_load_black()
1097 enum plane_id plane_id = plane->id; in icl_plane_csc_load_black()
1098 enum pipe pipe = plane->pipe; in icl_plane_csc_load_black()
1120 /* Program the UV plane on planar master */ in icl_plane_color_plane()
1128 skl_plane_update_noarm(struct intel_plane *plane, in skl_plane_update_noarm() argument
1132 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in skl_plane_update_noarm()
1133 enum plane_id plane_id = plane->id; in skl_plane_update_noarm()
1134 enum pipe pipe = plane->pipe; in skl_plane_update_noarm()
1154 skl_write_plane_wm(plane, crtc_state); in skl_plane_update_noarm()
1158 skl_plane_update_arm(struct intel_plane *plane, in skl_plane_update_arm() argument
1162 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in skl_plane_update_arm()
1163 enum plane_id plane_id = plane->id; in skl_plane_update_arm()
1164 enum pipe pipe = plane->pipe; in skl_plane_update_arm()
1194 * Enable the scaler before the plane so that we don't in skl_plane_update_arm()
1201 skl_program_plane_scaler(plane, crtc_state, plane_state); in skl_plane_update_arm()
1204 * The control register self-arms if the plane was previously in skl_plane_update_arm()
1205 * disabled. Try to make the plane enable atomic by writing in skl_plane_update_arm()
1213 static void icl_plane_update_sel_fetch_noarm(struct intel_plane *plane, in icl_plane_update_sel_fetch_noarm() argument
1218 struct drm_i915_private *i915 = to_i915(plane->base.dev); in icl_plane_update_sel_fetch_noarm()
1219 enum pipe pipe = plane->pipe; in icl_plane_update_sel_fetch_noarm()
1231 intel_de_write_fw(i915, PLANE_SEL_FETCH_POS(pipe, plane->id), val); in icl_plane_update_sel_fetch_noarm()
1236 * From Bspec: UV surface Start Y Position = half of Y plane Y in icl_plane_update_sel_fetch_noarm()
1246 intel_de_write_fw(i915, PLANE_SEL_FETCH_OFFSET(pipe, plane->id), in icl_plane_update_sel_fetch_noarm()
1252 intel_de_write_fw(i915, PLANE_SEL_FETCH_SIZE(pipe, plane->id), val); in icl_plane_update_sel_fetch_noarm()
1256 icl_plane_update_noarm(struct intel_plane *plane, in icl_plane_update_noarm() argument
1260 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in icl_plane_update_noarm()
1261 enum plane_id plane_id = plane->id; in icl_plane_update_noarm()
1262 enum pipe pipe = plane->pipe; in icl_plane_update_noarm()
1316 icl_program_input_csc(plane, crtc_state, plane_state); in icl_plane_update_noarm()
1318 skl_write_plane_wm(plane, crtc_state); in icl_plane_update_noarm()
1325 icl_plane_csc_load_black(plane); in icl_plane_update_noarm()
1327 icl_plane_update_sel_fetch_noarm(plane, crtc_state, plane_state, color_plane); in icl_plane_update_noarm()
1330 static void icl_plane_update_sel_fetch_arm(struct intel_plane *plane, in icl_plane_update_sel_fetch_arm() argument
1334 struct drm_i915_private *i915 = to_i915(plane->base.dev); in icl_plane_update_sel_fetch_arm()
1335 enum pipe pipe = plane->pipe; in icl_plane_update_sel_fetch_arm()
1341 intel_de_write_fw(i915, PLANE_SEL_FETCH_CTL(pipe, plane->id), in icl_plane_update_sel_fetch_arm()
1344 icl_plane_disable_sel_fetch_arm(plane, crtc_state); in icl_plane_update_sel_fetch_arm()
1348 icl_plane_update_arm(struct intel_plane *plane, in icl_plane_update_arm() argument
1352 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in icl_plane_update_arm()
1353 enum plane_id plane_id = plane->id; in icl_plane_update_arm()
1354 enum pipe pipe = plane->pipe; in icl_plane_update_arm()
1362 * Enable the scaler before the plane so that we don't in icl_plane_update_arm()
1369 skl_program_plane_scaler(plane, crtc_state, plane_state); in icl_plane_update_arm()
1371 icl_plane_update_sel_fetch_arm(plane, crtc_state, plane_state); in icl_plane_update_arm()
1374 * The control register self-arms if the plane was previously in icl_plane_update_arm()
1375 * disabled. Try to make the plane enable atomic by writing in icl_plane_update_arm()
1384 skl_plane_async_flip(struct intel_plane *plane, in skl_plane_async_flip() argument
1389 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in skl_plane_async_flip()
1390 enum plane_id plane_id = plane->id; in skl_plane_async_flip()
1391 enum pipe pipe = plane->pipe; in skl_plane_async_flip()
1419 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in skl_plane_check_fb() local
1420 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in skl_plane_check_fb()
1503 to_i915(plane_state->uapi.plane->dev); in skl_plane_check_dst_coordinates()
1520 "requested plane X %s position %d invalid (valid range %d-%d)\n", in skl_plane_check_dst_coordinates()
1532 struct drm_i915_private *i915 = to_i915(plane_state->uapi.plane->dev); in skl_plane_check_nv12_rotation()
1565 static int intel_plane_min_width(struct intel_plane *plane, in intel_plane_min_width() argument
1570 if (plane->min_width) in intel_plane_min_width()
1571 return plane->min_width(fb, color_plane, rotation); in intel_plane_min_width()
1576 static int intel_plane_max_width(struct intel_plane *plane, in intel_plane_max_width() argument
1581 if (plane->max_width) in intel_plane_max_width()
1582 return plane->max_width(fb, color_plane, rotation); in intel_plane_max_width()
1587 static int intel_plane_max_height(struct intel_plane *plane, in intel_plane_max_height() argument
1592 if (plane->max_height) in intel_plane_max_height()
1593 return plane->max_height(fb, color_plane, rotation); in intel_plane_max_height()
1647 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in skl_calc_main_surface_offset() local
1648 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in skl_calc_main_surface_offset()
1671 * When using an X-tiled surface, the plane blows up in skl_calc_main_surface_offset()
1697 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in skl_check_main_surface() local
1698 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in skl_check_main_surface()
1705 const int min_width = intel_plane_min_width(plane, fb, 0, rotation); in skl_check_main_surface()
1706 const int max_width = intel_plane_max_width(plane, fb, 0, rotation); in skl_check_main_surface()
1707 const int max_height = intel_plane_max_height(plane, fb, 0, rotation); in skl_check_main_surface()
1727 * there's no aux plane on fb so skip this checking. in skl_check_main_surface()
1768 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in skl_check_nv12_aux_surface() local
1769 struct drm_i915_private *i915 = to_i915(plane->base.dev); in skl_check_nv12_aux_surface()
1775 int max_width = intel_plane_max_width(plane, fb, uv_plane, rotation); in skl_check_nv12_aux_surface()
1776 int max_height = intel_plane_max_height(plane, fb, uv_plane, rotation); in skl_check_nv12_aux_surface()
1783 /* FIXME not quite sure how/if these apply to the chroma plane */ in skl_check_nv12_aux_surface()
1932 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in check_protection() local
1933 struct drm_i915_private *i915 = to_i915(plane->base.dev); in check_protection()
1948 struct intel_plane *plane = to_intel_plane(plane_state->uapi.plane); in skl_plane_check() local
1949 struct drm_i915_private *dev_priv = to_i915(plane->base.dev); in skl_plane_check()
1991 /* HW only has 8 bits pixel precision, disable plane if invisible */ in skl_plane_check()
2002 icl_is_hdr_plane(dev_priv, plane->id)) in skl_plane_check()
2102 struct intel_plane *plane = to_intel_plane(_plane); in skl_plane_format_mod_supported() local
2104 if (!intel_fb_plane_supports_modifier(plane, modifier)) in skl_plane_format_mod_supported()
2156 struct intel_plane *plane = to_intel_plane(_plane); in gen12_plane_format_mod_supported() local
2158 if (!intel_fb_plane_supports_modifier(plane, modifier)) in gen12_plane_format_mod_supported()
2224 skl_plane_enable_flip_done(struct intel_plane *plane) in skl_plane_enable_flip_done() argument
2226 struct drm_i915_private *i915 = to_i915(plane->base.dev); in skl_plane_enable_flip_done()
2227 enum pipe pipe = plane->pipe; in skl_plane_enable_flip_done()
2230 bdw_enable_pipe_irq(i915, pipe, GEN9_PIPE_PLANE_FLIP_DONE(plane->id)); in skl_plane_enable_flip_done()
2235 skl_plane_disable_flip_done(struct intel_plane *plane) in skl_plane_disable_flip_done() argument
2237 struct drm_i915_private *i915 = to_i915(plane->base.dev); in skl_plane_disable_flip_done()
2238 enum pipe pipe = plane->pipe; in skl_plane_disable_flip_done()
2241 bdw_disable_pipe_irq(i915, pipe, GEN9_PIPE_PLANE_FLIP_DONE(plane->id)); in skl_plane_disable_flip_done()
2310 struct intel_plane *plane; in skl_universal_plane_create() local
2319 plane = intel_plane_alloc(); in skl_universal_plane_create()
2320 if (IS_ERR(plane)) in skl_universal_plane_create()
2321 return plane; in skl_universal_plane_create()
2323 plane->pipe = pipe; in skl_universal_plane_create()
2324 plane->id = plane_id; in skl_universal_plane_create()
2325 plane->frontbuffer_bit = INTEL_FRONTBUFFER(pipe, plane_id); in skl_universal_plane_create()
2327 intel_fbc_add_plane(skl_plane_fbc(dev_priv, pipe, plane_id), plane); in skl_universal_plane_create()
2330 plane->min_width = icl_plane_min_width; in skl_universal_plane_create()
2332 plane->max_width = icl_hdr_plane_max_width; in skl_universal_plane_create()
2334 plane->max_width = icl_sdr_plane_max_width; in skl_universal_plane_create()
2335 plane->max_height = icl_plane_max_height; in skl_universal_plane_create()
2336 plane->min_cdclk = icl_plane_min_cdclk; in skl_universal_plane_create()
2338 plane->max_width = glk_plane_max_width; in skl_universal_plane_create()
2339 plane->max_height = skl_plane_max_height; in skl_universal_plane_create()
2340 plane->min_cdclk = glk_plane_min_cdclk; in skl_universal_plane_create()
2342 plane->max_width = skl_plane_max_width; in skl_universal_plane_create()
2343 plane->max_height = skl_plane_max_height; in skl_universal_plane_create()
2344 plane->min_cdclk = skl_plane_min_cdclk; in skl_universal_plane_create()
2347 plane->max_stride = skl_plane_max_stride; in skl_universal_plane_create()
2349 plane->update_noarm = icl_plane_update_noarm; in skl_universal_plane_create()
2350 plane->update_arm = icl_plane_update_arm; in skl_universal_plane_create()
2351 plane->disable_arm = icl_plane_disable_arm; in skl_universal_plane_create()
2353 plane->update_noarm = skl_plane_update_noarm; in skl_universal_plane_create()
2354 plane->update_arm = skl_plane_update_arm; in skl_universal_plane_create()
2355 plane->disable_arm = skl_plane_disable_arm; in skl_universal_plane_create()
2357 plane->get_hw_state = skl_plane_get_hw_state; in skl_universal_plane_create()
2358 plane->check_plane = skl_plane_check; in skl_universal_plane_create()
2361 plane->need_async_flip_disable_wa = IS_DISPLAY_VER(dev_priv, in skl_universal_plane_create()
2363 plane->async_flip = skl_plane_async_flip; in skl_universal_plane_create()
2364 plane->enable_flip_done = skl_plane_enable_flip_done; in skl_universal_plane_create()
2365 plane->disable_flip_done = skl_plane_disable_flip_done; in skl_universal_plane_create()
2391 ret = drm_universal_plane_init(&dev_priv->drm, &plane->base, in skl_universal_plane_create()
2395 "plane %d%c", plane_id + 1, in skl_universal_plane_create()
2413 drm_plane_create_rotation_property(&plane->base, in skl_universal_plane_create()
2422 drm_plane_create_color_properties(&plane->base, in skl_universal_plane_create()
2429 drm_plane_create_alpha_property(&plane->base); in skl_universal_plane_create()
2430 drm_plane_create_blend_mode_property(&plane->base, in skl_universal_plane_create()
2435 drm_plane_create_zpos_immutable_property(&plane->base, plane_id); in skl_universal_plane_create()
2438 drm_plane_enable_fb_damage_clips(&plane->base); in skl_universal_plane_create()
2441 drm_plane_create_scaling_filter_property(&plane->base, in skl_universal_plane_create()
2445 intel_plane_helper_add(plane); in skl_universal_plane_create()
2447 return plane; in skl_universal_plane_create()
2450 intel_plane_free(plane); in skl_universal_plane_create()
2462 struct intel_plane *plane = to_intel_plane(crtc->base.primary); in skl_get_initial_plane_config() local
2463 enum plane_id plane_id = plane->id; in skl_get_initial_plane_config()
2472 if (!plane->get_hw_state(plane, &pipe)) in skl_get_initial_plane_config()
2617 crtc->base.name, plane->base.name, fb->width, fb->height, in skl_get_initial_plane_config()