summaryrefslogtreecommitdiff
path: root/drivers/dma/pxp/reg_bitfields.h
blob: 95b5c83b4b1515df23dfedf6f9f258e88a6c77f8 (plain)
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
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
/*
 * Copyright (C) 2010-2016 Freescale Semiconductor, Inc.
 * Copyright 2017 NXP
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 *
 */

#ifndef _REG_BITFIELDS_H
#define _REG_BITFIELDS_H
struct mux_config {
	uint32_t mux0_sel  		: 2;
	uint32_t mux1_sel  		: 2;
	uint32_t mux2_sel  		: 2;
	uint32_t mux3_sel  		: 2;
	uint32_t mux4_sel  		: 2;
	uint32_t mux5_sel  		: 2;
	uint32_t mux6_sel  		: 2;
	uint32_t mux7_sel  		: 2;
	uint32_t mux8_sel  		: 2;
	uint32_t mux9_sel  		: 2;
	uint32_t mux10_sel 		: 2;
	uint32_t mux11_sel 		: 2;
	uint32_t mux12_sel 		: 2;
	uint32_t mux13_sel 		: 2;
	uint32_t mux14_sel 		: 2;
	uint32_t mux15_sel 		: 2;
};

/* legacy engine registers */
struct ps_ctrl {
	uint32_t format			: 6;
	uint32_t wb_swap		: 1;
	uint32_t rsvd0			: 1;
	uint32_t decy			: 2;
	uint32_t decx			: 2;
	uint32_t rsvd1			: 20;
};

struct ps_scale {
	uint32_t xscale			: 15;
	uint32_t rsvd1			: 1;
	uint32_t yscale			: 15;
	uint32_t rsvd2			: 1;
};

struct ps_offset {
	uint32_t xoffset		: 12;
	uint32_t rsvd1			: 4;
	uint32_t yoffset		: 12;
	uint32_t rsvd2			: 4;
};

struct as_ctrl {
	uint32_t rsvd0			: 1;
	uint32_t alpha_ctrl		: 2;
	uint32_t enable_colorkey	: 1;
	uint32_t format			: 4;
	uint32_t alpha			: 8;
	uint32_t rop			: 4;
	uint32_t alpha0_invert		: 1;
	uint32_t alpha1_invert		: 1;
	uint32_t rsvd1			: 10;
};

struct out_ctrl {
	uint32_t format			: 5;
	uint32_t rsvd0			: 3;
	uint32_t interlaced_output	: 2;
	uint32_t rsvd1			: 13;
	uint32_t alpha_output		: 1;
	uint32_t alpha			: 8;
};

struct coordinate {
	uint32_t y			: 14;
	uint32_t rsvd0			: 2;
	uint32_t x			: 14;
	uint32_t rsvd1			: 2;
};

struct pxp_alpha_ctrl {
	uint32_t poter_duff_enable	: 1;
	uint32_t s0_s1_factor_mode	: 2;
	uint32_t s0_global_alpha_mode	: 2;
	uint32_t s0_alpha_mode		: 1;
	uint32_t s0_color_mode		: 1;
	uint32_t rsvd1			: 1;
	uint32_t s1_s0_factor_mode	: 2;
	uint32_t s1_global_alpha_mode	: 2;
	uint32_t s1_alpha_mode		: 1;
	uint32_t s1_color_mode		: 1;
	uint32_t rsvd0			: 2;
	uint32_t s0_global_alpha	: 8;
	uint32_t s1_global_alpha	: 8;
};

/* store engine registers */
struct store_ctrl {
	uint32_t ch_en			: 1;
	uint32_t block_en		: 1;
	uint32_t block_16		: 1;
	uint32_t handshake_en		: 1;
	uint32_t array_en		: 1;
	uint32_t array_line_num 	: 2;
	uint32_t rsvd3			: 1;
	uint32_t store_bypass_en	: 1;
	uint32_t store_memory_en	: 1;
	uint32_t pack_in_sel		: 1;
	uint32_t fill_data_en		: 1;
	uint32_t rsvd2			: 4;
	uint32_t wr_num_bytes		: 2;
	uint32_t rsvd1			: 6;
	uint32_t combine_2channel	: 1;
	uint32_t rsvd0			: 6;
	uint32_t arbit_en		: 1;
};

struct store_size {
	uint32_t out_width		: 16;
	uint32_t out_height		: 16;
};

struct store_pitch {
	uint32_t ch0_out_pitch		: 16;
	uint32_t ch1_out_pitch		: 16;
};

struct store_shift_ctrl {
	uint32_t rsvd2			: 2;
	uint32_t output_active_bpp	: 2;
	uint32_t out_yuv422_1p_en	: 1;
	uint32_t out_yuv422_2p_en	: 1;
	uint32_t rsvd1			: 1;
	uint32_t shift_bypass		: 1;
	uint32_t rsvd0			: 24;
};

