1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd 4*4882a593Smuzhiyun * Author: Jacob Chen <jacob-chen@iotwrt.com> 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun #ifndef __RGA_HW_H__ 7*4882a593Smuzhiyun #define __RGA_HW_H__ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #define RGA_CMDBUF_SIZE 0x20 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun /* Hardware limits */ 12*4882a593Smuzhiyun #define MAX_WIDTH 8192 13*4882a593Smuzhiyun #define MAX_HEIGHT 8192 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun #define MIN_WIDTH 34 16*4882a593Smuzhiyun #define MIN_HEIGHT 34 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun #define DEFAULT_WIDTH 100 19*4882a593Smuzhiyun #define DEFAULT_HEIGHT 100 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun #define RGA_TIMEOUT 500 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun /* Registers address */ 24*4882a593Smuzhiyun #define RGA_SYS_CTRL 0x0000 25*4882a593Smuzhiyun #define RGA_CMD_CTRL 0x0004 26*4882a593Smuzhiyun #define RGA_CMD_BASE 0x0008 27*4882a593Smuzhiyun #define RGA_INT 0x0010 28*4882a593Smuzhiyun #define RGA_MMU_CTRL0 0x0014 29*4882a593Smuzhiyun #define RGA_VERSION_INFO 0x0028 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun #define RGA_MODE_BASE_REG 0x0100 32*4882a593Smuzhiyun #define RGA_MODE_MAX_REG 0x017C 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun #define RGA_MODE_CTRL 0x0100 35*4882a593Smuzhiyun #define RGA_SRC_INFO 0x0104 36*4882a593Smuzhiyun #define RGA_SRC_Y_RGB_BASE_ADDR 0x0108 37*4882a593Smuzhiyun #define RGA_SRC_CB_BASE_ADDR 0x010c 38*4882a593Smuzhiyun #define RGA_SRC_CR_BASE_ADDR 0x0110 39*4882a593Smuzhiyun #define RGA_SRC1_RGB_BASE_ADDR 0x0114 40*4882a593Smuzhiyun #define RGA_SRC_VIR_INFO 0x0118 41*4882a593Smuzhiyun #define RGA_SRC_ACT_INFO 0x011c 42*4882a593Smuzhiyun #define RGA_SRC_X_FACTOR 0x0120 43*4882a593Smuzhiyun #define RGA_SRC_Y_FACTOR 0x0124 44*4882a593Smuzhiyun #define RGA_SRC_BG_COLOR 0x0128 45*4882a593Smuzhiyun #define RGA_SRC_FG_COLOR 0x012c 46*4882a593Smuzhiyun #define RGA_SRC_TR_COLOR0 0x0130 47*4882a593Smuzhiyun #define RGA_SRC_TR_COLOR1 0x0134 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun #define RGA_DST_INFO 0x0138 50*4882a593Smuzhiyun #define RGA_DST_Y_RGB_BASE_ADDR 0x013c 51*4882a593Smuzhiyun #define RGA_DST_CB_BASE_ADDR 0x0140 52*4882a593Smuzhiyun #define RGA_DST_CR_BASE_ADDR 0x0144 53*4882a593Smuzhiyun #define RGA_DST_VIR_INFO 0x0148 54*4882a593Smuzhiyun #define RGA_DST_ACT_INFO 0x014c 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun #define RGA_ALPHA_CTRL0 0x0150 57*4882a593Smuzhiyun #define RGA_ALPHA_CTRL1 0x0154 58*4882a593Smuzhiyun #define RGA_FADING_CTRL 0x0158 59*4882a593Smuzhiyun #define RGA_PAT_CON 0x015c 60*4882a593Smuzhiyun #define RGA_ROP_CON0 0x0160 61*4882a593Smuzhiyun #define RGA_ROP_CON1 0x0164 62*4882a593Smuzhiyun #define RGA_MASK_BASE 0x0168 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun #define RGA_MMU_CTRL1 0x016C 65*4882a593Smuzhiyun #define RGA_MMU_SRC_BASE 0x0170 66*4882a593Smuzhiyun #define RGA_MMU_SRC1_BASE 0x0174 67*4882a593Smuzhiyun #define RGA_MMU_DST_BASE 0x0178 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun /* Registers value */ 70*4882a593Smuzhiyun #define RGA_MODE_RENDER_BITBLT 0 71*4882a593Smuzhiyun #define RGA_MODE_RENDER_COLOR_PALETTE 1 72*4882a593Smuzhiyun #define RGA_MODE_RENDER_RECTANGLE_FILL 2 73*4882a593Smuzhiyun #define RGA_MODE_RENDER_UPDATE_PALETTE_LUT_RAM 3 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun #define RGA_MODE_BITBLT_MODE_SRC_TO_DST 0 76*4882a593Smuzhiyun #define RGA_MODE_BITBLT_MODE_SRC_SRC1_TO_DST 1 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun #define RGA_MODE_CF_ROP4_SOLID 0 79*4882a593Smuzhiyun #define RGA_MODE_CF_ROP4_PATTERN 1 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun #define RGA_COLOR_FMT_ABGR8888 0 82*4882a593Smuzhiyun #define RGA_COLOR_FMT_XBGR8888 1 83*4882a593Smuzhiyun #define RGA_COLOR_FMT_RGB888 2 84*4882a593Smuzhiyun #define RGA_COLOR_FMT_BGR565 4 85*4882a593Smuzhiyun #define RGA_COLOR_FMT_ABGR1555 5 86*4882a593Smuzhiyun #define RGA_COLOR_FMT_ABGR4444 6 87*4882a593Smuzhiyun #define RGA_COLOR_FMT_YUV422SP 8 88*4882a593Smuzhiyun #define RGA_COLOR_FMT_YUV422P 9 89*4882a593Smuzhiyun #define RGA_COLOR_FMT_YUV420SP 10 90*4882a593Smuzhiyun #define RGA_COLOR_FMT_YUV420P 11 91*4882a593Smuzhiyun /* SRC_COLOR Palette */ 92*4882a593Smuzhiyun #define RGA_COLOR_FMT_CP_1BPP 12 93*4882a593Smuzhiyun #define RGA_COLOR_FMT_CP_2BPP 13 94*4882a593Smuzhiyun #define RGA_COLOR_FMT_CP_4BPP 14 95*4882a593Smuzhiyun #define RGA_COLOR_FMT_CP_8BPP 15 96*4882a593Smuzhiyun #define RGA_COLOR_FMT_MASK 15 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun #define RGA_COLOR_FMT_IS_YUV(fmt) \ 99*4882a593Smuzhiyun (((fmt) >= RGA_COLOR_FMT_YUV422SP) && ((fmt) < RGA_COLOR_FMT_CP_1BPP)) 100*4882a593Smuzhiyun #define RGA_COLOR_FMT_IS_RGB(fmt) \ 101*4882a593Smuzhiyun ((fmt) < RGA_COLOR_FMT_YUV422SP) 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun #define RGA_COLOR_NONE_SWAP 0 104*4882a593Smuzhiyun #define RGA_COLOR_RB_SWAP 1 105*4882a593Smuzhiyun #define RGA_COLOR_ALPHA_SWAP 2 106*4882a593Smuzhiyun #define RGA_COLOR_UV_SWAP 4 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun #define RGA_SRC_CSC_MODE_BYPASS 0 109*4882a593Smuzhiyun #define RGA_SRC_CSC_MODE_BT601_R0 1 110*4882a593Smuzhiyun #define RGA_SRC_CSC_MODE_BT601_R1 2 111*4882a593Smuzhiyun #define RGA_SRC_CSC_MODE_BT709_R0 3 112*4882a593Smuzhiyun #define RGA_SRC_CSC_MODE_BT709_R1 4 113*4882a593Smuzhiyun 114*4882a593Smuzhiyun #define RGA_SRC_ROT_MODE_0_DEGREE 0 115*4882a593Smuzhiyun #define RGA_SRC_ROT_MODE_90_DEGREE 1 116*4882a593Smuzhiyun #define RGA_SRC_ROT_MODE_180_DEGREE 2 117*4882a593Smuzhiyun #define RGA_SRC_ROT_MODE_270_DEGREE 3 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun #define RGA_SRC_MIRR_MODE_NO 0 120*4882a593Smuzhiyun #define RGA_SRC_MIRR_MODE_X 1 121*4882a593Smuzhiyun #define RGA_SRC_MIRR_MODE_Y 2 122*4882a593Smuzhiyun #define RGA_SRC_MIRR_MODE_X_Y 3 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun #define RGA_SRC_HSCL_MODE_NO 0 125*4882a593Smuzhiyun #define RGA_SRC_HSCL_MODE_DOWN 1 126*4882a593Smuzhiyun #define RGA_SRC_HSCL_MODE_UP 2 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun #define RGA_SRC_VSCL_MODE_NO 0 129*4882a593Smuzhiyun #define RGA_SRC_VSCL_MODE_DOWN 1 130*4882a593Smuzhiyun #define RGA_SRC_VSCL_MODE_UP 2 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun #define RGA_SRC_TRANS_ENABLE_R 1 133*4882a593Smuzhiyun #define RGA_SRC_TRANS_ENABLE_G 2 134*4882a593Smuzhiyun #define RGA_SRC_TRANS_ENABLE_B 4 135*4882a593Smuzhiyun #define RGA_SRC_TRANS_ENABLE_A 8 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun #define RGA_SRC_BIC_COE_SELEC_CATROM 0 138*4882a593Smuzhiyun #define RGA_SRC_BIC_COE_SELEC_MITCHELL 1 139*4882a593Smuzhiyun #define RGA_SRC_BIC_COE_SELEC_HERMITE 2 140*4882a593Smuzhiyun #define RGA_SRC_BIC_COE_SELEC_BSPLINE 3 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun #define RGA_DST_DITHER_MODE_888_TO_666 0 143*4882a593Smuzhiyun #define RGA_DST_DITHER_MODE_888_TO_565 1 144*4882a593Smuzhiyun #define RGA_DST_DITHER_MODE_888_TO_555 2 145*4882a593Smuzhiyun #define RGA_DST_DITHER_MODE_888_TO_444 3 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun #define RGA_DST_CSC_MODE_BYPASS 0 148*4882a593Smuzhiyun #define RGA_DST_CSC_MODE_BT601_R0 1 149*4882a593Smuzhiyun #define RGA_DST_CSC_MODE_BT601_R1 2 150*4882a593Smuzhiyun #define RGA_DST_CSC_MODE_BT709_R0 3 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun #define RGA_ALPHA_ROP_MODE_2 0 153*4882a593Smuzhiyun #define RGA_ALPHA_ROP_MODE_3 1 154*4882a593Smuzhiyun #define RGA_ALPHA_ROP_MODE_4 2 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun #define RGA_ALPHA_SELECT_ALPHA 0 157*4882a593Smuzhiyun #define RGA_ALPHA_SELECT_ROP 1 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun #define RGA_ALPHA_MASK_BIG_ENDIAN 0 160*4882a593Smuzhiyun #define RGA_ALPHA_MASK_LITTLE_ENDIAN 1 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun #define RGA_ALPHA_NORMAL 0 163*4882a593Smuzhiyun #define RGA_ALPHA_REVERSE 1 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun #define RGA_ALPHA_BLEND_GLOBAL 0 166*4882a593Smuzhiyun #define RGA_ALPHA_BLEND_NORMAL 1 167*4882a593Smuzhiyun #define RGA_ALPHA_BLEND_MULTIPLY 2 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun #define RGA_ALPHA_CAL_CUT 0 170*4882a593Smuzhiyun #define RGA_ALPHA_CAL_NORMAL 1 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun #define RGA_ALPHA_FACTOR_ZERO 0 173*4882a593Smuzhiyun #define RGA_ALPHA_FACTOR_ONE 1 174*4882a593Smuzhiyun #define RGA_ALPHA_FACTOR_OTHER 2 175*4882a593Smuzhiyun #define RGA_ALPHA_FACTOR_OTHER_REVERSE 3 176*4882a593Smuzhiyun #define RGA_ALPHA_FACTOR_SELF 4 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun #define RGA_ALPHA_COLOR_NORMAL 0 179*4882a593Smuzhiyun #define RGA_ALPHA_COLOR_MULTIPLY_CAL 1 180*4882a593Smuzhiyun 181*4882a593Smuzhiyun /* Registers union */ 182*4882a593Smuzhiyun union rga_mode_ctrl { 183*4882a593Smuzhiyun unsigned int val; 184*4882a593Smuzhiyun struct { 185*4882a593Smuzhiyun /* [0:2] */ 186*4882a593Smuzhiyun unsigned int render:3; 187*4882a593Smuzhiyun /* [3:6] */ 188*4882a593Smuzhiyun unsigned int bitblt:1; 189*4882a593Smuzhiyun unsigned int cf_rop4_pat:1; 190*4882a593Smuzhiyun unsigned int alpha_zero_key:1; 191*4882a593Smuzhiyun unsigned int gradient_sat:1; 192*4882a593Smuzhiyun /* [7:31] */ 193*4882a593Smuzhiyun unsigned int reserved:25; 194*4882a593Smuzhiyun } data; 195*4882a593Smuzhiyun }; 196*4882a593Smuzhiyun 197*4882a593Smuzhiyun union rga_src_info { 198*4882a593Smuzhiyun unsigned int val; 199*4882a593Smuzhiyun struct { 200*4882a593Smuzhiyun /* [0:3] */ 201*4882a593Smuzhiyun unsigned int format:4; 202*4882a593Smuzhiyun /* [4:7] */ 203*4882a593Smuzhiyun unsigned int swap:3; 204*4882a593Smuzhiyun unsigned int cp_endian:1; 205*4882a593Smuzhiyun /* [8:17] */ 206*4882a593Smuzhiyun unsigned int csc_mode:2; 207*4882a593Smuzhiyun unsigned int rot_mode:2; 208*4882a593Smuzhiyun unsigned int mir_mode:2; 209*4882a593Smuzhiyun unsigned int hscl_mode:2; 210*4882a593Smuzhiyun unsigned int vscl_mode:2; 211*4882a593Smuzhiyun /* [18:22] */ 212*4882a593Smuzhiyun unsigned int trans_mode:1; 213*4882a593Smuzhiyun unsigned int trans_enable:4; 214*4882a593Smuzhiyun /* [23:25] */ 215*4882a593Smuzhiyun unsigned int dither_up_en:1; 216*4882a593Smuzhiyun unsigned int bic_coe_sel:2; 217*4882a593Smuzhiyun /* [26:31] */ 218*4882a593Smuzhiyun unsigned int reserved:6; 219*4882a593Smuzhiyun } data; 220*4882a593Smuzhiyun }; 221*4882a593Smuzhiyun 222*4882a593Smuzhiyun union rga_src_vir_info { 223*4882a593Smuzhiyun unsigned int val; 224*4882a593Smuzhiyun struct { 225*4882a593Smuzhiyun /* [0:15] */ 226*4882a593Smuzhiyun unsigned int vir_width:15; 227*4882a593Smuzhiyun unsigned int reserved:1; 228*4882a593Smuzhiyun /* [16:25] */ 229*4882a593Smuzhiyun unsigned int vir_stride:10; 230*4882a593Smuzhiyun /* [26:31] */ 231*4882a593Smuzhiyun unsigned int reserved1:6; 232*4882a593Smuzhiyun } data; 233*4882a593Smuzhiyun }; 234*4882a593Smuzhiyun 235*4882a593Smuzhiyun union rga_src_act_info { 236*4882a593Smuzhiyun unsigned int val; 237*4882a593Smuzhiyun struct { 238*4882a593Smuzhiyun /* [0:15] */ 239*4882a593Smuzhiyun unsigned int act_width:13; 240*4882a593Smuzhiyun unsigned int reserved:3; 241*4882a593Smuzhiyun /* [16:31] */ 242*4882a593Smuzhiyun unsigned int act_height:13; 243*4882a593Smuzhiyun unsigned int reserved1:3; 244*4882a593Smuzhiyun } data; 245*4882a593Smuzhiyun }; 246*4882a593Smuzhiyun 247*4882a593Smuzhiyun union rga_src_x_factor { 248*4882a593Smuzhiyun unsigned int val; 249*4882a593Smuzhiyun struct { 250*4882a593Smuzhiyun /* [0:15] */ 251*4882a593Smuzhiyun unsigned int down_scale_factor:16; 252*4882a593Smuzhiyun /* [16:31] */ 253*4882a593Smuzhiyun unsigned int up_scale_factor:16; 254*4882a593Smuzhiyun } data; 255*4882a593Smuzhiyun }; 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun union rga_src_y_factor { 258*4882a593Smuzhiyun unsigned int val; 259*4882a593Smuzhiyun struct { 260*4882a593Smuzhiyun /* [0:15] */ 261*4882a593Smuzhiyun unsigned int down_scale_factor:16; 262*4882a593Smuzhiyun /* [16:31] */ 263*4882a593Smuzhiyun unsigned int up_scale_factor:16; 264*4882a593Smuzhiyun } data; 265*4882a593Smuzhiyun }; 266*4882a593Smuzhiyun 267*4882a593Smuzhiyun /* Alpha / Red / Green / Blue */ 268*4882a593Smuzhiyun union rga_src_cp_gr_color { 269*4882a593Smuzhiyun unsigned int val; 270*4882a593Smuzhiyun struct { 271*4882a593Smuzhiyun /* [0:15] */ 272*4882a593Smuzhiyun unsigned int gradient_x:16; 273*4882a593Smuzhiyun /* [16:31] */ 274*4882a593Smuzhiyun unsigned int gradient_y:16; 275*4882a593Smuzhiyun } data; 276*4882a593Smuzhiyun }; 277*4882a593Smuzhiyun 278*4882a593Smuzhiyun union rga_src_transparency_color0 { 279*4882a593Smuzhiyun unsigned int val; 280*4882a593Smuzhiyun struct { 281*4882a593Smuzhiyun /* [0:7] */ 282*4882a593Smuzhiyun unsigned int trans_rmin:8; 283*4882a593Smuzhiyun /* [8:15] */ 284*4882a593Smuzhiyun unsigned int trans_gmin:8; 285*4882a593Smuzhiyun /* [16:23] */ 286*4882a593Smuzhiyun unsigned int trans_bmin:8; 287*4882a593Smuzhiyun /* [24:31] */ 288*4882a593Smuzhiyun unsigned int trans_amin:8; 289*4882a593Smuzhiyun } data; 290*4882a593Smuzhiyun }; 291*4882a593Smuzhiyun 292*4882a593Smuzhiyun union rga_src_transparency_color1 { 293*4882a593Smuzhiyun unsigned int val; 294*4882a593Smuzhiyun struct { 295*4882a593Smuzhiyun /* [0:7] */ 296*4882a593Smuzhiyun unsigned int trans_rmax:8; 297*4882a593Smuzhiyun /* [8:15] */ 298*4882a593Smuzhiyun unsigned int trans_gmax:8; 299*4882a593Smuzhiyun /* [16:23] */ 300*4882a593Smuzhiyun unsigned int trans_bmax:8; 301*4882a593Smuzhiyun /* [24:31] */ 302*4882a593Smuzhiyun unsigned int trans_amax:8; 303*4882a593Smuzhiyun } data; 304*4882a593Smuzhiyun }; 305*4882a593Smuzhiyun 306*4882a593Smuzhiyun union rga_dst_info { 307*4882a593Smuzhiyun unsigned int val; 308*4882a593Smuzhiyun struct { 309*4882a593Smuzhiyun /* [0:3] */ 310*4882a593Smuzhiyun unsigned int format:4; 311*4882a593Smuzhiyun /* [4:6] */ 312*4882a593Smuzhiyun unsigned int swap:3; 313*4882a593Smuzhiyun /* [7:9] */ 314*4882a593Smuzhiyun unsigned int src1_format:3; 315*4882a593Smuzhiyun /* [10:11] */ 316*4882a593Smuzhiyun unsigned int src1_swap:2; 317*4882a593Smuzhiyun /* [12:15] */ 318*4882a593Smuzhiyun unsigned int dither_up_en:1; 319*4882a593Smuzhiyun unsigned int dither_down_en:1; 320*4882a593Smuzhiyun unsigned int dither_down_mode:2; 321*4882a593Smuzhiyun /* [16:18] */ 322*4882a593Smuzhiyun unsigned int csc_mode:2; 323*4882a593Smuzhiyun unsigned int csc_clip:1; 324*4882a593Smuzhiyun /* [19:31] */ 325*4882a593Smuzhiyun unsigned int reserved:13; 326*4882a593Smuzhiyun } data; 327*4882a593Smuzhiyun }; 328*4882a593Smuzhiyun 329*4882a593Smuzhiyun union rga_dst_vir_info { 330*4882a593Smuzhiyun unsigned int val; 331*4882a593Smuzhiyun struct { 332*4882a593Smuzhiyun /* [0:15] */ 333*4882a593Smuzhiyun unsigned int vir_stride:15; 334*4882a593Smuzhiyun unsigned int reserved:1; 335*4882a593Smuzhiyun /* [16:31] */ 336*4882a593Smuzhiyun unsigned int src1_vir_stride:15; 337*4882a593Smuzhiyun unsigned int reserved1:1; 338*4882a593Smuzhiyun } data; 339*4882a593Smuzhiyun }; 340*4882a593Smuzhiyun 341*4882a593Smuzhiyun union rga_dst_act_info { 342*4882a593Smuzhiyun unsigned int val; 343*4882a593Smuzhiyun struct { 344*4882a593Smuzhiyun /* [0:15] */ 345*4882a593Smuzhiyun unsigned int act_width:12; 346*4882a593Smuzhiyun unsigned int reserved:4; 347*4882a593Smuzhiyun /* [16:31] */ 348*4882a593Smuzhiyun unsigned int act_height:12; 349*4882a593Smuzhiyun unsigned int reserved1:4; 350*4882a593Smuzhiyun } data; 351*4882a593Smuzhiyun }; 352*4882a593Smuzhiyun 353*4882a593Smuzhiyun union rga_alpha_ctrl0 { 354*4882a593Smuzhiyun unsigned int val; 355*4882a593Smuzhiyun struct { 356*4882a593Smuzhiyun /* [0:3] */ 357*4882a593Smuzhiyun unsigned int rop_en:1; 358*4882a593Smuzhiyun unsigned int rop_select:1; 359*4882a593Smuzhiyun unsigned int rop_mode:2; 360*4882a593Smuzhiyun /* [4:11] */ 361*4882a593Smuzhiyun unsigned int src_fading_val:8; 362*4882a593Smuzhiyun /* [12:20] */ 363*4882a593Smuzhiyun unsigned int dst_fading_val:8; 364*4882a593Smuzhiyun unsigned int mask_endian:1; 365*4882a593Smuzhiyun /* [21:31] */ 366*4882a593Smuzhiyun unsigned int reserved:11; 367*4882a593Smuzhiyun } data; 368*4882a593Smuzhiyun }; 369*4882a593Smuzhiyun 370*4882a593Smuzhiyun union rga_alpha_ctrl1 { 371*4882a593Smuzhiyun unsigned int val; 372*4882a593Smuzhiyun struct { 373*4882a593Smuzhiyun /* [0:1] */ 374*4882a593Smuzhiyun unsigned int dst_color_m0:1; 375*4882a593Smuzhiyun unsigned int src_color_m0:1; 376*4882a593Smuzhiyun /* [2:7] */ 377*4882a593Smuzhiyun unsigned int dst_factor_m0:3; 378*4882a593Smuzhiyun unsigned int src_factor_m0:3; 379*4882a593Smuzhiyun /* [8:9] */ 380*4882a593Smuzhiyun unsigned int dst_alpha_cal_m0:1; 381*4882a593Smuzhiyun unsigned int src_alpha_cal_m0:1; 382*4882a593Smuzhiyun /* [10:13] */ 383*4882a593Smuzhiyun unsigned int dst_blend_m0:2; 384*4882a593Smuzhiyun unsigned int src_blend_m0:2; 385*4882a593Smuzhiyun /* [14:15] */ 386*4882a593Smuzhiyun unsigned int dst_alpha_m0:1; 387*4882a593Smuzhiyun unsigned int src_alpha_m0:1; 388*4882a593Smuzhiyun /* [16:21] */ 389*4882a593Smuzhiyun unsigned int dst_factor_m1:3; 390*4882a593Smuzhiyun unsigned int src_factor_m1:3; 391*4882a593Smuzhiyun /* [22:23] */ 392*4882a593Smuzhiyun unsigned int dst_alpha_cal_m1:1; 393*4882a593Smuzhiyun unsigned int src_alpha_cal_m1:1; 394*4882a593Smuzhiyun /* [24:27] */ 395*4882a593Smuzhiyun unsigned int dst_blend_m1:2; 396*4882a593Smuzhiyun unsigned int src_blend_m1:2; 397*4882a593Smuzhiyun /* [28:29] */ 398*4882a593Smuzhiyun unsigned int dst_alpha_m1:1; 399*4882a593Smuzhiyun unsigned int src_alpha_m1:1; 400*4882a593Smuzhiyun /* [30:31] */ 401*4882a593Smuzhiyun unsigned int reserved:2; 402*4882a593Smuzhiyun } data; 403*4882a593Smuzhiyun }; 404*4882a593Smuzhiyun 405*4882a593Smuzhiyun union rga_fading_ctrl { 406*4882a593Smuzhiyun unsigned int val; 407*4882a593Smuzhiyun struct { 408*4882a593Smuzhiyun /* [0:7] */ 409*4882a593Smuzhiyun unsigned int fading_offset_r:8; 410*4882a593Smuzhiyun /* [8:15] */ 411*4882a593Smuzhiyun unsigned int fading_offset_g:8; 412*4882a593Smuzhiyun /* [16:23] */ 413*4882a593Smuzhiyun unsigned int fading_offset_b:8; 414*4882a593Smuzhiyun /* [24:31] */ 415*4882a593Smuzhiyun unsigned int fading_en:1; 416*4882a593Smuzhiyun unsigned int reserved:7; 417*4882a593Smuzhiyun } data; 418*4882a593Smuzhiyun }; 419*4882a593Smuzhiyun 420*4882a593Smuzhiyun union rga_pat_con { 421*4882a593Smuzhiyun unsigned int val; 422*4882a593Smuzhiyun struct { 423*4882a593Smuzhiyun /* [0:7] */ 424*4882a593Smuzhiyun unsigned int width:8; 425*4882a593Smuzhiyun /* [8:15] */ 426*4882a593Smuzhiyun unsigned int height:8; 427*4882a593Smuzhiyun /* [16:23] */ 428*4882a593Smuzhiyun unsigned int offset_x:8; 429*4882a593Smuzhiyun /* [24:31] */ 430*4882a593Smuzhiyun unsigned int offset_y:8; 431*4882a593Smuzhiyun } data; 432*4882a593Smuzhiyun }; 433*4882a593Smuzhiyun 434*4882a593Smuzhiyun #endif 435