huangcm
2025-07-03 571fede27a127398697e783a06a833e37b5b58c3
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
/*
 * 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_bws_type.h
 *
 *  Description :   display engine 2.0 bws struct declaration
 *
 *  History     :   2014/03/26  vito cheng  v0.1  Initial version
 *
 *****************************************************************************/
 
#ifndef __DE_BWS_TYPE_H__
#define __DE_BWS_TYPE_H__
 
#include "de_rtmx.h"
 
/* for hist */
extern unsigned int *g_hist[DE_NUM][CHN_NUM];
extern unsigned int *g_hist_p[DE_NUM][CHN_NUM];
extern unsigned int g_sum[DE_NUM][CHN_NUM];
extern struct __hist_status_t *g_hist_status[DE_NUM][CHN_NUM];
 
#define BWS_FRAME_MASK    0x00000002
/*
 * 0x0: do bws in odd frame;
 * 0x1, do bws in even frame;
 * 0x2, do bws in all frames
 */
#define BWS_DEFAULT_SLOPE 0x100
 
union BWS_CTRL_REG {
   unsigned int dwval;
   struct {
       unsigned int en:1;
       unsigned int res:30;
       unsigned int win_en:1;
   } bits;
};
 
union BWS_SIZE_REG {
   unsigned int dwval;
   struct {
       unsigned int width:12;
       unsigned int res0:4;
       unsigned int height:12;
       unsigned int res1:4;
   } bits;
};
 
union BWS_WIN0_REG {
   unsigned int dwval;
   struct {
       unsigned int win_left:12;
       unsigned int res0:4;
       unsigned int win_top:12;
       unsigned int res1:4;
   } bits;
};
 
union BWS_WIN1_REG {
   unsigned int dwval;
   struct {
       unsigned int win_right:12;
       unsigned int res0:4;
       unsigned int win_bot:12;
       unsigned int res1:4;
   } bits;
};
 
union BWS_LS_THR0_REG {
   unsigned int dwval;
   struct {
       unsigned int min:8;
       unsigned int res0:8;
       unsigned int black:8;
       unsigned int res1:8;
   } bits;
};
 
union BWS_LS_THR1_REG {
   unsigned int dwval;
   struct {
       unsigned int white:8;
       unsigned int res0:8;
       unsigned int max:8;
       unsigned int res1:8;
   } bits;
};
 
union BWS_LS_SLP0_REG {
   unsigned int dwval;
   struct {
       unsigned int slope0:10;
       unsigned int res0:6;
       unsigned int slope1:10;
       unsigned int res1:6;
   } bits;
};
 
union BWS_LS_SLP1_REG {
   unsigned int dwval;
   struct {
       unsigned int slope2:10;
       unsigned int res0:6;
       unsigned int slope3:10;
       unsigned int res1:6;
   } bits;
};
 
struct __bws_reg_t {
   union BWS_CTRL_REG ctrl;        /* 0x0000 */
   union BWS_SIZE_REG size;        /* 0x0004 */
   union BWS_WIN0_REG win0;        /* 0x0008 */
   union BWS_WIN1_REG win1;        /* 0x000c */
   unsigned int res0[4];         /* 0x0010-0x001c */
   union BWS_LS_THR0_REG blkthr;    /* 0x0020 */
   union BWS_LS_THR1_REG whtthr;    /* 0x0024 */
   union BWS_LS_SLP0_REG blkslp;    /* 0x0028 */
   union BWS_LS_SLP1_REG whtslp;    /* 0x002c */
};
 
struct __bws_config_data {
   /* bws */
   unsigned int bws_en;
   unsigned int bld_high_thr;
   unsigned int bld_low_thr;
   unsigned int bld_weight_lmt;
   unsigned int present_black;
   unsigned int present_white;
   unsigned int slope_black_lmt;
   unsigned int slope_white_lmt;
   unsigned int black_prec;
   unsigned int white_prec;
   unsigned int lowest_black;
   unsigned int highest_white;
 
   /* window */
   unsigned int win_en;
   struct de_rect win;
};
 
struct __bws_status_t {
   unsigned int isenable;         /* BWS enabled */
   unsigned int runtime;           /* Frame number of BWS run */
   unsigned int preslopeready;     /* Get two slope */
   unsigned int width;
   unsigned int height;
   unsigned int slope_black;
   unsigned int slope_white;
};
#endif