FROMLIST: drm/rockchip: vop: correct the source size of uv scale factor setting
authorMark Yao <mark.yao@rock-chips.com>
Mon, 6 Jun 2016 07:58:46 +0000 (15:58 +0800)
committerHuang, Tao <huangtao@rock-chips.com>
Tue, 28 Jun 2016 10:41:00 +0000 (18:41 +0800)
When the input color format is YUV, we need to do some external scale
for CBCR. Like,
 * In YUV420 data format:
     cbcr_xscale = dst_w / src_w * 2;
     cbcr_yscale = dst_h / src_h * 2;
 * In YUV422 data format:
     cbcr_xscale = dst_w / src_w * 2;
     cbcr_yscale = dst_h / src_h;
 * In YUV444 data format
     cbcr_xscale = dst_w / src_w;
     cbcr_yscale = dst_h / src_h;

Change-Id: I73e0423d3662bd340b5d155996f13d31c22dcc29
Signed-off-by: Yakir Yang <ykk@rock-chips.com>
(am from https://patchwork.kernel.org/patch/9157353/)

drivers/gpu/drm/rockchip/rockchip_drm_vop.c

index c9a521412fb979409aad11327c75f41ad8b7f447..51bf2929d2c5f1743b0c9e0050521aa08ed903a3 100644 (file)
@@ -358,9 +358,9 @@ static void scl_vop_cal_scl_fac(struct vop *vop, struct vop_win *win,
                            scl_cal_scale2(src_h, dst_h));
                if (is_yuv) {
                        VOP_SCL_SET(vop, win, scale_cbcr_x,
-                                   scl_cal_scale2(src_w, dst_w));
+                                   scl_cal_scale2(cbcr_src_w, dst_w));
                        VOP_SCL_SET(vop, win, scale_cbcr_y,
-                                   scl_cal_scale2(src_h, dst_h));
+                                   scl_cal_scale2(cbcr_src_h, dst_h));
                }
                return;
        }