1 /* 2 * ===================================================================================== 3 * 4 * Filename: fb.h 5 * 6 * Description: misc definition for display pixel format. 7 * 8 * Version: Melis3.0 9 * Create: 2017-11-03 11:38:28 10 * Revision: none 11 * Compiler: gcc version 6.3.0 (crosstool-NG crosstool-ng-1.23.0) 12 * 13 * Author: caozilong@allwinnertech.com 14 * Organization: BU1-PSW 15 * Last Modified: 2019-03-29 17:49:54 16 * 17 * ===================================================================================== 18 */ 19 20 #ifndef FRAMEBUFFER_H 21 #define FRAMEBUFFER_H 22 #include <typedef.h> 23 #include <kconfig.h> 24 25 typedef enum __PIXEL_YUVFMT 26 { 27 PIXEL_YUV444 = 0x71, 28 PIXEL_YUV422, 29 PIXEL_YUV420, 30 PIXEL_YUV411, 31 PIXEL_CSIRGB, 32 PIXEL_OTHERFMT, 33 } __pixel_yuvfmt_t; 34 35 typedef enum __YUV_MODE 36 { 37 YUV_MOD_INTERLEAVED = 0, 38 YUV_MOD_NON_MB_PLANAR, 39 YUV_MOD_MB_PLANAR, 40 YUV_MOD_UV_NON_MB_COMBINED, 41 YUV_MOD_UV_MB_COMBINED 42 } __yuv_mod_t; 43 44 typedef enum 45 { 46 YUV_SEQ_UYVY = 0, 47 YUV_SEQ_YUYV, 48 YUV_SEQ_VYUY, 49 YUV_SEQ_YVYU, 50 YUV_SEQ_AYUV = 0x10, 51 YUV_SEQ_VUYA, 52 YUV_SEQ_UVUV = 0x20, 53 YUV_SEQ_VUVU, 54 YUV_SEQ_OTHRS = 0xff, 55 } __yuv_seq_t; 56 57 58 typedef struct 59 { 60 __u32 width; 61 __u32 height; 62 } SIZE; 63 64 typedef enum 65 { 66 BT601 = 0, 67 BT709, 68 YCC, 69 VXYCC, 70 MONO 71 } __cs_mode_t; 72 73 typedef struct 74 { 75 __s32 x; 76 __s32 y; 77 __u32 width; 78 __u32 height; 79 } RECT; 80 81 typedef enum 82 { 83 FB_TYPE_RGB = 0, 84 FB_TYPE_YUV = 1 85 } __fb_type_t; 86 87 typedef enum __PIXEL_RGBFMT 88 { 89 PIXEL_MONO_1BPP = 0x51, 90 PIXEL_MONO_2BPP, 91 PIXEL_MONO_4BPP, 92 PIXEL_MONO_8BPP, 93 PIXEL_COLOR_RGB655, 94 PIXEL_COLOR_RGB565, 95 PIXEL_COLOR_RGB556, 96 PIXEL_COLOR_ARGB1555, 97 PIXEL_COLOR_RGBA5551, 98 PIXEL_COLOR_RGB0888, 99 PIXEL_COLOR_ARGB8888, 100 } __pixel_rgbfmt_t; 101 102 typedef enum 103 { 104 RGB_SEQ_ARGB = 0x00,//for 32bpp 105 RGB_SEQ_BRGA = 0x02, 106 RGB_SEQ_P10 = 0x10,//for 16bpp 107 RGB_SEQ_P01 = 0x11, 108 RGB_SEQ_P3210 = 0x20,//for 8bpp 109 RGB_SEQ_P0123 = 0x21, 110 RGB_SEQ_P76543210 = 0x30,//for 4bpp 111 RGB_SEQ_P67452301 = 0x31, 112 RGB_SEQ_P10325476 = 0x32, 113 RGB_SEQ_P01234567 = 0x33, 114 RGB_SEQ_2BPP_BIG_BIG = 0x40,//for 2bpp 115 RGB_SEQ_2BPP_BIG_LITTER = 0x41, 116 RGB_SEQ_2BPP_LITTER_BIG = 0x42, 117 RGB_SEQ_2BPP_LITTER_LITTER = 0x43, 118 RGB_SEQ_1BPP_BIG_BIG = 0x50,//for 1bpp 119 RGB_SEQ_1BPP_BIG_LITTER = 0x51, 120 RGB_SEQ_1BPP_LITTER_BIG = 0x52, 121 RGB_SEQ_1BPP_LITTER_LITTER = 0x53, 122 } __rgb_seq_t; 123 124 typedef struct 125 { 126 __fb_type_t type; 127 union 128 { 129 struct 130 { 131 __pixel_rgbfmt_t pixelfmt; 132 __bool br_swap; 133 __rgb_seq_t pixseq; 134 struct 135 { 136 void *addr; 137 __u32 size; 138 } palette; 139 } rgb; 140 struct 141 { 142 __pixel_yuvfmt_t pixelfmt; 143 __yuv_mod_t mod; 144 __yuv_seq_t yuvseq; 145 } yuv; 146 } fmt; 147 __cs_mode_t cs_mode; 148 } __fb_format_t; 149 150 151 typedef struct __FB 152 { 153 SIZE size; 154 void *addr[3]; 155 __fb_format_t fmt; 156 } FB; 157 158 typedef struct 159 { 160 __u8 alpha; 161 __u8 red; 162 __u8 green; 163 __u8 blue; 164 } COLOR; /* 32-bit (ARGB) color */ 165 166 typedef struct 167 { 168 __s32 x; 169 __s32 y; 170 } OFFSET; /* coordinate (x, y) */ 171 172 typedef COLOR __color_t; 173 typedef RECT __rect_t; 174 typedef OFFSET __pos_t; 175 typedef SIZE __rectsz_t; 176 177 #endif /*FRAMEBUFFER_H*/ 178