1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (C) Rockchip Electronics Co., Ltd. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Author: 6*4882a593Smuzhiyun * Huang Lee <Putin.li@rock-chips.com> 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #include "rga_hw_config.h" 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun /* RGA 1Word = 4Byte */ 12*4882a593Smuzhiyun #define WORD_TO_BYTE(w) ((w) * 4) 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun const uint32_t rga3_input_raster_format[] = { 15*4882a593Smuzhiyun RGA_FORMAT_RGBA_8888, 16*4882a593Smuzhiyun RGA_FORMAT_BGRA_8888, 17*4882a593Smuzhiyun RGA_FORMAT_RGB_888, 18*4882a593Smuzhiyun RGA_FORMAT_BGR_888, 19*4882a593Smuzhiyun RGA_FORMAT_RGB_565, 20*4882a593Smuzhiyun RGA_FORMAT_BGR_565, 21*4882a593Smuzhiyun RGA_FORMAT_YCbCr_422_SP, 22*4882a593Smuzhiyun RGA_FORMAT_YCbCr_420_SP, 23*4882a593Smuzhiyun RGA_FORMAT_YCrCb_422_SP, 24*4882a593Smuzhiyun RGA_FORMAT_YCrCb_420_SP, 25*4882a593Smuzhiyun RGA_FORMAT_YVYU_422, 26*4882a593Smuzhiyun RGA_FORMAT_VYUY_422, 27*4882a593Smuzhiyun RGA_FORMAT_YUYV_422, 28*4882a593Smuzhiyun RGA_FORMAT_UYVY_422, 29*4882a593Smuzhiyun RGA_FORMAT_YCbCr_420_SP_10B, 30*4882a593Smuzhiyun RGA_FORMAT_YCrCb_420_SP_10B, 31*4882a593Smuzhiyun RGA_FORMAT_YCbCr_422_SP_10B, 32*4882a593Smuzhiyun RGA_FORMAT_YCrCb_422_SP_10B, 33*4882a593Smuzhiyun RGA_FORMAT_ARGB_8888, 34*4882a593Smuzhiyun RGA_FORMAT_ABGR_8888, 35*4882a593Smuzhiyun }; 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun const uint32_t rga3_output_raster_format[] = { 38*4882a593Smuzhiyun RGA_FORMAT_RGBA_8888, 39*4882a593Smuzhiyun RGA_FORMAT_BGRA_8888, 40*4882a593Smuzhiyun RGA_FORMAT_RGB_888, 41*4882a593Smuzhiyun RGA_FORMAT_BGR_888, 42*4882a593Smuzhiyun RGA_FORMAT_RGB_565, 43*4882a593Smuzhiyun RGA_FORMAT_BGR_565, 44*4882a593Smuzhiyun RGA_FORMAT_YCbCr_422_SP, 45*4882a593Smuzhiyun RGA_FORMAT_YCbCr_420_SP, 46*4882a593Smuzhiyun RGA_FORMAT_YCrCb_422_SP, 47*4882a593Smuzhiyun RGA_FORMAT_YCrCb_420_SP, 48*4882a593Smuzhiyun RGA_FORMAT_YVYU_422, 49*4882a593Smuzhiyun RGA_FORMAT_VYUY_422, 50*4882a593Smuzhiyun RGA_FORMAT_YUYV_422, 51*4882a593Smuzhiyun RGA_FORMAT_UYVY_422, 52*4882a593Smuzhiyun RGA_FORMAT_YCbCr_420_SP_10B, 53*4882a593Smuzhiyun RGA_FORMAT_YCrCb_420_SP_10B, 54*4882a593Smuzhiyun RGA_FORMAT_YCbCr_422_SP_10B, 55*4882a593Smuzhiyun RGA_FORMAT_YCrCb_422_SP_10B, 56*4882a593Smuzhiyun }; 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun const uint32_t rga3_fbcd_format[] = { 59*4882a593Smuzhiyun RGA_FORMAT_RGBA_8888, 60*4882a593Smuzhiyun RGA_FORMAT_BGRA_8888, 61*4882a593Smuzhiyun RGA_FORMAT_RGB_888, 62*4882a593Smuzhiyun RGA_FORMAT_BGR_888, 63*4882a593Smuzhiyun RGA_FORMAT_RGB_565, 64*4882a593Smuzhiyun RGA_FORMAT_BGR_565, 65*4882a593Smuzhiyun RGA_FORMAT_YCbCr_422_SP, 66*4882a593Smuzhiyun RGA_FORMAT_YCbCr_420_SP, 67*4882a593Smuzhiyun RGA_FORMAT_YCrCb_422_SP, 68*4882a593Smuzhiyun RGA_FORMAT_YCrCb_420_SP, 69*4882a593Smuzhiyun RGA_FORMAT_YCbCr_420_SP_10B, 70*4882a593Smuzhiyun RGA_FORMAT_YCrCb_420_SP_10B, 71*4882a593Smuzhiyun RGA_FORMAT_YCbCr_422_SP_10B, 72*4882a593Smuzhiyun RGA_FORMAT_YCrCb_422_SP_10B, 73*4882a593Smuzhiyun }; 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun const uint32_t rga3_tile_format[] = { 76*4882a593Smuzhiyun RGA_FORMAT_YCbCr_422_SP, 77*4882a593Smuzhiyun RGA_FORMAT_YCbCr_420_SP, 78*4882a593Smuzhiyun RGA_FORMAT_YCrCb_422_SP, 79*4882a593Smuzhiyun RGA_FORMAT_YCrCb_420_SP, 80*4882a593Smuzhiyun RGA_FORMAT_YCbCr_420_SP_10B, 81*4882a593Smuzhiyun RGA_FORMAT_YCrCb_420_SP_10B, 82*4882a593Smuzhiyun RGA_FORMAT_YCbCr_422_SP_10B, 83*4882a593Smuzhiyun RGA_FORMAT_YCrCb_422_SP_10B, 84*4882a593Smuzhiyun }; 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun const uint32_t rga2e_input_raster_format[] = { 87*4882a593Smuzhiyun RGA_FORMAT_RGBA_8888, 88*4882a593Smuzhiyun RGA_FORMAT_RGBX_8888, 89*4882a593Smuzhiyun RGA_FORMAT_BGRA_8888, 90*4882a593Smuzhiyun RGA_FORMAT_BGRX_8888, 91*4882a593Smuzhiyun RGA_FORMAT_RGB_888, 92*4882a593Smuzhiyun RGA_FORMAT_BGR_888, 93*4882a593Smuzhiyun RGA_FORMAT_RGB_565, 94*4882a593Smuzhiyun RGA_FORMAT_BGR_565, 95*4882a593Smuzhiyun RGA_FORMAT_YCbCr_422_P, 96*4882a593Smuzhiyun RGA_FORMAT_YCbCr_420_P, 97*4882a593Smuzhiyun RGA_FORMAT_YCrCb_422_P, 98*4882a593Smuzhiyun RGA_FORMAT_YCrCb_420_P, 99*4882a593Smuzhiyun RGA_FORMAT_YCbCr_422_SP, 100*4882a593Smuzhiyun RGA_FORMAT_YCbCr_420_SP, 101*4882a593Smuzhiyun RGA_FORMAT_YCrCb_422_SP, 102*4882a593Smuzhiyun RGA_FORMAT_YCrCb_420_SP, 103*4882a593Smuzhiyun RGA_FORMAT_YVYU_422, 104*4882a593Smuzhiyun RGA_FORMAT_VYUY_422, 105*4882a593Smuzhiyun RGA_FORMAT_YUYV_422, 106*4882a593Smuzhiyun RGA_FORMAT_UYVY_422, 107*4882a593Smuzhiyun RGA_FORMAT_YCbCr_420_SP_10B, 108*4882a593Smuzhiyun RGA_FORMAT_YCrCb_420_SP_10B, 109*4882a593Smuzhiyun RGA_FORMAT_YCbCr_422_SP_10B, 110*4882a593Smuzhiyun RGA_FORMAT_YCrCb_422_SP_10B, 111*4882a593Smuzhiyun RGA_FORMAT_YCbCr_400, 112*4882a593Smuzhiyun RGA_FORMAT_RGBA_5551, 113*4882a593Smuzhiyun RGA_FORMAT_BGRA_5551, 114*4882a593Smuzhiyun RGA_FORMAT_RGBA_4444, 115*4882a593Smuzhiyun RGA_FORMAT_BGRA_4444, 116*4882a593Smuzhiyun RGA_FORMAT_XRGB_8888, 117*4882a593Smuzhiyun RGA_FORMAT_XBGR_8888, 118*4882a593Smuzhiyun RGA_FORMAT_BPP1, 119*4882a593Smuzhiyun RGA_FORMAT_BPP2, 120*4882a593Smuzhiyun RGA_FORMAT_BPP4, 121*4882a593Smuzhiyun RGA_FORMAT_BPP8, 122*4882a593Smuzhiyun RGA_FORMAT_ARGB_8888, 123*4882a593Smuzhiyun RGA_FORMAT_ARGB_5551, 124*4882a593Smuzhiyun RGA_FORMAT_ARGB_4444, 125*4882a593Smuzhiyun RGA_FORMAT_ABGR_8888, 126*4882a593Smuzhiyun RGA_FORMAT_ABGR_5551, 127*4882a593Smuzhiyun RGA_FORMAT_ABGR_4444, 128*4882a593Smuzhiyun }; 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun const uint32_t rga2e_output_raster_format[] = { 131*4882a593Smuzhiyun RGA_FORMAT_RGBA_8888, 132*4882a593Smuzhiyun RGA_FORMAT_RGBX_8888, 133*4882a593Smuzhiyun RGA_FORMAT_BGRA_8888, 134*4882a593Smuzhiyun RGA_FORMAT_BGRX_8888, 135*4882a593Smuzhiyun RGA_FORMAT_RGB_888, 136*4882a593Smuzhiyun RGA_FORMAT_BGR_888, 137*4882a593Smuzhiyun RGA_FORMAT_RGB_565, 138*4882a593Smuzhiyun RGA_FORMAT_BGR_565, 139*4882a593Smuzhiyun RGA_FORMAT_YCbCr_422_P, 140*4882a593Smuzhiyun RGA_FORMAT_YCbCr_420_P, 141*4882a593Smuzhiyun RGA_FORMAT_YCrCb_422_P, 142*4882a593Smuzhiyun RGA_FORMAT_YCrCb_420_P, 143*4882a593Smuzhiyun RGA_FORMAT_YCbCr_422_SP, 144*4882a593Smuzhiyun RGA_FORMAT_YCbCr_420_SP, 145*4882a593Smuzhiyun RGA_FORMAT_YCrCb_422_SP, 146*4882a593Smuzhiyun RGA_FORMAT_YCrCb_420_SP, 147*4882a593Smuzhiyun RGA_FORMAT_YVYU_420, 148*4882a593Smuzhiyun RGA_FORMAT_VYUY_420, 149*4882a593Smuzhiyun RGA_FORMAT_YUYV_420, 150*4882a593Smuzhiyun RGA_FORMAT_UYVY_420, 151*4882a593Smuzhiyun RGA_FORMAT_YVYU_422, 152*4882a593Smuzhiyun RGA_FORMAT_VYUY_422, 153*4882a593Smuzhiyun RGA_FORMAT_YUYV_422, 154*4882a593Smuzhiyun RGA_FORMAT_UYVY_422, 155*4882a593Smuzhiyun RGA_FORMAT_YCbCr_420_SP_10B, 156*4882a593Smuzhiyun RGA_FORMAT_YCrCb_420_SP_10B, 157*4882a593Smuzhiyun RGA_FORMAT_YCbCr_422_SP_10B, 158*4882a593Smuzhiyun RGA_FORMAT_YCrCb_422_SP_10B, 159*4882a593Smuzhiyun RGA_FORMAT_Y4, 160*4882a593Smuzhiyun RGA_FORMAT_YCbCr_400, 161*4882a593Smuzhiyun RGA_FORMAT_RGBA_5551, 162*4882a593Smuzhiyun RGA_FORMAT_BGRA_5551, 163*4882a593Smuzhiyun RGA_FORMAT_RGBA_4444, 164*4882a593Smuzhiyun RGA_FORMAT_BGRA_4444, 165*4882a593Smuzhiyun RGA_FORMAT_XRGB_8888, 166*4882a593Smuzhiyun RGA_FORMAT_XBGR_8888, 167*4882a593Smuzhiyun RGA_FORMAT_ARGB_8888, 168*4882a593Smuzhiyun RGA_FORMAT_ARGB_5551, 169*4882a593Smuzhiyun RGA_FORMAT_ARGB_4444, 170*4882a593Smuzhiyun RGA_FORMAT_ABGR_8888, 171*4882a593Smuzhiyun RGA_FORMAT_ABGR_5551, 172*4882a593Smuzhiyun RGA_FORMAT_ABGR_4444, 173*4882a593Smuzhiyun }; 174*4882a593Smuzhiyun 175*4882a593Smuzhiyun const struct rga_win_data rga3_win_data[] = { 176*4882a593Smuzhiyun { 177*4882a593Smuzhiyun .name = "rga3-win0", 178*4882a593Smuzhiyun .raster_formats = rga3_input_raster_format, 179*4882a593Smuzhiyun .num_of_raster_formats = ARRAY_SIZE(rga3_input_raster_format), 180*4882a593Smuzhiyun .fbc_formats = rga3_fbcd_format, 181*4882a593Smuzhiyun .num_of_fbc_formats = ARRAY_SIZE(rga3_fbcd_format), 182*4882a593Smuzhiyun .tile_formats = rga3_tile_format, 183*4882a593Smuzhiyun .num_of_tile_formats = ARRAY_SIZE(rga3_tile_format), 184*4882a593Smuzhiyun .supported_rotations = RGA_MODE_ROTATE_MASK, 185*4882a593Smuzhiyun .scale_up_mode = RGA_SCALE_UP_BIC, 186*4882a593Smuzhiyun .scale_down_mode = RGA_SCALE_DOWN_AVG, 187*4882a593Smuzhiyun .rd_mode = RGA_RASTER_MODE | RGA_FBC_MODE | RGA_TILE_MODE, 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun }, 190*4882a593Smuzhiyun 191*4882a593Smuzhiyun { 192*4882a593Smuzhiyun .name = "rga3-win1", 193*4882a593Smuzhiyun .raster_formats = rga3_input_raster_format, 194*4882a593Smuzhiyun .num_of_raster_formats = ARRAY_SIZE(rga3_input_raster_format), 195*4882a593Smuzhiyun .fbc_formats = rga3_fbcd_format, 196*4882a593Smuzhiyun .num_of_fbc_formats = ARRAY_SIZE(rga3_fbcd_format), 197*4882a593Smuzhiyun .tile_formats = rga3_tile_format, 198*4882a593Smuzhiyun .num_of_tile_formats = ARRAY_SIZE(rga3_tile_format), 199*4882a593Smuzhiyun .supported_rotations = RGA_MODE_ROTATE_MASK, 200*4882a593Smuzhiyun .scale_up_mode = RGA_SCALE_UP_BIC, 201*4882a593Smuzhiyun .scale_down_mode = RGA_SCALE_DOWN_AVG, 202*4882a593Smuzhiyun .rd_mode = RGA_RASTER_MODE | RGA_FBC_MODE | RGA_TILE_MODE, 203*4882a593Smuzhiyun 204*4882a593Smuzhiyun }, 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun { 207*4882a593Smuzhiyun .name = "rga3-wr", 208*4882a593Smuzhiyun .raster_formats = rga3_output_raster_format, 209*4882a593Smuzhiyun .num_of_raster_formats = ARRAY_SIZE(rga3_output_raster_format), 210*4882a593Smuzhiyun .fbc_formats = rga3_fbcd_format, 211*4882a593Smuzhiyun .num_of_fbc_formats = ARRAY_SIZE(rga3_fbcd_format), 212*4882a593Smuzhiyun .tile_formats = rga3_tile_format, 213*4882a593Smuzhiyun .num_of_tile_formats = ARRAY_SIZE(rga3_tile_format), 214*4882a593Smuzhiyun .supported_rotations = 0, 215*4882a593Smuzhiyun .scale_up_mode = RGA_SCALE_UP_NONE, 216*4882a593Smuzhiyun .scale_down_mode = RGA_SCALE_DOWN_NONE, 217*4882a593Smuzhiyun .rd_mode = RGA_RASTER_MODE | RGA_FBC_MODE | RGA_TILE_MODE, 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun }, 220*4882a593Smuzhiyun }; 221*4882a593Smuzhiyun 222*4882a593Smuzhiyun const struct rga_win_data rga2e_win_data[] = { 223*4882a593Smuzhiyun { 224*4882a593Smuzhiyun .name = "rga2e-src0", 225*4882a593Smuzhiyun .raster_formats = rga2e_input_raster_format, 226*4882a593Smuzhiyun .num_of_raster_formats = ARRAY_SIZE(rga2e_input_raster_format), 227*4882a593Smuzhiyun .supported_rotations = RGA_MODE_ROTATE_MASK, 228*4882a593Smuzhiyun .scale_up_mode = RGA_SCALE_UP_BIC, 229*4882a593Smuzhiyun .scale_down_mode = RGA_SCALE_DOWN_AVG, 230*4882a593Smuzhiyun .rd_mode = RGA_RASTER_MODE, 231*4882a593Smuzhiyun 232*4882a593Smuzhiyun }, 233*4882a593Smuzhiyun 234*4882a593Smuzhiyun { 235*4882a593Smuzhiyun .name = "rga2e-src1", 236*4882a593Smuzhiyun .raster_formats = rga2e_input_raster_format, 237*4882a593Smuzhiyun .num_of_raster_formats = ARRAY_SIZE(rga2e_input_raster_format), 238*4882a593Smuzhiyun .supported_rotations = RGA_MODE_ROTATE_MASK, 239*4882a593Smuzhiyun .scale_up_mode = RGA_SCALE_UP_BIC, 240*4882a593Smuzhiyun .scale_down_mode = RGA_SCALE_DOWN_AVG, 241*4882a593Smuzhiyun .rd_mode = RGA_RASTER_MODE, 242*4882a593Smuzhiyun 243*4882a593Smuzhiyun }, 244*4882a593Smuzhiyun 245*4882a593Smuzhiyun { 246*4882a593Smuzhiyun .name = "rga2-dst", 247*4882a593Smuzhiyun .raster_formats = rga2e_output_raster_format, 248*4882a593Smuzhiyun .num_of_raster_formats = ARRAY_SIZE(rga2e_output_raster_format), 249*4882a593Smuzhiyun .supported_rotations = 0, 250*4882a593Smuzhiyun .scale_up_mode = RGA_SCALE_UP_NONE, 251*4882a593Smuzhiyun .scale_down_mode = RGA_SCALE_DOWN_NONE, 252*4882a593Smuzhiyun .rd_mode = RGA_RASTER_MODE, 253*4882a593Smuzhiyun 254*4882a593Smuzhiyun }, 255*4882a593Smuzhiyun }; 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun const struct rga_hw_data rga3_data = { 258*4882a593Smuzhiyun .version = 0, 259*4882a593Smuzhiyun .input_range = {{68, 2}, {8176, 8176}}, 260*4882a593Smuzhiyun .output_range = {{68, 2}, {8128, 8128}}, 261*4882a593Smuzhiyun 262*4882a593Smuzhiyun .win = rga3_win_data, 263*4882a593Smuzhiyun .win_size = ARRAY_SIZE(rga3_win_data), 264*4882a593Smuzhiyun /* 1 << factor mean real factor */ 265*4882a593Smuzhiyun .max_upscale_factor = 3, 266*4882a593Smuzhiyun .max_downscale_factor = 3, 267*4882a593Smuzhiyun 268*4882a593Smuzhiyun .byte_stride_align = 16, 269*4882a593Smuzhiyun .max_byte_stride = WORD_TO_BYTE(8192), 270*4882a593Smuzhiyun 271*4882a593Smuzhiyun .feature = RGA_COLOR_KEY, 272*4882a593Smuzhiyun .csc_r2y_mode = RGA_MODE_CSC_BT601L | RGA_MODE_CSC_BT601F | 273*4882a593Smuzhiyun RGA_MODE_CSC_BT709 | RGA_MODE_CSC_BT2020, 274*4882a593Smuzhiyun .csc_y2r_mode = RGA_MODE_CSC_BT601L | RGA_MODE_CSC_BT601F | 275*4882a593Smuzhiyun RGA_MODE_CSC_BT709 | RGA_MODE_CSC_BT2020, 276*4882a593Smuzhiyun .mmu = RGA_IOMMU, 277*4882a593Smuzhiyun }; 278*4882a593Smuzhiyun 279*4882a593Smuzhiyun const struct rga_hw_data rga2e_data = { 280*4882a593Smuzhiyun .version = 0, 281*4882a593Smuzhiyun .input_range = {{2, 2}, {8192, 8192}}, 282*4882a593Smuzhiyun .output_range = {{2, 2}, {4096, 4096}}, 283*4882a593Smuzhiyun 284*4882a593Smuzhiyun .win = rga2e_win_data, 285*4882a593Smuzhiyun .win_size = ARRAY_SIZE(rga2e_win_data), 286*4882a593Smuzhiyun /* 1 << factor mean real factor */ 287*4882a593Smuzhiyun .max_upscale_factor = 4, 288*4882a593Smuzhiyun .max_downscale_factor = 4, 289*4882a593Smuzhiyun 290*4882a593Smuzhiyun .byte_stride_align = 4, 291*4882a593Smuzhiyun .max_byte_stride = WORD_TO_BYTE(8192), 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun .feature = RGA_COLOR_FILL | RGA_COLOR_PALETTE | 294*4882a593Smuzhiyun RGA_COLOR_KEY | RGA_ROP_CALCULATE | 295*4882a593Smuzhiyun RGA_NN_QUANTIZE | RGA_DITHER, 296*4882a593Smuzhiyun .csc_r2y_mode = RGA_MODE_CSC_BT601L | RGA_MODE_CSC_BT601F | 297*4882a593Smuzhiyun RGA_MODE_CSC_BT709, 298*4882a593Smuzhiyun .csc_y2r_mode = RGA_MODE_CSC_BT601L | RGA_MODE_CSC_BT601F | 299*4882a593Smuzhiyun RGA_MODE_CSC_BT709, 300*4882a593Smuzhiyun .mmu = RGA_MMU, 301*4882a593Smuzhiyun }; 302*4882a593Smuzhiyun 303*4882a593Smuzhiyun const struct rga_hw_data rga2e_1106_data = { 304*4882a593Smuzhiyun .version = 0, 305*4882a593Smuzhiyun .input_range = {{2, 2}, {8192, 8192}}, 306*4882a593Smuzhiyun .output_range = {{2, 2}, {4096, 4096}}, 307*4882a593Smuzhiyun 308*4882a593Smuzhiyun .win = rga2e_win_data, 309*4882a593Smuzhiyun .win_size = ARRAY_SIZE(rga2e_win_data), 310*4882a593Smuzhiyun /* 1 << factor mean real factor */ 311*4882a593Smuzhiyun .max_upscale_factor = 4, 312*4882a593Smuzhiyun .max_downscale_factor = 4, 313*4882a593Smuzhiyun 314*4882a593Smuzhiyun .byte_stride_align = 4, 315*4882a593Smuzhiyun .max_byte_stride = WORD_TO_BYTE(8192), 316*4882a593Smuzhiyun 317*4882a593Smuzhiyun .feature = RGA_COLOR_FILL | RGA_COLOR_PALETTE | 318*4882a593Smuzhiyun RGA_COLOR_KEY | RGA_ROP_CALCULATE | 319*4882a593Smuzhiyun RGA_NN_QUANTIZE | RGA_DITHER | RGA_MOSAIC | 320*4882a593Smuzhiyun RGA_YIN_YOUT | RGA_YUV_HDS | RGA_YUV_VDS | 321*4882a593Smuzhiyun RGA_OSD | RGA_PRE_INTR, 322*4882a593Smuzhiyun .csc_r2y_mode = RGA_MODE_CSC_BT601L | RGA_MODE_CSC_BT601F | 323*4882a593Smuzhiyun RGA_MODE_CSC_BT709, 324*4882a593Smuzhiyun .csc_y2r_mode = RGA_MODE_CSC_BT601L | RGA_MODE_CSC_BT601F | 325*4882a593Smuzhiyun RGA_MODE_CSC_BT709, 326*4882a593Smuzhiyun .mmu = RGA_NONE_MMU, 327*4882a593Smuzhiyun }; 328*4882a593Smuzhiyun 329*4882a593Smuzhiyun const struct rga_hw_data rga2e_iommu_data = { 330*4882a593Smuzhiyun .version = 0, 331*4882a593Smuzhiyun .input_range = {{2, 2}, {8192, 8192}}, 332*4882a593Smuzhiyun .output_range = {{2, 2}, {4096, 4096}}, 333*4882a593Smuzhiyun 334*4882a593Smuzhiyun .win = rga2e_win_data, 335*4882a593Smuzhiyun .win_size = ARRAY_SIZE(rga2e_win_data), 336*4882a593Smuzhiyun /* 1 << factor mean real factor */ 337*4882a593Smuzhiyun .max_upscale_factor = 4, 338*4882a593Smuzhiyun .max_downscale_factor = 4, 339*4882a593Smuzhiyun 340*4882a593Smuzhiyun .byte_stride_align = 4, 341*4882a593Smuzhiyun .max_byte_stride = WORD_TO_BYTE(8192), 342*4882a593Smuzhiyun 343*4882a593Smuzhiyun .feature = RGA_COLOR_FILL | RGA_COLOR_PALETTE | 344*4882a593Smuzhiyun RGA_COLOR_KEY | RGA_ROP_CALCULATE | 345*4882a593Smuzhiyun RGA_NN_QUANTIZE | RGA_DITHER | RGA_MOSAIC | 346*4882a593Smuzhiyun RGA_YIN_YOUT | RGA_YUV_HDS | RGA_YUV_VDS | 347*4882a593Smuzhiyun RGA_OSD | RGA_PRE_INTR, 348*4882a593Smuzhiyun .csc_r2y_mode = RGA_MODE_CSC_BT601L | RGA_MODE_CSC_BT601F | 349*4882a593Smuzhiyun RGA_MODE_CSC_BT709, 350*4882a593Smuzhiyun .csc_y2r_mode = RGA_MODE_CSC_BT601L | RGA_MODE_CSC_BT601F | 351*4882a593Smuzhiyun RGA_MODE_CSC_BT709, 352*4882a593Smuzhiyun .mmu = RGA_IOMMU, 353*4882a593Smuzhiyun }; 354