lin
2025-07-30 fcd736bf35fd93b563e9bbf594f2aa7b62028cc9
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
/*
 * Allwinner SoCs g2d 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.
 */
 
 
#ifndef __G2D_MIXER_REGS_H
#define __G2D_MIXER_REGS_H
 
/* module base addr */
/*
 *#define G2D_TOP        (0x00000 + G2D_BASE)
 *#define G2D_MIXER      (0x00100 + G2D_BASE)
 *#define G2D_BLD        (0x00400 + G2D_BASE)
 *#define G2D_V0         (0x00800 + G2D_BASE)
 *#define G2D_UI0        (0x01000 + G2D_BASE)
 *#define G2D_UI1        (0x01800 + G2D_BASE)
 *#define G2D_UI2        (0x02000 + G2D_BASE)
 *#define G2D_WB         (0x03000 + G2D_BASE)
 *#define G2D_VSU        (0x08000 + G2D_BASE)
 *#define G2D_ROT        (0x28000 + G2D_BASE)
 *#define G2D_GSU        (0x30000 + G2D_BASE)
 */
#define G2D_TOP        (0x00000)
#define G2D_MIXER      (0x00100)
#define G2D_BLD        (0x00400)
#define G2D_V0         (0x00800)
#define G2D_UI0        (0x01000)
#define G2D_UI1        (0x01800)
#define G2D_UI2        (0x02000)
#define G2D_WB         (0x03000)
#define G2D_VSU        (0x08000)
#define G2D_ROT        (0x28000)
#define G2D_GSU        (0x30000)
 
/* register offset */
/* TOP register */
#define G2D_SCLK_GATE  (0x00 + G2D_TOP)
#define G2D_HCLK_GATE  (0x04 + G2D_TOP)
#define G2D_AHB_RESET  (0x08 + G2D_TOP)
#define G2D_SCLK_DIV   (0x0C + G2D_TOP)
#define G2D_IP_VERSION (0x10 + G2D_TOP)
 
/* MIXER GLB register */
#define G2D_MIXER_CTL  (0x00 + G2D_MIXER)
#define G2D_MIXER_INT  (0x04 + G2D_MIXER)
#define G2D_MIXER_CLK  (0x08 + G2D_MIXER)
 
/* LAY VIDEO register */
#define V0_ATTCTL      (0x00 + G2D_V0)
#define V0_MBSIZE      (0x04 + G2D_V0)
#define V0_COOR        (0x08 + G2D_V0)
#define V0_PITCH0      (0x0C + G2D_V0)
#define V0_PITCH1      (0x10 + G2D_V0)
#define V0_PITCH2      (0x14 + G2D_V0)
#define V0_LADD0       (0x18 + G2D_V0)
#define V0_LADD1       (0x1C + G2D_V0)
#define V0_LADD2       (0x20 + G2D_V0)
#define V0_FILLC       (0x24 + G2D_V0)
#define V0_HADD        (0x28 + G2D_V0)
#define V0_SIZE        (0x2C + G2D_V0)
#define V0_HDS_CTL0    (0x30 + G2D_V0)
#define V0_HDS_CTL1    (0x34 + G2D_V0)
#define V0_VDS_CTL0    (0x38 + G2D_V0)
#define V0_VDS_CTL1    (0x3C + G2D_V0)
 
/* LAY0 UI register */
#define UI0_ATTR       (0x00 + G2D_UI0)
#define UI0_MBSIZE     (0x04 + G2D_UI0)
#define UI0_COOR       (0x08 + G2D_UI0)
#define UI0_PITCH      (0x0C + G2D_UI0)
#define UI0_LADD       (0x10 + G2D_UI0)
#define UI0_FILLC      (0x14 + G2D_UI0)
#define UI0_HADD       (0x18 + G2D_UI0)
#define UI0_SIZE       (0x1C + G2D_UI0)
 
/* LAY1 UI register */
#define UI1_ATTR       (0x00 + G2D_UI1)
#define UI1_MBSIZE     (0x04 + G2D_UI1)
#define UI1_COOR       (0x08 + G2D_UI1)
#define UI1_PITCH      (0x0C + G2D_UI1)
#define UI1_LADD       (0x10 + G2D_UI1)
#define UI1_FILLC      (0x14 + G2D_UI1)
#define UI1_HADD       (0x18 + G2D_UI1)
#define UI1_SIZE       (0x1C + G2D_UI1)
 
