/* * Allwinner SoCs display driver. * * Copyright (C) 2016 Allwinner. * * This file is licensed under the terms of the GNU General Public * License version 2. This program is licensed "as is" without any * warranty of any kind, whether express or implied. */ /* ********************************************************************************************************************* */ /* All Winner Tech, All Right Reserved. 2014-2015 Copyright (c) */ /* */ /* File name : de_smbl_type.h */ /* */ /* Description : display engine 2.0 smbl struct declaration */ /* */ /* History : 2014/05/13 vito cheng v0.1 Initial version */ /* */ /* ********************************************************************************************************************* */ #ifndef __DE_SMBL_TYPE_H__ #define __DE_SMBL_TYPE_H__ #include "de_rtmx.h" #define SMBL_FRAME_MASK 0x00000002 /* 0x0: do SMBL in even frame; 0x1, do SMBL in odd frame; 0x2, do SMBL in all frames */ #define IEP_LH_INTERVAL_NUM 8 #define IEP_LH_PWRSV_NUM 24 typedef union { u32 dwval; struct { u32 en :1; /* bit0 */ u32 incsc_en :1; /* bit1 */ u32 r0 :2; /* bit2~3 */ u32 coef_switch_en :1; /* bit4 */ u32 r1 :3; /* bit5~7 */ u32 mod :2; /* bit8~9 */ u32 r2 :21;/* bit10~30 */ u32 bist_en :1; /* bit31 */ } bits; } __imgehc_gnectl_reg_t; /* 0x0 */ typedef union { u32 dwval; struct { u32 disp_w :13; /* bit0~12 //12-03-29 */ u32 r0 :3; /* bit13~15 //12-03-29 */ u32 disp_h :13; /* bit16~28 //12-03-29 */ u32 r1 :3; /* bit29~31 //12-03-29 */ } bits; } __imgehc_drcsize_reg_t; typedef union { u32 dwval; struct { u32 db_en :1; /* bit0 */ u32 r0 :7; /* bit1~7 */ u32 win_en :1; /* bit8 */ u32 hsv_en :1; /* bit9 */ u32 r1 :22;/* bit10~31 */ } bits; } __imgehc_drcctl_reg_t; /* 0x10 */ typedef union { u32 dwval; struct { u32 lgc_abslumshf :1; /* bit0 */ u32 adjust_en :1; /* bit1 */ u32 r0 :6; /* bit2~7 */ u32 lgc_abslumperval:8; /* bit8~15 */ u32 r1 :16;/* bit16~31 */ } bits; } __imgehc_drc_set_reg_t; /* 0x18 */ typedef union { u32 dwval; struct { u32 win_left :12;/* bit0~11 */ u32 r0 :4; /* bit12~15 */ u32 win_top :12;/* bit16~27 */ u32 r1 :4; /* bit28~31 */ } bits; } __imgehc_drc_wp_reg0_t; /* 0x1c */ typedef union { u32 dwval; struct { u32 win_right :12;/* bit0~11 */ u32 r0 :4; /* bit12~15 */ u32 win_bottom :12;/* bit16~27 */ u32 r1 :4; /* bit28~31 */ } bits; } __imgehc_drc_wp_reg1_t; /* 0x20 */ typedef union { u32 dwval; struct { u32 lh_rec_clr :1; /* bit0 */ u32 lh_mod :1; /* bit1 */ u32 r0 :30;/* bit2~31 */ } bits; } __imgehc_lhctl_reg_t; /* 0x30 */ typedef union { u32 dwval; struct { u32 lh_thres_val1 :8; /* bit0~7 */ u32 lh_thres_val2 :8; /* bit8~15 */ u32 lh_thres_val3 :8; /* bit16~23 */ u32 lh_thres_val4 :8; /* bit24~31 */ } bits; } __imgehc_lhthr_reg0_t; /* 0x34 */ typedef union { u32 dwval; struct { u32 lh_thres_val5 :8; /* bit0~7 */ u32 lh_thres_val6 :8; /* bit8~15 */ u32 lh_thres_val7 :8; /* bit16~23 */ u32 r0 :8; /* bit24~31 */ } bits; } __imgehc_lhthr_reg1_t; /* 0x38 */ typedef union { u32 dwval; struct { u32 lh_lum_data :32;/* bit0~31 */ } bits; } __imgehc_lhslum_reg_t; /* 0x0040 ~ 0x005c */ typedef union { u32 dwval; struct { u32 lh_cnt_data :32;/* bit0~31 */ } bits; } __imgehc_lhscnt_reg_t; /* 0x0060 ~ 0x007c */ typedef union { u32 dwval; struct { u32 csc_yg_coff :13;/* bit0~12 */ u32 r0 :19;/* bit13~31 */ } bits; } __imgehc_cscygcoff_reg_t; /* 0xc0~0xc8 */ typedef union { u32 dwval; struct { u32 csc_yg_con :14;/* bit0~13 */ u32 r0 :18;/* bit14~31 */ } bits; } __imgehc_cscygcon_reg_t; /* 0xcc */ typedef union { u32 dwval; struct { u32 csc_ur_coff :13;/* bit0~12 */ u32 r0 :19;/* bit13~31 */ } bits; } __imgehc_cscurcoff_reg_t; /* 0xd0~0xd8 */ typedef union { u32 dwval; struct { u32 csc_ur_con :14;/* bit0~13 */ u32 r0 :18;/* bit14~31 */ } bits; } __imgehc_cscurcon_reg_t; /* 0xdc */ typedef union { u32 dwval; struct { u32 csc_vb_coff :13;/* bit0~12 */ u32 r0 :19;/* bit13~31 */ } bits; } __imgehc_cscvbcoff_reg_t; /* 0xe0~0xe8 */ typedef union { u32 dwval; struct { u32 csc_vb_con :14;/* bit0~13 */ u32 r0 :18;/* bit14~31 */ } bits; } __imgehc_cscvbcon_reg_t; /* 0xec */ typedef union { u32 dwval; struct { u32 spa_coff0 :8; /* bit0~7 */ u32 spa_coff1 :8; /* bit8~15 */ u32 spa_coff2 :8; /* bit16~23 */ u32 r0 :8; /* bit24~31 */ } bits; } __imgehc_drcspacoff_reg_t; /* 0xf0~0xf8 */ typedef union { u32 dwval; struct { u32 inten_coff0 :8; /* bit0~7 */ u32 inten_coff1 :8; /* bit8~15 */ u32 inten_coff2 :8; /* bit16~23 */ u32 inten_coff3 :8; /* bit24~31 */ } bits; } __imgehc_drcintcoff_reg_t; /* 0x0100 ~ 0x01fc */ typedef union { u32 dwval; struct { u32 lumagain_coff0 :16;/* bit0~15 */ u32 lumagain_coff1 :16;/* bit16~31 */ } bits; } __imgehc_drclgcoff_reg_t; /* 0x0200 ~ 0x03fc */ typedef struct { __imgehc_gnectl_reg_t gnectl; /* 0x00 */ __imgehc_drcsize_reg_t drcsize;/* 0x04 */ u32 r0[2]; /* 0x08~0x0c */ __imgehc_drcctl_reg_t drcctl; /* 0x10 */ u32 r1; /* 0x14 */ __imgehc_drc_set_reg_t drc_set;/* 0x18 */ __imgehc_drc_wp_reg0_t drc_wp0;/* 0x1c */ __imgehc_drc_wp_reg1_t drc_wp1;/* 0x20 */ u32 r5[3]; /* 0x24~0x2c */ __imgehc_lhctl_reg_t lhctl; /* 0x30 */ __imgehc_lhthr_reg0_t lhthr0; /* 0x34 */ __imgehc_lhthr_reg1_t lhthr1; /* 0x38 */ u32 r2; /* 0x3c */ __imgehc_lhslum_reg_t lhslum[8]; /* 0x40~0x5c */ __imgehc_lhscnt_reg_t lhscnt[8]; /* 0x0060 ~ 0x007c */ __imgehc_cscygcoff_reg_t incscycoff[3]; /* 0x80~0x88 */ __imgehc_cscygcon_reg_t incscycon; /* 0x8c */ __imgehc_cscurcoff_reg_t incscucoff[3]; /* 0x90~0x98 */ __imgehc_cscurcon_reg_t incscucon; /* 0x9c */ __imgehc_cscvbcoff_reg_t incscvcoff[3]; /* 0xa0~0xa8 */ __imgehc_cscvbcon_reg_t incscvcon; /* 0xac */ u32 r6[4]; /* 0xb0~0xbc */ __imgehc_cscygcoff_reg_t cscrcoff[3]; /* 0xc0~0xc8 */ __imgehc_cscygcon_reg_t cscrcon; /* 0xcc */ __imgehc_cscurcoff_reg_t cscgcoff[3]; /* 0xd0~0xd8 */ __imgehc_cscurcon_reg_t cscgcon; /* 0xdc */ __imgehc_cscvbcoff_reg_t cscbcoff[3]; /* 0xe0~0xe8 */ __imgehc_cscvbcon_reg_t cscbcon; /* 0xec */ __imgehc_drcspacoff_reg_t drcspacoff[3]; /* 0xf0~0xf8 */ u32 r4; /* 0xfc */ __imgehc_drcintcoff_reg_t drcintcoff[64];/* 0x0100 ~ 0x01fc */ __imgehc_drclgcoff_reg_t drclgcoff[128];/* 0x0200 ~ 0x03fc */ } __smbl_reg_t; typedef struct { unsigned int IsEnable; unsigned int Runtime; unsigned int backlight; unsigned int dimming; unsigned char min_adj_index_hist[IEP_LH_PWRSV_NUM]; unsigned int size; /* size = width*height/100; */ } __smbl_status_t; #endif