huangcm
2025-07-03 c26084b3642f262f858535ab4e46c1e9b520d3a1
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
/*
 * 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
 
union __imgehc_gnectl_reg_t {
   u32 dwval;
   struct {
       u32 en:1;
       u32 incsc_en:1;
       u32 r0:2;
       u32 coef_switch_en:1;
       u32 r1:3;
       u32 mod:2;
       u32 r2:21;
       u32 bist_en:1;
   } bits;
};
 
union __imgehc_drcsize_reg_t {
   u32 dwval;
   struct {
       u32 disp_w:13;
       u32 r0:3;
       u32 disp_h:13;
       u32 r1:3;
   } bits;
};
 
union __imgehc_drcctl_reg_t {
   u32 dwval;
   struct {
       u32 db_en:1;
       u32 r0:7;
       u32 win_en:1;
       u32 hsv_en:1;
       u32 r1:22;
   } bits;
};
 
union __imgehc_drc_set_reg_t {
   u32 dwval;
   struct {
       u32 lgc_abslumshf:1;
       u32 adjust_en:1;
       u32 r0:6;
       u32 lgc_abslumperval:8;
       u32 r1:16;
   } bits;
};
 
union __imgehc_drc_wp_reg0_t {
   u32 dwval;
   struct {
       u32 win_left:12;
       u32 r0:4;
       u32 win_top:12;
       u32 r1:4;
   } bits;
};
 
union __imgehc_drc_wp_reg1_t {
   u32 dwval;
   struct {
       u32 win_right:12;
       u32 r0:4;
       u32 win_bottom:12;
       u32 r1:4;
   } bits;
};
 
union __imgehc_lhctl_reg_t {
   u32 dwval;
   struct {
       u32 lh_rec_clr:1;
       u32 lh_mod:1;
       u32 r0:30;
   } bits;
};
 
union __imgehc_lhthr_reg0_t {
   u32 dwval;
   struct {
       u32 lh_thres_val1:8;
       u32 lh_thres_val2:8;
       u32 lh_thres_val3:8;
       u32 lh_thres_val4:8;
   } bits;
};
 
union __imgehc_lhthr_reg1_t {
   u32 dwval;
   struct {
       u32 lh_thres_val5:8;
       u32 lh_thres_val6:8;
       u32 lh_thres_val7:8;
       u32 r0:8;
   } bits;
};
 
union __imgehc_lhslum_reg_t {
   u32 dwval;
   struct {
       u32 lh_lum_data:32;
   } bits;
};
 
union __imgehc_lhscnt_reg_t {
   u32 dwval;
   struct {
       u32 lh_cnt_data:32;
   } bits;
};
 
union __imgehc_cscygcoff_reg_t {
   u32 dwval;
   struct {
       u32 csc_yg_coff:13;
       u32 r0:19;
   } bits;
};
 
union __imgehc_cscygcon_reg_t {
   u32 dwval;
   struct {
       u32 csc_yg_con:14;
       u32 r0:18;
   } bits;
};
 
union __imgehc_cscurcoff_reg_t {
   u32 dwval;
   struct {
       u32 csc_ur_coff:13;
       u32 r0:19;
   } bits;
};
 
union __imgehc_cscurcon_reg_t {
   u32 dwval;
   struct {
       u32 csc_ur_con:14;
       u32 r0:18;
   } bits;
};
 
union __imgehc_cscvbcoff_reg_t {
   u32 dwval;
   struct {
       u32 csc_vb_coff:13;
       u32 r0:19;
   } bits;
};
 
union __imgehc_cscvbcon_reg_t {
   u32 dwval;
   struct {
       u32 csc_vb_con:14;
       u32 r0:18;
   } bits;
};
 
union __imgehc_drcspacoff_reg_t {
   u32 dwval;
   struct {
       u32 spa_coff0:8;
       u32 spa_coff1:8;
       u32 spa_coff2:8;
       u32 r0:8;
   } bits;
};
 
union __imgehc_drcintcoff_reg_t {
   u32 dwval;
   struct {
       u32 inten_coff0:8;
       u32 inten_coff1:8;
       u32 inten_coff2:8;
       u32 inten_coff3:8;
   } bits;
};
 
union __imgehc_drclgcoff_reg_t {
   u32 dwval;
   struct {
       u32 lumagain_coff0:16;
       u32 lumagain_coff1:16;
   } bits;
};
 
struct __smbl_reg_t {
   union __imgehc_gnectl_reg_t gnectl;            /* 0x00 */
   union __imgehc_drcsize_reg_t drcsize;            /* 0x04 */
   u32 r0[2];                    /* 0x08~0x0c */
   union __imgehc_drcctl_reg_t drcctl;            /* 0x10 */
   u32 r1;                        /* 0x14 */
   union __imgehc_drc_set_reg_t drc_set;            /* 0x18 */
   union __imgehc_drc_wp_reg0_t drc_wp0;            /* 0x1c */
   union __imgehc_drc_wp_reg1_t drc_wp1;            /* 0x20 */
   u32 r5[3];                    /* 0x24~0x2c */
   union __imgehc_lhctl_reg_t lhctl;            /* 0x30 */
   union __imgehc_lhthr_reg0_t lhthr0;            /* 0x34 */
   union __imgehc_lhthr_reg1_t lhthr1;            /* 0x38 */
   u32 r2;                        /* 0x3c */
   union __imgehc_lhslum_reg_t lhslum[8];        /* 0x40~0x5c */
   union __imgehc_lhscnt_reg_t lhscnt[8];        /* 0x0060 ~ 0x007c */
   union __imgehc_cscygcoff_reg_t incscycoff[3];        /* 0x80~0x88 */
   union __imgehc_cscygcon_reg_t incscycon;        /* 0x8c */
   union __imgehc_cscurcoff_reg_t incscucoff[3];        /* 0x90~0x98 */
   union __imgehc_cscurcon_reg_t incscucon;        /* 0x9c */
   union __imgehc_cscvbcoff_reg_t incscvcoff[3];        /* 0xa0~0xa8 */
   union __imgehc_cscvbcon_reg_t incscvcon;        /* 0xac */
   u32 r6[4];                    /* 0xb0~0xbc */
   union __imgehc_cscygcoff_reg_t cscrcoff[3];        /* 0xc0~0xc8 */
   union __imgehc_cscygcon_reg_t cscrcon;        /* 0xcc */
   union __imgehc_cscurcoff_reg_t cscgcoff[3];        /* 0xd0~0xd8 */
   union __imgehc_cscurcon_reg_t cscgcon;        /* 0xdc */
   union __imgehc_cscvbcoff_reg_t cscbcoff[3];        /* 0xe0~0xe8 */
   union __imgehc_cscvbcon_reg_t cscbcon;        /* 0xec */
   union __imgehc_drcspacoff_reg_t drcspacoff[3];    /* 0xf0~0xf8 */
   u32 r4;                        /* 0xfc */
   union __imgehc_drcintcoff_reg_t drcintcoff[64];    /* 0x0100 ~ 0x01fc */
   union __imgehc_drclgcoff_reg_t drclgcoff[128];    /* 0x0200 ~ 0x03fc */
};
 
struct __smbl_status_t {
   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 */
};
 
#endif