| /* |
| * Copyright@ Samsung Electronics Co. LTD |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef _SEC_G2D_DRIVER_H_ |
| #define _SEC_G2D_DRIVER_H_ |
| typedef unsigned char u8; |
| typedef unsigned short u16; |
| typedef unsigned long u32; |
| |
| #define SEC_G2D_DEV_NAME "/dev/fimg2d" |
| |
| #define G2D_IOCTL_MAGIC 'G' |
| |
| #define G2D_BLIT _IO(G2D_IOCTL_MAGIC,0) |
| #define G2D_GET_VERSION _IO(G2D_IOCTL_MAGIC,1) |
| #define G2D_GET_MEMORY _IOR(G2D_IOCTL_MAGIC,2, unsigned int) |
| #define G2D_GET_MEMORY_SIZE _IOR(G2D_IOCTL_MAGIC,3, unsigned int) |
| #define G2D_DMA_CACHE_CLEAN _IOWR(G2D_IOCTL_MAGIC,4, struct g2d_dma_info) |
| #define G2D_DMA_CACHE_FLUSH _IOWR(G2D_IOCTL_MAGIC,5, struct g2d_dma_info) |
| #define G2D_SYNC _IO(G2D_IOCTL_MAGIC,6) |
| #define G2D_RESET _IO(G2D_IOCTL_MAGIC,7) |
| |
| #define G2D_MAX_WIDTH (2048) |
| #define G2D_MAX_HEIGHT (2048) |
| |
| #define G2D_ALPHA_VALUE_MAX (255) |
| |
| #define G2D_POLLING (1<<0) |
| #define G2D_INTERRUPT (0<<0) |
| #define G2D_CACHE_OP (1<<1) |
| #define G2D_NONE_INVALIDATE (0<<1) |
| #define G2D_HYBRID_MODE (1<<2) |
| |
| typedef enum { |
| G2D_ROT_0 = 0, |
| G2D_ROT_90, |
| G2D_ROT_180, |
| G2D_ROT_270, |
| G2D_ROT_X_FLIP, |
| G2D_ROT_Y_FLIP |
| } G2D_ROT_DEG; |
| |
| typedef enum { |
| G2D_ALPHA_BLENDING_MIN = 0, // wholly transparent |
| G2D_ALPHA_BLENDING_MAX = 255, // 255 |
| G2D_ALPHA_BLENDING_OPAQUE = 256, // opaque |
| } G2D_ALPHA_BLENDING_MODE; |
| |
| typedef enum { |
| G2D_COLORKEY_NONE = 0, |
| G2D_COLORKEY_SRC_ON, |
| G2D_COLORKEY_DST_ON, |
| G2D_COLORKEY_SRC_DST_ON, |
| } G2D_COLORKEY_MODE; |
| |
| typedef enum { |
| G2D_BLUE_SCREEN_NONE = 0, |
| G2D_BLUE_SCREEN_TRANSPARENT, |
| G2D_BLUE_SCREEN_WITH_COLOR, |
| } G2D_BLUE_SCREEN_MODE; |
| |
| typedef enum { |
| G2D_ROP_SRC = 0, |
| G2D_ROP_DST, |
| G2D_ROP_SRC_AND_DST, |
| G2D_ROP_SRC_OR_DST, |
| G2D_ROP_3RD_OPRND, |
| G2D_ROP_SRC_AND_3RD_OPRND, |
| G2D_ROP_SRC_OR_3RD_OPRND, |
| G2D_ROP_SRC_XOR_3RD_OPRND, |
| G2D_ROP_DST_OR_3RD, |
| } G2D_ROP_TYPE; |
| |
| typedef enum { |
| G2D_THIRD_OP_NONE = 0, |
| G2D_THIRD_OP_PATTERN, |
| G2D_THIRD_OP_FG, |
| G2D_THIRD_OP_BG |
| } G2D_THIRD_OP_MODE; |
| |
| typedef enum { |
| G2D_BLACK = 0, |
| G2D_RED, |
| G2D_GREEN, |
| G2D_BLUE, |
| G2D_WHITE, |
| G2D_YELLOW, |
| G2D_CYAN, |
| G2D_MAGENTA |
| } G2D_COLOR; |
| |
| typedef enum { |
| G2D_RGB_565 = ((0<<4)|2), |
| |
| G2D_ABGR_8888 = ((2<<4)|1), |
| G2D_BGRA_8888 = ((3<<4)|1), |
| G2D_ARGB_8888 = ((0<<4)|1), |
| G2D_RGBA_8888 = ((1<<4)|1), |
| |
| G2D_XBGR_8888 = ((2<<4)|0), |
| G2D_BGRX_8888 = ((3<<4)|0), |
| G2D_XRGB_8888 = ((0<<4)|0), |
| G2D_RGBX_8888 = ((1<<4)|0), |
| |
| G2D_ABGR_1555 = ((2<<4)|4), |
| G2D_BGRA_5551 = ((3<<4)|4), |
| G2D_ARGB_1555 = ((0<<4)|4), |
| G2D_RGBA_5551 = ((1<<4)|4), |
| |
| G2D_XBGR_1555 = ((2<<4)|3), |
| G2D_BGRX_5551 = ((3<<4)|3), |
| G2D_XRGB_1555 = ((0<<4)|3), |
| G2D_RGBX_5551 = ((1<<4)|3), |
| |
| G2D_ABGR_4444 = ((2<<4)|6), |
| G2D_BGRA_4444 = ((3<<4)|6), |
| G2D_ARGB_4444 = ((0<<4)|6), |
| G2D_RGBA_4444 = ((1<<4)|6), |
| |
| G2D_XBGR_4444 = ((2<<4)|5), |
| G2D_BGRX_4444 = ((3<<4)|5), |
| G2D_XRGB_4444 = ((0<<4)|5), |
| G2D_RGBX_4444 = ((1<<4)|5), |
| |
| G2D_PACKED_BGR_888 = ((2<<4)|7), |
| G2D_PACKED_RGB_888 = ((0<<4)|7), |
| |
| G2D_MAX_COLOR_SPACE |
| } G2D_COLOR_SPACE; |
| |
| typedef enum { |
| G2D_Clear_Mode, //!< [0, 0] |
| G2D_Src_Mode, //!< [Sa, Sc] |
| G2D_Dst_Mode, //!< [Da, Dc] |
| G2D_SrcOver_Mode, //!< [Sa + Da - Sa*Da, Rc = Sc + (1 - Sa)*Dc] |
| G2D_DstOver_Mode, //!< [Sa + Da - Sa*Da, Rc = Dc + (1 - Da)*Sc] |
| G2D_SrcIn_Mode, //!< [Sa * Da, Sc * Da] |
| G2D_DstIn_Mode, //!< [Sa * Da, Sa * Dc] |
| G2D_SrcOut_Mode, //!< [Sa * (1 - Da), Sc * (1 - Da)] |
| G2D_DstOut_Mode, //!< [Da * (1 - Sa), Dc * (1 - Sa)] |
| G2D_SrcATop_Mode, //!< [Da, Sc * Da + (1 - Sa) * Dc] |
| G2D_DstATop_Mode, //!< [Sa, Sa * Dc + Sc * (1 - Da)] |
| G2D_Xor_Mode, //!< [Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + (1 - Sa) * Dc] |
| |
| // these modes are defined in the SVG Compositing standard |
| // http://www.w3.org/TR/2009/WD-SVGCompositing-20090430/ |
| G2D_Plus_Mode, |
| G2D_Multiply_Mode, |
| G2D_Screen_Mode, |
| G2D_Overlay_Mode, |
| G2D_Darken_Mode, |
| G2D_Lighten_Mode, |
| G2D_ColorDodge_Mode, |
| G2D_ColorBurn_Mode, |
| G2D_HardLight_Mode, |
| G2D_SoftLight_Mode, |
| G2D_Difference_Mode, |
| G2D_Exclusion_Mode, |
| |
| kLastMode = G2D_Exclusion_Mode |
| } G2D_PORTTERDUFF_MODE; |
| |
| typedef enum { |
| G2D_MEMORY_KERNEL, |
| G2D_MEMORY_USER |
| } G2D_MEMORY_TYPE; |
| |
| typedef struct { |
| int x; |
| int y; |
| unsigned int w; |
| unsigned int h; |
| unsigned int full_w; |
| unsigned int full_h; |
| int color_format; |
| unsigned int bytes_per_pixel; |
| unsigned char * addr; |
| } g2d_rect; |
| |
| typedef struct { |
| unsigned int rotate_val; |
| unsigned int alpha_val; |
| |
| unsigned int blue_screen_mode; //true : enable, false : disable |
| unsigned int color_key_val; //screen color value |
| unsigned int color_switch_val; //one color |
| |
| unsigned int src_color; // when set one color on SRC |
| |
| unsigned int third_op_mode; |
| unsigned int rop_mode; |
| unsigned int mask_mode; |
| unsigned int render_mode; |
| unsigned int potterduff_mode; |
| unsigned int memory_type; |
| } g2d_flag; |
| |
| typedef struct { |
| unsigned int t; |
| unsigned int b; |
| unsigned int l; |
| unsigned int r; |
| } g2d_clip; |
| |
| typedef struct { |
| g2d_rect src_rect; |
| g2d_rect dst_rect; |
| g2d_clip clip; |
| g2d_flag flag; |
| } g2d_params; |
| |
| struct g2d_dma_info { |
| unsigned long addr; |
| unsigned int size; |
| }; |
| |
| typedef struct _sec_g2d_t { |
| int dev_fd; |
| g2d_params params; |
| }sec_g2d_t; |
| |
| typedef struct __s5p_rect { |
| uint32_t x; |
| uint32_t y; |
| uint32_t w; |
| uint32_t h; |
| } __s5p_rect; |
| |
| typedef struct __s5p_img { |
| uint32_t width; |
| uint32_t height; |
| uint32_t format; |
| uint32_t offset; |
| uint32_t base; |
| int memory_id; |
| } __s5p_img; |
| |
| #endif /*_SEC_G2D_DRIVER_H_*/ |