Home | History | Annotate | Download | only in include
      1 /*
      2  * Copyright@ Samsung Electronics Co. LTD
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #ifndef _SEC_G2D_DRIVER_H_
     18 #define _SEC_G2D_DRIVER_H_
     19 typedef unsigned char  u8;
     20 typedef unsigned short u16;
     21 typedef unsigned long  u32;
     22 
     23 #define SEC_G2D_DEV_NAME        "/dev/fimg2d"
     24 
     25 #define G2D_IOCTL_MAGIC 'G'
     26 
     27 #define G2D_BLIT                    _IO(G2D_IOCTL_MAGIC,0)
     28 #define G2D_GET_VERSION             _IO(G2D_IOCTL_MAGIC,1)
     29 #define G2D_GET_MEMORY              _IOR(G2D_IOCTL_MAGIC,2, unsigned int)
     30 #define G2D_GET_MEMORY_SIZE         _IOR(G2D_IOCTL_MAGIC,3, unsigned int)
     31 #define G2D_DMA_CACHE_CLEAN         _IOWR(G2D_IOCTL_MAGIC,4, struct g2d_dma_info)
     32 #define G2D_DMA_CACHE_FLUSH         _IOWR(G2D_IOCTL_MAGIC,5, struct g2d_dma_info)
     33 #define G2D_SYNC                    _IO(G2D_IOCTL_MAGIC,6)
     34 #define G2D_RESET                   _IO(G2D_IOCTL_MAGIC,7)
     35 
     36 #define G2D_MAX_WIDTH   (2048)
     37 #define G2D_MAX_HEIGHT  (2048)
     38 
     39 #define G2D_ALPHA_VALUE_MAX (255)
     40 
     41 #define G2D_POLLING (1<<0)
     42 #define G2D_INTERRUPT (0<<0)
     43 #define G2D_CACHE_OP (1<<1)
     44 #define G2D_NONE_INVALIDATE (0<<1)
     45 #define G2D_HYBRID_MODE (1<<2)
     46 
     47 typedef enum {
     48     G2D_ROT_0 = 0,
     49     G2D_ROT_90,
     50     G2D_ROT_180,
     51     G2D_ROT_270,
     52     G2D_ROT_X_FLIP,
     53     G2D_ROT_Y_FLIP
     54 } G2D_ROT_DEG;
     55 
     56 typedef enum {
     57     G2D_ALPHA_BLENDING_MIN    = 0,   // wholly transparent
     58     G2D_ALPHA_BLENDING_MAX    = 255, // 255
     59     G2D_ALPHA_BLENDING_OPAQUE = 256, // opaque
     60 } G2D_ALPHA_BLENDING_MODE;
     61 
     62 typedef enum {
     63     G2D_COLORKEY_NONE = 0,
     64     G2D_COLORKEY_SRC_ON,
     65     G2D_COLORKEY_DST_ON,
     66     G2D_COLORKEY_SRC_DST_ON,
     67 } G2D_COLORKEY_MODE;
     68 
     69 typedef enum {
     70     G2D_BLUE_SCREEN_NONE = 0,
     71     G2D_BLUE_SCREEN_TRANSPARENT,
     72     G2D_BLUE_SCREEN_WITH_COLOR,
     73 } G2D_BLUE_SCREEN_MODE;
     74 
     75 typedef enum {
     76     G2D_ROP_SRC = 0,
     77     G2D_ROP_DST,
     78     G2D_ROP_SRC_AND_DST,
     79     G2D_ROP_SRC_OR_DST,
     80     G2D_ROP_3RD_OPRND,
     81     G2D_ROP_SRC_AND_3RD_OPRND,
     82     G2D_ROP_SRC_OR_3RD_OPRND,
     83     G2D_ROP_SRC_XOR_3RD_OPRND,
     84     G2D_ROP_DST_OR_3RD,
     85 } G2D_ROP_TYPE;
     86 
     87 typedef enum {
     88     G2D_THIRD_OP_NONE = 0,
     89     G2D_THIRD_OP_PATTERN,
     90     G2D_THIRD_OP_FG,
     91     G2D_THIRD_OP_BG
     92 } G2D_THIRD_OP_MODE;
     93 
     94 typedef enum {
     95     G2D_BLACK = 0,
     96     G2D_RED,
     97     G2D_GREEN,
     98     G2D_BLUE,
     99     G2D_WHITE,
    100     G2D_YELLOW,
    101     G2D_CYAN,
    102     G2D_MAGENTA
    103 } G2D_COLOR;
    104 
    105 typedef enum {
    106     G2D_RGB_565 = ((0<<4)|2),
    107 
    108     G2D_ABGR_8888 = ((2<<4)|1),
    109     G2D_BGRA_8888 = ((3<<4)|1),
    110     G2D_ARGB_8888 = ((0<<4)|1),
    111     G2D_RGBA_8888 = ((1<<4)|1),
    112 
    113     G2D_XBGR_8888 = ((2<<4)|0),
    114     G2D_BGRX_8888 = ((3<<4)|0),
    115     G2D_XRGB_8888 = ((0<<4)|0),
    116     G2D_RGBX_8888 = ((1<<4)|0),
    117 
    118     G2D_ABGR_1555 = ((2<<4)|4),
    119     G2D_BGRA_5551 = ((3<<4)|4),
    120     G2D_ARGB_1555 = ((0<<4)|4),
    121     G2D_RGBA_5551 = ((1<<4)|4),
    122 
    123     G2D_XBGR_1555 = ((2<<4)|3),
    124     G2D_BGRX_5551 = ((3<<4)|3),
    125     G2D_XRGB_1555 = ((0<<4)|3),
    126     G2D_RGBX_5551 = ((1<<4)|3),
    127 
    128     G2D_ABGR_4444 = ((2<<4)|6),
    129     G2D_BGRA_4444 = ((3<<4)|6),
    130     G2D_ARGB_4444 = ((0<<4)|6),
    131     G2D_RGBA_4444 = ((1<<4)|6),
    132 
    133     G2D_XBGR_4444 = ((2<<4)|5),
    134     G2D_BGRX_4444 = ((3<<4)|5),
    135     G2D_XRGB_4444 = ((0<<4)|5),
    136     G2D_RGBX_4444 = ((1<<4)|5),
    137 
    138     G2D_PACKED_BGR_888 = ((2<<4)|7),
    139     G2D_PACKED_RGB_888 = ((0<<4)|7),
    140 
    141     G2D_MAX_COLOR_SPACE
    142 } G2D_COLOR_SPACE;
    143 
    144 typedef enum {
    145     G2D_Clear_Mode,    //!< [0, 0]
    146     G2D_Src_Mode,      //!< [Sa, Sc]
    147     G2D_Dst_Mode,      //!< [Da, Dc]
    148     G2D_SrcOver_Mode,  //!< [Sa + Da - Sa*Da, Rc = Sc + (1 - Sa)*Dc]
    149     G2D_DstOver_Mode,  //!< [Sa + Da - Sa*Da, Rc = Dc + (1 - Da)*Sc]
    150     G2D_SrcIn_Mode,    //!< [Sa * Da, Sc * Da]
    151     G2D_DstIn_Mode,    //!< [Sa * Da, Sa * Dc]
    152     G2D_SrcOut_Mode,   //!< [Sa * (1 - Da), Sc * (1 - Da)]
    153     G2D_DstOut_Mode,   //!< [Da * (1 - Sa), Dc * (1 - Sa)]
    154     G2D_SrcATop_Mode,  //!< [Da, Sc * Da + (1 - Sa) * Dc]
    155     G2D_DstATop_Mode,  //!< [Sa, Sa * Dc + Sc * (1 - Da)]
    156     G2D_Xor_Mode,      //!< [Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + (1 - Sa) * Dc]
    157 
    158     // these modes are defined in the SVG Compositing standard
    159     // http://www.w3.org/TR/2009/WD-SVGCompositing-20090430/
    160     G2D_Plus_Mode,
    161     G2D_Multiply_Mode,
    162     G2D_Screen_Mode,
    163     G2D_Overlay_Mode,
    164     G2D_Darken_Mode,
    165     G2D_Lighten_Mode,
    166     G2D_ColorDodge_Mode,
    167     G2D_ColorBurn_Mode,
    168     G2D_HardLight_Mode,
    169     G2D_SoftLight_Mode,
    170     G2D_Difference_Mode,
    171     G2D_Exclusion_Mode,
    172 
    173     kLastMode = G2D_Exclusion_Mode
    174 } G2D_PORTTERDUFF_MODE;
    175 
    176 typedef enum {
    177        G2D_MEMORY_KERNEL,
    178        G2D_MEMORY_USER
    179 } G2D_MEMORY_TYPE;
    180 
    181 typedef struct {
    182     int    x;
    183     int    y;
    184     unsigned int    w;
    185     unsigned int    h;
    186     unsigned int    full_w;
    187     unsigned int    full_h;
    188     int             color_format;
    189     unsigned int    bytes_per_pixel;
    190     unsigned char * addr;
    191 } g2d_rect;
    192 
    193 typedef struct {
    194     unsigned int    rotate_val;
    195     unsigned int    alpha_val;
    196 
    197     unsigned int    blue_screen_mode;     //true : enable, false : disable
    198     unsigned int    color_key_val;        //screen color value
    199     unsigned int    color_switch_val;     //one color
    200 
    201     unsigned int    src_color;            // when set one color on SRC
    202 
    203     unsigned int    third_op_mode;
    204     unsigned int    rop_mode;
    205     unsigned int    mask_mode;
    206     unsigned int    render_mode;
    207     unsigned int    potterduff_mode;
    208         unsigned int    memory_type;
    209 } g2d_flag;
    210 
    211 typedef struct {
    212     unsigned int    t;
    213     unsigned int    b;
    214     unsigned int    l;
    215     unsigned int    r;
    216 } g2d_clip;
    217 
    218 typedef struct {
    219     g2d_rect src_rect;
    220     g2d_rect dst_rect;
    221     g2d_clip clip;
    222     g2d_flag flag;
    223 } g2d_params;
    224 
    225 struct g2d_dma_info {
    226     unsigned long addr;
    227     unsigned int  size;
    228 };
    229 
    230 typedef struct _sec_g2d_t {
    231     int dev_fd;
    232     g2d_params  params;
    233 }sec_g2d_t;
    234 
    235 typedef struct __s5p_rect {
    236     uint32_t x;
    237     uint32_t y;
    238     uint32_t w;
    239     uint32_t h;
    240 } __s5p_rect;
    241 
    242 typedef struct __s5p_img {
    243     uint32_t width;
    244     uint32_t height;
    245     uint32_t format;
    246     uint32_t offset;
    247     uint32_t base;
    248     int memory_id;
    249 } __s5p_img;
    250 
    251 #endif /*_SEC_G2D_DRIVER_H_*/
    252