xref: /linux/drivers/media/platform/qcom/iris/iris_hfi_gen2.c (revision 9cebfe6504488198b012e746bc6b313f88b95439)
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
4  * Copyright (c) 2025 Linaro Ltd
5  */
6 
7 #include "iris_ctrls.h"
8 #include "iris_hfi_gen2.h"
9 #include "iris_hfi_gen2_defines.h"
10 #include "iris_platform_common.h"
11 #include "iris_vpu_buffer.h"
12 
13 #define VIDEO_ARCH_LX 1
14 #define MILOS_BITRATE_MAX			100000000
15 #define BITRATE_MAX				245000000
16 
17 static const struct platform_inst_fw_cap inst_fw_cap_milos_dec[] = {
18 	{
19 		.cap_id = PROFILE_H264,
20 		.min = V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE,
21 		.max = V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH,
22 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) |
23 				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE) |
24 				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) |
25 				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_HIGH) |
26 				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH),
27 		.value = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
28 		.hfi_id = HFI_PROP_PROFILE,
29 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
30 		.set = iris_set_u32_enum,
31 	},
32 	{
33 		.cap_id = PROFILE_HEVC,
34 		.min = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
35 		.max = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10,
36 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN) |
37 				BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE) |
38 				BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10),
39 		.value = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
40 		.hfi_id = HFI_PROP_PROFILE,
41 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
42 		.set = iris_set_u32_enum,
43 	},
44 	{
45 		.cap_id = PROFILE_VP9,
46 		.min = V4L2_MPEG_VIDEO_VP9_PROFILE_0,
47 		.max = V4L2_MPEG_VIDEO_VP9_PROFILE_2,
48 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_0) |
49 				BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_2),
50 		.value = V4L2_MPEG_VIDEO_VP9_PROFILE_0,
51 		.hfi_id = HFI_PROP_PROFILE,
52 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
53 		.set = iris_set_u32_enum,
54 	},
55 	{
56 		.cap_id = LEVEL_H264,
57 		.min = V4L2_MPEG_VIDEO_H264_LEVEL_1_0,
58 		.max = V4L2_MPEG_VIDEO_H264_LEVEL_5_1,
59 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_0) |
60 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1B) |
61 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_1) |
62 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_2) |
63 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_3) |
64 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_0) |
65 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_1) |
66 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_2) |
67 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) |
68 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) |
69 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) |
70 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0) |
71 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_1) |
72 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_2) |
73 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_0) |
74 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_1),
75 		.value = V4L2_MPEG_VIDEO_H264_LEVEL_5_1,
76 		.hfi_id = HFI_PROP_LEVEL,
77 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
78 		.set = iris_set_u32_enum,
79 	},
80 	{
81 		.cap_id = LEVEL_HEVC,
82 		.min = V4L2_MPEG_VIDEO_HEVC_LEVEL_1,
83 		.max = V4L2_MPEG_VIDEO_HEVC_LEVEL_5,
84 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) |
85 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) |
86 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) |
87 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) |
88 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) |
89 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) |
90 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) |
91 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5),
92 		.value = V4L2_MPEG_VIDEO_HEVC_LEVEL_5,
93 		.hfi_id = HFI_PROP_LEVEL,
94 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
95 		.set = iris_set_u32_enum,
96 	},
97 	{
98 		.cap_id = LEVEL_VP9,
99 		.min = V4L2_MPEG_VIDEO_VP9_LEVEL_1_0,
100 		.max = V4L2_MPEG_VIDEO_VP9_LEVEL_5_0,
101 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_0) |
102 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_1) |
103 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_0) |
104 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_1) |
105 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_0) |
106 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_1) |
107 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_0) |
108 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_1) |
109 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_0),
110 		.value = V4L2_MPEG_VIDEO_VP9_LEVEL_5_0,
111 		.hfi_id = HFI_PROP_LEVEL,
112 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
113 		.set = iris_set_u32_enum,
114 	},
115 	{
116 		.cap_id = TIER,
117 		.min = V4L2_MPEG_VIDEO_HEVC_TIER_MAIN,
118 		.max = V4L2_MPEG_VIDEO_HEVC_TIER_HIGH,
119 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_TIER_MAIN) |
120 				BIT(V4L2_MPEG_VIDEO_HEVC_TIER_HIGH),
121 		.value = V4L2_MPEG_VIDEO_HEVC_TIER_HIGH,
122 		.hfi_id = HFI_PROP_TIER,
123 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
124 		.set = iris_set_u32_enum,
125 	},
126 	{
127 		.cap_id = INPUT_BUF_HOST_MAX_COUNT,
128 		.min = DEFAULT_MAX_HOST_BUF_COUNT,
129 		.max = DEFAULT_MAX_HOST_BURST_BUF_COUNT,
130 		.step_or_mask = 1,
131 		.value = DEFAULT_MAX_HOST_BUF_COUNT,
132 		.hfi_id = HFI_PROP_BUFFER_HOST_MAX_COUNT,
133 		.flags = CAP_FLAG_INPUT_PORT,
134 		.set = iris_set_u32,
135 	},
136 	{
137 		.cap_id = STAGE,
138 		.min = STAGE_1,
139 		.max = STAGE_2,
140 		.step_or_mask = 1,
141 		.value = STAGE_2,
142 		.hfi_id = HFI_PROP_STAGE,
143 		.set = iris_set_stage,
144 	},
145 	{
146 		.cap_id = PIPE,
147 		/* .max, .min and .value are set via platform data */
148 		.step_or_mask = 1,
149 		.hfi_id = HFI_PROP_PIPE,
150 		.set = iris_set_pipe,
151 	},
152 	{
153 		.cap_id = POC,
154 		.min = 0,
155 		.max = 2,
156 		.step_or_mask = 1,
157 		.value = 1,
158 		.hfi_id = HFI_PROP_PIC_ORDER_CNT_TYPE,
159 	},
160 	{
161 		.cap_id = CODED_FRAMES,
162 		.min = CODED_FRAMES_PROGRESSIVE,
163 		.max = CODED_FRAMES_PROGRESSIVE,
164 		.step_or_mask = 0,
165 		.value = CODED_FRAMES_PROGRESSIVE,
166 		.hfi_id = HFI_PROP_CODED_FRAMES,
167 	},
168 	{
169 		.cap_id = BIT_DEPTH,
170 		.min = BIT_DEPTH_8,
171 		.max = BIT_DEPTH_10,
172 		.step_or_mask = 1,
173 		.value = BIT_DEPTH_8,
174 		.hfi_id = HFI_PROP_LUMA_CHROMA_BIT_DEPTH,
175 	},
176 	{
177 		.cap_id = RAP_FRAME,
178 		.min = 0,
179 		.max = 1,
180 		.step_or_mask = 1,
181 		.value = 1,
182 		.hfi_id = HFI_PROP_DEC_START_FROM_RAP_FRAME,
183 		.flags = CAP_FLAG_INPUT_PORT,
184 		.set = iris_set_u32,
185 	},
186 };
187 
188 static const struct platform_inst_fw_cap inst_fw_cap_milos_enc[] = {
189 	{
190 		.cap_id = PROFILE_H264,
191 		.min = V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE,
192 		.max = V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH,
193 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) |
194 				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH) |
195 				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE) |
196 				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) |
197 				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_HIGH),
198 		.value = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
199 		.hfi_id = HFI_PROP_PROFILE,
200 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
201 		.set = iris_set_profile,
202 	},
203 	{
204 		.cap_id = PROFILE_HEVC,
205 		.min = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
206 		.max = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10,
207 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN) |
208 				BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE) |
209 				BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10),
210 		.value = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
211 		.hfi_id = HFI_PROP_PROFILE,
212 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
213 		.set = iris_set_profile,
214 	},
215 	{
216 		.cap_id = LEVEL_H264,
217 		.min = V4L2_MPEG_VIDEO_H264_LEVEL_1_0,
218 		.max = V4L2_MPEG_VIDEO_H264_LEVEL_5_1,
219 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_0) |
220 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1B) |
221 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_1) |
222 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_2) |
223 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_3) |
224 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_0) |
225 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_1) |
226 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_2) |
227 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) |
228 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) |
229 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) |
230 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0) |
231 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_1) |
232 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_2) |
233 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_0) |
234 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_1),
235 		.value = V4L2_MPEG_VIDEO_H264_LEVEL_5_0,
236 		.hfi_id = HFI_PROP_LEVEL,
237 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
238 		.set = iris_set_level,
239 	},
240 	{
241 		.cap_id = LEVEL_HEVC,
242 		.min = V4L2_MPEG_VIDEO_HEVC_LEVEL_1,
243 		.max = V4L2_MPEG_VIDEO_HEVC_LEVEL_5,
244 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) |
245 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) |
246 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) |
247 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) |
248 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) |
249 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) |
250 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) |
251 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5),
252 		.value = V4L2_MPEG_VIDEO_HEVC_LEVEL_5,
253 		.hfi_id = HFI_PROP_LEVEL,
254 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
255 		.set = iris_set_level,
256 	},
257 	{
258 		.cap_id = STAGE,
259 		.min = STAGE_1,
260 		.max = STAGE_2,
261 		.step_or_mask = 1,
262 		.value = STAGE_2,
263 		.hfi_id = HFI_PROP_STAGE,
264 		.set = iris_set_stage,
265 	},
266 	{
267 		.cap_id = HEADER_MODE,
268 		.min = V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE,
269 		.max = V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME,
270 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE) |
271 				BIT(V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME),
272 		.value = V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME,
273 		.hfi_id = HFI_PROP_SEQ_HEADER_MODE,
274 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
275 		.set = iris_set_header_mode_gen2,
276 	},
277 	{
278 		.cap_id = PREPEND_SPSPPS_TO_IDR,
279 		.min = 0,
280 		.max = 1,
281 		.step_or_mask = 1,
282 		.value = 0,
283 	},
284 	{
285 		.cap_id = BITRATE,
286 		.min = 1,
287 		.max = MILOS_BITRATE_MAX,
288 		.step_or_mask = 1,
289 		.value = BITRATE_DEFAULT,
290 		.hfi_id = HFI_PROP_TOTAL_BITRATE,
291 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
292 			CAP_FLAG_DYNAMIC_ALLOWED,
293 		.set = iris_set_bitrate_gen2,
294 	},
295 	{
296 		.cap_id = BITRATE_PEAK,
297 		.min = 1,
298 		.max = MILOS_BITRATE_MAX,
299 		.step_or_mask = 1,
300 		.value = BITRATE_DEFAULT,
301 		.hfi_id = HFI_PROP_TOTAL_PEAK_BITRATE,
302 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
303 			CAP_FLAG_DYNAMIC_ALLOWED,
304 		.set = iris_set_peak_bitrate,
305 	},
306 	{
307 		.cap_id = BITRATE_MODE,
308 		.min = V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
309 		.max = V4L2_MPEG_VIDEO_BITRATE_MODE_CBR,
310 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) |
311 				BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR),
312 		.value = V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
313 		.hfi_id = HFI_PROP_RATE_CONTROL,
314 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
315 		.set = iris_set_bitrate_mode_gen2,
316 	},
317 	{
318 		.cap_id = FRAME_SKIP_MODE,
319 		.min = V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED,
320 		.max = V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT,
321 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED) |
322 				BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT) |
323 				BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT),
324 		.value = V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED,
325 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
326 	},
327 	{
328 		.cap_id = FRAME_RC_ENABLE,
329 		.min = 0,
330 		.max = 1,
331 		.step_or_mask = 1,
332 		.value = 1,
333 	},
334 	{
335 		.cap_id = GOP_SIZE,
336 		.min = 0,
337 		.max = INT_MAX,
338 		.step_or_mask = 1,
339 		.value = 2 * DEFAULT_FPS - 1,
340 		.hfi_id = HFI_PROP_MAX_GOP_FRAMES,
341 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
342 			CAP_FLAG_DYNAMIC_ALLOWED,
343 		.set = iris_set_u32,
344 	},
345 	{
346 		.cap_id = ENTROPY_MODE,
347 		.min = V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC,
348 		.max = V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC,
349 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC) |
350 				BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC),
351 		.value = V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC,
352 		.hfi_id = HFI_PROP_CABAC_SESSION,
353 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
354 		.set = iris_set_entropy_mode_gen2,
355 	},
356 	{
357 		.cap_id = MIN_FRAME_QP_H264,
358 		.min = MIN_QP_8BIT,
359 		.max = MAX_QP,
360 		.step_or_mask = 1,
361 		.value = MIN_QP_8BIT,
362 		.hfi_id = HFI_PROP_MIN_QP_PACKED,
363 		.flags = CAP_FLAG_OUTPUT_PORT,
364 		.set = iris_set_min_qp,
365 	},
366 	{
367 		.cap_id = MIN_FRAME_QP_HEVC,
368 		.min = MIN_QP_8BIT,
369 		.max = MAX_QP,
370 		.step_or_mask = 1,
371 		.value = MIN_QP_8BIT,
372 		.hfi_id = HFI_PROP_MIN_QP_PACKED,
373 		.flags = CAP_FLAG_OUTPUT_PORT,
374 		.set = iris_set_min_qp,
375 	},
376 	{
377 		.cap_id = MAX_FRAME_QP_H264,
378 		.min = MIN_QP_8BIT,
379 		.max = MAX_QP,
380 		.step_or_mask = 1,
381 		.value = MAX_QP,
382 		.hfi_id = HFI_PROP_MAX_QP_PACKED,
383 		.flags = CAP_FLAG_OUTPUT_PORT,
384 		.set = iris_set_max_qp,
385 	},
386 	{
387 		.cap_id = MAX_FRAME_QP_HEVC,
388 		.min = MIN_QP_8BIT,
389 		.max = MAX_QP,
390 		.step_or_mask = 1,
391 		.value = MAX_QP,
392 		.hfi_id = HFI_PROP_MAX_QP_PACKED,
393 		.flags = CAP_FLAG_OUTPUT_PORT,
394 		.set = iris_set_max_qp,
395 	},
396 	{
397 		.cap_id = I_FRAME_MIN_QP_H264,
398 		.min = MIN_QP_8BIT,
399 		.max = MAX_QP,
400 		.step_or_mask = 1,
401 		.value = MIN_QP_8BIT,
402 	},
403 	{
404 		.cap_id = I_FRAME_MIN_QP_HEVC,
405 		.min = MIN_QP_8BIT,
406 		.max = MAX_QP,
407 		.step_or_mask = 1,
408 		.value = MIN_QP_8BIT,
409 	},
410 	{
411 		.cap_id = P_FRAME_MIN_QP_H264,
412 		.min = MIN_QP_8BIT,
413 		.max = MAX_QP,
414 		.step_or_mask = 1,
415 		.value = MIN_QP_8BIT,
416 	},
417 	{
418 		.cap_id = P_FRAME_MIN_QP_HEVC,
419 		.min = MIN_QP_8BIT,
420 		.max = MAX_QP,
421 		.step_or_mask = 1,
422 		.value = MIN_QP_8BIT,
423 	},
424 	{
425 		.cap_id = B_FRAME_MIN_QP_H264,
426 		.min = MIN_QP_8BIT,
427 		.max = MAX_QP,
428 		.step_or_mask = 1,
429 		.value = MIN_QP_8BIT,
430 	},
431 	{
432 		.cap_id = B_FRAME_MIN_QP_HEVC,
433 		.min = MIN_QP_8BIT,
434 		.max = MAX_QP,
435 		.step_or_mask = 1,
436 		.value = MIN_QP_8BIT,
437 	},
438 	{
439 		.cap_id = I_FRAME_MAX_QP_H264,
440 		.min = MIN_QP_8BIT,
441 		.max = MAX_QP,
442 		.step_or_mask = 1,
443 		.value = MAX_QP,
444 	},
445 	{
446 		.cap_id = I_FRAME_MAX_QP_HEVC,
447 		.min = MIN_QP_8BIT,
448 		.max = MAX_QP,
449 		.step_or_mask = 1,
450 		.value = MAX_QP,
451 	},
452 	{
453 		.cap_id = P_FRAME_MAX_QP_H264,
454 		.min = MIN_QP_8BIT,
455 		.max = MAX_QP,
456 		.step_or_mask = 1,
457 		.value = MAX_QP,
458 	},
459 	{
460 		.cap_id = P_FRAME_MAX_QP_HEVC,
461 		.min = MIN_QP_8BIT,
462 		.max = MAX_QP,
463 		.step_or_mask = 1,
464 		.value = MAX_QP,
465 	},
466 	{
467 		.cap_id = B_FRAME_MAX_QP_H264,
468 		.min = MIN_QP_8BIT,
469 		.max = MAX_QP,
470 		.step_or_mask = 1,
471 		.value = MAX_QP,
472 	},
473 	{
474 		.cap_id = B_FRAME_MAX_QP_HEVC,
475 		.min = MIN_QP_8BIT,
476 		.max = MAX_QP,
477 		.step_or_mask = 1,
478 		.value = MAX_QP,
479 	},
480 	{
481 		.cap_id = I_FRAME_QP_H264,
482 		.min = MIN_QP_8BIT,
483 		.max = MAX_QP,
484 		.step_or_mask = 1,
485 		.value = DEFAULT_QP,
486 		.hfi_id = HFI_PROP_QP_PACKED,
487 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
488 			CAP_FLAG_DYNAMIC_ALLOWED,
489 		.set = iris_set_frame_qp,
490 	},
491 	{
492 		.cap_id = I_FRAME_QP_HEVC,
493 		.min = MIN_QP_8BIT,
494 		.max = MAX_QP,
495 		.step_or_mask = 1,
496 		.value = DEFAULT_QP,
497 		.hfi_id = HFI_PROP_QP_PACKED,
498 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
499 			CAP_FLAG_DYNAMIC_ALLOWED,
500 		.set = iris_set_frame_qp,
501 	},
502 	{
503 		.cap_id = P_FRAME_QP_H264,
504 		.min = MIN_QP_8BIT,
505 		.max = MAX_QP,
506 		.step_or_mask = 1,
507 		.value = DEFAULT_QP,
508 		.hfi_id = HFI_PROP_QP_PACKED,
509 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
510 			CAP_FLAG_DYNAMIC_ALLOWED,
511 		.set = iris_set_frame_qp,
512 	},
513 	{
514 		.cap_id = P_FRAME_QP_HEVC,
515 		.min = MIN_QP_8BIT,
516 		.max = MAX_QP,
517 		.step_or_mask = 1,
518 		.value = DEFAULT_QP,
519 		.hfi_id = HFI_PROP_QP_PACKED,
520 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
521 			CAP_FLAG_DYNAMIC_ALLOWED,
522 		.set = iris_set_frame_qp,
523 	},
524 	{
525 		.cap_id = B_FRAME_QP_H264,
526 		.min = MIN_QP_8BIT,
527 		.max = MAX_QP,
528 		.step_or_mask = 1,
529 		.value = DEFAULT_QP,
530 		.hfi_id = HFI_PROP_QP_PACKED,
531 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
532 			CAP_FLAG_DYNAMIC_ALLOWED,
533 		.set = iris_set_frame_qp,
534 	},
535 	{
536 		.cap_id = B_FRAME_QP_HEVC,
537 		.min = MIN_QP_8BIT,
538 		.max = MAX_QP,
539 		.step_or_mask = 1,
540 		.value = DEFAULT_QP,
541 		.hfi_id = HFI_PROP_QP_PACKED,
542 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
543 			CAP_FLAG_DYNAMIC_ALLOWED,
544 		.set = iris_set_frame_qp,
545 	},
546 	{
547 		.cap_id = INPUT_BUF_HOST_MAX_COUNT,
548 		.min = DEFAULT_MAX_HOST_BUF_COUNT,
549 		.max = DEFAULT_MAX_HOST_BURST_BUF_COUNT,
550 		.step_or_mask = 1,
551 		.value = DEFAULT_MAX_HOST_BUF_COUNT,
552 		.hfi_id = HFI_PROP_BUFFER_HOST_MAX_COUNT,
553 		.flags = CAP_FLAG_INPUT_PORT,
554 		.set = iris_set_u32,
555 	},
556 	{
557 		.cap_id = OUTPUT_BUF_HOST_MAX_COUNT,
558 		.min = DEFAULT_MAX_HOST_BUF_COUNT,
559 		.max = DEFAULT_MAX_HOST_BURST_BUF_COUNT,
560 		.step_or_mask = 1,
561 		.value = DEFAULT_MAX_HOST_BUF_COUNT,
562 		.hfi_id = HFI_PROP_BUFFER_HOST_MAX_COUNT,
563 		.flags = CAP_FLAG_OUTPUT_PORT,
564 		.set = iris_set_u32,
565 	},
566 	{
567 		.cap_id = ROTATION,
568 		.min = 0,
569 		.max = 270,
570 		.step_or_mask = 90,
571 		.value = 0,
572 		.hfi_id = HFI_PROP_ROTATION,
573 		.flags = CAP_FLAG_OUTPUT_PORT,
574 		.set = iris_set_rotation,
575 	},
576 	{
577 		.cap_id = HFLIP,
578 		.min = 0,
579 		.max = 1,
580 		.step_or_mask = 1,
581 		.value = 0,
582 		.hfi_id = HFI_PROP_FLIP,
583 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
584 			CAP_FLAG_DYNAMIC_ALLOWED,
585 		.set = iris_set_flip,
586 	},
587 	{
588 		.cap_id = VFLIP,
589 		.min = 0,
590 		.max = 1,
591 		.step_or_mask = 1,
592 		.value = 0,
593 		.hfi_id = HFI_PROP_FLIP,
594 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
595 			CAP_FLAG_DYNAMIC_ALLOWED,
596 		.set = iris_set_flip,
597 	},
598 	{
599 		.cap_id = IR_TYPE,
600 		.min = V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM,
601 		.max = V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM,
602 		.step_or_mask = BIT(V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM),
603 		.value = V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM,
604 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
605 	},
606 	{
607 		.cap_id = IR_PERIOD,
608 		.min = 0,
609 		.max = INT_MAX,
610 		.step_or_mask = 1,
611 		.value = 0,
612 		.flags = CAP_FLAG_OUTPUT_PORT |
613 			CAP_FLAG_DYNAMIC_ALLOWED,
614 		.set = iris_set_ir_period_gen2,
615 	},
616 	{
617 		.cap_id = LTR_COUNT,
618 		.min = 0,
619 		.max = MAX_LTR_FRAME_COUNT_GEN2,
620 		.step_or_mask = 1,
621 		.value = 0,
622 		.hfi_id = HFI_PROP_LTR_COUNT,
623 		.flags = CAP_FLAG_OUTPUT_PORT,
624 		.set = iris_set_ltr_count_gen2,
625 	},
626 	{
627 		.cap_id = USE_LTR,
628 		.min = 0,
629 		.max = ((1 << MAX_LTR_FRAME_COUNT_GEN2) - 1),
630 		.step_or_mask = 0,
631 		.value = 0,
632 		.hfi_id = HFI_PROP_LTR_USE,
633 		.flags = CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
634 		.set = iris_set_use_and_mark_ltr,
635 	},
636 	{
637 		.cap_id = MARK_LTR,
638 		.min = INVALID_DEFAULT_MARK_OR_USE_LTR,
639 		.max = (MAX_LTR_FRAME_COUNT_GEN2 - 1),
640 		.step_or_mask = 1,
641 		.value = INVALID_DEFAULT_MARK_OR_USE_LTR,
642 		.hfi_id = HFI_PROP_LTR_MARK,
643 		.flags = CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
644 		.set = iris_set_use_and_mark_ltr,
645 	},
646 	{
647 		.cap_id = B_FRAME,
648 		.min = 0,
649 		.max = 1,
650 		.step_or_mask = 1,
651 		.value = 0,
652 		.hfi_id = HFI_PROP_MAX_B_FRAMES,
653 		.flags = CAP_FLAG_OUTPUT_PORT,
654 		.set = iris_set_u32,
655 	},
656 	{
657 		.cap_id = LAYER_ENABLE,
658 		.min = 0,
659 		.max = 1,
660 		.step_or_mask = 1,
661 		.value = 0,
662 		.flags = CAP_FLAG_OUTPUT_PORT,
663 	},
664 	{
665 		.cap_id = LAYER_TYPE_H264,
666 		.min = V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B,
667 		.max = V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P,
668 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B) |
669 				BIT(V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P),
670 		.value = V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P,
671 		.hfi_id = HFI_PROP_LAYER_ENCODING_TYPE,
672 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
673 		.set = iris_set_layer_type,
674 	},
675 	{
676 		.cap_id = LAYER_TYPE_HEVC,
677 		.min = V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B,
678 		.max = V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P,
679 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B) |
680 				BIT(V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P),
681 		.value = V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P,
682 		.hfi_id = HFI_PROP_LAYER_ENCODING_TYPE,
683 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
684 		.set = iris_set_layer_type,
685 	},
686 	{
687 		.cap_id = LAYER_COUNT_H264,
688 		.min = 0,
689 		.max = 5,
690 		.step_or_mask = 1,
691 		.value = 0,
692 		.hfi_id = HFI_PROP_LAYER_COUNT,
693 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
694 		.set = iris_set_layer_count_gen2,
695 	},
696 	{
697 		.cap_id = LAYER_COUNT_HEVC,
698 		.min = 0,
699 		.max = 5,
700 		.step_or_mask = 1,
701 		.value = 0,
702 		.hfi_id = HFI_PROP_LAYER_COUNT,
703 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
704 		.set = iris_set_layer_count_gen2,
705 	},
706 	{
707 		.cap_id = LAYER0_BITRATE_H264,
708 		.min = 1,
709 		.max = MILOS_BITRATE_MAX,
710 		.step_or_mask = 1,
711 		.value = BITRATE_DEFAULT,
712 		.hfi_id = HFI_PROP_BITRATE_LAYER1,
713 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
714 			CAP_FLAG_DYNAMIC_ALLOWED,
715 		.set = iris_set_layer_bitrate,
716 	},
717 	{
718 		.cap_id = LAYER1_BITRATE_H264,
719 		.min = 1,
720 		.max = MILOS_BITRATE_MAX,
721 		.step_or_mask = 1,
722 		.value = BITRATE_DEFAULT,
723 		.hfi_id = HFI_PROP_BITRATE_LAYER2,
724 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
725 			CAP_FLAG_DYNAMIC_ALLOWED,
726 		.set = iris_set_layer_bitrate,
727 	},
728 	{
729 		.cap_id = LAYER2_BITRATE_H264,
730 		.min = 1,
731 		.max = MILOS_BITRATE_MAX,
732 		.step_or_mask = 1,
733 		.value = BITRATE_DEFAULT,
734 		.hfi_id = HFI_PROP_BITRATE_LAYER3,
735 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
736 			CAP_FLAG_DYNAMIC_ALLOWED,
737 		.set = iris_set_layer_bitrate,
738 	},
739 	{
740 		.cap_id = LAYER3_BITRATE_H264,
741 		.min = 1,
742 		.max = MILOS_BITRATE_MAX,
743 		.step_or_mask = 1,
744 		.value = BITRATE_DEFAULT,
745 		.hfi_id = HFI_PROP_BITRATE_LAYER4,
746 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
747 			CAP_FLAG_DYNAMIC_ALLOWED,
748 		.set = iris_set_layer_bitrate,
749 	},
750 	{
751 		.cap_id = LAYER4_BITRATE_H264,
752 		.min = 1,
753 		.max = MILOS_BITRATE_MAX,
754 		.step_or_mask = 1,
755 		.value = BITRATE_DEFAULT,
756 		.hfi_id = HFI_PROP_BITRATE_LAYER5,
757 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
758 			CAP_FLAG_DYNAMIC_ALLOWED,
759 		.set = iris_set_layer_bitrate,
760 	},
761 	{
762 		.cap_id = LAYER5_BITRATE_H264,
763 		.min = 1,
764 		.max = MILOS_BITRATE_MAX,
765 		.step_or_mask = 1,
766 		.value = BITRATE_DEFAULT,
767 		.hfi_id = HFI_PROP_BITRATE_LAYER6,
768 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
769 			CAP_FLAG_DYNAMIC_ALLOWED,
770 		.set = iris_set_layer_bitrate,
771 	},
772 	{
773 		.cap_id = LAYER0_BITRATE_HEVC,
774 		.min = 1,
775 		.max = MILOS_BITRATE_MAX,
776 		.step_or_mask = 1,
777 		.value = BITRATE_DEFAULT,
778 		.hfi_id = HFI_PROP_BITRATE_LAYER1,
779 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
780 			CAP_FLAG_DYNAMIC_ALLOWED,
781 		.set = iris_set_layer_bitrate,
782 	},
783 	{
784 		.cap_id = LAYER1_BITRATE_HEVC,
785 		.min = 1,
786 		.max = MILOS_BITRATE_MAX,
787 		.step_or_mask = 1,
788 		.value = BITRATE_DEFAULT,
789 		.hfi_id = HFI_PROP_BITRATE_LAYER2,
790 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
791 			CAP_FLAG_DYNAMIC_ALLOWED,
792 		.set = iris_set_layer_bitrate,
793 	},
794 	{
795 		.cap_id = LAYER2_BITRATE_HEVC,
796 		.min = 1,
797 		.max = MILOS_BITRATE_MAX,
798 		.step_or_mask = 1,
799 		.value = BITRATE_DEFAULT,
800 		.hfi_id = HFI_PROP_BITRATE_LAYER3,
801 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
802 			CAP_FLAG_DYNAMIC_ALLOWED,
803 		.set = iris_set_layer_bitrate,
804 	},
805 	{
806 		.cap_id = LAYER3_BITRATE_HEVC,
807 		.min = 1,
808 		.max = MILOS_BITRATE_MAX,
809 		.step_or_mask = 1,
810 		.value = BITRATE_DEFAULT,
811 		.hfi_id = HFI_PROP_BITRATE_LAYER4,
812 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
813 			CAP_FLAG_DYNAMIC_ALLOWED,
814 		.set = iris_set_layer_bitrate,
815 	},
816 	{
817 		.cap_id = LAYER4_BITRATE_HEVC,
818 		.min = 1,
819 		.max = MILOS_BITRATE_MAX,
820 		.step_or_mask = 1,
821 		.value = BITRATE_DEFAULT,
822 		.hfi_id = HFI_PROP_BITRATE_LAYER5,
823 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
824 			CAP_FLAG_DYNAMIC_ALLOWED,
825 		.set = iris_set_layer_bitrate,
826 	},
827 	{
828 		.cap_id = LAYER5_BITRATE_HEVC,
829 		.min = 1,
830 		.max = MILOS_BITRATE_MAX,
831 		.step_or_mask = 1,
832 		.value = BITRATE_DEFAULT,
833 		.hfi_id = HFI_PROP_BITRATE_LAYER6,
834 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
835 			CAP_FLAG_DYNAMIC_ALLOWED,
836 		.set = iris_set_layer_bitrate,
837 	}
838 };
839 
840 static const struct platform_inst_fw_cap inst_fw_cap_sm8550_dec[] = {
841 	{
842 		.cap_id = PROFILE_H264,
843 		.min = V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE,
844 		.max = V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH,
845 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) |
846 				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE) |
847 				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) |
848 				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_HIGH) |
849 				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH),
850 		.value = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
851 		.hfi_id = HFI_PROP_PROFILE,
852 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
853 		.set = iris_set_u32_enum,
854 	},
855 	{
856 		.cap_id = PROFILE_HEVC,
857 		.min = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
858 		.max = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10,
859 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN) |
860 				BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE) |
861 				BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10),
862 		.value = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
863 		.hfi_id = HFI_PROP_PROFILE,
864 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
865 		.set = iris_set_u32_enum,
866 	},
867 	{
868 		.cap_id = PROFILE_AV1,
869 		.min = V4L2_MPEG_VIDEO_AV1_PROFILE_MAIN,
870 		.max = V4L2_MPEG_VIDEO_AV1_PROFILE_MAIN,
871 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_AV1_PROFILE_MAIN),
872 		.value = V4L2_MPEG_VIDEO_AV1_PROFILE_MAIN,
873 		.hfi_id = HFI_PROP_PROFILE,
874 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
875 		.set = iris_set_u32_enum,
876 	},
877 	{
878 		.cap_id = PROFILE_VP9,
879 		.min = V4L2_MPEG_VIDEO_VP9_PROFILE_0,
880 		.max = V4L2_MPEG_VIDEO_VP9_PROFILE_2,
881 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_0) |
882 				BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_2),
883 		.value = V4L2_MPEG_VIDEO_VP9_PROFILE_0,
884 		.hfi_id = HFI_PROP_PROFILE,
885 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
886 		.set = iris_set_u32_enum,
887 	},
888 	{
889 		.cap_id = LEVEL_H264,
890 		.min = V4L2_MPEG_VIDEO_H264_LEVEL_1_0,
891 		.max = V4L2_MPEG_VIDEO_H264_LEVEL_6_2,
892 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_0) |
893 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1B) |
894 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_1) |
895 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_2) |
896 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_3) |
897 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_0) |
898 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_1) |
899 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_2) |
900 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) |
901 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) |
902 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) |
903 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0) |
904 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_1) |
905 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_2) |
906 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_0) |
907 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_1) |
908 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_2) |
909 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_0) |
910 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_1) |
911 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_2),
912 		.value = V4L2_MPEG_VIDEO_H264_LEVEL_6_1,
913 		.hfi_id = HFI_PROP_LEVEL,
914 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
915 		.set = iris_set_u32_enum,
916 	},
917 	{
918 		.cap_id = LEVEL_HEVC,
919 		.min = V4L2_MPEG_VIDEO_HEVC_LEVEL_1,
920 		.max = V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2,
921 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) |
922 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) |
923 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) |
924 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) |
925 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) |
926 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) |
927 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) |
928 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5) |
929 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1) |
930 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2) |
931 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6) |
932 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1) |
933 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2),
934 		.value = V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1,
935 		.hfi_id = HFI_PROP_LEVEL,
936 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
937 		.set = iris_set_u32_enum,
938 	},
939 	{
940 		.cap_id = LEVEL_VP9,
941 		.min = V4L2_MPEG_VIDEO_VP9_LEVEL_1_0,
942 		.max = V4L2_MPEG_VIDEO_VP9_LEVEL_6_0,
943 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_0) |
944 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_1) |
945 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_0) |
946 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_1) |
947 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_0) |
948 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_1) |
949 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_0) |
950 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_1) |
951 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_0) |
952 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_1) |
953 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_2) |
954 				BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_6_0),
955 		.value = V4L2_MPEG_VIDEO_VP9_LEVEL_6_0,
956 		.hfi_id = HFI_PROP_LEVEL,
957 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
958 		.set = iris_set_u32_enum,
959 	},
960 	{
961 		.cap_id = LEVEL_AV1,
962 		.min = V4L2_MPEG_VIDEO_AV1_LEVEL_2_0,
963 		.max = V4L2_MPEG_VIDEO_AV1_LEVEL_6_1,
964 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_2_0) |
965 				BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_2_1) |
966 				BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_2_2) |
967 				BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_2_3) |
968 				BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_3_0) |
969 				BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_3_1) |
970 				BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_3_2) |
971 				BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_3_3) |
972 				BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_4_0) |
973 				BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_4_1) |
974 				BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_4_2) |
975 				BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_4_3) |
976 				BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_5_0) |
977 				BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_5_1) |
978 				BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_5_2) |
979 				BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_5_3) |
980 				BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_6_0) |
981 				BIT(V4L2_MPEG_VIDEO_AV1_LEVEL_6_1),
982 		.value = V4L2_MPEG_VIDEO_AV1_LEVEL_6_1,
983 		.hfi_id = HFI_PROP_LEVEL,
984 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
985 		.set = iris_set_u32_enum,
986 	},
987 	{
988 		.cap_id = TIER,
989 		.min = V4L2_MPEG_VIDEO_HEVC_TIER_MAIN,
990 		.max = V4L2_MPEG_VIDEO_HEVC_TIER_HIGH,
991 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_TIER_MAIN) |
992 				BIT(V4L2_MPEG_VIDEO_HEVC_TIER_HIGH),
993 		.value = V4L2_MPEG_VIDEO_HEVC_TIER_HIGH,
994 		.hfi_id = HFI_PROP_TIER,
995 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
996 		.set = iris_set_u32_enum,
997 	},
998 	{
999 		.cap_id = TIER_AV1,
1000 		.min = 0,
1001 		.max = 1,
1002 		.step_or_mask = 1,
1003 		.value = 0,
1004 		.hfi_id = HFI_PROP_TIER,
1005 		.flags = CAP_FLAG_INPUT_PORT,
1006 		.set = iris_set_u32,
1007 	},
1008 	{
1009 		.cap_id = DRAP,
1010 		.min = 0,
1011 		.max = 1,
1012 		.step_or_mask = 1,
1013 		.value = 0,
1014 		.hfi_id = HFI_PROP_AV1_DRAP_CONFIG,
1015 		.flags = CAP_FLAG_INPUT_PORT,
1016 		.set = iris_set_u32,
1017 	},
1018 	{
1019 		.cap_id = FILM_GRAIN,
1020 		.min = 0,
1021 		.max = 1,
1022 		.step_or_mask = 1,
1023 		.value = 0,
1024 		.hfi_id = HFI_PROP_AV1_FILM_GRAIN_PRESENT,
1025 		.flags = CAP_FLAG_VOLATILE,
1026 	},
1027 	{
1028 		.cap_id = SUPER_BLOCK,
1029 		.min = 0,
1030 		.max = 1,
1031 		.step_or_mask = 1,
1032 		.value = 0,
1033 		.hfi_id = HFI_PROP_AV1_SUPER_BLOCK_ENABLED,
1034 	},
1035 	{
1036 		.cap_id = ENH_LAYER_COUNT,
1037 		.min = 0,
1038 		.max = 1,
1039 		.step_or_mask = 1,
1040 		.value = 0,
1041 		.hfi_id = HFI_PROP_AV1_OP_POINT,
1042 		.flags = CAP_FLAG_INPUT_PORT,
1043 		.set = iris_set_u32,
1044 	},
1045 	{
1046 		.cap_id = INPUT_BUF_HOST_MAX_COUNT,
1047 		.min = DEFAULT_MAX_HOST_BUF_COUNT,
1048 		.max = DEFAULT_MAX_HOST_BURST_BUF_COUNT,
1049 		.step_or_mask = 1,
1050 		.value = DEFAULT_MAX_HOST_BUF_COUNT,
1051 		.hfi_id = HFI_PROP_BUFFER_HOST_MAX_COUNT,
1052 		.flags = CAP_FLAG_INPUT_PORT,
1053 		.set = iris_set_u32,
1054 	},
1055 	{
1056 		.cap_id = STAGE,
1057 		.min = STAGE_1,
1058 		.max = STAGE_2,
1059 		.step_or_mask = 1,
1060 		.value = STAGE_2,
1061 		.hfi_id = HFI_PROP_STAGE,
1062 		.set = iris_set_stage,
1063 	},
1064 	{
1065 		.cap_id = PIPE,
1066 		/* .max, .min and .value are set via platform data */
1067 		.step_or_mask = 1,
1068 		.hfi_id = HFI_PROP_PIPE,
1069 		.set = iris_set_pipe,
1070 	},
1071 	{
1072 		.cap_id = POC,
1073 		.min = 0,
1074 		.max = 2,
1075 		.step_or_mask = 1,
1076 		.value = 1,
1077 		.hfi_id = HFI_PROP_PIC_ORDER_CNT_TYPE,
1078 	},
1079 	{
1080 		.cap_id = CODED_FRAMES,
1081 		.min = CODED_FRAMES_PROGRESSIVE,
1082 		.max = CODED_FRAMES_PROGRESSIVE,
1083 		.step_or_mask = 0,
1084 		.value = CODED_FRAMES_PROGRESSIVE,
1085 		.hfi_id = HFI_PROP_CODED_FRAMES,
1086 	},
1087 	{
1088 		.cap_id = BIT_DEPTH,
1089 		.min = BIT_DEPTH_8,
1090 		.max = BIT_DEPTH_10,
1091 		.step_or_mask = 1,
1092 		.value = BIT_DEPTH_8,
1093 		.hfi_id = HFI_PROP_LUMA_CHROMA_BIT_DEPTH,
1094 	},
1095 	{
1096 		.cap_id = RAP_FRAME,
1097 		.min = 0,
1098 		.max = 1,
1099 		.step_or_mask = 1,
1100 		.value = 1,
1101 		.hfi_id = HFI_PROP_DEC_START_FROM_RAP_FRAME,
1102 		.flags = CAP_FLAG_INPUT_PORT,
1103 		.set = iris_set_u32,
1104 	},
1105 };
1106 
1107 static const struct platform_inst_fw_cap inst_fw_cap_sm8550_enc[] = {
1108 	{
1109 		.cap_id = PROFILE_H264,
1110 		.min = V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE,
1111 		.max = V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH,
1112 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) |
1113 				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH) |
1114 				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE) |
1115 				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) |
1116 				BIT(V4L2_MPEG_VIDEO_H264_PROFILE_HIGH),
1117 		.value = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH,
1118 		.hfi_id = HFI_PROP_PROFILE,
1119 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
1120 		.set = iris_set_profile,
1121 	},
1122 	{
1123 		.cap_id = PROFILE_HEVC,
1124 		.min = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
1125 		.max = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10,
1126 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN) |
1127 				BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE) |
1128 				BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10),
1129 		.value = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN,
1130 		.hfi_id = HFI_PROP_PROFILE,
1131 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
1132 		.set = iris_set_profile,
1133 	},
1134 	{
1135 		.cap_id = LEVEL_H264,
1136 		.min = V4L2_MPEG_VIDEO_H264_LEVEL_1_0,
1137 		.max = V4L2_MPEG_VIDEO_H264_LEVEL_6_0,
1138 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_0) |
1139 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1B) |
1140 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_1) |
1141 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_2) |
1142 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_3) |
1143 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_0) |
1144 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_1) |
1145 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_2) |
1146 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) |
1147 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) |
1148 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) |
1149 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0) |
1150 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_1) |
1151 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_2) |
1152 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_0) |
1153 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_1) |
1154 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_2) |
1155 				BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_0),
1156 		.value = V4L2_MPEG_VIDEO_H264_LEVEL_5_0,
1157 		.hfi_id = HFI_PROP_LEVEL,
1158 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
1159 		.set = iris_set_level,
1160 	},
1161 	{
1162 		.cap_id = LEVEL_HEVC,
1163 		.min = V4L2_MPEG_VIDEO_HEVC_LEVEL_1,
1164 		.max = V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2,
1165 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) |
1166 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) |
1167 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) |
1168 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) |
1169 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) |
1170 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) |
1171 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) |
1172 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5) |
1173 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1) |
1174 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2) |
1175 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6) |
1176 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1) |
1177 				BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2),
1178 		.value = V4L2_MPEG_VIDEO_HEVC_LEVEL_5,
1179 		.hfi_id = HFI_PROP_LEVEL,
1180 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
1181 		.set = iris_set_level,
1182 	},
1183 	{
1184 		.cap_id = STAGE,
1185 		.min = STAGE_1,
1186 		.max = STAGE_2,
1187 		.step_or_mask = 1,
1188 		.value = STAGE_2,
1189 		.hfi_id = HFI_PROP_STAGE,
1190 		.set = iris_set_stage,
1191 	},
1192 	{
1193 		.cap_id = HEADER_MODE,
1194 		.min = V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE,
1195 		.max = V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME,
1196 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE) |
1197 				BIT(V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME),
1198 		.value = V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME,
1199 		.hfi_id = HFI_PROP_SEQ_HEADER_MODE,
1200 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
1201 		.set = iris_set_header_mode_gen2,
1202 	},
1203 	{
1204 		.cap_id = PREPEND_SPSPPS_TO_IDR,
1205 		.min = 0,
1206 		.max = 1,
1207 		.step_or_mask = 1,
1208 		.value = 0,
1209 	},
1210 	{
1211 		.cap_id = BITRATE,
1212 		.min = 1,
1213 		.max = BITRATE_MAX,
1214 		.step_or_mask = 1,
1215 		.value = BITRATE_DEFAULT,
1216 		.hfi_id = HFI_PROP_TOTAL_BITRATE,
1217 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1218 			CAP_FLAG_DYNAMIC_ALLOWED,
1219 		.set = iris_set_bitrate_gen2,
1220 	},
1221 	{
1222 		.cap_id = BITRATE_PEAK,
1223 		.min = 1,
1224 		.max = BITRATE_MAX,
1225 		.step_or_mask = 1,
1226 		.value = BITRATE_DEFAULT,
1227 		.hfi_id = HFI_PROP_TOTAL_PEAK_BITRATE,
1228 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1229 			CAP_FLAG_DYNAMIC_ALLOWED,
1230 		.set = iris_set_peak_bitrate,
1231 	},
1232 	{
1233 		.cap_id = BITRATE_MODE,
1234 		.min = V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
1235 		.max = V4L2_MPEG_VIDEO_BITRATE_MODE_CBR,
1236 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) |
1237 				BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR),
1238 		.value = V4L2_MPEG_VIDEO_BITRATE_MODE_VBR,
1239 		.hfi_id = HFI_PROP_RATE_CONTROL,
1240 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
1241 		.set = iris_set_bitrate_mode_gen2,
1242 	},
1243 	{
1244 		.cap_id = TIME_DELTA_BASED_RC,
1245 		.min = 0,
1246 		.max = 1,
1247 		.step_or_mask = 1,
1248 		.value = 0,
1249 		.hfi_id = HFI_PROP_TIME_DELTA_BASED_RATE_CONTROL,
1250 		.flags = CAP_FLAG_OUTPUT_PORT,
1251 		.set = iris_set_time_delta_based_rc,
1252 	},
1253 	{
1254 		.cap_id = FRAME_SKIP_MODE,
1255 		.min = V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED,
1256 		.max = V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT,
1257 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED) |
1258 				BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT) |
1259 				BIT(V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT),
1260 		.value = V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED,
1261 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
1262 	},
1263 	{
1264 		.cap_id = FRAME_RC_ENABLE,
1265 		.min = 0,
1266 		.max = 1,
1267 		.step_or_mask = 1,
1268 		.value = 1,
1269 	},
1270 	{
1271 		.cap_id = GOP_SIZE,
1272 		.min = 0,
1273 		.max = INT_MAX,
1274 		.step_or_mask = 1,
1275 		.value = 2 * DEFAULT_FPS - 1,
1276 		.hfi_id = HFI_PROP_MAX_GOP_FRAMES,
1277 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1278 			CAP_FLAG_DYNAMIC_ALLOWED,
1279 		.set = iris_set_u32,
1280 	},
1281 	{
1282 		.cap_id = ENTROPY_MODE,
1283 		.min = V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC,
1284 		.max = V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC,
1285 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC) |
1286 				BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC),
1287 		.value = V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC,
1288 		.hfi_id = HFI_PROP_CABAC_SESSION,
1289 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
1290 		.set = iris_set_entropy_mode_gen2,
1291 	},
1292 	{
1293 		.cap_id = MIN_FRAME_QP_H264,
1294 		.min = MIN_QP_8BIT,
1295 		.max = MAX_QP,
1296 		.step_or_mask = 1,
1297 		.value = MIN_QP_8BIT,
1298 		.hfi_id = HFI_PROP_MIN_QP_PACKED,
1299 		.flags = CAP_FLAG_OUTPUT_PORT,
1300 		.set = iris_set_min_qp,
1301 	},
1302 	{
1303 		.cap_id = MIN_FRAME_QP_HEVC,
1304 		.min = MIN_QP_8BIT,
1305 		.max = MAX_QP,
1306 		.step_or_mask = 1,
1307 		.value = MIN_QP_8BIT,
1308 		.hfi_id = HFI_PROP_MIN_QP_PACKED,
1309 		.flags = CAP_FLAG_OUTPUT_PORT,
1310 		.set = iris_set_min_qp,
1311 	},
1312 	{
1313 		.cap_id = MAX_FRAME_QP_H264,
1314 		.min = MIN_QP_8BIT,
1315 		.max = MAX_QP,
1316 		.step_or_mask = 1,
1317 		.value = MAX_QP,
1318 		.hfi_id = HFI_PROP_MAX_QP_PACKED,
1319 		.flags = CAP_FLAG_OUTPUT_PORT,
1320 		.set = iris_set_max_qp,
1321 	},
1322 	{
1323 		.cap_id = MAX_FRAME_QP_HEVC,
1324 		.min = MIN_QP_8BIT,
1325 		.max = MAX_QP,
1326 		.step_or_mask = 1,
1327 		.value = MAX_QP,
1328 		.hfi_id = HFI_PROP_MAX_QP_PACKED,
1329 		.flags = CAP_FLAG_OUTPUT_PORT,
1330 		.set = iris_set_max_qp,
1331 	},
1332 	{
1333 		.cap_id = I_FRAME_MIN_QP_H264,
1334 		.min = MIN_QP_8BIT,
1335 		.max = MAX_QP,
1336 		.step_or_mask = 1,
1337 		.value = MIN_QP_8BIT,
1338 	},
1339 	{
1340 		.cap_id = I_FRAME_MIN_QP_HEVC,
1341 		.min = MIN_QP_8BIT,
1342 		.max = MAX_QP,
1343 		.step_or_mask = 1,
1344 		.value = MIN_QP_8BIT,
1345 	},
1346 	{
1347 		.cap_id = P_FRAME_MIN_QP_H264,
1348 		.min = MIN_QP_8BIT,
1349 		.max = MAX_QP,
1350 		.step_or_mask = 1,
1351 		.value = MIN_QP_8BIT,
1352 	},
1353 	{
1354 		.cap_id = P_FRAME_MIN_QP_HEVC,
1355 		.min = MIN_QP_8BIT,
1356 		.max = MAX_QP,
1357 		.step_or_mask = 1,
1358 		.value = MIN_QP_8BIT,
1359 	},
1360 	{
1361 		.cap_id = B_FRAME_MIN_QP_H264,
1362 		.min = MIN_QP_8BIT,
1363 		.max = MAX_QP,
1364 		.step_or_mask = 1,
1365 		.value = MIN_QP_8BIT,
1366 	},
1367 	{
1368 		.cap_id = B_FRAME_MIN_QP_HEVC,
1369 		.min = MIN_QP_8BIT,
1370 		.max = MAX_QP,
1371 		.step_or_mask = 1,
1372 		.value = MIN_QP_8BIT,
1373 	},
1374 	{
1375 		.cap_id = I_FRAME_MAX_QP_H264,
1376 		.min = MIN_QP_8BIT,
1377 		.max = MAX_QP,
1378 		.step_or_mask = 1,
1379 		.value = MAX_QP,
1380 	},
1381 	{
1382 		.cap_id = I_FRAME_MAX_QP_HEVC,
1383 		.min = MIN_QP_8BIT,
1384 		.max = MAX_QP,
1385 		.step_or_mask = 1,
1386 		.value = MAX_QP,
1387 	},
1388 	{
1389 		.cap_id = P_FRAME_MAX_QP_H264,
1390 		.min = MIN_QP_8BIT,
1391 		.max = MAX_QP,
1392 		.step_or_mask = 1,
1393 		.value = MAX_QP,
1394 	},
1395 	{
1396 		.cap_id = P_FRAME_MAX_QP_HEVC,
1397 		.min = MIN_QP_8BIT,
1398 		.max = MAX_QP,
1399 		.step_or_mask = 1,
1400 		.value = MAX_QP,
1401 	},
1402 	{
1403 		.cap_id = B_FRAME_MAX_QP_H264,
1404 		.min = MIN_QP_8BIT,
1405 		.max = MAX_QP,
1406 		.step_or_mask = 1,
1407 		.value = MAX_QP,
1408 	},
1409 	{
1410 		.cap_id = B_FRAME_MAX_QP_HEVC,
1411 		.min = MIN_QP_8BIT,
1412 		.max = MAX_QP,
1413 		.step_or_mask = 1,
1414 		.value = MAX_QP,
1415 	},
1416 	{
1417 		.cap_id = I_FRAME_QP_H264,
1418 		.min = MIN_QP_8BIT,
1419 		.max = MAX_QP,
1420 		.step_or_mask = 1,
1421 		.value = DEFAULT_QP,
1422 		.hfi_id = HFI_PROP_QP_PACKED,
1423 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1424 			CAP_FLAG_DYNAMIC_ALLOWED,
1425 		.set = iris_set_frame_qp,
1426 	},
1427 	{
1428 		.cap_id = I_FRAME_QP_HEVC,
1429 		.min = MIN_QP_8BIT,
1430 		.max = MAX_QP,
1431 		.step_or_mask = 1,
1432 		.value = DEFAULT_QP,
1433 		.hfi_id = HFI_PROP_QP_PACKED,
1434 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1435 			CAP_FLAG_DYNAMIC_ALLOWED,
1436 		.set = iris_set_frame_qp,
1437 	},
1438 	{
1439 		.cap_id = P_FRAME_QP_H264,
1440 		.min = MIN_QP_8BIT,
1441 		.max = MAX_QP,
1442 		.step_or_mask = 1,
1443 		.value = DEFAULT_QP,
1444 		.hfi_id = HFI_PROP_QP_PACKED,
1445 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1446 			CAP_FLAG_DYNAMIC_ALLOWED,
1447 		.set = iris_set_frame_qp,
1448 	},
1449 	{
1450 		.cap_id = P_FRAME_QP_HEVC,
1451 		.min = MIN_QP_8BIT,
1452 		.max = MAX_QP,
1453 		.step_or_mask = 1,
1454 		.value = DEFAULT_QP,
1455 		.hfi_id = HFI_PROP_QP_PACKED,
1456 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1457 			CAP_FLAG_DYNAMIC_ALLOWED,
1458 		.set = iris_set_frame_qp,
1459 	},
1460 	{
1461 		.cap_id = B_FRAME_QP_H264,
1462 		.min = MIN_QP_8BIT,
1463 		.max = MAX_QP,
1464 		.step_or_mask = 1,
1465 		.value = DEFAULT_QP,
1466 		.hfi_id = HFI_PROP_QP_PACKED,
1467 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1468 			CAP_FLAG_DYNAMIC_ALLOWED,
1469 		.set = iris_set_frame_qp,
1470 	},
1471 	{
1472 		.cap_id = B_FRAME_QP_HEVC,
1473 		.min = MIN_QP_8BIT,
1474 		.max = MAX_QP,
1475 		.step_or_mask = 1,
1476 		.value = DEFAULT_QP,
1477 		.hfi_id = HFI_PROP_QP_PACKED,
1478 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1479 			CAP_FLAG_DYNAMIC_ALLOWED,
1480 		.set = iris_set_frame_qp,
1481 	},
1482 	{
1483 		.cap_id = INPUT_BUF_HOST_MAX_COUNT,
1484 		.min = DEFAULT_MAX_HOST_BUF_COUNT,
1485 		.max = DEFAULT_MAX_HOST_BURST_BUF_COUNT,
1486 		.step_or_mask = 1,
1487 		.value = DEFAULT_MAX_HOST_BUF_COUNT,
1488 		.hfi_id = HFI_PROP_BUFFER_HOST_MAX_COUNT,
1489 		.flags = CAP_FLAG_INPUT_PORT,
1490 		.set = iris_set_u32,
1491 	},
1492 	{
1493 		.cap_id = OUTPUT_BUF_HOST_MAX_COUNT,
1494 		.min = DEFAULT_MAX_HOST_BUF_COUNT,
1495 		.max = DEFAULT_MAX_HOST_BURST_BUF_COUNT,
1496 		.step_or_mask = 1,
1497 		.value = DEFAULT_MAX_HOST_BUF_COUNT,
1498 		.hfi_id = HFI_PROP_BUFFER_HOST_MAX_COUNT,
1499 		.flags = CAP_FLAG_OUTPUT_PORT,
1500 		.set = iris_set_u32,
1501 	},
1502 	{
1503 		.cap_id = ROTATION,
1504 		.min = 0,
1505 		.max = 270,
1506 		.step_or_mask = 90,
1507 		.value = 0,
1508 		.hfi_id = HFI_PROP_ROTATION,
1509 		.flags = CAP_FLAG_OUTPUT_PORT,
1510 		.set = iris_set_rotation,
1511 	},
1512 	{
1513 		.cap_id = HFLIP,
1514 		.min = 0,
1515 		.max = 1,
1516 		.step_or_mask = 1,
1517 		.value = 0,
1518 		.hfi_id = HFI_PROP_FLIP,
1519 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1520 			CAP_FLAG_DYNAMIC_ALLOWED,
1521 		.set = iris_set_flip,
1522 	},
1523 	{
1524 		.cap_id = VFLIP,
1525 		.min = 0,
1526 		.max = 1,
1527 		.step_or_mask = 1,
1528 		.value = 0,
1529 		.hfi_id = HFI_PROP_FLIP,
1530 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1531 			CAP_FLAG_DYNAMIC_ALLOWED,
1532 		.set = iris_set_flip,
1533 	},
1534 	{
1535 		.cap_id = IR_TYPE,
1536 		.min = V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM,
1537 		.max = V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC,
1538 		.step_or_mask = BIT(V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM) |
1539 			BIT(V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC),
1540 		.value = V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM,
1541 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
1542 	},
1543 	{
1544 		.cap_id = IR_PERIOD,
1545 		.min = 0,
1546 		.max = INT_MAX,
1547 		.step_or_mask = 1,
1548 		.value = 0,
1549 		.flags = CAP_FLAG_OUTPUT_PORT |
1550 			CAP_FLAG_DYNAMIC_ALLOWED,
1551 		.set = iris_set_ir_period_gen2,
1552 	},
1553 	{
1554 		.cap_id = LTR_COUNT,
1555 		.min = 0,
1556 		.max = MAX_LTR_FRAME_COUNT_GEN2,
1557 		.step_or_mask = 1,
1558 		.value = 0,
1559 		.hfi_id = HFI_PROP_LTR_COUNT,
1560 		.flags = CAP_FLAG_OUTPUT_PORT,
1561 		.set = iris_set_ltr_count_gen2,
1562 	},
1563 	{
1564 		.cap_id = USE_LTR,
1565 		.min = 0,
1566 		.max = ((1 << MAX_LTR_FRAME_COUNT_GEN2) - 1),
1567 		.step_or_mask = 0,
1568 		.value = 0,
1569 		.hfi_id = HFI_PROP_LTR_USE,
1570 		.flags = CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
1571 		.set = iris_set_use_and_mark_ltr,
1572 	},
1573 	{
1574 		.cap_id = MARK_LTR,
1575 		.min = INVALID_DEFAULT_MARK_OR_USE_LTR,
1576 		.max = (MAX_LTR_FRAME_COUNT_GEN2 - 1),
1577 		.step_or_mask = 1,
1578 		.value = INVALID_DEFAULT_MARK_OR_USE_LTR,
1579 		.hfi_id = HFI_PROP_LTR_MARK,
1580 		.flags = CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
1581 		.set = iris_set_use_and_mark_ltr,
1582 	},
1583 	{
1584 		.cap_id = B_FRAME,
1585 		.min = 0,
1586 		.max = 1,
1587 		.step_or_mask = 1,
1588 		.value = 0,
1589 		.hfi_id = HFI_PROP_MAX_B_FRAMES,
1590 		.flags = CAP_FLAG_OUTPUT_PORT,
1591 		.set = iris_set_u32,
1592 	},
1593 	{
1594 		.cap_id = LAYER_ENABLE,
1595 		.min = 0,
1596 		.max = 1,
1597 		.step_or_mask = 1,
1598 		.value = 0,
1599 		.flags = CAP_FLAG_OUTPUT_PORT,
1600 	},
1601 	{
1602 		.cap_id = LAYER_TYPE_H264,
1603 		.min = V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B,
1604 		.max = V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P,
1605 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B) |
1606 				BIT(V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P),
1607 		.value = V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P,
1608 		.hfi_id = HFI_PROP_LAYER_ENCODING_TYPE,
1609 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
1610 		.set = iris_set_layer_type,
1611 	},
1612 	{
1613 		.cap_id = LAYER_TYPE_HEVC,
1614 		.min = V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B,
1615 		.max = V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P,
1616 		.step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B) |
1617 				BIT(V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P),
1618 		.value = V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P,
1619 		.hfi_id = HFI_PROP_LAYER_ENCODING_TYPE,
1620 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
1621 		.set = iris_set_layer_type,
1622 	},
1623 	{
1624 		.cap_id = LAYER_COUNT_H264,
1625 		.min = 0,
1626 		.max = 5,
1627 		.step_or_mask = 1,
1628 		.value = 0,
1629 		.hfi_id = HFI_PROP_LAYER_COUNT,
1630 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
1631 		.set = iris_set_layer_count_gen2,
1632 	},
1633 	{
1634 		.cap_id = LAYER_COUNT_HEVC,
1635 		.min = 0,
1636 		.max = 5,
1637 		.step_or_mask = 1,
1638 		.value = 0,
1639 		.hfi_id = HFI_PROP_LAYER_COUNT,
1640 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
1641 		.set = iris_set_layer_count_gen2,
1642 	},
1643 	{
1644 		.cap_id = LAYER0_BITRATE_H264,
1645 		.min = 1,
1646 		.max = BITRATE_MAX,
1647 		.step_or_mask = 1,
1648 		.value = BITRATE_DEFAULT,
1649 		.hfi_id = HFI_PROP_BITRATE_LAYER1,
1650 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1651 			CAP_FLAG_DYNAMIC_ALLOWED,
1652 		.set = iris_set_layer_bitrate,
1653 	},
1654 	{
1655 		.cap_id = LAYER1_BITRATE_H264,
1656 		.min = 1,
1657 		.max = BITRATE_MAX,
1658 		.step_or_mask = 1,
1659 		.value = BITRATE_DEFAULT,
1660 		.hfi_id = HFI_PROP_BITRATE_LAYER2,
1661 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1662 			CAP_FLAG_DYNAMIC_ALLOWED,
1663 		.set = iris_set_layer_bitrate,
1664 	},
1665 	{
1666 		.cap_id = LAYER2_BITRATE_H264,
1667 		.min = 1,
1668 		.max = BITRATE_MAX,
1669 		.step_or_mask = 1,
1670 		.value = BITRATE_DEFAULT,
1671 		.hfi_id = HFI_PROP_BITRATE_LAYER3,
1672 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1673 			CAP_FLAG_DYNAMIC_ALLOWED,
1674 		.set = iris_set_layer_bitrate,
1675 	},
1676 	{
1677 		.cap_id = LAYER3_BITRATE_H264,
1678 		.min = 1,
1679 		.max = BITRATE_MAX,
1680 		.step_or_mask = 1,
1681 		.value = BITRATE_DEFAULT,
1682 		.hfi_id = HFI_PROP_BITRATE_LAYER4,
1683 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1684 			CAP_FLAG_DYNAMIC_ALLOWED,
1685 		.set = iris_set_layer_bitrate,
1686 	},
1687 	{
1688 		.cap_id = LAYER4_BITRATE_H264,
1689 		.min = 1,
1690 		.max = BITRATE_MAX,
1691 		.step_or_mask = 1,
1692 		.value = BITRATE_DEFAULT,
1693 		.hfi_id = HFI_PROP_BITRATE_LAYER5,
1694 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1695 			CAP_FLAG_DYNAMIC_ALLOWED,
1696 		.set = iris_set_layer_bitrate,
1697 	},
1698 	{
1699 		.cap_id = LAYER5_BITRATE_H264,
1700 		.min = 1,
1701 		.max = BITRATE_MAX,
1702 		.step_or_mask = 1,
1703 		.value = BITRATE_DEFAULT,
1704 		.hfi_id = HFI_PROP_BITRATE_LAYER6,
1705 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1706 			CAP_FLAG_DYNAMIC_ALLOWED,
1707 		.set = iris_set_layer_bitrate,
1708 	},
1709 	{
1710 		.cap_id = LAYER0_BITRATE_HEVC,
1711 		.min = 1,
1712 		.max = BITRATE_MAX,
1713 		.step_or_mask = 1,
1714 		.value = BITRATE_DEFAULT,
1715 		.hfi_id = HFI_PROP_BITRATE_LAYER1,
1716 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1717 			CAP_FLAG_DYNAMIC_ALLOWED,
1718 		.set = iris_set_layer_bitrate,
1719 	},
1720 	{
1721 		.cap_id = LAYER1_BITRATE_HEVC,
1722 		.min = 1,
1723 		.max = BITRATE_MAX,
1724 		.step_or_mask = 1,
1725 		.value = BITRATE_DEFAULT,
1726 		.hfi_id = HFI_PROP_BITRATE_LAYER2,
1727 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1728 			CAP_FLAG_DYNAMIC_ALLOWED,
1729 		.set = iris_set_layer_bitrate,
1730 	},
1731 	{
1732 		.cap_id = LAYER2_BITRATE_HEVC,
1733 		.min = 1,
1734 		.max = BITRATE_MAX,
1735 		.step_or_mask = 1,
1736 		.value = BITRATE_DEFAULT,
1737 		.hfi_id = HFI_PROP_BITRATE_LAYER3,
1738 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1739 			CAP_FLAG_DYNAMIC_ALLOWED,
1740 		.set = iris_set_layer_bitrate,
1741 	},
1742 	{
1743 		.cap_id = LAYER3_BITRATE_HEVC,
1744 		.min = 1,
1745 		.max = BITRATE_MAX,
1746 		.step_or_mask = 1,
1747 		.value = BITRATE_DEFAULT,
1748 		.hfi_id = HFI_PROP_BITRATE_LAYER4,
1749 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1750 			CAP_FLAG_DYNAMIC_ALLOWED,
1751 		.set = iris_set_layer_bitrate,
1752 	},
1753 	{
1754 		.cap_id = LAYER4_BITRATE_HEVC,
1755 		.min = 1,
1756 		.max = BITRATE_MAX,
1757 		.step_or_mask = 1,
1758 		.value = BITRATE_DEFAULT,
1759 		.hfi_id = HFI_PROP_BITRATE_LAYER5,
1760 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1761 			CAP_FLAG_DYNAMIC_ALLOWED,
1762 		.set = iris_set_layer_bitrate,
1763 	},
1764 	{
1765 		.cap_id = LAYER5_BITRATE_HEVC,
1766 		.min = 1,
1767 		.max = BITRATE_MAX,
1768 		.step_or_mask = 1,
1769 		.value = BITRATE_DEFAULT,
1770 		.hfi_id = HFI_PROP_BITRATE_LAYER6,
1771 		.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
1772 			CAP_FLAG_DYNAMIC_ALLOWED,
1773 		.set = iris_set_layer_bitrate,
1774 	},
1775 	{
1776 		.cap_id = REQUEST_SYNC_FRAME,
1777 		.min = 0,
1778 		.max = 1,
1779 		.step_or_mask = 1,
1780 		.value = 0,
1781 		.hfi_id = HFI_PROP_REQUEST_SYNC_FRAME,
1782 		.flags = CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
1783 		.set = iris_set_req_sync_frame,
1784 	},
1785 };
1786 
1787 static const u32 sm8550_vdec_input_config_params_default[] = {
1788 	HFI_PROP_BITSTREAM_RESOLUTION,
1789 	HFI_PROP_CROP_OFFSETS,
1790 	HFI_PROP_LUMA_CHROMA_BIT_DEPTH,
1791 	HFI_PROP_CODED_FRAMES,
1792 	HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT,
1793 	HFI_PROP_PIC_ORDER_CNT_TYPE,
1794 	HFI_PROP_PROFILE,
1795 	HFI_PROP_LEVEL,
1796 	HFI_PROP_SIGNAL_COLOR_INFO,
1797 };
1798 
1799 static const u32 sm8550_vdec_input_config_param_hevc[] = {
1800 	HFI_PROP_BITSTREAM_RESOLUTION,
1801 	HFI_PROP_CROP_OFFSETS,
1802 	HFI_PROP_LUMA_CHROMA_BIT_DEPTH,
1803 	HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT,
1804 	HFI_PROP_PROFILE,
1805 	HFI_PROP_LEVEL,
1806 	HFI_PROP_TIER,
1807 	HFI_PROP_SIGNAL_COLOR_INFO,
1808 };
1809 
1810 static const u32 sm8550_vdec_input_config_param_vp9[] = {
1811 	HFI_PROP_BITSTREAM_RESOLUTION,
1812 	HFI_PROP_CROP_OFFSETS,
1813 	HFI_PROP_LUMA_CHROMA_BIT_DEPTH,
1814 	HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT,
1815 	HFI_PROP_PROFILE,
1816 	HFI_PROP_LEVEL,
1817 };
1818 
1819 static const u32 sm8550_vdec_input_config_param_av1[] = {
1820 	HFI_PROP_BITSTREAM_RESOLUTION,
1821 	HFI_PROP_CROP_OFFSETS,
1822 	HFI_PROP_LUMA_CHROMA_BIT_DEPTH,
1823 	HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT,
1824 	HFI_PROP_PROFILE,
1825 	HFI_PROP_LEVEL,
1826 	HFI_PROP_TIER,
1827 	HFI_PROP_AV1_FILM_GRAIN_PRESENT,
1828 	HFI_PROP_AV1_SUPER_BLOCK_ENABLED,
1829 	HFI_PROP_SIGNAL_COLOR_INFO,
1830 };
1831 
1832 static const u32 sm8550_venc_input_config_params[] = {
1833 	HFI_PROP_COLOR_FORMAT,
1834 	HFI_PROP_RAW_RESOLUTION,
1835 	HFI_PROP_CROP_OFFSETS,
1836 	HFI_PROP_LINEAR_STRIDE_SCANLINE,
1837 	HFI_PROP_SIGNAL_COLOR_INFO,
1838 };
1839 
1840 static const u32 sm8550_vdec_output_config_params[] = {
1841 	HFI_PROP_OPB_ENABLE,
1842 	HFI_PROP_COLOR_FORMAT,
1843 	HFI_PROP_LINEAR_STRIDE_SCANLINE,
1844 	HFI_PROP_UBWC_STRIDE_SCANLINE,
1845 };
1846 
1847 static const u32 sm8550_venc_output_config_params[] = {
1848 	HFI_PROP_BITSTREAM_RESOLUTION,
1849 	HFI_PROP_CROP_OFFSETS,
1850 	HFI_PROP_FRAME_RATE,
1851 };
1852 
1853 static const u32 sm8550_vdec_subscribe_input_properties[] = {
1854 	HFI_PROP_NO_OUTPUT,
1855 };
1856 
1857 static const u32 sm8550_vdec_subscribe_output_properties_avc[] = {
1858 	HFI_PROP_PICTURE_TYPE,
1859 	HFI_PROP_CABAC_SESSION,
1860 };
1861 
1862 static const u32 sm8550_vdec_subscribe_output_properties_hevc[] = {
1863 	HFI_PROP_PICTURE_TYPE,
1864 };
1865 
1866 static const u32 sm8550_vdec_subscribe_output_properties_vp9[] = {
1867 	HFI_PROP_PICTURE_TYPE,
1868 };
1869 
1870 static const u32 sm8550_vdec_subscribe_output_properties_av1[] = {
1871 	HFI_PROP_PICTURE_TYPE,
1872 	HFI_PROP_WORST_COMPRESSION_RATIO,
1873 	HFI_PROP_WORST_COMPLEXITY_FACTOR,
1874 };
1875 
1876 static const u32 sm8550_dec_ip_int_buf_tbl[] = {
1877 	BUF_BIN,
1878 	BUF_COMV,
1879 	BUF_NON_COMV,
1880 	BUF_LINE,
1881 	BUF_PARTIAL,
1882 };
1883 
1884 static const u32 sm8550_dec_op_int_buf_tbl[] = {
1885 	BUF_DPB,
1886 };
1887 
1888 static const u32 sm8550_enc_ip_int_buf_tbl[] = {
1889 	BUF_VPSS,
1890 };
1891 
1892 static const u32 sm8550_enc_op_int_buf_tbl[] = {
1893 	BUF_BIN,
1894 	BUF_COMV,
1895 	BUF_NON_COMV,
1896 	BUF_LINE,
1897 	BUF_SCRATCH_2,
1898 };
1899 
1900 const struct iris_firmware_data iris_hfi_gen2_data = {
1901 	.init_hfi_ops = iris_hfi_gen2_sys_ops_init,
1902 
1903 	.core_arch = VIDEO_ARCH_LX,
1904 
1905 	.inst_fw_caps_dec = inst_fw_cap_sm8550_dec,
1906 	.inst_fw_caps_dec_size = ARRAY_SIZE(inst_fw_cap_sm8550_dec),
1907 	.inst_fw_caps_enc = inst_fw_cap_sm8550_enc,
1908 	.inst_fw_caps_enc_size = ARRAY_SIZE(inst_fw_cap_sm8550_enc),
1909 
1910 	.dec_input_config_params_default =
1911 		sm8550_vdec_input_config_params_default,
1912 	.dec_input_config_params_default_size =
1913 		ARRAY_SIZE(sm8550_vdec_input_config_params_default),
1914 	.dec_input_config_params_hevc =
1915 		sm8550_vdec_input_config_param_hevc,
1916 	.dec_input_config_params_hevc_size =
1917 		ARRAY_SIZE(sm8550_vdec_input_config_param_hevc),
1918 	.dec_input_config_params_vp9 =
1919 		sm8550_vdec_input_config_param_vp9,
1920 	.dec_input_config_params_vp9_size =
1921 		ARRAY_SIZE(sm8550_vdec_input_config_param_vp9),
1922 	.dec_input_config_params_av1 =
1923 		sm8550_vdec_input_config_param_av1,
1924 	.dec_input_config_params_av1_size =
1925 		ARRAY_SIZE(sm8550_vdec_input_config_param_av1),
1926 	.dec_output_config_params =
1927 		sm8550_vdec_output_config_params,
1928 	.dec_output_config_params_size =
1929 		ARRAY_SIZE(sm8550_vdec_output_config_params),
1930 
1931 	.enc_input_config_params =
1932 		sm8550_venc_input_config_params,
1933 	.enc_input_config_params_size =
1934 		ARRAY_SIZE(sm8550_venc_input_config_params),
1935 	.enc_output_config_params =
1936 		sm8550_venc_output_config_params,
1937 	.enc_output_config_params_size =
1938 		ARRAY_SIZE(sm8550_venc_output_config_params),
1939 
1940 	.dec_input_prop = sm8550_vdec_subscribe_input_properties,
1941 	.dec_input_prop_size = ARRAY_SIZE(sm8550_vdec_subscribe_input_properties),
1942 	.dec_output_prop_avc = sm8550_vdec_subscribe_output_properties_avc,
1943 	.dec_output_prop_avc_size =
1944 		ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_avc),
1945 	.dec_output_prop_hevc = sm8550_vdec_subscribe_output_properties_hevc,
1946 	.dec_output_prop_hevc_size =
1947 		ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_hevc),
1948 	.dec_output_prop_vp9 = sm8550_vdec_subscribe_output_properties_vp9,
1949 	.dec_output_prop_vp9_size =
1950 		ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_vp9),
1951 	.dec_output_prop_av1 = sm8550_vdec_subscribe_output_properties_av1,
1952 	.dec_output_prop_av1_size =
1953 		ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_av1),
1954 
1955 	.dec_ip_int_buf_tbl = sm8550_dec_ip_int_buf_tbl,
1956 	.dec_ip_int_buf_tbl_size = ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl),
1957 	.dec_op_int_buf_tbl = sm8550_dec_op_int_buf_tbl,
1958 	.dec_op_int_buf_tbl_size = ARRAY_SIZE(sm8550_dec_op_int_buf_tbl),
1959 
1960 	.enc_ip_int_buf_tbl = sm8550_enc_ip_int_buf_tbl,
1961 	.enc_ip_int_buf_tbl_size = ARRAY_SIZE(sm8550_enc_ip_int_buf_tbl),
1962 	.enc_op_int_buf_tbl = sm8550_enc_op_int_buf_tbl,
1963 	.enc_op_int_buf_tbl_size = ARRAY_SIZE(sm8550_enc_op_int_buf_tbl),
1964 };
1965 
1966 const struct iris_firmware_data iris_hfi_milos_data = {
1967 	.init_hfi_ops = iris_hfi_gen2_sys_ops_init,
1968 
1969 	.core_arch = VIDEO_ARCH_LX,
1970 
1971 	.inst_fw_caps_dec = inst_fw_cap_milos_dec,
1972 	.inst_fw_caps_dec_size = ARRAY_SIZE(inst_fw_cap_milos_dec),
1973 	.inst_fw_caps_enc = inst_fw_cap_milos_enc,
1974 	.inst_fw_caps_enc_size = ARRAY_SIZE(inst_fw_cap_milos_enc),
1975 
1976 	.dec_input_config_params_default =
1977 		sm8550_vdec_input_config_params_default,
1978 	.dec_input_config_params_default_size =
1979 		ARRAY_SIZE(sm8550_vdec_input_config_params_default),
1980 	.dec_input_config_params_hevc =
1981 		sm8550_vdec_input_config_param_hevc,
1982 	.dec_input_config_params_hevc_size =
1983 		ARRAY_SIZE(sm8550_vdec_input_config_param_hevc),
1984 	.dec_input_config_params_vp9 =
1985 		sm8550_vdec_input_config_param_vp9,
1986 	.dec_input_config_params_vp9_size =
1987 		ARRAY_SIZE(sm8550_vdec_input_config_param_vp9),
1988 	.dec_output_config_params =
1989 		sm8550_vdec_output_config_params,
1990 	.dec_output_config_params_size =
1991 		ARRAY_SIZE(sm8550_vdec_output_config_params),
1992 
1993 	.enc_input_config_params =
1994 		sm8550_venc_input_config_params,
1995 	.enc_input_config_params_size =
1996 		ARRAY_SIZE(sm8550_venc_input_config_params),
1997 	.enc_output_config_params =
1998 		sm8550_venc_output_config_params,
1999 	.enc_output_config_params_size =
2000 		ARRAY_SIZE(sm8550_venc_output_config_params),
2001 
2002 	.dec_input_prop = sm8550_vdec_subscribe_input_properties,
2003 	.dec_input_prop_size = ARRAY_SIZE(sm8550_vdec_subscribe_input_properties),
2004 	.dec_output_prop_avc = sm8550_vdec_subscribe_output_properties_avc,
2005 	.dec_output_prop_avc_size =
2006 		ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_avc),
2007 	.dec_output_prop_hevc = sm8550_vdec_subscribe_output_properties_hevc,
2008 	.dec_output_prop_hevc_size =
2009 		ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_hevc),
2010 	.dec_output_prop_vp9 = sm8550_vdec_subscribe_output_properties_vp9,
2011 	.dec_output_prop_vp9_size =
2012 		ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_vp9),
2013 
2014 	.dec_ip_int_buf_tbl = sm8550_dec_ip_int_buf_tbl,
2015 	.dec_ip_int_buf_tbl_size = ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl),
2016 	.dec_op_int_buf_tbl = sm8550_dec_op_int_buf_tbl,
2017 	.dec_op_int_buf_tbl_size = ARRAY_SIZE(sm8550_dec_op_int_buf_tbl),
2018 
2019 	.enc_ip_int_buf_tbl = sm8550_enc_ip_int_buf_tbl,
2020 	.enc_ip_int_buf_tbl_size = ARRAY_SIZE(sm8550_enc_ip_int_buf_tbl),
2021 	.enc_op_int_buf_tbl = sm8550_enc_op_int_buf_tbl,
2022 	.enc_op_int_buf_tbl_size = ARRAY_SIZE(sm8550_enc_op_int_buf_tbl),
2023 };
2024