Lines Matching refs:win
218 struct vop2_win win[]; member
260 static void vop2_win_write(const struct vop2_win *win, unsigned int reg, u32 v) in vop2_win_write() argument
262 regmap_field_write(win->reg[reg], v); in vop2_win_write()
265 static bool vop2_cluster_window(const struct vop2_win *win) in vop2_cluster_window() argument
267 return win->data->feature & WIN_FEATURE_CLUSTER; in vop2_cluster_window()
278 static void vop2_win_disable(struct vop2_win *win) in vop2_win_disable() argument
280 vop2_win_write(win, VOP2_WIN_ENABLE, 0); in vop2_win_disable()
282 if (vop2_cluster_window(win)) in vop2_win_disable()
283 vop2_win_write(win, VOP2_WIN_CLUSTER_ENABLE, 0); in vop2_win_disable()
462 struct vop2_win *win = to_vop2_win(plane); in rockchip_vop2_mod_supported() local
463 struct vop2 *vop2 = win->vop2; in rockchip_vop2_mod_supported()
565 static int vop2_get_cluster_lb_mode(struct vop2_win *win, in vop2_get_cluster_lb_mode() argument
605 static void vop2_setup_scale(struct vop2 *vop2, const struct vop2_win *win, in vop2_setup_scale() argument
643 if (!(win->data->feature & WIN_FEATURE_AFBDC)) { in vop2_setup_scale()
646 win->data->name, dst_w); in vop2_setup_scale()
652 vop2_win_write(win, VOP2_WIN_SCALE_YRGB_X, val); in vop2_setup_scale()
654 vop2_win_write(win, VOP2_WIN_SCALE_YRGB_Y, val); in vop2_setup_scale()
656 vop2_win_write(win, VOP2_WIN_VSD_YRGB_GT4, gt4); in vop2_setup_scale()
657 vop2_win_write(win, VOP2_WIN_VSD_YRGB_GT2, gt2); in vop2_setup_scale()
659 vop2_win_write(win, VOP2_WIN_YRGB_HOR_SCL_MODE, hor_scl_mode); in vop2_setup_scale()
660 vop2_win_write(win, VOP2_WIN_YRGB_VER_SCL_MODE, ver_scl_mode); in vop2_setup_scale()
662 if (vop2_cluster_window(win)) in vop2_setup_scale()
665 vop2_win_write(win, VOP2_WIN_YRGB_HSCL_FILTER_MODE, hscl_filter_mode); in vop2_setup_scale()
666 vop2_win_write(win, VOP2_WIN_YRGB_VSCL_FILTER_MODE, vscl_filter_mode); in vop2_setup_scale()
687 vop2_win_write(win, VOP2_WIN_SCALE_CBCR_X, val); in vop2_setup_scale()
690 vop2_win_write(win, VOP2_WIN_SCALE_CBCR_Y, val); in vop2_setup_scale()
692 vop2_win_write(win, VOP2_WIN_VSD_CBCR_GT4, gt4); in vop2_setup_scale()
693 vop2_win_write(win, VOP2_WIN_VSD_CBCR_GT2, gt2); in vop2_setup_scale()
694 vop2_win_write(win, VOP2_WIN_CBCR_HOR_SCL_MODE, hor_scl_mode); in vop2_setup_scale()
695 vop2_win_write(win, VOP2_WIN_CBCR_VER_SCL_MODE, ver_scl_mode); in vop2_setup_scale()
696 vop2_win_write(win, VOP2_WIN_CBCR_HSCL_FILTER_MODE, hscl_filter_mode); in vop2_setup_scale()
697 vop2_win_write(win, VOP2_WIN_CBCR_VSCL_FILTER_MODE, vscl_filter_mode); in vop2_setup_scale()
755 struct vop2_win *win, in vop2_setup_csc_mode() argument
780 vop2_win_write(win, VOP2_WIN_Y2R_EN, y2r_en); in vop2_setup_csc_mode()
781 vop2_win_write(win, VOP2_WIN_R2Y_EN, r2y_en); in vop2_setup_csc_mode()
782 vop2_win_write(win, VOP2_WIN_CSC_MODE, csc_mode); in vop2_setup_csc_mode()
1010 struct vop2_win *win = to_vop2_win(plane); in vop2_plane_atomic_disable() local
1011 struct vop2 *vop2 = win->vop2; in vop2_plane_atomic_disable()
1013 drm_dbg(vop2->drm, "%s disable\n", win->data->name); in vop2_plane_atomic_disable()
1020 vop2_win_disable(win); in vop2_plane_atomic_disable()
1021 vop2_win_write(win, VOP2_WIN_YUV_CLIP, 0); in vop2_plane_atomic_disable()
1032 struct vop2_win *win = to_vop2_win(plane); in vop2_plane_setup_color_key() local
1039 vop2_win_write(win, VOP2_WIN_COLOR_KEY_EN, 0); in vop2_plane_setup_color_key()
1070 vop2_win_write(win, VOP2_WIN_COLOR_KEY_EN, color_key_en); in vop2_plane_setup_color_key()
1071 vop2_win_write(win, VOP2_WIN_COLOR_KEY, (r << 20) | (g << 10) | b); in vop2_plane_setup_color_key()
1079 struct vop2_win *win = to_vop2_win(plane); in vop2_plane_atomic_update() local
1082 struct vop2 *vop2 = win->vop2; in vop2_plane_atomic_update()
1154 vp->id, win->data->name, dest->x1, dsp_w, adjusted_mode->hdisplay); in vop2_plane_atomic_update()
1165 vp->id, win->data->name, dest->y1, dsp_h, adjusted_mode->vdisplay); in vop2_plane_atomic_update()
1176 if (!(win->data->feature & WIN_FEATURE_AFBDC)) { in vop2_plane_atomic_update()
1179 vp->id, win->data->name, actual_w); in vop2_plane_atomic_update()
1186 vp->id, win->data->name, actual_w); in vop2_plane_atomic_update()
1196 vp->id, win->data->name, actual_w, actual_h, dsp_w, dsp_h, in vop2_plane_atomic_update()
1220 vp->id, win->data->name, stride); in vop2_plane_atomic_update()
1236 if (vop2_cluster_window(win)) in vop2_plane_atomic_update()
1237 vop2_win_write(win, VOP2_WIN_AFBC_ENABLE, 1); in vop2_plane_atomic_update()
1238 vop2_win_write(win, VOP2_WIN_AFBC_FORMAT, afbc_format); in vop2_plane_atomic_update()
1239 vop2_win_write(win, VOP2_WIN_AFBC_RB_SWAP, rb_swap); in vop2_plane_atomic_update()
1240 vop2_win_write(win, VOP2_WIN_AFBC_UV_SWAP, uv_swap); in vop2_plane_atomic_update()
1241 vop2_win_write(win, VOP2_WIN_AFBC_AUTO_GATING_EN, 0); in vop2_plane_atomic_update()
1242 vop2_win_write(win, VOP2_WIN_AFBC_BLOCK_SPLIT_EN, 0); in vop2_plane_atomic_update()
1244 vop2_win_write(win, VOP2_WIN_AFBC_HALF_BLOCK_EN, 0); in vop2_plane_atomic_update()
1247 vop2_win_write(win, VOP2_WIN_AFBC_HALF_BLOCK_EN, 1); in vop2_plane_atomic_update()
1250 vop2_win_write(win, VOP2_WIN_AFBC_HDR_PTR, yrgb_mst); in vop2_plane_atomic_update()
1251 vop2_win_write(win, VOP2_WIN_AFBC_PIC_SIZE, act_info); in vop2_plane_atomic_update()
1252 vop2_win_write(win, VOP2_WIN_AFBC_TRANSFORM_OFFSET, transform_offset); in vop2_plane_atomic_update()
1253 vop2_win_write(win, VOP2_WIN_AFBC_PIC_OFFSET, ((src->x1 >> 16) | src->y1)); in vop2_plane_atomic_update()
1254 vop2_win_write(win, VOP2_WIN_AFBC_DSP_OFFSET, (dest->x1 | (dest->y1 << 16))); in vop2_plane_atomic_update()
1255 vop2_win_write(win, VOP2_WIN_AFBC_PIC_VIR_WIDTH, stride); in vop2_plane_atomic_update()
1256 vop2_win_write(win, VOP2_WIN_AFBC_TILE_NUM, afbc_tile_num); in vop2_plane_atomic_update()
1257 vop2_win_write(win, VOP2_WIN_XMIRROR, xmirror); in vop2_plane_atomic_update()
1258 vop2_win_write(win, VOP2_WIN_AFBC_ROTATE_270, rotate_270); in vop2_plane_atomic_update()
1259 vop2_win_write(win, VOP2_WIN_AFBC_ROTATE_90, rotate_90); in vop2_plane_atomic_update()
1261 vop2_win_write(win, VOP2_WIN_YRGB_VIR, DIV_ROUND_UP(fb->pitches[0], 4)); in vop2_plane_atomic_update()
1264 vop2_win_write(win, VOP2_WIN_YMIRROR, ymirror); in vop2_plane_atomic_update()
1272 vop2_win_write(win, VOP2_WIN_FORMAT, format); in vop2_plane_atomic_update()
1273 vop2_win_write(win, VOP2_WIN_YRGB_MST, yrgb_mst); in vop2_plane_atomic_update()
1276 vop2_win_write(win, VOP2_WIN_RB_SWAP, rb_swap); in vop2_plane_atomic_update()
1277 if (!vop2_cluster_window(win)) { in vop2_plane_atomic_update()
1279 vop2_win_write(win, VOP2_WIN_UV_SWAP, uv_swap); in vop2_plane_atomic_update()
1283 vop2_win_write(win, VOP2_WIN_UV_VIR, DIV_ROUND_UP(fb->pitches[1], 4)); in vop2_plane_atomic_update()
1284 vop2_win_write(win, VOP2_WIN_UV_MST, uv_mst); in vop2_plane_atomic_update()
1287 vop2_setup_scale(vop2, win, actual_w, actual_h, dsp_w, dsp_h, fb->format->format); in vop2_plane_atomic_update()
1288 if (!vop2_cluster_window(win)) in vop2_plane_atomic_update()
1290 vop2_win_write(win, VOP2_WIN_ACT_INFO, act_info); in vop2_plane_atomic_update()
1291 vop2_win_write(win, VOP2_WIN_DSP_INFO, dsp_info); in vop2_plane_atomic_update()
1292 vop2_win_write(win, VOP2_WIN_DSP_ST, dest->y1 << 16 | (dest->x1 & 0xffff)); in vop2_plane_atomic_update()
1294 vop2_setup_csc_mode(vp, win, pstate); in vop2_plane_atomic_update()
1297 vop2_win_write(win, VOP2_WIN_DITHER_UP, dither_up); in vop2_plane_atomic_update()
1299 vop2_win_write(win, VOP2_WIN_ENABLE, 1); in vop2_plane_atomic_update()
1301 if (vop2_cluster_window(win)) { in vop2_plane_atomic_update()
1302 int lb_mode = vop2_get_cluster_lb_mode(win, pstate); in vop2_plane_atomic_update()
1304 vop2_win_write(win, VOP2_WIN_CLUSTER_LB_MODE, lb_mode); in vop2_plane_atomic_update()
1305 vop2_win_write(win, VOP2_WIN_CLUSTER_ENABLE, 1); in vop2_plane_atomic_update()
1791 struct vop2_win *win = to_vop2_win(plane); in vop2_setup_alpha() local
1795 !vop2_cluster_window(win)) { in vop2_setup_alpha()
1807 struct vop2_win *win = to_vop2_win(plane); in vop2_setup_alpha() local
1815 plane = &win->base; in vop2_setup_alpha()
1829 } else if (vop2_cluster_window(win)) { in vop2_setup_alpha()
1938 struct vop2_win *win = to_vop2_win(plane); in vop2_setup_layer_mixer() local
1940 switch (win->data->phys_id) { in vop2_setup_layer_mixer()
1970 win->data->layer_sel_id); in vop2_setup_layer_mixer()
1987 struct vop2_win *win; in vop2_setup_dly_for_windows() local
1994 win = &vop2->win[i]; in vop2_setup_dly_for_windows()
1995 dly = win->delay; in vop2_setup_dly_for_windows()
1997 switch (win->data->phys_id) { in vop2_setup_dly_for_windows()
2035 struct vop2_win *win = to_vop2_win(plane); in vop2_crtc_atomic_begin() local
2037 win->delay = win->data->dly[VOP2_DLY_MODE_DEFAULT]; in vop2_crtc_atomic_begin()
2039 vp->win_mask |= BIT(win->data->phys_id); in vop2_crtc_atomic_begin()
2041 if (vop2_cluster_window(win)) in vop2_crtc_atomic_begin()
2042 vop2_setup_cluster_alpha(vop2, win); in vop2_crtc_atomic_begin()
2204 static int vop2_plane_init(struct vop2 *vop2, struct vop2_win *win, in vop2_plane_init() argument
2207 const struct vop2_win_data *win_data = win->data; in vop2_plane_init()
2213 ret = drm_universal_plane_init(vop2->drm, &win->base, possible_crtcs, in vop2_plane_init()
2217 win->type, win_data->name); in vop2_plane_init()
2223 drm_plane_helper_add(&win->base, &vop2_plane_helper_funcs); in vop2_plane_init()
2225 if (win->data->supported_rotations) in vop2_plane_init()
2226 drm_plane_create_rotation_property(&win->base, DRM_MODE_ROTATE_0, in vop2_plane_init()
2228 win->data->supported_rotations); in vop2_plane_init()
2229 drm_plane_create_alpha_property(&win->base); in vop2_plane_init()
2230 drm_plane_create_blend_mode_property(&win->base, blend_caps); in vop2_plane_init()
2231 drm_plane_create_zpos_property(&win->base, win->win_id, 0, in vop2_plane_init()
2306 struct vop2_win *win = &vop2->win[i]; in vop2_create_crtcs() local
2315 switch (win->data->phys_id) { in vop2_create_crtcs()
2323 if (win->type == DRM_PLANE_TYPE_PRIMARY) { in vop2_create_crtcs()
2327 vp->primary_plane = win; in vop2_create_crtcs()
2331 win->type = DRM_PLANE_TYPE_OVERLAY; in vop2_create_crtcs()
2335 if (win->type == DRM_PLANE_TYPE_OVERLAY) in vop2_create_crtcs()
2338 ret = vop2_plane_init(vop2, win, possible_crtcs); in vop2_create_crtcs()
2341 win->data->name, ret); in vop2_create_crtcs()
2486 static int vop2_cluster_init(struct vop2_win *win) in vop2_cluster_init() argument
2488 struct vop2 *vop2 = win->vop2; in vop2_cluster_init()
2499 cluster_regs[i].reg += win->offset; in vop2_cluster_init()
2501 ret = devm_regmap_field_bulk_alloc(vop2->dev, vop2->map, win->reg, in vop2_cluster_init()
2570 static int vop2_esmart_init(struct vop2_win *win) in vop2_esmart_init() argument
2572 struct vop2 *vop2 = win->vop2; in vop2_esmart_init()
2583 esmart_regs[i].reg += win->offset; in vop2_esmart_init()
2585 ret = devm_regmap_field_bulk_alloc(vop2->dev, vop2->map, win->reg, in vop2_esmart_init()
2597 struct vop2_win *win; in vop2_win_init() local
2601 const struct vop2_win_data *win_data = &vop2_data->win[i]; in vop2_win_init()
2603 win = &vop2->win[i]; in vop2_win_init()
2604 win->data = win_data; in vop2_win_init()
2605 win->type = win_data->type; in vop2_win_init()
2606 win->offset = win_data->base; in vop2_win_init()
2607 win->win_id = i; in vop2_win_init()
2608 win->vop2 = vop2; in vop2_win_init()
2609 if (vop2_cluster_window(win)) in vop2_win_init()
2610 ret = vop2_cluster_init(win); in vop2_win_init()
2612 ret = vop2_esmart_init(win); in vop2_win_init()
2662 alloc_size = struct_size(vop2, win, vop2_data->win_size); in vop2_bind()