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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
/*
 * 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_vsu_type.h
 *
 *    Description :       display engine 2.0 vsu struct declaration
 *
 *    History     :       2014/03/20  vito cheng  v0.1  Initial version
 *
 */
#ifndef __DE_VSU_TYPE_H__
#define __DE_VSU_TYPE_H__
 
/*
 * __vsu_reg_t
 */
union VSU_CTRL_REG {
   unsigned int dwval;
   struct {
       unsigned int en:1;
       unsigned int res0:3;
       unsigned int coef_switch_rdy:1;
       unsigned int res1:25;
       unsigned int reset:1;
       unsigned int bist:1;
   } bits;
};
 
union VSU_STATUS_REG {
   unsigned int dwval;
   struct {
       unsigned int res0:4;
       unsigned int busy:1;
       unsigned int res1:11;
       unsigned int line_cnt:12;
       unsigned int res2:4;
   } bits;
};
 
union VSU_FIELD_CTRL_REG {
   unsigned int dwval;
   struct {
       unsigned int vphase_sel_en:1;
       unsigned int res0:31;
   } bits;
};
 
union VSU_OUTSIZE_REG {
   unsigned int dwval;
   struct {
       unsigned int width:13;
       unsigned int res0:3;
       unsigned int height:13;
       unsigned int res1:3;
   } bits;
};
 
union VSU_INSIZE_REG {
   unsigned int dwval;
   struct {
       unsigned int width:13;
       unsigned int res0:3;
       unsigned int height:13;
       unsigned int res1:3;
   } bits;
};
 
union VSU_HSTEP_REG {
   unsigned int dwval;
   struct {
       unsigned int res0:1;
       unsigned int frac:19;
       unsigned int integer:4;
       unsigned int res1:8;
   } bits;
};
 
union VSU_VSTEP_REG {
   unsigned int dwval;
   struct {
       unsigned int res0:1;
       unsigned int frac:19;
       unsigned int integer:4;
       unsigned int res1:8;
   } bits;
};
 
union VSU_HPHASE_REG {
   unsigned int dwval;
   struct {
       unsigned int res0:1;
       unsigned int frac:19;
       unsigned int integer:4;
       unsigned int res1:8;
   } bits;
};
 
union VSU_VPHASE0_REG {
   unsigned int dwval;
   struct {
       unsigned int res0:1;
       unsigned int frac:19;
       unsigned int integer:4;
       unsigned int res1:8;
   } bits;
};
 
union VSU_VPHASE1_REG {
   unsigned int dwval;
   struct {
       unsigned int res0:1;
       unsigned int frac:19;
       unsigned int integer:4;
       unsigned int res1:8;
   } bits;
};
 
union VSU_COEFF_REG {
   unsigned int dwval;
   struct {
       unsigned int coef0:8;
       unsigned int coef1:8;
       unsigned int coef2:8;
       unsigned int coef3:8;
   } bits;
};
 
struct __vsu_reg_t {
   union VSU_CTRL_REG ctrl;        /* 0x0000 */
   unsigned int res0;        /* 0x0004 */
   union VSU_STATUS_REG status;        /* 0x0008 */
   union VSU_FIELD_CTRL_REG field;    /* 0x000c */
   unsigned int res1[12];        /* 0x0010-3c */
   union VSU_OUTSIZE_REG outsize;    /* 0x0040 */
   unsigned int res13[15];        /* 0x0044-0x07c */
   union VSU_INSIZE_REG ysize;        /* 0x0080 */
   unsigned int res2;        /* 0x0084 */
   union VSU_HSTEP_REG yhstep;        /* 0x0088 */
   union VSU_VSTEP_REG yvstep;        /* 0x008C */
   union VSU_HPHASE_REG yhphase;        /* 0x0090 */
   unsigned int res3;        /* 0x0094 */
   union VSU_VPHASE0_REG yvphase0;    /* 0x0098 */
   union VSU_VPHASE1_REG yvphase1;    /* 0x009c */
   unsigned int res4[8];        /* 0x00a0-bc */
   union VSU_INSIZE_REG csize;        /* 0x00c0 */
   unsigned int res5;        /* 0x00c4 */
   union VSU_HSTEP_REG chstep;        /* 0x00c8 */
   union VSU_VSTEP_REG cvstep;        /* 0x00cC */
   union VSU_HPHASE_REG chphase;        /* 0x00d0 */
   unsigned int res6;        /* 0x00d4 */
   union VSU_VPHASE0_REG cvphase0;    /* 0x00d8 */
   union VSU_VPHASE1_REG cvphase1;    /* 0x00dc */
   unsigned int res7[72];        /* 0x00e0-0x1fc */
   union VSU_COEFF_REG yhcoeff0[32];    /* 0x0200-0x27c */
   unsigned int res8[32];        /* 0x0280-0x2fc */
   union VSU_COEFF_REG yhcoeff1[32];    /* 0x0300-0x37c */
   unsigned int res9[32];        /* 0x0380-0x3fc */
   union VSU_COEFF_REG yvcoeff[32];    /* 0x0400-0x47c */
   unsigned int res10[96];        /* 0x0480-0x5fc */
   union VSU_COEFF_REG chcoeff0[32];    /* 0x0600-0x67c */
   unsigned int res11[32];        /* 0x0680-0x6fc */
   union VSU_COEFF_REG chcoeff1[32];    /* 0x0700-0x77c */
   unsigned int res12[32];        /* 0x0780-0x7fc */
   union VSU_COEFF_REG cvcoeff[32];    /* 0x0800-0x87c */
};
 
#endif