#ifndef __DRV_DISPLAY_LEGACY_H__ #define __DRV_DISPLAY_LEGACY_H__ #define __bool signed char typedef struct {__u8 alpha;__u8 red;__u8 green; __u8 blue; }__disp_color_t; typedef struct {__s32 x; __s32 y; __u32 width; __u32 height;}__disp_rect_t; typedef struct {__u32 width;__u32 height; }__disp_rectsz_t; typedef struct {__s32 x; __s32 y; }__disp_pos_t; typedef enum { LCD_CMAP_B0 = 0x0, LCD_CMAP_G0 = 0x1, LCD_CMAP_R0 = 0x2, LCD_CMAP_B1 = 0x4, LCD_CMAP_G1 = 0x5, LCD_CMAP_R1 = 0x6, LCD_CMAP_B2 = 0x8, LCD_CMAP_G2 = 0x9, LCD_CMAP_R2 = 0xa, LCD_CMAP_B3 = 0xc, LCD_CMAP_G3 = 0xd, LCD_CMAP_R3 = 0xe, }__lcd_cmap_color; typedef enum { DISP_FORMAT_1BPP =0x0, DISP_FORMAT_2BPP =0x1, DISP_FORMAT_4BPP =0x2, DISP_FORMAT_8BPP =0x3, DISP_FORMAT_RGB655 =0x4, DISP_FORMAT_RGB565 =0x5, DISP_FORMAT_RGB556 =0x6, DISP_FORMAT_ARGB1555 =0x7, DISP_FORMAT_RGBA5551 =0x8, DISP_FORMAT_ARGB888 =0x9,//alpha padding to 0xff DISP_FORMAT_ARGB8888 =0xa, DISP_FORMAT_RGB888 =0xb, DISP_FORMAT_ARGB4444 =0xc, DISP_FORMAT_YUV444 =0x10, DISP_FORMAT_YUV422 =0x11, DISP_FORMAT_YUV420 =0x12, DISP_FORMAT_YUV411 =0x13, DISP_FORMAT_CSIRGB =0x14, }__disp_pixel_fmt_t; typedef enum { DISP_MOD_INTERLEAVED =0x1, //interleaved,1个地址 DISP_MOD_NON_MB_PLANAR =0x0, //无宏块平面模式,3个地址,RGB/YUV每个channel分别存放 DISP_MOD_NON_MB_UV_COMBINED =0x2, //无宏块UV打包模式,2个地址,Y和UV分别存放 DISP_MOD_MB_PLANAR =0x4, //宏块平面模式,3个地址,RGB/YUV每个channel分别存放 DISP_MOD_MB_UV_COMBINED =0x6, //宏块UV打包模式 ,2个地址,Y和UV分别存放 }__disp_pixel_mod_t; typedef enum { //for interleave argb8888 DISP_SEQ_ARGB =0x0,//A在高位 DISP_SEQ_BGRA =0x2, //for nterleaved yuv422 DISP_SEQ_UYVY =0x3, DISP_SEQ_YUYV =0x4, DISP_SEQ_VYUY =0x5, DISP_SEQ_YVYU =0x6, //for interleaved yuv444 DISP_SEQ_AYUV =0x7, DISP_SEQ_VUYA =0x8, //for uv_combined yuv420 DISP_SEQ_UVUV =0x9, DISP_SEQ_VUVU =0xa, //for 16bpp rgb DISP_SEQ_P10 = 0xd,//p1在高位 DISP_SEQ_P01 = 0xe,//p0在高位 //for planar format or 8bpp rgb DISP_SEQ_P3210 = 0xf,//p3在高位 DISP_SEQ_P0123 = 0x10,//p0在高位 //for 4bpp rgb DISP_SEQ_P76543210 = 0x11, DISP_SEQ_P67452301 = 0x12, DISP_SEQ_P10325476 = 0x13, DISP_SEQ_P01234567 = 0x14, //for 2bpp rgb DISP_SEQ_2BPP_BIG_BIG = 0x15,//15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 DISP_SEQ_2BPP_BIG_LITTER = 0x16,//12,13,14,15,8,9,10,11,4,5,6,7,0,1,2,3 DISP_SEQ_2BPP_LITTER_BIG = 0x17,//3,2,1,0,7,6,5,4,11,10,9,8,15,14,13,12 DISP_SEQ_2BPP_LITTER_LITTER = 0x18,//0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 //for 1bpp rgb DISP_SEQ_1BPP_BIG_BIG = 0x19,//31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 DISP_SEQ_1BPP_BIG_LITTER = 0x1a,//24,25,26,27,28,29,30,31,16,17,18,19,20,21,22,23,8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7 DISP_SEQ_1BPP_LITTER_BIG = 0x1b,//7,6,5,4,3,2,1,0,15,14,13,12,11,10,9,8,23,22,21,20,19,18,17,16,31,30,29,28,27,26,25,24 DISP_SEQ_1BPP_LITTER_LITTER = 0x1c,//0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 }__disp_pixel_seq_t; typedef enum { DISP_3D_SRC_MODE_TB = 0x0,//top bottom DISP_3D_SRC_MODE_FP = 0x1,//frame packing DISP_3D_SRC_MODE_SSF = 0x2,//side by side full DISP_3D_SRC_MODE_SSH = 0x3,//side by side half DISP_3D_SRC_MODE_LI = 0x4,//line interleaved }__disp_3d_src_mode_t; typedef enum { DISP_3D_OUT_MODE_CI_1 = 0x5,//column interlaved 1 DISP_3D_OUT_MODE_CI_2 = 0x6,//column interlaved 2 DISP_3D_OUT_MODE_CI_3 = 0x7,//column interlaved 3 DISP_3D_OUT_MODE_CI_4 = 0x8,//column interlaved 4 DISP_3D_OUT_MODE_LIRGB = 0x9,//line interleaved rgb DISP_3D_OUT_MODE_TB = 0x0,//top bottom DISP_3D_OUT_MODE_FP = 0x1,//frame packing DISP_3D_OUT_MODE_SSF = 0x2,//side by side full DISP_3D_OUT_MODE_SSH = 0x3,//side by side half DISP_3D_OUT_MODE_LI = 0x4,//line interleaved DISP_3D_OUT_MODE_FA = 0xa,//field alternative }__disp_3d_out_mode_t; typedef enum { DISP_BT601 = 0, DISP_BT709 = 1, DISP_YCC = 2, DISP_VXYCC = 3, }__disp_cs_mode_t; typedef enum { DISP_COLOR_RANGE_16_255 = 0, DISP_COLOR_RANGE_0_255 = 1, DISP_COLOR_RANGE_16_235 = 2, }__disp_color_range_t; typedef enum { DISP_OUTPUT_TYPE_NONE = 0, DISP_OUTPUT_TYPE_LCD = 1, DISP_OUTPUT_TYPE_TV = 2, DISP_OUTPUT_TYPE_HDMI = 4, DISP_OUTPUT_TYPE_VGA = 8, }__disp_output_type_t; typedef enum { DISP_TV_NONE = 0, DISP_TV_CVBS = 1, DISP_TV_YPBPR = 2, DISP_TV_SVIDEO = 4, }__disp_tv_output_t; typedef enum { DISP_TV_MOD_480I = 0, DISP_TV_MOD_576I = 1, DISP_TV_MOD_480P = 2, DISP_TV_MOD_576P = 3, DISP_TV_MOD_720P_50HZ = 4, DISP_TV_MOD_720P_60HZ = 5, DISP_TV_MOD_1080I_50HZ = 6, DISP_TV_MOD_1080I_60HZ = 7, DISP_TV_MOD_1080P_24HZ = 8, DISP_TV_MOD_1080P_50HZ = 9, DISP_TV_MOD_1080P_60HZ = 0xa, DISP_TV_MOD_1080P_24HZ_3D_FP = 0x17, DISP_TV_MOD_720P_50HZ_3D_FP = 0x18, DISP_TV_MOD_720P_60HZ_3D_FP = 0x19, DISP_TV_MOD_1080P_25HZ = 0x1a, DISP_TV_MOD_1080P_30HZ = 0x1b, DISP_TV_MOD_PAL = 0xb, DISP_TV_MOD_PAL_SVIDEO = 0xc, DISP_TV_MOD_NTSC = 0xe, DISP_TV_MOD_NTSC_SVIDEO = 0xf, DISP_TV_MOD_PAL_M = 0x11, DISP_TV_MOD_PAL_M_SVIDEO = 0x12, DISP_TV_MOD_PAL_NC = 0x14, DISP_TV_MOD_PAL_NC_SVIDEO = 0x15, DISP_TV_MODE_NUM = 0x1c, }__disp_tv_mode_t; typedef enum { DISP_TV_DAC_SRC_COMPOSITE = 0, DISP_TV_DAC_SRC_LUMA = 1, DISP_TV_DAC_SRC_CHROMA = 2, DISP_TV_DAC_SRC_Y = 4, DISP_TV_DAC_SRC_PB = 5, DISP_TV_DAC_SRC_PR = 6, DISP_TV_DAC_SRC_NONE = 7, }__disp_tv_dac_source; typedef enum { DISP_VGA_H1680_V1050 = 0, DISP_VGA_H1440_V900 = 1, DISP_VGA_H1360_V768 = 2, DISP_VGA_H1280_V1024 = 3, DISP_VGA_H1024_V768 = 4, DISP_VGA_H800_V600 = 5, DISP_VGA_H640_V480 = 6, DISP_VGA_H1440_V900_RB = 7,//not support yet DISP_VGA_H1680_V1050_RB = 8,//not support yet DISP_VGA_H1920_V1080_RB = 9, DISP_VGA_H1920_V1080 = 0xa, DISP_VGA_H1280_V720 = 0xb, DISP_VGA_MODE_NUM = 0xc, }__disp_vga_mode_t; typedef enum { DISP_LCDC_SRC_DE_CH1 = 0, DISP_LCDC_SRC_DE_CH2 = 1, DISP_LCDC_SRC_DMA888 = 2, DISP_LCDC_SRC_DMA565 = 3, DISP_LCDC_SRC_WHITE = 4, DISP_LCDC_SRC_BLACK = 5, DISP_LCDC_SRC_BLUE = 6, }__disp_lcdc_src_t; typedef enum { DISP_LCD_BRIGHT_LEVEL0 = 0, DISP_LCD_BRIGHT_LEVEL1 = 1, DISP_LCD_BRIGHT_LEVEL2 = 2, DISP_LCD_BRIGHT_LEVEL3 = 3, DISP_LCD_BRIGHT_LEVEL4 = 4, DISP_LCD_BRIGHT_LEVEL5 = 5, DISP_LCD_BRIGHT_LEVEL6 = 6, DISP_LCD_BRIGHT_LEVEL7 = 7, DISP_LCD_BRIGHT_LEVEL8 = 8, DISP_LCD_BRIGHT_LEVEL9 = 9, DISP_LCD_BRIGHT_LEVEL10 = 0xa, DISP_LCD_BRIGHT_LEVEL11 = 0xb, DISP_LCD_BRIGHT_LEVEL12 = 0xc, DISP_LCD_BRIGHT_LEVEL13 = 0xd, DISP_LCD_BRIGHT_LEVEL14 = 0xe, DISP_LCD_BRIGHT_LEVEL15 = 0xf, }__disp_lcd_bright_t; typedef enum { DISP_LAYER_WORK_MODE_NORMAL = 0, //normal work mode DISP_LAYER_WORK_MODE_PALETTE = 1, //palette work mode DISP_LAYER_WORK_MODE_INTER_BUF = 2, //internal frame buffer work mode DISP_LAYER_WORK_MODE_GAMMA = 3, //gamma correction work mode DISP_LAYER_WORK_MODE_SCALER = 4, //scaler work mode }__disp_layer_work_mode_t; typedef enum { DISP_VIDEO_NATUAL = 0, DISP_VIDEO_SOFT = 1, DISP_VIDEO_VERYSOFT = 2, DISP_VIDEO_SHARP = 3, DISP_VIDEO_VERYSHARP = 4 }__disp_video_smooth_t; typedef enum { DISP_HWC_MOD_H32_V32_8BPP = 0, DISP_HWC_MOD_H64_V64_2BPP = 1, DISP_HWC_MOD_H64_V32_4BPP = 2, DISP_HWC_MOD_H32_V64_4BPP = 3, }__disp_hwc_mode_t; typedef enum { DISP_EXIT_MODE_CLEAN_ALL = 0, DISP_EXIT_MODE_CLEAN_PARTLY = 1,//only clean interrupt temply }__disp_exit_mode_t; typedef enum { DISP_ENHANCE_MODE_RED = 0x0, DISP_ENHANCE_MODE_GREEN = 0x1, DISP_ENHANCE_MODE_BLUE = 0x2, DISP_ENHANCE_MODE_CYAN = 0x3, DISP_ENHANCE_MODE_MAGENTA = 0x4, DISP_ENHANCE_MODE_YELLOW = 0x5, DISP_ENHANCE_MODE_FLESH = 0x6, DISP_ENHANCE_MODE_STANDARD = 0x7, DISP_ENHANCE_MODE_VIVID = 0x8, DISP_ENHANCE_MODE_SCENERY = 0xa, }__disp_enhance_mode_t; typedef enum { DISP_OUT_CSC_TYPE_LCD = 0, DISP_OUT_CSC_TYPE_TV = 1, DISP_OUT_CSC_TYPE_HDMI_YUV = 2, DISP_OUT_CSC_TYPE_VGA = 3, DISP_OUT_CSC_TYPE_HDMI_RGB = 4, }__disp_out_csc_type_t; typedef enum//only for debug!!! { DISP_MOD_FE0 = 0, DISP_MOD_FE1 = 1, DISP_MOD_BE0 = 2, DISP_MOD_BE1 = 3, DISP_MOD_LCD0 = 4, DISP_MOD_LCD1 = 5, DISP_MOD_TVE0 = 6, DISP_MOD_TVE1 = 7, DISP_MOD_CCMU = 8, DISP_MOD_PIOC = 9, DISP_MOD_PWM = 10, DISP_MOD_DEU0 = 11, DISP_MOD_DEU1 = 12, DISP_MOD_CMU0 = 13, DISP_MOD_CMU1 = 14, DISP_MOD_DRC0 = 15, DISP_MOD_DRC1 = 16, DISP_MOD_DSI0 = 17, DISP_MOD_DSI0_DPHY = 18, DISP_MOD_DSI1 = 19, DISP_MOD_DSI1_DPHY = 20, DISP_MOD_HDMI = 21, DISP_MOD_EDP = 22, DISP_MOD_NUM = 23, }__disp_mod_id_t; typedef enum { LCD_IF_HV = 0, LCD_IF_CPU = 1, LCD_IF_LVDS = 3, LCD_IF_DSI = 4, LCD_IF_EDP = 5, LCD_IF_EXT_DSI = 6, }__lcd_if_t; typedef enum { LCD_HV_IF_PRGB_1CYC = 0, //parallel hv LCD_HV_IF_SRGB_3CYC = 8, //serial hv LCD_HV_IF_DRGB_4CYC = 10, //Dummy RGB LCD_HV_IF_RGBD_4CYC = 11, //RGB Dummy LCD_HV_IF_CCIR656_2CYC = 12, }__lcd_hv_if_t; typedef enum { LCD_HV_SRGB_SEQ_RGB_RGB = 0, LCD_HV_SRGB_SEQ_RGB_BRG = 1, LCD_HV_SRGB_SEQ_RGB_GBR = 2, LCD_HV_SRGB_SEQ_BRG_RGB = 4, LCD_HV_SRGB_SEQ_BRG_BRG = 5, LCD_HV_SRGB_SEQ_BRG_GBR = 6, LCD_HV_SRGB_SEQ_GRB_RGB = 8, LCD_HV_SRGB_SEQ_GRB_BRG = 9, LCD_HV_SRGB_SEQ_GRB_GBR = 10, }__lcd_hv_srgb_seq_t; typedef enum { LCD_HV_SYUV_SEQ_YUYV = 0, LCD_HV_SYUV_SEQ_YVYU = 1, LCD_HV_SYUV_SEQ_UYUV = 2, LCD_HV_SYUV_SEQ_VYUY = 3, }__lcd_hv_syuv_seq_t; typedef enum { LCD_HV_SYUV_FDLY_0LINE = 0, LCD_HV_SRGB_FDLY_2LINE = 1, //ccir ntsc LCD_HV_SRGB_FDLY_3LINE = 2, //ccir pal }__lcd_hv_syuv_fdly_t; typedef enum { LCD_CPU_IF_RGB666_18PIN = 0, LCD_CPU_IF_RGB666_9PIN = 10, LCD_CPU_IF_RGB666_6PIN = 12, LCD_CPU_IF_RGB565_16PIN = 8, LCD_CPU_IF_RGB565_8PIN = 14, }__lcd_cpu_if_t; typedef enum { LCD_TE_DISABLE = 0, LCD_TE_RISING = 1, LCD_TE_FALLING = 2, }__lcd_te_t; typedef enum { LCD_LVDS_IF_SINGLE_LINK = 0, LCD_LVDS_IF_DUAL_LINK = 1, }__lcd_lvds_if_t; typedef enum { LCD_LVDS_8bit = 0, LCD_LVDS_6bit = 1, }__lcd_lvds_colordepth_t; typedef enum { LCD_LVDS_MODE_NS = 0, LCD_LVDS_MODE_JEIDA = 1, }__lcd_lvds_mode_t; typedef enum { LCD_DSI_IF_VIDEO_MODE = 0, LCD_DSI_IF_COMMAND_MODE = 1, LCD_DSI_IF_BURST_MODE = 2, }__lcd_dsi_if_t; typedef enum { LCD_DSI_1LANE = 1, LCD_DSI_2LANE = 2, LCD_DSI_3LANE = 3, LCD_DSI_4LANE = 4, }__lcd_dsi_lane_t; typedef enum { LCD_DSI_FORMAT_RGB888 = 0, LCD_DSI_FORMAT_RGB666 = 1, LCD_DSI_FORMAT_RGB666P = 2, LCD_DSI_FORMAT_RGB565 = 3, }__lcd_dsi_format_t; typedef enum { LCD_FRM_BYPASS = 0, LCD_FRM_RGB666 = 1, LCD_FRM_RGB565 = 2, }__lcd_frm_t; typedef struct { __u32 addr[3]; // frame buffer的内容地址,对于rgb类型,只有addr[0]有效 __disp_rectsz_t size;//单位是pixel __disp_pixel_fmt_t format; __disp_pixel_seq_t seq; __disp_pixel_mod_t mode; __bool br_swap; // blue red color swap flag, FALSE:RGB; TRUE:BGR,only used in rgb format __disp_cs_mode_t cs_mode; //color space __bool b_trd_src; //if 3d source, used for scaler mode layer __disp_3d_src_mode_t trd_mode; //source 3d mode, used for scaler mode layer __u32 trd_right_addr[3];//used when in frame packing 3d mode __bool pre_multiply; //TRUE: pre-multiply fb }__disp_fb_t; typedef struct { __disp_layer_work_mode_t mode; //layer work mode __bool b_from_screen; __u8 pipe; //layer pipe,0/1,if in scaler mode, scaler0 must be pipe0, scaler1 must be pipe1 __u8 prio; //layer priority,can get layer prio,but never set layer prio,从底至顶,优先级由低至高 __bool alpha_en; //layer global alpha enable __u16 alpha_val; //layer global alpha value __bool ck_enable; //layer color key enable __disp_rect_t src_win; // framebuffer source window,only care x,y if is not scaler mode __disp_rect_t scn_win; // screen window __disp_fb_t fb; //framebuffer __bool b_trd_out; //if output 3d mode, used for scaler mode layer __disp_3d_out_mode_t out_trd_mode; //output 3d mode, used for scaler mode layer }__disp_layer_info_t; typedef struct { __disp_color_t ck_max; __disp_color_t ck_min; __u32 red_match_rule;//0/1:always match; 2:match if min<=color<=max; 3:match if color>max or colormax or colormax or color