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