From 42333bee4f7b1a28618800942c3cd72bb2c0b5f2 Mon Sep 17 00:00:00 2001 From: Li Huang Date: Fri, 26 Nov 2021 15:19:27 +0800 Subject: [PATCH] video: rockchip: rga3: Support multi core config by userspace. Signed-off-by: Li Huang Change-Id: I8dfb08ca6f4490fd2097e971127ef7c274b1babd --- drivers/video/rockchip/rga3/rga_job.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/drivers/video/rockchip/rga3/rga_job.c b/drivers/video/rockchip/rga3/rga_job.c index 34985f9dba53..9d2d34816e73 100644 --- a/drivers/video/rockchip/rga3/rga_job.c +++ b/drivers/video/rockchip/rga3/rga_job.c @@ -357,9 +357,15 @@ static int rga_job_assign(struct rga_job *job) unsigned long flags; /* assigned by userspace */ - /* TODO: valid value */ - if (rga_base->core > RGA_NONE_CORE) - return rga_base->core; + if (rga_base->core > RGA_NONE_CORE) { + if (rga_base->core > RGA_CORE_MASK) { + pr_err("invalid setting core by user\n"); + goto finish; + } else if (rga_base->core & RGA_CORE_MASK) { + optional_cores = rga_base->core; + goto skip_functional_policy; + } + } feature = rga_set_feature(rga_base); @@ -452,6 +458,7 @@ static int rga_job_assign(struct rga_job *job) goto finish; } +skip_functional_policy: for (i = 0; i < rga_drvdata->num_of_scheduler; i++) { scheduler = rga_drvdata->rga_scheduler[i];