{ .format = DRM_FORMAT_YVU444, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 1, .vsub = 1, .is_yuv = true },
{ .format = DRM_FORMAT_NV12, .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 2, .is_yuv = true },
{ .format = DRM_FORMAT_NV21, .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 2, .is_yuv = true },
+ { .format = DRM_FORMAT_P010, .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 2, .is_yuv = true },
{ .format = DRM_FORMAT_NV16, .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 1, .is_yuv = true },
{ .format = DRM_FORMAT_NV61, .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 1, .is_yuv = true },
{ .format = DRM_FORMAT_NV24, .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 1, .vsub = 1, .is_yuv = true },
switch (format) {
case DRM_FORMAT_NV12:
case DRM_FORMAT_NV21:
+ case DRM_FORMAT_P010:
return modifier == DRM_FORMAT_MOD_VSI_G1_TILED ||
modifier == DRM_FORMAT_MOD_VSI_G2_TILED ||
modifier == DRM_FORMAT_MOD_VSI_G2_TILED_COMPRESSED;
case DRM_PLANE_TYPE_OVERLAY:
if (!modifiers_present ||
(pix_format != DRM_FORMAT_NV12 &&
- pix_format != DRM_FORMAT_NV21)) {
+ pix_format != DRM_FORMAT_NV21 &&
+ pix_format != DRM_FORMAT_P010)) {
dcss_dtrc_bypass(dcss_plane->dcss, dcss_plane->ch_num);
return;
}
ipipe_cfg.pixel_format = pixel_format;
ipipe_cfg.nl = NL_REC709;
- ipipe_cfg.pr = PR_FULL;
+ ipipe_cfg.pr = PR_LIMITED;
ipipe_cfg.g = G_REC709;
dcss_crtc_get_opipe_cfg(state->crtc, &opipe_cfg);
/* apparently the other settins that are read from connector are not good,
* so hardcode */
opipe_cfg.nl = NL_REC709;
+ opipe_cfg.pr = PR_FULL;
opipe_cfg.g = G_REC2020;
dcss_hdr10_setup(dcss_plane->dcss, dcss_plane->ch_num,
u32 gap = DCSS_DPR_FRAME_2P_BASE_ADDR - DCSS_DPR_FRAME_1P_BASE_ADDR;
u32 pix_format = dpr->ch[ch_num].pix_format;
- if (pix_format == DRM_FORMAT_NV12 || pix_format == DRM_FORMAT_NV21)
+ if (pix_format == DRM_FORMAT_NV12 ||
+ pix_format == DRM_FORMAT_NV21 ||
+ pix_format == DRM_FORMAT_P010)
max_planes = 2;
for (plane = 0; plane < max_planes; plane++) {
switch (pix_format) {
case DRM_FORMAT_NV21:
case DRM_FORMAT_NV12:
+ case DRM_FORMAT_P010:
ch->rtram_3buf_en = 1;
ch->rtram_4line_en = 0;
break;
switch (pix_format) {
case DRM_FORMAT_NV12:
case DRM_FORMAT_NV21:
+ case DRM_FORMAT_P010:
bpp = 8;
break;
dtg->alpha = 255;
dtg->use_global = 0;
- dtg->control_status |= BLENDER_VIDEO_ALPHA_SEL |
+ dtg->control_status |= OVL_DATA_MODE | BLENDER_VIDEO_ALPHA_SEL |
((dtg->alpha << DEFAULT_FG_ALPHA_POS) & DEFAULT_FG_ALPHA_MASK);
return 0;
pix_format == DRM_FORMAT_YUYV ||
pix_format == DRM_FORMAT_YVYU ||
pix_format == DRM_FORMAT_NV12 ||
- pix_format == DRM_FORMAT_NV21;
+ pix_format == DRM_FORMAT_NV21 ||
+ pix_format == DRM_FORMAT_P010;
}
bool dcss_dtg_global_alpha_changed(struct dcss_soc *dcss, int ch_num,
pix_format == DRM_FORMAT_YUYV || pix_format == DRM_FORMAT_YVYU)
csrc_xres >>= 1;
else if (pix_format == DRM_FORMAT_NV12 ||
- pix_format == DRM_FORMAT_NV21) {
+ pix_format == DRM_FORMAT_NV21 ||
+ pix_format == DRM_FORMAT_P010) {
csrc_xres >>= 1;
csrc_yres >>= 1;
}
pix_format == DRM_FORMAT_YUYV || pix_format == DRM_FORMAT_YVYU) {
c_hinc >>= 1;
} else if (pix_format == DRM_FORMAT_NV12 ||
- pix_format == DRM_FORMAT_NV21) {
+ pix_format == DRM_FORMAT_NV21 ||
+ pix_format == DRM_FORMAT_P010) {
c_hinc >>= 1;
c_vinc >>= 1;
}
dcss_scaler_yuv_enable(dcss, ch_num, true);
if (pix_format == DRM_FORMAT_NV12 ||
- pix_format == DRM_FORMAT_NV21) {
+ pix_format == DRM_FORMAT_NV21 ||
+ pix_format == DRM_FORMAT_P010) {
rtr_8line_en = true;
src_format = BUF_FMT_YUV420;
} else if (pix_format == DRM_FORMAT_UYVY ||