struct store_d_shift {
	uint64_t d_shift_width0		: 6;
	uint64_t rsvd3			: 1;
	uint64_t d_shift_flag0		: 1;
	uint64_t d_shift_width1		: 6;
	uint64_t rsvd2			: 1;
	uint64_t d_shift_flag1		: 1;
	uint64_t d_shift_width2		: 6;
	uint64_t rsvd1			: 1;
	uint64_t d_shift_flag2		: 1;
	uint64_t d_shift_width3		: 6;
	uint64_t rsvd0			: 1;
	uint64_t d_shift_flag3		: 1;

	uint64_t d_shift_width4		: 6;
	uint64_t rsvd7			: 1;
	uint64_t d_shift_flag4		: 1;
	uint64_t d_shift_width5		: 6;
	uint64_t rsvd6			: 1;
	uint64_t d_shift_flag5		: 1;
	uint64_t d_shift_width6		: 6;
	uint64_t rsvd5			: 1;
	uint64_t d_shift_flag6		: 1;
	uint64_t d_shift_width7		: 6;
	uint64_t rsvd4			: 1;
	uint64_t d_shift_flag7		: 1;
};

struct store_f_shift {
	uint64_t f_shift_width0		: 6;
	uint64_t rsvd3			: 1;
	uint64_t f_shift_flag0		: 1;
	uint64_t f_shift_width1		: 6;
	uint64_t rsvd2			: 1;
	uint64_t f_shift_flag1		: 1;
	uint64_t f_shift_width2		: 6;
	uint64_t rsvd1			: 1;
	uint64_t f_shift_flag2		: 1;
	uint64_t f_shift_width3		: 6;
	uint64_t rsvd0			: 1;
	uint64_t f_shift_flag3		: 1;

	uint64_t f_shift_width4		: 6;
	uint64_t rsvd7			: 1;
	uint64_t f_shift_flag4		: 1;
	uint64_t f_shift_width5		: 6;
	uint64_t rsvd6			: 1;
	uint64_t f_shift_flag5		: 1;
	uint64_t f_shift_width6		: 6;
	uint64_t rsvd5			: 1;
	uint64_t f_shift_flag6		: 1;
	uint64_t f_shift_width7		: 6;
	uint64_t rsvd4			: 1;
	uint64_t f_shift_flag7		: 1;
};

struct store_d_mask {
	uint64_t d_mask_l		: 32;
	uint64_t d_mask_h		: 32;
};

/* fetch engine registers */
struct fetch_ctrl {
	uint32_t ch_en			: 1;
	uint32_t block_en		: 1;
	uint32_t block_16		: 1;
	uint32_t handshake_en		: 1;
	uint32_t bypass_pixel_en	: 1;
	uint32_t high_byte		: 1;
	uint32_t rsvd4			: 3;
	uint32_t hflip			: 1;
	uint32_t vflip			: 1;
	uint32_t rsvd3			: 1;
	uint32_t rotation_angle		: 2;
	uint32_t rsvd2			: 2;
	uint32_t rd_num_bytes		: 2;
	uint32_t rsvd1			: 6;
	uint32_t handshake_scan_line_num : 2;
	uint32_t rsvd0			: 5;
	uint32_t arbit_en		: 1;
};

struct fetch_active_size_ulc {
	uint32_t active_size_ulc_x	: 16;
	uint32_t active_size_ulc_y	: 16;
};

struct fetch_active_size_lrc {
	uint32_t active_size_lrc_x	: 16;
	uint32_t active_size_lrc_y	: 16;
};

struct fetch_size {
	uint32_t input_total_width	: 16;
	uint32_t input_total_height	: 16;
};

struct fetch_pitch {
	uint32_t ch0_input_pitch	: 16;
	uint32_t ch1_input_pitch	: 16;
};

struct fetch_shift_ctrl {
	uint32_t input_active_bpp	: 2;
	uint32_t rsvd1			: 6;
	uint32_t expand_format		: 3;
	uint32_t expand_en		: 1;
	uint32_t shift_bypass		: 1;
	uint32_t rsvd0			: 19;
};

struct fetch_shift_offset {
	uint32_t offset0		: 5;
	uint32_t rsvd3			: 3;
	uint32_t offset1		: 5;
	uint32_t rsvd2			: 3;
	uint32_t offset2		: 5;
	uint32_t rsvd1			: 3;
	uint32_t offset3		: 5;
	uint32_t rsvd0			: 3;
};

struct fetch_shift_width {
	uint32_t width0			: 4;
	uint32_t width1			: 4;
	uint32_t width2			: 4;
	uint32_t width3			: 4;
	uint32_t rsvd0			: 16;
};
#endif