From 7291693b01c8cf9c278621e7cb766dd05ea2cec5 Mon Sep 17 00:00:00 2001 From: Yu Qiaowei Date: Thu, 31 Aug 2023 10:05:00 +0800 Subject: [PATCH] video: rockchip: rga3: compatible with legacy global alpha config Change-Id: I8dcccad5638f1fa7f16dcd9945562596cae047bc Signed-off-by: Yu Qiaowei --- drivers/video/rockchip/rga3/include/rga.h | 6 +++- drivers/video/rockchip/rga3/rga2_reg_info.c | 31 +++++++++++++-------- drivers/video/rockchip/rga3/rga3_reg_info.c | 31 +++++++++++++-------- 3 files changed, 43 insertions(+), 25 deletions(-) diff --git a/drivers/video/rockchip/rga3/include/rga.h b/drivers/video/rockchip/rga3/include/rga.h index 8415c7555477..46fc882fda57 100644 --- a/drivers/video/rockchip/rga3/include/rga.h +++ b/drivers/video/rockchip/rga3/include/rga.h @@ -678,7 +678,11 @@ struct rga_req { uint8_t fg_global_alpha; uint8_t bg_global_alpha; - uint8_t reservr[57]; + struct { + uint32_t global_alpha_en:1; + } feature; + + uint8_t reservr[51]; }; struct rga_alpha_config { diff --git a/drivers/video/rockchip/rga3/rga2_reg_info.c b/drivers/video/rockchip/rga3/rga2_reg_info.c index 584b7ab5bba4..a1fbef3cc981 100644 --- a/drivers/video/rockchip/rga3/rga2_reg_info.c +++ b/drivers/video/rockchip/rga3/rga2_reg_info.c @@ -2087,19 +2087,26 @@ static void rga_cmd_to_rga2_cmd(struct rga_scheduler_t *scheduler, req->alpha_config.bg_pixel_alpha_en = rga_is_alpha_format(req->dst.format); - if (req_rga->fg_global_alpha < 0xff) { - req->alpha_config.fg_global_alpha_en = true; - req->alpha_config.fg_global_alpha_value = req_rga->fg_global_alpha; - } else if (!req->alpha_config.fg_pixel_alpha_en) { - req->alpha_config.fg_global_alpha_en = true; - req->alpha_config.fg_global_alpha_value = 0xff; - } + if (req_rga->feature.global_alpha_en) { + if (req_rga->fg_global_alpha < 0xff) { + req->alpha_config.fg_global_alpha_en = true; + req->alpha_config.fg_global_alpha_value = + req_rga->fg_global_alpha; + } else if (!req->alpha_config.fg_pixel_alpha_en) { + req->alpha_config.fg_global_alpha_en = true; + req->alpha_config.fg_global_alpha_value = 0xff; + } - if (req_rga->bg_global_alpha < 0xff) { - req->alpha_config.bg_global_alpha_en = true; - req->alpha_config.bg_global_alpha_value = req_rga->bg_global_alpha; - } else if (!req->alpha_config.bg_pixel_alpha_en) { - req->alpha_config.bg_global_alpha_en = true; + if (req_rga->bg_global_alpha < 0xff) { + req->alpha_config.bg_global_alpha_en = true; + req->alpha_config.bg_global_alpha_value = + req_rga->bg_global_alpha; + } else if (!req->alpha_config.bg_pixel_alpha_en) { + req->alpha_config.bg_global_alpha_en = true; + req->alpha_config.bg_global_alpha_value = 0xff; + } + } else { + req->alpha_config.bg_global_alpha_value = 0xff; req->alpha_config.bg_global_alpha_value = 0xff; } diff --git a/drivers/video/rockchip/rga3/rga3_reg_info.c b/drivers/video/rockchip/rga3/rga3_reg_info.c index 96055052cdfd..5c1945b98325 100644 --- a/drivers/video/rockchip/rga3/rga3_reg_info.c +++ b/drivers/video/rockchip/rga3/rga3_reg_info.c @@ -1643,19 +1643,26 @@ static void rga_cmd_to_rga3_cmd(struct rga_req *req_rga, struct rga3_req *req) req->alpha_config.fg_pixel_alpha_en = rga_is_alpha_format(req->win1.format); req->alpha_config.bg_pixel_alpha_en = rga_is_alpha_format(req->win0.format); - if (req_rga->fg_global_alpha < 0xff) { - req->alpha_config.fg_global_alpha_en = true; - req->alpha_config.fg_global_alpha_value = req_rga->fg_global_alpha; - } else if (!req->alpha_config.fg_pixel_alpha_en) { - req->alpha_config.fg_global_alpha_en = true; - req->alpha_config.fg_global_alpha_value = 0xff; - } + if (req_rga->feature.global_alpha_en) { + if (req_rga->fg_global_alpha < 0xff) { + req->alpha_config.fg_global_alpha_en = true; + req->alpha_config.fg_global_alpha_value = + req_rga->fg_global_alpha; + } else if (!req->alpha_config.fg_pixel_alpha_en) { + req->alpha_config.fg_global_alpha_en = true; + req->alpha_config.fg_global_alpha_value = 0xff; + } - if (req_rga->bg_global_alpha < 0xff) { - req->alpha_config.bg_global_alpha_en = true; - req->alpha_config.bg_global_alpha_value = req_rga->bg_global_alpha; - } else if (!req->alpha_config.bg_pixel_alpha_en) { - req->alpha_config.bg_global_alpha_en = true; + if (req_rga->bg_global_alpha < 0xff) { + req->alpha_config.bg_global_alpha_en = true; + req->alpha_config.bg_global_alpha_value = + req_rga->bg_global_alpha; + } else if (!req->alpha_config.bg_pixel_alpha_en) { + req->alpha_config.bg_global_alpha_en = true; + req->alpha_config.bg_global_alpha_value = 0xff; + } + } else { + req->alpha_config.bg_global_alpha_value = 0xff; req->alpha_config.bg_global_alpha_value = 0xff; }