[PATCH 08/10] drm/rockchip: Add R2R registers
Sean Paul
seanpaul at chromium.org
Tue Feb 27 15:41:42 UTC 2018
On Thu, Feb 15, 2018 at 12:32:58AM -0500, Daniele Castagna wrote:
> This patch adds YUV2YUV registers to enable and control per-plane
> RGB2RGB colos space conversion matrix.
>
> Change-Id: I8f421222da3587caea6373e2201e918f0c5e2646
Missing Signed-off-by, I think you can squash this into "drm/rockchip: Implement
drm plane->ctm property" as well.
> ---
> drivers/gpu/drm/rockchip/rockchip_drm_vop.h | 7 +++
> drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 48 +++++++++++++++++++++
> 2 files changed, 55 insertions(+)
>
> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
> index aa8a5d2690376..fea5a087f4749 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
> @@ -80,6 +80,13 @@ struct vop_misc {
> };
>
> struct vop_yuv2yuv {
> + struct vop_reg win0_r2r_en;
> + struct vop_reg win0_r2r_coefficients[12];
> + struct vop_reg win1_r2r_en;
> + struct vop_reg win1_r2r_coefficients[12];
> + struct vop_reg win2_r2r_en;
> + struct vop_reg win2_r2r_coefficients[12];
> +
> struct vop_reg win0_y2r_en;
> struct vop_reg win0_y2r_coefficients[12];
I'll revise my earlier feedback and propose:
#define NUM_CSC_COEFFICIENTS 12
#define NUM_R2R_WINDOWS 3
#define NUM_Y2R_WINDOWS 2
struct vop_csc_reg {
struct vop_reg en;
struct vop_reg coefficients[NUM_CSC_COEFFICIENTS];
};
struct vop_csc {
struct vop_csc_reg r2r[NUM_R2R_WINDOWS];
struct vop_csc_reg y2r[NUM_Y2R_WINDOWS];
};
>
> diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
> index 0af95947f22d4..fb7b07aa4fa27 100644
> --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
> +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c
> @@ -423,6 +423,54 @@ static const struct vop_output rk3399_output = {
> };
>
> static const struct vop_yuv2yuv rk3399_vop_yuv2yuv = {
> + .win0_r2r_en = VOP_REG(RK3399_YUV2YUV_WIN, 0x1, 0),
> + .win0_r2r_coefficients = {
> + VOP_REG(RK3399_WIN0_YUV2YUV_3X3 + 0, 0xffff, 0),
> + VOP_REG(RK3399_WIN0_YUV2YUV_3X3 + 0, 0xffff, 16),
> + VOP_REG(RK3399_WIN0_YUV2YUV_3X3 + 4, 0xffff, 0),
> + VOP_REG(RK3399_WIN0_YUV2YUV_3X3 + 4, 0xffff, 16),
> + VOP_REG(RK3399_WIN0_YUV2YUV_3X3 + 8, 0xffff, 0),
> + VOP_REG(RK3399_WIN0_YUV2YUV_3X3 + 8, 0xffff, 16),
> + VOP_REG(RK3399_WIN0_YUV2YUV_3X3 + 12, 0xffff, 0),
> + VOP_REG(RK3399_WIN0_YUV2YUV_3X3 + 12, 0xffff, 16),
> + VOP_REG(RK3399_WIN0_YUV2YUV_3X3 + 16, 0xffff, 0),
> + VOP_REG(RK3399_WIN0_YUV2YUV_3X3 + 20, 0xffffffff, 0),
> + VOP_REG(RK3399_WIN0_YUV2YUV_3X3 + 24, 0xffffffff, 0),
> + VOP_REG(RK3399_WIN0_YUV2YUV_3X3 + 28, 0xffffffff, 0),
> + },
> +
> + .win1_r2r_en = VOP_REG(RK3399_YUV2YUV_WIN, 0x1, 8),
> + .win1_r2r_coefficients = {
> + VOP_REG(RK3399_WIN1_YUV2YUV_3X3 + 0, 0xffff, 0),
> + VOP_REG(RK3399_WIN1_YUV2YUV_3X3 + 0, 0xffff, 16),
> + VOP_REG(RK3399_WIN1_YUV2YUV_3X3 + 4, 0xffff, 0),
> + VOP_REG(RK3399_WIN1_YUV2YUV_3X3 + 4, 0xffff, 16),
> + VOP_REG(RK3399_WIN1_YUV2YUV_3X3 + 8, 0xffff, 0),
> + VOP_REG(RK3399_WIN1_YUV2YUV_3X3 + 8, 0xffff, 16),
> + VOP_REG(RK3399_WIN1_YUV2YUV_3X3 + 12, 0xffff, 0),
> + VOP_REG(RK3399_WIN1_YUV2YUV_3X3 + 12, 0xffff, 16),
> + VOP_REG(RK3399_WIN1_YUV2YUV_3X3 + 16, 0xffff, 0),
> + VOP_REG(RK3399_WIN1_YUV2YUV_3X3 + 20, 0xffffffff, 0),
> + VOP_REG(RK3399_WIN1_YUV2YUV_3X3 + 24, 0xffffffff, 0),
> + VOP_REG(RK3399_WIN1_YUV2YUV_3X3 + 28, 0xffffffff, 0),
> + },
> +
> + .win2_r2r_en = VOP_REG(RK3399_YUV2YUV_WIN, 0x1, 16),
> + .win2_r2r_coefficients = {
> + VOP_REG(RK3399_WIN2_YUV2YUV_3X3 + 0, 0xffff, 0),
> + VOP_REG(RK3399_WIN2_YUV2YUV_3X3 + 0, 0xffff, 16),
> + VOP_REG(RK3399_WIN2_YUV2YUV_3X3 + 4, 0xffff, 0),
> + VOP_REG(RK3399_WIN2_YUV2YUV_3X3 + 4, 0xffff, 16),
> + VOP_REG(RK3399_WIN2_YUV2YUV_3X3 + 8, 0xffff, 0),
> + VOP_REG(RK3399_WIN2_YUV2YUV_3X3 + 8, 0xffff, 16),
> + VOP_REG(RK3399_WIN2_YUV2YUV_3X3 + 12, 0xffff, 0),
> + VOP_REG(RK3399_WIN2_YUV2YUV_3X3 + 12, 0xffff, 16),
> + VOP_REG(RK3399_WIN2_YUV2YUV_3X3 + 16, 0xffff, 0),
> + VOP_REG(RK3399_WIN2_YUV2YUV_3X3 + 20, 0xffffffff, 0),
> + VOP_REG(RK3399_WIN2_YUV2YUV_3X3 + 24, 0xffffffff, 0),
> + VOP_REG(RK3399_WIN2_YUV2YUV_3X3 + 28, 0xffffffff, 0),
> + },
> +
> .win0_y2r_en = VOP_REG(RK3399_YUV2YUV_WIN, 0x1, 1),
> .win0_y2r_coefficients = {
> VOP_REG(RK3399_WIN1_YUV2YUV_Y2R + 0, 0xffff, 0),
> --
> 2.16.1.291.g4437f3f132-goog
>
> _______________________________________________
> dri-devel mailing list
> dri-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Sean Paul, Software Engineer, Google / Chromium OS
More information about the dri-devel
mailing list