From 6778948f9de86c3cfaf36725a7c87dcff9ba247f Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 11 Dec 2023 08:20:59 +0000 Subject: [PATCH] kernel_5.10 no rt --- kernel/drivers/video/rockchip/rga3/rga_policy.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 54 insertions(+), 0 deletions(-) diff --git a/kernel/drivers/video/rockchip/rga3/rga_policy.c b/kernel/drivers/video/rockchip/rga3/rga_policy.c index 9801e6d..1afab89 100644 --- a/kernel/drivers/video/rockchip/rga3/rga_policy.c +++ b/kernel/drivers/video/rockchip/rga3/rga_policy.c @@ -46,6 +46,53 @@ return feature; } +static bool rga_check_csc_constant(const struct rga_hw_data *data, struct rga_req *rga_base, + uint32_t mode, uint32_t flag) +{ + if (mode & flag) + return true; + + if ((rga_base->full_csc.flag & 0x1) && (data->feature & RGA_FULL_CSC)) + return true; + + return false; +} + +static bool rga_check_csc(const struct rga_hw_data *data, struct rga_req *rga_base) +{ + switch (rga_base->yuv2rgb_mode) { + case 0x1: + return rga_check_csc_constant(data, rga_base, + data->csc_y2r_mode, RGA_MODE_CSC_BT601L); + case 0x2: + return rga_check_csc_constant(data, rga_base, + data->csc_y2r_mode, RGA_MODE_CSC_BT601F); + case 0x3: + return rga_check_csc_constant(data, rga_base, + data->csc_y2r_mode, RGA_MODE_CSC_BT709); + case 0x1 << 2: + return rga_check_csc_constant(data, rga_base, + data->csc_r2y_mode, RGA_MODE_CSC_BT601F); + case 0x2 << 2: + return rga_check_csc_constant(data, rga_base, + data->csc_r2y_mode, RGA_MODE_CSC_BT601L); + case 0x3 << 2: + return rga_check_csc_constant(data, rga_base, + data->csc_r2y_mode, RGA_MODE_CSC_BT709); + default: + break; + } + + if ((rga_base->full_csc.flag & 0x1)) { + if (data->feature & RGA_FULL_CSC) + return true; + else + return false; + } + + return true; +} + static bool rga_check_resolution(const struct rga_rect_range *range, int width, int height) { if (width > range->max.width || height > range->max.height) @@ -324,6 +371,13 @@ continue; } + if (!rga_check_csc(data, rga_base)) { + if (DEBUGGER_EN(MSG)) + pr_info("core = %d, break on rga_check_csc", + scheduler->core); + continue; + } + optional_cores |= scheduler->core; } -- Gitblit v1.6.2