From 6e5641b33318b4e402836188970d6640c50e6596 Mon Sep 17 00:00:00 2001 From: Yu Qiaowei Date: Thu, 28 Mar 2024 17:35:02 +0800 Subject: [PATCH] video: rockchip: rga3: support RV1103B Signed-off-by: Yu Qiaowei Change-Id: I7a4fda6fd994418c6d2e4dea825f03017abdcf5a --- .../rockchip/rga3/include/rga_hw_config.h | 1 + drivers/video/rockchip/rga3/rga_drv.c | 2 + drivers/video/rockchip/rga3/rga_hw_config.c | 48 +++++++++++++++++++ 3 files changed, 51 insertions(+) diff --git a/drivers/video/rockchip/rga3/include/rga_hw_config.h b/drivers/video/rockchip/rga3/include/rga_hw_config.h index 6679c599af42..61390902175a 100644 --- a/drivers/video/rockchip/rga3/include/rga_hw_config.h +++ b/drivers/video/rockchip/rga3/include/rga_hw_config.h @@ -78,6 +78,7 @@ extern const struct rga_hw_data rga2e_data; extern const struct rga_hw_data rga2e_1106_data; extern const struct rga_hw_data rga2e_iommu_data; extern const struct rga_hw_data rga2p_iommu_data; +extern const struct rga_hw_data rga2p_lite_1103b_data; #define rga_hw_has_issue(scheduler, issue) test_bit(issue, &((scheduler)->hw_issues_mask)) #define rga_hw_set_issue_mask(scheduler, issue) set_bit(issue, &((scheduler)->hw_issues_mask)) diff --git a/drivers/video/rockchip/rga3/rga_drv.c b/drivers/video/rockchip/rga3/rga_drv.c index e4e70def194e..ac74808581e7 100644 --- a/drivers/video/rockchip/rga3/rga_drv.c +++ b/drivers/video/rockchip/rga3/rga_drv.c @@ -1374,6 +1374,8 @@ static int rga_drv_probe(struct platform_device *pdev) } else if (!strcmp(scheduler->version.str, "3.e.19357")) { scheduler->data = &rga2p_iommu_data; rga_hw_set_issue_mask(scheduler, RGA_HW_ISSUE_DIS_AUTO_RST); + } else if (!strcmp(scheduler->version.str, "3.f.23690")) { + scheduler->data = &rga2p_lite_1103b_data; } else { scheduler->data = &rga2e_data; } diff --git a/drivers/video/rockchip/rga3/rga_hw_config.c b/drivers/video/rockchip/rga3/rga_hw_config.c index 18c4eacd03ac..f1d1bc8da799 100644 --- a/drivers/video/rockchip/rga3/rga_hw_config.c +++ b/drivers/video/rockchip/rga3/rga_hw_config.c @@ -442,6 +442,30 @@ const struct rga_win_data rga2p_win_data[] = { }, }; +const struct rga_win_data rga2p_lite_win_data[] = { + { + .name = "rga2e-src0", + .formats[RGA_RASTER_INDEX] = rga2e_input_raster_format, + .formats_count[RGA_RASTER_INDEX] = ARRAY_SIZE(rga2e_input_raster_format), + .supported_rotations = RGA_MODE_ROTATE_MASK, + .scale_up_mode = RGA_SCALE_UP_BIC, + .scale_down_mode = RGA_SCALE_DOWN_AVG, + .rd_mode = RGA_RASTER_MODE, + + }, + + { + .name = "rga2-dst", + .formats[RGA_RASTER_INDEX] = rga2e_output_raster_format, + .formats_count[RGA_RASTER_INDEX] = ARRAY_SIZE(rga2e_output_raster_format), + .supported_rotations = 0, + .scale_up_mode = RGA_SCALE_UP_NONE, + .scale_down_mode = RGA_SCALE_DOWN_NONE, + .rd_mode = RGA_RASTER_MODE, + + }, +}; + const struct rga_hw_data rga3_data = { .version = 0, .input_range = {{68, 2}, {8176, 8176}}, @@ -564,3 +588,27 @@ const struct rga_hw_data rga2p_iommu_data = { RGA_MODE_CSC_BT709, .mmu = RGA_IOMMU, }; + +const struct rga_hw_data rga2p_lite_1103b_data = { + .version = 0, + .input_range = {{2, 2}, {2880, 1620}}, + .output_range = {{2, 2}, {2880, 1620}}, + + .win = rga2p_lite_win_data, + .win_size = ARRAY_SIZE(rga2p_lite_win_data), + /* 1 << factor mean real factor */ + .max_upscale_factor = 4, + .max_downscale_factor = 4, + + .byte_stride_align = 4, + .max_byte_stride = WORD_TO_BYTE(8192), + + .feature = RGA_COLOR_FILL | RGA_DITHER | RGA_YIN_YOUT | + RGA_YUV_HDS | RGA_YUV_VDS | + RGA_PRE_INTR | RGA_FULL_CSC, + .csc_r2y_mode = RGA_MODE_CSC_BT601L | RGA_MODE_CSC_BT601F | + RGA_MODE_CSC_BT709, + .csc_y2r_mode = RGA_MODE_CSC_BT601L | RGA_MODE_CSC_BT601F | + RGA_MODE_CSC_BT709, + .mmu = RGA_NONE_MMU, +};