summaryrefslogtreecommitdiff
path: root/drivers/media/platform/mediatek/mdp3/mdp_sm_mt8195.h
blob: b09f48222d2434830947e25f323219e9e893663f (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
281
282
283
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (c) 2023 MediaTek Inc.
 * Author: Ping-Hsun Wu <ping-hsun.wu@mediatek.com>
 */

#ifndef __MDP_SM_MT8195_H__
#define __MDP_SM_MT8195_H__

#include "mtk-mdp3-type.h"

/*
 * ISP-MDP generic output information
 * MD5 of the target SCP prebuild:
 *     a49ec487e458b5971880f1b63dc2a9d5
 */

#define IMG_MAX_SUBFRAMES_8195	20

struct img_comp_frame_8195 {
	u32 output_disable;
	u32 bypass;
	u32 in_width;
	u32 in_height;
	u32 out_width;
	u32 out_height;
	struct img_crop crop;
	u32 in_total_width;
	u32 out_total_width;
} __packed;

struct img_comp_subfrm_8195 {
	u32 tile_disable;
	struct img_region in;
	struct img_region out;
	struct img_offset luma;
	struct img_offset chroma;
	s32 out_vertical; /* Output vertical index */
	s32 out_horizontal; /* Output horizontal index */
} __packed;

struct mdp_rdma_subfrm_8195 {
	u32 offset[IMG_MAX_PLANES];
	u32 offset_0_p;
	u32 src;
	u32 clip;
	u32 clip_ofst;
	u32 in_tile_xleft;
	u32 in_tile_ytop;
} __packed;

struct mdp_rdma_data_8195 {
	u32 src_ctrl;
	u32 comp_ctrl;
	u32 control;
	u32 iova[IMG_MAX_PLANES];
	u32 iova_end[IMG_MAX_PLANES];
	u32 mf_bkgd;
	u32 mf_bkgd_in_pxl;
	u32 sf_bkgd;
	u32 ufo_dec_y;
	u32 ufo_dec_c;
	u32 transform;
	u32 dmabuf_con0;
	u32 ultra_th_high_con0;
	u32 ultra_th_low_con0;
	u32 dmabuf_con1;
	u32 ultra_th_high_con1;
	u32 ultra_th_low_con1;
	u32 dmabuf_con2;
	u32 ultra_th_high_con2;
	u32 ultra_th_low_con2;
	u32 dmabuf_con3;
	struct mdp_rdma_subfrm_8195 subfrms[IMG_MAX_SUBFRAMES_8195];
} __packed;

struct mdp_fg_subfrm_8195 {
	u32 info_0;
	u32 info_1;
} __packed;

struct mdp_fg_data_8195 {
	u32 ctrl_0;
	u32 ck_en;
	struct mdp_fg_subfrm_8195 subfrms[IMG_MAX_SUBFRAMES_8195];
} __packed;

struct mdp_hdr_subfrm_8195 {
	u32 win_size;
	u32 src;
	u32 clip_ofst0;
	u32 clip_ofst1;
	u32 hist_ctrl_0;
	u32 hist_ctrl_1;
	u32 hdr_top;
	u32 hist_addr;
} __packed;

struct mdp_hdr_data_8195 {
	u32 top;
	u32 relay;
	struct mdp_hdr_subfrm_8195   subfrms[IMG_MAX_SUBFRAMES_8195];
} __packed;

struct mdp_aal_subfrm_8195 {
	u32 src;
	u32 clip;
	u32 clip_ofst;
} __packed;

struct mdp_aal_data_8195 {
	u32 cfg_main;
	u32 cfg;
	struct mdp_aal_subfrm_8195   subfrms[IMG_MAX_SUBFRAMES_8195];
} __packed;

struct mdp_rsz_subfrm_8195 {
	u32 control2;
	u32 src;
	u32 clip;
	u32 hdmirx_en;
	u32 luma_h_int_ofst;
	u32 luma_h_sub_ofst;
	u32 luma_v_int_ofst;
	u32 luma_v_sub_ofst;
	u32 chroma_h_int_ofst;
	u32 chroma_h_sub_ofst;
	u32 rsz_switch;
	u32 merge_cfg;
} __packed;

struct mdp_rsz_data_8195 {
	u32 coeff_step_x;
	u32 coeff_step_y;
	u32 control1;
	u32 control2;
	u32 etc_control;
	u32 prz_enable;
	u32 ibse_softclip;
	u32 tap_adapt;
	u32 ibse_gaincontrol1;
	u32 ibse_gaincontrol2;
	u32 ibse_ylevel_1;
	u32 ibse_ylevel_2;
	u32 ibse_ylevel_3;
	u32 ibse_ylevel_4;
	u32 ibse_ylevel_5;
	struct mdp_rsz_subfrm_8195 subfrms[IMG_MAX_SUBFRAMES_8195];
} __packed;

struct mdp_tdshp_subfrm_8195 {
	u32 src;
	u32 clip;
	u32 clip_ofst;
	u32 hist_cfg_0;
	u32 hist_cfg_1;
} __packed;

struct mdp_tdshp_data_8195 {
	u32 cfg;
	struct mdp_tdshp_subfrm_8195 subfrms[IMG_MAX_SUBFRAMES_8195];
} __packed;

struct mdp_color_subfrm_8195 {
	u32 in_hsize;
	u32 in_vsize;
} __packed;

struct mdp_color_data_8195 {
	u32 start;
	struct mdp_color_subfrm_8195 subfrms[IMG_MAX_SUBFRAMES_8195];
} __packed;

struct mdp_ovl_subfrm_8195 {
	u32 L0_src_size;
	u32 roi_size;
} __packed;

struct mdp_ovl_data_8195 {
	u32 L0_con;
	u32 src_con;
	struct mdp_ovl_subfrm_8195 subfrms[IMG_MAX_SUBFRAMES_8195];
} __packed;

struct mdp_pad_subfrm_8195 {
	u32 pic_size;
} __packed;

struct mdp_pad_data_8195 {
	struct mdp_pad_subfrm_8195 subfrms[IMG_MAX_SUBFRAMES_8195];
} __packed;

struct mdp_tcc_subfrm_8195 {
	u32 pic_size;
} __packed;

struct mdp_tcc_data_8195 {
	struct mdp_tcc_subfrm_8195 subfrms[IMG_MAX_SUBFRAMES_8195];
} __packed;

struct mdp_wrot_subfrm_8195 {
	u32 offset[IMG_MAX_PLANES];
	u32 src;
	u32 clip;
	u32 clip_ofst;
	u32 main_buf;
} __packed;

struct mdp_wrot_data_8195 {
	u32 iova[IMG_MAX_PLANES];
	u32 control;
	u32 stride[IMG_MAX_PLANES];
	u32 mat_ctrl;
	u32 fifo_test;
	u32 filter;
	u32 pre_ultra;
	u32 framesize;
	u32 afbc_yuvtrans;
	u32 scan_10bit;
	u32 pending_zero;
	u32 bit_number;
	u32 pvric;
	u32 vpp02vpp1;
	struct mdp_wrot_subfrm_8195 subfrms[IMG_MAX_SUBFRAMES_8195];
} __packed;

struct mdp_wdma_subfrm_8195 {
	u32 offset[IMG_MAX_PLANES];
	u32 src;
	u32 clip;
	u32 clip_ofst;
} __packed;

struct mdp_wdma_data_8195 {
	u32 wdma_cfg;
	u32 iova[IMG_MAX_PLANES];
	u32 w_in_byte;
	u32 uv_stride;
	struct mdp_wdma_subfrm_8195 subfrms[IMG_MAX_SUBFRAMES_8195];
} __packed;

struct isp_data_8195 {
	u64 dl_flags; /* 1 << (enum mdp_comp_type) */
	u32 smxi_iova[4];
	u32 cq_idx;
	u32 cq_iova;
	u32 tpipe_iova[IMG_MAX_SUBFRAMES_8195];
} __packed;

struct img_compparam_8195 {
	u32 type; /* enum mdp_comp_id */
	u32 id; /* engine alias_id */
	u32 input;
	u32 outputs[IMG_MAX_HW_OUTPUTS];
	u32 num_outputs;
	struct img_comp_frame_8195 frame;
	struct img_comp_subfrm_8195 subfrms[IMG_MAX_SUBFRAMES_8195];
	u32 num_subfrms;
	union {
		struct mdp_rdma_data_8195 rdma;
		struct mdp_fg_data_8195 fg;
		struct mdp_hdr_data_8195 hdr;
		struct mdp_aal_data_8195 aal;
		struct mdp_rsz_data_8195 rsz;
		struct mdp_tdshp_data_8195 tdshp;
		struct mdp_color_data_8195 color;
		struct mdp_ovl_data_8195 ovl;
		struct mdp_pad_data_8195 pad;
		struct mdp_tcc_data_8195 tcc;
		struct mdp_wrot_data_8195 wrot;
		struct mdp_wdma_data_8195 wdma;
		struct isp_data_8195 isp;
	};
} __packed;

struct img_config_8195 {
	struct img_compparam_8195 components[IMG_MAX_COMPONENTS];
	u32 num_components;
	struct img_mmsys_ctrl ctrls[IMG_MAX_SUBFRAMES_8195];
	u32 num_subfrms;
} __packed;

#endif  /* __MDP_SM_MT8195_H__ */