/* LAY2 UI register */
#define UI2_ATTR       (0x00 + G2D_UI2)
#define UI2_MBSIZE     (0x04 + G2D_UI2)
#define UI2_COOR       (0x08 + G2D_UI2)
#define UI2_PITCH      (0x0C + G2D_UI2)
#define UI2_LADD       (0x10 + G2D_UI2)
#define UI2_FILLC      (0x14 + G2D_UI2)
#define UI2_HADD       (0x18 + G2D_UI2)
#define UI2_SIZE       (0x1C + G2D_UI2)
 
/* VSU register */
#define VS_CTRL           (0x000 + G2D_VSU)
#define VS_OUT_SIZE       (0x040 + G2D_VSU)
#define VS_GLB_ALPHA      (0x044 + G2D_VSU)
#define VS_Y_SIZE         (0x080 + G2D_VSU)
#define VS_Y_HSTEP        (0x088 + G2D_VSU)
#define VS_Y_VSTEP        (0x08C + G2D_VSU)
#define VS_Y_HPHASE       (0x090 + G2D_VSU)
#define VS_Y_VPHASE0      (0x098 + G2D_VSU)
#define VS_C_SIZE         (0x0C0 + G2D_VSU)
#define VS_C_HSTEP        (0x0C8 + G2D_VSU)
#define VS_C_VSTEP        (0x0CC + G2D_VSU)
#define VS_C_HPHASE       (0x0D0 + G2D_VSU)
#define VS_C_VPHASE0      (0x0D8 + G2D_VSU)
#define VS_Y_HCOEF0       (0x200 + G2D_VSU)
#define VS_Y_VCOEF0       (0x300 + G2D_VSU)
#define VS_C_HCOEF0       (0x400 + G2D_VSU)
 
/* BLD register */
#define BLD_EN_CTL         (0x000 + G2D_BLD)
#define BLD_FILLC0         (0x010 + G2D_BLD)
#define BLD_FILLC1         (0x014 + G2D_BLD)
#define BLD_CH_ISIZE0      (0x020 + G2D_BLD)
#define BLD_CH_ISIZE1      (0x024 + G2D_BLD)
#define BLD_CH_OFFSET0     (0x030 + G2D_BLD)
#define BLD_CH_OFFSET1     (0x034 + G2D_BLD)
#define BLD_PREMUL_CTL     (0x040 + G2D_BLD)
#define BLD_BK_COLOR       (0x044 + G2D_BLD)
#define BLD_SIZE           (0x048 + G2D_BLD)
#define BLD_CTL            (0x04C + G2D_BLD)
#define BLD_KEY_CTL        (0x050 + G2D_BLD)
#define BLD_KEY_CON        (0x054 + G2D_BLD)
#define BLD_KEY_MAX        (0x058 + G2D_BLD)
#define BLD_KEY_MIN        (0x05C + G2D_BLD)
#define BLD_OUT_COLOR      (0x060 + G2D_BLD)
#define ROP_CTL            (0x080 + G2D_BLD)
#define ROP_INDEX0         (0x084 + G2D_BLD)
#define ROP_INDEX1         (0x088 + G2D_BLD)
#define BLD_CSC_CTL        (0x100 + G2D_BLD)
#define BLD_CSC0_COEF00    (0x110 + G2D_BLD)
#define BLD_CSC0_COEF01    (0x114 + G2D_BLD)
#define BLD_CSC0_COEF02    (0x118 + G2D_BLD)
#define BLD_CSC0_CONST0    (0x11C + G2D_BLD)
#define BLD_CSC0_COEF10    (0x120 + G2D_BLD)
#define BLD_CSC0_COEF11    (0x124 + G2D_BLD)
#define BLD_CSC0_COEF12    (0x128 + G2D_BLD)
#define BLD_CSC0_CONST1    (0x12C + G2D_BLD)
#define BLD_CSC0_COEF20    (0x130 + G2D_BLD)
#define BLD_CSC0_COEF21    (0x134 + G2D_BLD)
#define BLD_CSC0_COEF22    (0x138 + G2D_BLD)
#define BLD_CSC0_CONST2    (0x13C + G2D_BLD)
#define BLD_CSC1_COEF00    (0x140 + G2D_BLD)
#define BLD_CSC1_COEF01    (0x144 + G2D_BLD)
#define BLD_CSC1_COEF02    (0x148 + G2D_BLD)
#define BLD_CSC1_CONST0    (0x14C + G2D_BLD)
#define BLD_CSC1_COEF10    (0x150 + G2D_BLD)
#define BLD_CSC1_COEF11    (0x154 + G2D_BLD)
#define BLD_CSC1_COEF12    (0x158 + G2D_BLD)
#define BLD_CSC1_CONST1    (0x15C + G2D_BLD)
#define BLD_CSC1_COEF20    (0x160 + G2D_BLD)
#define BLD_CSC1_COEF21    (0x164 + G2D_BLD)
#define BLD_CSC1_COEF22    (0x168 + G2D_BLD)
#define BLD_CSC1_CONST2    (0x16C + G2D_BLD)
#define BLD_CSC2_COEF00    (0x170 + G2D_BLD)
#define BLD_CSC2_COEF01    (0x174 + G2D_BLD)
#define BLD_CSC2_COEF02    (0x178 + G2D_BLD)
#define BLD_CSC2_CONST0    (0x17C + G2D_BLD)
#define BLD_CSC2_COEF10    (0x180 + G2D_BLD)
#define BLD_CSC2_COEF11    (0x184 + G2D_BLD)
#define BLD_CSC2_COEF12    (0x188 + G2D_BLD)
#define BLD_CSC2_CONST1    (0x18C + G2D_BLD)
#define BLD_CSC2_COEF20    (0x190 + G2D_BLD)
#define BLD_CSC2_COEF21    (0x194 + G2D_BLD)
#define BLD_CSC2_COEF22    (0x198 + G2D_BLD)
#define BLD_CSC2_CONST2    (0x19C + G2D_BLD)
 
