1*7688df22SAndroid Build Coastguard Worker /* 2*7688df22SAndroid Build Coastguard Worker * Copyright (C) 2013 Samsung Electronics Co.Ltd 3*7688df22SAndroid Build Coastguard Worker * Authors: 4*7688df22SAndroid Build Coastguard Worker * Inki Dae <[email protected]> 5*7688df22SAndroid Build Coastguard Worker * 6*7688df22SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 7*7688df22SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"), 8*7688df22SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation 9*7688df22SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense, 10*7688df22SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the 11*7688df22SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions: 12*7688df22SAndroid Build Coastguard Worker * 13*7688df22SAndroid Build Coastguard Worker * The above copyright notice and this permission notice (including the next 14*7688df22SAndroid Build Coastguard Worker * paragraph) shall be included in all copies or substantial portions of the 15*7688df22SAndroid Build Coastguard Worker * Software. 16*7688df22SAndroid Build Coastguard Worker * 17*7688df22SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18*7688df22SAndroid Build Coastguard Worker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19*7688df22SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20*7688df22SAndroid Build Coastguard Worker * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 21*7688df22SAndroid Build Coastguard Worker * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 22*7688df22SAndroid Build Coastguard Worker * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23*7688df22SAndroid Build Coastguard Worker * OTHER DEALINGS IN THE SOFTWARE. 24*7688df22SAndroid Build Coastguard Worker */ 25*7688df22SAndroid Build Coastguard Worker 26*7688df22SAndroid Build Coastguard Worker #ifndef _FIMG2D_H_ 27*7688df22SAndroid Build Coastguard Worker #define _FIMG2D_H_ 28*7688df22SAndroid Build Coastguard Worker 29*7688df22SAndroid Build Coastguard Worker #define G2D_PLANE_MAX_NR 2 30*7688df22SAndroid Build Coastguard Worker 31*7688df22SAndroid Build Coastguard Worker enum e_g2d_color_mode { 32*7688df22SAndroid Build Coastguard Worker /* COLOR FORMAT */ 33*7688df22SAndroid Build Coastguard Worker G2D_COLOR_FMT_XRGB8888, 34*7688df22SAndroid Build Coastguard Worker G2D_COLOR_FMT_ARGB8888, 35*7688df22SAndroid Build Coastguard Worker G2D_COLOR_FMT_RGB565, 36*7688df22SAndroid Build Coastguard Worker G2D_COLOR_FMT_XRGB1555, 37*7688df22SAndroid Build Coastguard Worker G2D_COLOR_FMT_ARGB1555, 38*7688df22SAndroid Build Coastguard Worker G2D_COLOR_FMT_XRGB4444, 39*7688df22SAndroid Build Coastguard Worker G2D_COLOR_FMT_ARGB4444, 40*7688df22SAndroid Build Coastguard Worker G2D_COLOR_FMT_PRGB888, 41*7688df22SAndroid Build Coastguard Worker G2D_COLOR_FMT_YCbCr444, 42*7688df22SAndroid Build Coastguard Worker G2D_COLOR_FMT_YCbCr422, 43*7688df22SAndroid Build Coastguard Worker G2D_COLOR_FMT_YCbCr420, 44*7688df22SAndroid Build Coastguard Worker /* alpha 8bit */ 45*7688df22SAndroid Build Coastguard Worker G2D_COLOR_FMT_A8, 46*7688df22SAndroid Build Coastguard Worker /* Luminance 8bit: gray color */ 47*7688df22SAndroid Build Coastguard Worker G2D_COLOR_FMT_L8, 48*7688df22SAndroid Build Coastguard Worker /* alpha 1bit */ 49*7688df22SAndroid Build Coastguard Worker G2D_COLOR_FMT_A1, 50*7688df22SAndroid Build Coastguard Worker /* alpha 4bit */ 51*7688df22SAndroid Build Coastguard Worker G2D_COLOR_FMT_A4, 52*7688df22SAndroid Build Coastguard Worker G2D_COLOR_FMT_MASK, /* VER4.1 */ 53*7688df22SAndroid Build Coastguard Worker 54*7688df22SAndroid Build Coastguard Worker /* COLOR ORDER */ 55*7688df22SAndroid Build Coastguard Worker G2D_ORDER_AXRGB = (0 << 4), /* VER4.1 */ 56*7688df22SAndroid Build Coastguard Worker G2D_ORDER_RGBAX = (1 << 4), /* VER4.1 */ 57*7688df22SAndroid Build Coastguard Worker G2D_ORDER_AXBGR = (2 << 4), /* VER4.1 */ 58*7688df22SAndroid Build Coastguard Worker G2D_ORDER_BGRAX = (3 << 4), /* VER4.1 */ 59*7688df22SAndroid Build Coastguard Worker G2D_ORDER_MASK = (3 << 4), /* VER4.1 */ 60*7688df22SAndroid Build Coastguard Worker 61*7688df22SAndroid Build Coastguard Worker /* Number of YCbCr plane */ 62*7688df22SAndroid Build Coastguard Worker G2D_YCbCr_1PLANE = (0 << 8), /* VER4.1 */ 63*7688df22SAndroid Build Coastguard Worker G2D_YCbCr_2PLANE = (1 << 8), /* VER4.1 */ 64*7688df22SAndroid Build Coastguard Worker G2D_YCbCr_PLANE_MASK = (3 << 8), /* VER4.1 */ 65*7688df22SAndroid Build Coastguard Worker 66*7688df22SAndroid Build Coastguard Worker /* Order in YCbCr */ 67*7688df22SAndroid Build Coastguard Worker G2D_YCbCr_ORDER_CrY1CbY0 = (0 << 12), /* VER4.1 */ 68*7688df22SAndroid Build Coastguard Worker G2D_YCbCr_ORDER_CbY1CrY0 = (1 << 12), /* VER4.1 */ 69*7688df22SAndroid Build Coastguard Worker G2D_YCbCr_ORDER_Y1CrY0Cb = (2 << 12), /* VER4.1 */ 70*7688df22SAndroid Build Coastguard Worker G2D_YCbCr_ORDER_Y1CbY0Cr = (3 << 12), /* VER4.1 */ 71*7688df22SAndroid Build Coastguard Worker G2D_YCbCr_ORDER_CrCb = G2D_YCbCr_ORDER_CrY1CbY0, /* VER4.1 */ 72*7688df22SAndroid Build Coastguard Worker G2D_YCbCr_ORDER_CbCr = G2D_YCbCr_ORDER_CbY1CrY0, /* VER4.1 */ 73*7688df22SAndroid Build Coastguard Worker G2D_YCbCr_ORDER_MASK = (3 < 12), /* VER4.1 */ 74*7688df22SAndroid Build Coastguard Worker 75*7688df22SAndroid Build Coastguard Worker /* CSC */ 76*7688df22SAndroid Build Coastguard Worker G2D_CSC_601 = (0 << 16), /* VER4.1 */ 77*7688df22SAndroid Build Coastguard Worker G2D_CSC_709 = (1 << 16), /* VER4.1 */ 78*7688df22SAndroid Build Coastguard Worker G2D_CSC_MASK = (1 << 16), /* VER4.1 */ 79*7688df22SAndroid Build Coastguard Worker 80*7688df22SAndroid Build Coastguard Worker /* Valid value range of YCbCr */ 81*7688df22SAndroid Build Coastguard Worker G2D_YCbCr_RANGE_NARROW = (0 << 17), /* VER4.1 */ 82*7688df22SAndroid Build Coastguard Worker G2D_YCbCr_RANGE_WIDE = (1 << 17), /* VER4.1 */ 83*7688df22SAndroid Build Coastguard Worker G2D_YCbCr_RANGE_MASK = (1 << 17), /* VER4.1 */ 84*7688df22SAndroid Build Coastguard Worker 85*7688df22SAndroid Build Coastguard Worker G2D_COLOR_MODE_MASK = 0xFFFFFFFF, 86*7688df22SAndroid Build Coastguard Worker }; 87*7688df22SAndroid Build Coastguard Worker 88*7688df22SAndroid Build Coastguard Worker enum e_g2d_select_mode { 89*7688df22SAndroid Build Coastguard Worker G2D_SELECT_MODE_NORMAL = (0 << 0), 90*7688df22SAndroid Build Coastguard Worker G2D_SELECT_MODE_FGCOLOR = (1 << 0), 91*7688df22SAndroid Build Coastguard Worker G2D_SELECT_MODE_BGCOLOR = (2 << 0), 92*7688df22SAndroid Build Coastguard Worker }; 93*7688df22SAndroid Build Coastguard Worker 94*7688df22SAndroid Build Coastguard Worker enum e_g2d_repeat_mode { 95*7688df22SAndroid Build Coastguard Worker G2D_REPEAT_MODE_REPEAT, 96*7688df22SAndroid Build Coastguard Worker G2D_REPEAT_MODE_PAD, 97*7688df22SAndroid Build Coastguard Worker G2D_REPEAT_MODE_REFLECT, 98*7688df22SAndroid Build Coastguard Worker G2D_REPEAT_MODE_CLAMP, 99*7688df22SAndroid Build Coastguard Worker G2D_REPEAT_MODE_NONE, 100*7688df22SAndroid Build Coastguard Worker }; 101*7688df22SAndroid Build Coastguard Worker 102*7688df22SAndroid Build Coastguard Worker enum e_g2d_scale_mode { 103*7688df22SAndroid Build Coastguard Worker G2D_SCALE_MODE_NONE = 0, 104*7688df22SAndroid Build Coastguard Worker G2D_SCALE_MODE_NEAREST, 105*7688df22SAndroid Build Coastguard Worker G2D_SCALE_MODE_BILINEAR, 106*7688df22SAndroid Build Coastguard Worker G2D_SCALE_MODE_MAX, 107*7688df22SAndroid Build Coastguard Worker }; 108*7688df22SAndroid Build Coastguard Worker 109*7688df22SAndroid Build Coastguard Worker enum e_g2d_buf_type { 110*7688df22SAndroid Build Coastguard Worker G2D_IMGBUF_COLOR, 111*7688df22SAndroid Build Coastguard Worker G2D_IMGBUF_GEM, 112*7688df22SAndroid Build Coastguard Worker G2D_IMGBUF_USERPTR, 113*7688df22SAndroid Build Coastguard Worker }; 114*7688df22SAndroid Build Coastguard Worker 115*7688df22SAndroid Build Coastguard Worker enum e_g2d_rop3_type { 116*7688df22SAndroid Build Coastguard Worker G2D_ROP3_DST = 0xAA, 117*7688df22SAndroid Build Coastguard Worker G2D_ROP3_SRC = 0xCC, 118*7688df22SAndroid Build Coastguard Worker G2D_ROP3_3RD = 0xF0, 119*7688df22SAndroid Build Coastguard Worker G2D_ROP3_MASK = 0xFF, 120*7688df22SAndroid Build Coastguard Worker }; 121*7688df22SAndroid Build Coastguard Worker 122*7688df22SAndroid Build Coastguard Worker enum e_g2d_select_alpha_src { 123*7688df22SAndroid Build Coastguard Worker G2D_SELECT_SRC_FOR_ALPHA_BLEND, /* VER4.1 */ 124*7688df22SAndroid Build Coastguard Worker G2D_SELECT_ROP_FOR_ALPHA_BLEND, /* VER4.1 */ 125*7688df22SAndroid Build Coastguard Worker }; 126*7688df22SAndroid Build Coastguard Worker 127*7688df22SAndroid Build Coastguard Worker enum e_g2d_transparent_mode { 128*7688df22SAndroid Build Coastguard Worker G2D_TRANSPARENT_MODE_OPAQUE, 129*7688df22SAndroid Build Coastguard Worker G2D_TRANSPARENT_MODE_TRANSPARENT, 130*7688df22SAndroid Build Coastguard Worker G2D_TRANSPARENT_MODE_BLUESCREEN, 131*7688df22SAndroid Build Coastguard Worker G2D_TRANSPARENT_MODE_MAX, 132*7688df22SAndroid Build Coastguard Worker }; 133*7688df22SAndroid Build Coastguard Worker 134*7688df22SAndroid Build Coastguard Worker enum e_g2d_color_key_mode { 135*7688df22SAndroid Build Coastguard Worker G2D_COLORKEY_MODE_DISABLE = 0, 136*7688df22SAndroid Build Coastguard Worker G2D_COLORKEY_MODE_SRC_RGBA = (1<<0), 137*7688df22SAndroid Build Coastguard Worker G2D_COLORKEY_MODE_DST_RGBA = (1<<1), 138*7688df22SAndroid Build Coastguard Worker G2D_COLORKEY_MODE_SRC_YCbCr = (1<<2), /* VER4.1 */ 139*7688df22SAndroid Build Coastguard Worker G2D_COLORKEY_MODE_DST_YCbCr = (1<<3), /* VER4.1 */ 140*7688df22SAndroid Build Coastguard Worker G2D_COLORKEY_MODE_MASK = 15, 141*7688df22SAndroid Build Coastguard Worker }; 142*7688df22SAndroid Build Coastguard Worker 143*7688df22SAndroid Build Coastguard Worker enum e_g2d_alpha_blend_mode { 144*7688df22SAndroid Build Coastguard Worker G2D_ALPHA_BLEND_MODE_DISABLE, 145*7688df22SAndroid Build Coastguard Worker G2D_ALPHA_BLEND_MODE_ENABLE, 146*7688df22SAndroid Build Coastguard Worker G2D_ALPHA_BLEND_MODE_FADING, /* VER3.0 */ 147*7688df22SAndroid Build Coastguard Worker G2D_ALPHA_BLEND_MODE_MAX, 148*7688df22SAndroid Build Coastguard Worker }; 149*7688df22SAndroid Build Coastguard Worker 150*7688df22SAndroid Build Coastguard Worker enum e_g2d_op { 151*7688df22SAndroid Build Coastguard Worker G2D_OP_CLEAR = 0x00, 152*7688df22SAndroid Build Coastguard Worker G2D_OP_SRC = 0x01, 153*7688df22SAndroid Build Coastguard Worker G2D_OP_DST = 0x02, 154*7688df22SAndroid Build Coastguard Worker G2D_OP_OVER = 0x03, 155*7688df22SAndroid Build Coastguard Worker G2D_OP_INTERPOLATE = 0x04, 156*7688df22SAndroid Build Coastguard Worker G2D_OP_DISJOINT_CLEAR = 0x10, 157*7688df22SAndroid Build Coastguard Worker G2D_OP_DISJOINT_SRC = 0x11, 158*7688df22SAndroid Build Coastguard Worker G2D_OP_DISJOINT_DST = 0x12, 159*7688df22SAndroid Build Coastguard Worker G2D_OP_CONJOINT_CLEAR = 0x20, 160*7688df22SAndroid Build Coastguard Worker G2D_OP_CONJOINT_SRC = 0x21, 161*7688df22SAndroid Build Coastguard Worker G2D_OP_CONJOINT_DST = 0x22, 162*7688df22SAndroid Build Coastguard Worker }; 163*7688df22SAndroid Build Coastguard Worker 164*7688df22SAndroid Build Coastguard Worker /* 165*7688df22SAndroid Build Coastguard Worker * The G2D_COEFF_MODE_DST_{COLOR,ALPHA} modes both use the ALPHA_REG(0x618) 166*7688df22SAndroid Build Coastguard Worker * register. The registers fields are as follows: 167*7688df22SAndroid Build Coastguard Worker * bits 31:8 = color value (RGB order) 168*7688df22SAndroid Build Coastguard Worker * bits 7:0 = alpha value 169*7688df22SAndroid Build Coastguard Worker */ 170*7688df22SAndroid Build Coastguard Worker enum e_g2d_coeff_mode { 171*7688df22SAndroid Build Coastguard Worker G2D_COEFF_MODE_ONE, 172*7688df22SAndroid Build Coastguard Worker G2D_COEFF_MODE_ZERO, 173*7688df22SAndroid Build Coastguard Worker G2D_COEFF_MODE_SRC_ALPHA, 174*7688df22SAndroid Build Coastguard Worker G2D_COEFF_MODE_SRC_COLOR, 175*7688df22SAndroid Build Coastguard Worker G2D_COEFF_MODE_DST_ALPHA, 176*7688df22SAndroid Build Coastguard Worker G2D_COEFF_MODE_DST_COLOR, 177*7688df22SAndroid Build Coastguard Worker /* Global Alpha : Set by ALPHA_REG(0x618) */ 178*7688df22SAndroid Build Coastguard Worker G2D_COEFF_MODE_GB_ALPHA, 179*7688df22SAndroid Build Coastguard Worker /* Global Color and Alpha : Set by ALPHA_REG(0x618) */ 180*7688df22SAndroid Build Coastguard Worker G2D_COEFF_MODE_GB_COLOR, 181*7688df22SAndroid Build Coastguard Worker /* (1-SRC alpha)/DST Alpha */ 182*7688df22SAndroid Build Coastguard Worker G2D_COEFF_MODE_DISJOINT_S, 183*7688df22SAndroid Build Coastguard Worker /* (1-DST alpha)/SRC Alpha */ 184*7688df22SAndroid Build Coastguard Worker G2D_COEFF_MODE_DISJOINT_D, 185*7688df22SAndroid Build Coastguard Worker /* SRC alpha/DST alpha */ 186*7688df22SAndroid Build Coastguard Worker G2D_COEFF_MODE_CONJOINT_S, 187*7688df22SAndroid Build Coastguard Worker /* DST alpha/SRC alpha */ 188*7688df22SAndroid Build Coastguard Worker G2D_COEFF_MODE_CONJOINT_D, 189*7688df22SAndroid Build Coastguard Worker /* DST alpha/SRC alpha */ 190*7688df22SAndroid Build Coastguard Worker G2D_COEFF_MODE_MASK 191*7688df22SAndroid Build Coastguard Worker }; 192*7688df22SAndroid Build Coastguard Worker 193*7688df22SAndroid Build Coastguard Worker enum e_g2d_acoeff_mode { 194*7688df22SAndroid Build Coastguard Worker G2D_ACOEFF_MODE_A, /* alpha */ 195*7688df22SAndroid Build Coastguard Worker G2D_ACOEFF_MODE_APGA, /* alpha + global alpha */ 196*7688df22SAndroid Build Coastguard Worker G2D_ACOEFF_MODE_AMGA, /* alpha * global alpha */ 197*7688df22SAndroid Build Coastguard Worker G2D_ACOEFF_MODE_MASK 198*7688df22SAndroid Build Coastguard Worker }; 199*7688df22SAndroid Build Coastguard Worker 200*7688df22SAndroid Build Coastguard Worker union g2d_point_val { 201*7688df22SAndroid Build Coastguard Worker unsigned int val; 202*7688df22SAndroid Build Coastguard Worker struct { 203*7688df22SAndroid Build Coastguard Worker /* 204*7688df22SAndroid Build Coastguard Worker * Coordinate of Source Image 205*7688df22SAndroid Build Coastguard Worker * Range: 0 ~ 8000 (Requirement: SrcLeftX < SrcRightX) 206*7688df22SAndroid Build Coastguard Worker * In YCbCr 422 and YCbCr 420 format with even number. 207*7688df22SAndroid Build Coastguard Worker */ 208*7688df22SAndroid Build Coastguard Worker unsigned int x:16; 209*7688df22SAndroid Build Coastguard Worker /* 210*7688df22SAndroid Build Coastguard Worker * Y Coordinate of Source Image 211*7688df22SAndroid Build Coastguard Worker * Range: 0 ~ 8000 (Requirement: SrcTopY < SrcBottomY) 212*7688df22SAndroid Build Coastguard Worker * In YCbCr 420 format with even number. 213*7688df22SAndroid Build Coastguard Worker */ 214*7688df22SAndroid Build Coastguard Worker unsigned int y:16; 215*7688df22SAndroid Build Coastguard Worker } data; 216*7688df22SAndroid Build Coastguard Worker }; 217*7688df22SAndroid Build Coastguard Worker 218*7688df22SAndroid Build Coastguard Worker union g2d_rop4_val { 219*7688df22SAndroid Build Coastguard Worker unsigned int val; 220*7688df22SAndroid Build Coastguard Worker struct { 221*7688df22SAndroid Build Coastguard Worker enum e_g2d_rop3_type unmasked_rop3:8; 222*7688df22SAndroid Build Coastguard Worker enum e_g2d_rop3_type masked_rop3:8; 223*7688df22SAndroid Build Coastguard Worker unsigned int reserved:16; 224*7688df22SAndroid Build Coastguard Worker } data; 225*7688df22SAndroid Build Coastguard Worker }; 226*7688df22SAndroid Build Coastguard Worker 227*7688df22SAndroid Build Coastguard Worker union g2d_bitblt_cmd_val { 228*7688df22SAndroid Build Coastguard Worker unsigned int val; 229*7688df22SAndroid Build Coastguard Worker struct { 230*7688df22SAndroid Build Coastguard Worker /* [0:3] */ 231*7688df22SAndroid Build Coastguard Worker unsigned int mask_rop4_en:1; 232*7688df22SAndroid Build Coastguard Worker unsigned int masking_en:1; 233*7688df22SAndroid Build Coastguard Worker enum e_g2d_select_alpha_src rop4_alpha_en:1; 234*7688df22SAndroid Build Coastguard Worker unsigned int dither_en:1; 235*7688df22SAndroid Build Coastguard Worker /* [4:7] */ 236*7688df22SAndroid Build Coastguard Worker unsigned int resolved1:4; 237*7688df22SAndroid Build Coastguard Worker /* [8:11] */ 238*7688df22SAndroid Build Coastguard Worker unsigned int cw_en:4; 239*7688df22SAndroid Build Coastguard Worker /* [12:15] */ 240*7688df22SAndroid Build Coastguard Worker enum e_g2d_transparent_mode transparent_mode:4; 241*7688df22SAndroid Build Coastguard Worker /* [16:19] */ 242*7688df22SAndroid Build Coastguard Worker enum e_g2d_color_key_mode color_key_mode:4; 243*7688df22SAndroid Build Coastguard Worker /* [20:23] */ 244*7688df22SAndroid Build Coastguard Worker enum e_g2d_alpha_blend_mode alpha_blend_mode:4; 245*7688df22SAndroid Build Coastguard Worker /* [24:27] */ 246*7688df22SAndroid Build Coastguard Worker unsigned int src_pre_multiply:1; 247*7688df22SAndroid Build Coastguard Worker unsigned int pat_pre_multiply:1; 248*7688df22SAndroid Build Coastguard Worker unsigned int dst_pre_multiply:1; 249*7688df22SAndroid Build Coastguard Worker unsigned int dst_depre_multiply:1; 250*7688df22SAndroid Build Coastguard Worker /* [28:31] */ 251*7688df22SAndroid Build Coastguard Worker unsigned int fast_solid_color_fill_en:1; 252*7688df22SAndroid Build Coastguard Worker unsigned int reserved:3; 253*7688df22SAndroid Build Coastguard Worker } data; 254*7688df22SAndroid Build Coastguard Worker }; 255*7688df22SAndroid Build Coastguard Worker 256*7688df22SAndroid Build Coastguard Worker union g2d_blend_func_val { 257*7688df22SAndroid Build Coastguard Worker unsigned int val; 258*7688df22SAndroid Build Coastguard Worker struct { 259*7688df22SAndroid Build Coastguard Worker /* [0:15] */ 260*7688df22SAndroid Build Coastguard Worker enum e_g2d_coeff_mode src_coeff:4; 261*7688df22SAndroid Build Coastguard Worker enum e_g2d_acoeff_mode src_coeff_src_a:2; 262*7688df22SAndroid Build Coastguard Worker enum e_g2d_acoeff_mode src_coeff_dst_a:2; 263*7688df22SAndroid Build Coastguard Worker enum e_g2d_coeff_mode dst_coeff:4; 264*7688df22SAndroid Build Coastguard Worker enum e_g2d_acoeff_mode dst_coeff_src_a:2; 265*7688df22SAndroid Build Coastguard Worker enum e_g2d_acoeff_mode dst_coeff_dst_a:2; 266*7688df22SAndroid Build Coastguard Worker /* [16:19] */ 267*7688df22SAndroid Build Coastguard Worker unsigned int inv_src_color_coeff:1; 268*7688df22SAndroid Build Coastguard Worker unsigned int resoled1:1; 269*7688df22SAndroid Build Coastguard Worker unsigned int inv_dst_color_coeff:1; 270*7688df22SAndroid Build Coastguard Worker unsigned int resoled2:1; 271*7688df22SAndroid Build Coastguard Worker /* [20:23] */ 272*7688df22SAndroid Build Coastguard Worker unsigned int lighten_en:1; 273*7688df22SAndroid Build Coastguard Worker unsigned int darken_en:1; 274*7688df22SAndroid Build Coastguard Worker unsigned int win_ce_src_over_en:2; 275*7688df22SAndroid Build Coastguard Worker /* [24:31] */ 276*7688df22SAndroid Build Coastguard Worker unsigned int reserved:8; 277*7688df22SAndroid Build Coastguard Worker } data; 278*7688df22SAndroid Build Coastguard Worker }; 279*7688df22SAndroid Build Coastguard Worker 280*7688df22SAndroid Build Coastguard Worker struct g2d_image { 281*7688df22SAndroid Build Coastguard Worker enum e_g2d_select_mode select_mode; 282*7688df22SAndroid Build Coastguard Worker enum e_g2d_color_mode color_mode; 283*7688df22SAndroid Build Coastguard Worker enum e_g2d_repeat_mode repeat_mode; 284*7688df22SAndroid Build Coastguard Worker enum e_g2d_scale_mode scale_mode; 285*7688df22SAndroid Build Coastguard Worker unsigned int xscale; 286*7688df22SAndroid Build Coastguard Worker unsigned int yscale; 287*7688df22SAndroid Build Coastguard Worker unsigned char rotate_90; 288*7688df22SAndroid Build Coastguard Worker unsigned char x_dir; 289*7688df22SAndroid Build Coastguard Worker unsigned char y_dir; 290*7688df22SAndroid Build Coastguard Worker unsigned char component_alpha; 291*7688df22SAndroid Build Coastguard Worker unsigned int width; 292*7688df22SAndroid Build Coastguard Worker unsigned int height; 293*7688df22SAndroid Build Coastguard Worker unsigned int stride; 294*7688df22SAndroid Build Coastguard Worker unsigned int need_free; 295*7688df22SAndroid Build Coastguard Worker unsigned int color; 296*7688df22SAndroid Build Coastguard Worker enum e_g2d_buf_type buf_type; 297*7688df22SAndroid Build Coastguard Worker unsigned int bo[G2D_PLANE_MAX_NR]; 298*7688df22SAndroid Build Coastguard Worker struct drm_exynos_g2d_userptr user_ptr[G2D_PLANE_MAX_NR]; 299*7688df22SAndroid Build Coastguard Worker void *mapped_ptr[G2D_PLANE_MAX_NR]; 300*7688df22SAndroid Build Coastguard Worker }; 301*7688df22SAndroid Build Coastguard Worker 302*7688df22SAndroid Build Coastguard Worker struct g2d_context; 303*7688df22SAndroid Build Coastguard Worker 304*7688df22SAndroid Build Coastguard Worker struct g2d_context *g2d_init(int fd); 305*7688df22SAndroid Build Coastguard Worker void g2d_fini(struct g2d_context *ctx); 306*7688df22SAndroid Build Coastguard Worker void g2d_config_event(struct g2d_context *ctx, void *userdata); 307*7688df22SAndroid Build Coastguard Worker int g2d_exec(struct g2d_context *ctx); 308*7688df22SAndroid Build Coastguard Worker int g2d_solid_fill(struct g2d_context *ctx, struct g2d_image *img, 309*7688df22SAndroid Build Coastguard Worker unsigned int x, unsigned int y, unsigned int w, 310*7688df22SAndroid Build Coastguard Worker unsigned int h); 311*7688df22SAndroid Build Coastguard Worker int g2d_copy(struct g2d_context *ctx, struct g2d_image *src, 312*7688df22SAndroid Build Coastguard Worker struct g2d_image *dst, unsigned int src_x, 313*7688df22SAndroid Build Coastguard Worker unsigned int src_y, unsigned int dst_x, unsigned int dst_y, 314*7688df22SAndroid Build Coastguard Worker unsigned int w, unsigned int h); 315*7688df22SAndroid Build Coastguard Worker int g2d_move(struct g2d_context *ctx, struct g2d_image *img, 316*7688df22SAndroid Build Coastguard Worker unsigned int src_x, unsigned int src_y, unsigned int dst_x, 317*7688df22SAndroid Build Coastguard Worker unsigned dst_y, unsigned int w, unsigned int h); 318*7688df22SAndroid Build Coastguard Worker int g2d_copy_with_scale(struct g2d_context *ctx, struct g2d_image *src, 319*7688df22SAndroid Build Coastguard Worker struct g2d_image *dst, unsigned int src_x, 320*7688df22SAndroid Build Coastguard Worker unsigned int src_y, unsigned int src_w, 321*7688df22SAndroid Build Coastguard Worker unsigned int src_h, unsigned int dst_x, 322*7688df22SAndroid Build Coastguard Worker unsigned int dst_y, unsigned int dst_w, 323*7688df22SAndroid Build Coastguard Worker unsigned int dst_h, unsigned int negative); 324*7688df22SAndroid Build Coastguard Worker int g2d_blend(struct g2d_context *ctx, struct g2d_image *src, 325*7688df22SAndroid Build Coastguard Worker struct g2d_image *dst, unsigned int src_x, 326*7688df22SAndroid Build Coastguard Worker unsigned int src_y, unsigned int dst_x, unsigned int dst_y, 327*7688df22SAndroid Build Coastguard Worker unsigned int w, unsigned int h, enum e_g2d_op op); 328*7688df22SAndroid Build Coastguard Worker int g2d_scale_and_blend(struct g2d_context *ctx, struct g2d_image *src, 329*7688df22SAndroid Build Coastguard Worker struct g2d_image *dst, unsigned int src_x, unsigned int src_y, 330*7688df22SAndroid Build Coastguard Worker unsigned int src_w, unsigned int src_h, unsigned int dst_x, 331*7688df22SAndroid Build Coastguard Worker unsigned int dst_y, unsigned int dst_w, unsigned int dst_h, 332*7688df22SAndroid Build Coastguard Worker enum e_g2d_op op); 333*7688df22SAndroid Build Coastguard Worker #endif /* _FIMG2D_H_ */ 334