/* WB register */
#define WB_ATT             (0x00 + G2D_WB)
#define WB_SIZE            (0x04 + G2D_WB)
#define WB_PITCH0          (0x08 + G2D_WB)
#define WB_PITCH1          (0x0C + G2D_WB)
#define WB_PITCH2          (0x10 + G2D_WB)
#define WB_LADD0           (0x14 + G2D_WB)
#define WB_HADD0           (0x18 + G2D_WB)
#define WB_LADD1           (0x1C + G2D_WB)
#define WB_HADD1           (0x20 + G2D_WB)
#define WB_LADD2           (0x24 + G2D_WB)
#define WB_HADD2           (0x28 + G2D_WB)
 
/* Rotate register */
#define ROT_CTL            (0x00 + G2D_ROT)
#define ROT_INT            (0x04 + G2D_ROT)
#define ROT_TIMEOUT        (0x08 + G2D_ROT)
#define ROT_IFMT           (0x20 + G2D_ROT)
#define ROT_ISIZE          (0x24 + G2D_ROT)
#define ROT_IPITCH0        (0x30 + G2D_ROT)
#define ROT_IPITCH1        (0x34 + G2D_ROT)
#define ROT_IPITCH2        (0x38 + G2D_ROT)
#define ROT_ILADD0         (0x40 + G2D_ROT)
#define ROT_IHADD0         (0x44 + G2D_ROT)
#define ROT_ILADD1         (0x48 + G2D_ROT)
#define ROT_IHADD1         (0x4C + G2D_ROT)
#define ROT_ILADD2         (0x50 + G2D_ROT)
#define ROT_IHADD2         (0x54 + G2D_ROT)
#define ROT_OSIZE          (0x84 + G2D_ROT)
#define ROT_OPITCH0        (0x90 + G2D_ROT)
#define ROT_OPITCH1        (0x94 + G2D_ROT)
#define ROT_OPITCH2        (0x98 + G2D_ROT)
#define ROT_OLADD0         (0xA0 + G2D_ROT)
#define ROT_OHADD0         (0xA4 + G2D_ROT)
#define ROT_OLADD1         (0xA8 + G2D_ROT)
#define ROT_OHADD1         (0xAC + G2D_ROT)
#define ROT_OLADD2         (0xB0 + G2D_ROT)
#define ROT_OHADD2         (0xB4 + G2D_ROT)
 
/* #define write_wvalue(addr, data) m_usbwordwrite32(  addr, data ) */
/* #define write_wvalue(addr, v) put_wvalue(addr, v) */
/* #define read_wvalue(addr) get_wvalue(addr) */
 
/* byte input */
#define get_bvalue(n)    (*((volatile __u8 *)(n)))
/* byte output */
#define put_bvalue(n, c)    (*((volatile __u8 *)(n)) = (c))
/* half word input */
#define get_hvalue(n)    (*((volatile __u16 *)(n)))
/* half word output */
#define put_hvalue(n, c)    (*((volatile __u16 *)(n)) = (c))
/* word input */
#define get_wvalue(n)    (*((volatile __u32 *)(n)))
/* word output */
#define put_wvalue(n, c)    (*((volatile __u32 *)(n)) = (c))
 
#endif /*
 */