Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: iris: remove duplication between generic gen2 data and qcs8300

Now as we have removed PIPE value from inst_fw_caps_dec there should be
no difference between inst_fw_caps of QCS8300 and SM8550+. Drop the
QCS8300-specific tables and use generic one instead.

The differences between QCS8300 and SM8550 data comes from a
non-conflict merge of commit d22037f3fd33 ("media: iris: Set platform
capabilities to firmware for encoder video device") (which added .set
callbacks), and commit 6bdfa3f947a7 ("media: iris: Add platform-specific
capabilities for encoder video device") (which added QCS8300 data, but
not the callbacks).

Reviewed-by: Vikash Garodia <vikash.garodia@oss.qualcomm.com>
Reviewed-by: Dikshita Agarwal <dikshita.agarwal@oss.qualcomm.com>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Bryan O'Donoghue <bod@kernel.org>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>

authored by

Dmitry Baryshkov and committed by
Hans Verkuil
69dfada4 6c67d1cf

+8 -534
+4 -5
drivers/media/platform/qcom/iris/iris_platform_gen2.c
··· 995 995 /* 996 996 * Shares most of SM8550 data except: 997 997 * - inst_caps to platform_inst_cap_qcs8300 998 - * - inst_fw_caps to inst_fw_cap_qcs8300 999 998 */ 1000 999 const struct iris_platform_data qcs8300_data = { 1001 1000 .get_instance = iris_hfi_gen2_get_instance, ··· 1020 1021 .fwname = "qcom/vpu/vpu30_p4_s6.mbn", 1021 1022 .pas_id = IRIS_PAS_ID, 1022 1023 .inst_caps = &platform_inst_cap_qcs8300, 1023 - .inst_fw_caps_dec = inst_fw_cap_qcs8300_dec, 1024 - .inst_fw_caps_dec_size = ARRAY_SIZE(inst_fw_cap_qcs8300_dec), 1025 - .inst_fw_caps_enc = inst_fw_cap_qcs8300_enc, 1026 - .inst_fw_caps_enc_size = ARRAY_SIZE(inst_fw_cap_qcs8300_enc), 1024 + .inst_fw_caps_dec = inst_fw_cap_sm8550_dec, 1025 + .inst_fw_caps_dec_size = ARRAY_SIZE(inst_fw_cap_sm8550_dec), 1026 + .inst_fw_caps_enc = inst_fw_cap_sm8550_enc, 1027 + .inst_fw_caps_enc_size = ARRAY_SIZE(inst_fw_cap_sm8550_enc), 1027 1028 .tz_cp_config_data = &tz_cp_config_sm8550, 1028 1029 .core_arch = VIDEO_ARCH_LX, 1029 1030 .hw_response_timeout = HW_RESPONSE_TIMEOUT_VALUE,
+4 -529
drivers/media/platform/qcom/iris/iris_platform_qcs8300.h
··· 3 3 * Copyright (c) 2022-2025 Qualcomm Innovation Center, Inc. All rights reserved. 4 4 */ 5 5 6 - #define BITRATE_MAX 245000000 7 - 8 - static const struct platform_inst_fw_cap inst_fw_cap_qcs8300_dec[] = { 9 - { 10 - .cap_id = PROFILE_H264, 11 - .min = V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE, 12 - .max = V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH, 13 - .step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) | 14 - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE) | 15 - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) | 16 - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_HIGH) | 17 - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH), 18 - .value = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH, 19 - .hfi_id = HFI_PROP_PROFILE, 20 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, 21 - .set = iris_set_u32_enum, 22 - }, 23 - { 24 - .cap_id = PROFILE_HEVC, 25 - .min = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN, 26 - .max = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE, 27 - .step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN) | 28 - BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE), 29 - .value = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN, 30 - .hfi_id = HFI_PROP_PROFILE, 31 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, 32 - .set = iris_set_u32_enum, 33 - }, 34 - { 35 - .cap_id = PROFILE_VP9, 36 - .min = V4L2_MPEG_VIDEO_VP9_PROFILE_0, 37 - .max = V4L2_MPEG_VIDEO_VP9_PROFILE_2, 38 - .step_or_mask = BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_0) | 39 - BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_2), 40 - .value = V4L2_MPEG_VIDEO_VP9_PROFILE_0, 41 - .hfi_id = HFI_PROP_PROFILE, 42 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, 43 - .set = iris_set_u32_enum, 44 - }, 45 - { 46 - .cap_id = LEVEL_H264, 47 - .min = V4L2_MPEG_VIDEO_H264_LEVEL_1_0, 48 - .max = V4L2_MPEG_VIDEO_H264_LEVEL_6_2, 49 - .step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_0) | 50 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1B) | 51 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_1) | 52 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_2) | 53 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_3) | 54 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_0) | 55 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_1) | 56 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_2) | 57 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) | 58 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) | 59 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) | 60 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0) | 61 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_1) | 62 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_2) | 63 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_0) | 64 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_1) | 65 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_2) | 66 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_0) | 67 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_1) | 68 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_2), 69 - .value = V4L2_MPEG_VIDEO_H264_LEVEL_6_1, 70 - .hfi_id = HFI_PROP_LEVEL, 71 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, 72 - .set = iris_set_u32_enum, 73 - }, 74 - { 75 - .cap_id = LEVEL_HEVC, 76 - .min = V4L2_MPEG_VIDEO_HEVC_LEVEL_1, 77 - .max = V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2, 78 - .step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) | 79 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) | 80 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) | 81 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) | 82 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) | 83 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) | 84 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) | 85 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5) | 86 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1) | 87 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2) | 88 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6) | 89 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1) | 90 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2), 91 - .value = V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1, 92 - .hfi_id = HFI_PROP_LEVEL, 93 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, 94 - .set = iris_set_u32_enum, 95 - }, 96 - { 97 - .cap_id = LEVEL_VP9, 98 - .min = V4L2_MPEG_VIDEO_VP9_LEVEL_1_0, 99 - .max = V4L2_MPEG_VIDEO_VP9_LEVEL_6_0, 100 - .step_or_mask = BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_0) | 101 - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_1) | 102 - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_0) | 103 - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_1) | 104 - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_0) | 105 - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_1) | 106 - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_0) | 107 - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_1) | 108 - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_0) | 109 - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_1) | 110 - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_2) | 111 - BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_6_0), 112 - .value = V4L2_MPEG_VIDEO_VP9_LEVEL_6_0, 113 - .hfi_id = HFI_PROP_LEVEL, 114 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, 115 - .set = iris_set_u32_enum, 116 - }, 117 - { 118 - .cap_id = TIER, 119 - .min = V4L2_MPEG_VIDEO_HEVC_TIER_MAIN, 120 - .max = V4L2_MPEG_VIDEO_HEVC_TIER_HIGH, 121 - .step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_TIER_MAIN) | 122 - BIT(V4L2_MPEG_VIDEO_HEVC_TIER_HIGH), 123 - .value = V4L2_MPEG_VIDEO_HEVC_TIER_HIGH, 124 - .hfi_id = HFI_PROP_TIER, 125 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, 126 - .set = iris_set_u32_enum, 127 - }, 128 - { 129 - .cap_id = INPUT_BUF_HOST_MAX_COUNT, 130 - .min = DEFAULT_MAX_HOST_BUF_COUNT, 131 - .max = DEFAULT_MAX_HOST_BURST_BUF_COUNT, 132 - .step_or_mask = 1, 133 - .value = DEFAULT_MAX_HOST_BUF_COUNT, 134 - .hfi_id = HFI_PROP_BUFFER_HOST_MAX_COUNT, 135 - .flags = CAP_FLAG_INPUT_PORT, 136 - .set = iris_set_u32, 137 - }, 138 - { 139 - .cap_id = STAGE, 140 - .min = STAGE_1, 141 - .max = STAGE_2, 142 - .step_or_mask = 1, 143 - .value = STAGE_2, 144 - .hfi_id = HFI_PROP_STAGE, 145 - .set = iris_set_stage, 146 - }, 147 - { 148 - .cap_id = PIPE, 149 - /* .max, .min and .value are set via platform data */ 150 - .step_or_mask = 1, 151 - .hfi_id = HFI_PROP_PIPE, 152 - .set = iris_set_pipe, 153 - }, 154 - { 155 - .cap_id = POC, 156 - .min = 0, 157 - .max = 2, 158 - .step_or_mask = 1, 159 - .value = 1, 160 - .hfi_id = HFI_PROP_PIC_ORDER_CNT_TYPE, 161 - }, 162 - { 163 - .cap_id = CODED_FRAMES, 164 - .min = CODED_FRAMES_PROGRESSIVE, 165 - .max = CODED_FRAMES_PROGRESSIVE, 166 - .step_or_mask = 0, 167 - .value = CODED_FRAMES_PROGRESSIVE, 168 - .hfi_id = HFI_PROP_CODED_FRAMES, 169 - }, 170 - { 171 - .cap_id = BIT_DEPTH, 172 - .min = BIT_DEPTH_8, 173 - .max = BIT_DEPTH_8, 174 - .step_or_mask = 1, 175 - .value = BIT_DEPTH_8, 176 - .hfi_id = HFI_PROP_LUMA_CHROMA_BIT_DEPTH, 177 - }, 178 - { 179 - .cap_id = RAP_FRAME, 180 - .min = 0, 181 - .max = 1, 182 - .step_or_mask = 1, 183 - .value = 1, 184 - .hfi_id = HFI_PROP_DEC_START_FROM_RAP_FRAME, 185 - .flags = CAP_FLAG_INPUT_PORT, 186 - .set = iris_set_u32, 187 - }, 188 - }; 189 - 190 - static const struct platform_inst_fw_cap inst_fw_cap_qcs8300_enc[] = { 191 - { 192 - .cap_id = PROFILE_H264, 193 - .min = V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE, 194 - .max = V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH, 195 - .step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) | 196 - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH) | 197 - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE) | 198 - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) | 199 - BIT(V4L2_MPEG_VIDEO_H264_PROFILE_HIGH), 200 - .value = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH, 201 - .hfi_id = HFI_PROP_PROFILE, 202 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, 203 - }, 204 - { 205 - .cap_id = PROFILE_HEVC, 206 - .min = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN, 207 - .max = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10, 208 - .step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN) | 209 - BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE) | 210 - BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10), 211 - .value = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN, 212 - .hfi_id = HFI_PROP_PROFILE, 213 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, 214 - }, 215 - { 216 - .cap_id = LEVEL_H264, 217 - .min = V4L2_MPEG_VIDEO_H264_LEVEL_1_0, 218 - .max = V4L2_MPEG_VIDEO_H264_LEVEL_6_0, 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 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_2) | 236 - BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_0), 237 - .value = V4L2_MPEG_VIDEO_H264_LEVEL_5_0, 238 - .hfi_id = HFI_PROP_LEVEL, 239 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, 240 - }, 241 - { 242 - .cap_id = LEVEL_HEVC, 243 - .min = V4L2_MPEG_VIDEO_HEVC_LEVEL_1, 244 - .max = V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2, 245 - .step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) | 246 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) | 247 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) | 248 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) | 249 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) | 250 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) | 251 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) | 252 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5) | 253 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1) | 254 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2) | 255 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6) | 256 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1) | 257 - BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2), 258 - .value = V4L2_MPEG_VIDEO_HEVC_LEVEL_5, 259 - .hfi_id = HFI_PROP_LEVEL, 260 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, 261 - }, 262 - { 263 - .cap_id = STAGE, 264 - .min = STAGE_1, 265 - .max = STAGE_2, 266 - .step_or_mask = 1, 267 - .value = STAGE_2, 268 - .hfi_id = HFI_PROP_STAGE, 269 - }, 270 - { 271 - .cap_id = HEADER_MODE, 272 - .min = V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE, 273 - .max = V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME, 274 - .step_or_mask = BIT(V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE) | 275 - BIT(V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME), 276 - .value = V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME, 277 - .hfi_id = HFI_PROP_SEQ_HEADER_MODE, 278 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, 279 - }, 280 - { 281 - .cap_id = PREPEND_SPSPPS_TO_IDR, 282 - .min = 0, 283 - .max = 1, 284 - .step_or_mask = 1, 285 - .value = 0, 286 - }, 287 - { 288 - .cap_id = BITRATE, 289 - .min = 1, 290 - .max = BITRATE_MAX, 291 - .step_or_mask = 1, 292 - .value = BITRATE_DEFAULT, 293 - .hfi_id = HFI_PROP_TOTAL_BITRATE, 294 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | 295 - CAP_FLAG_DYNAMIC_ALLOWED, 296 - }, 297 - { 298 - .cap_id = BITRATE_PEAK, 299 - .min = 1, 300 - .max = BITRATE_MAX, 301 - .step_or_mask = 1, 302 - .value = BITRATE_DEFAULT, 303 - .hfi_id = HFI_PROP_TOTAL_PEAK_BITRATE, 304 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | 305 - CAP_FLAG_DYNAMIC_ALLOWED, 306 - }, 307 - { 308 - .cap_id = BITRATE_MODE, 309 - .min = V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, 310 - .max = V4L2_MPEG_VIDEO_BITRATE_MODE_CBR, 311 - .step_or_mask = BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_VBR) | 312 - BIT(V4L2_MPEG_VIDEO_BITRATE_MODE_CBR), 313 - .value = V4L2_MPEG_VIDEO_BITRATE_MODE_VBR, 314 - .hfi_id = HFI_PROP_RATE_CONTROL, 315 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, 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 - }, 344 - { 345 - .cap_id = ENTROPY_MODE, 346 - .min = V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC, 347 - .max = V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC, 348 - .step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC) | 349 - BIT(V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC), 350 - .value = V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC, 351 - .hfi_id = HFI_PROP_CABAC_SESSION, 352 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, 353 - }, 354 - { 355 - .cap_id = MIN_FRAME_QP_H264, 356 - .min = MIN_QP_8BIT, 357 - .max = MAX_QP, 358 - .step_or_mask = 1, 359 - .value = MIN_QP_8BIT, 360 - .hfi_id = HFI_PROP_MIN_QP_PACKED, 361 - .flags = CAP_FLAG_OUTPUT_PORT, 362 - }, 363 - { 364 - .cap_id = MIN_FRAME_QP_HEVC, 365 - .min = MIN_QP_8BIT, 366 - .max = MAX_QP, 367 - .step_or_mask = 1, 368 - .value = MIN_QP_8BIT, 369 - .hfi_id = HFI_PROP_MIN_QP_PACKED, 370 - .flags = CAP_FLAG_OUTPUT_PORT, 371 - }, 372 - { 373 - .cap_id = MAX_FRAME_QP_H264, 374 - .min = MIN_QP_8BIT, 375 - .max = MAX_QP, 376 - .step_or_mask = 1, 377 - .value = MAX_QP, 378 - .hfi_id = HFI_PROP_MAX_QP_PACKED, 379 - .flags = CAP_FLAG_OUTPUT_PORT, 380 - }, 381 - { 382 - .cap_id = MAX_FRAME_QP_HEVC, 383 - .min = MIN_QP_8BIT, 384 - .max = MAX_QP, 385 - .step_or_mask = 1, 386 - .value = MAX_QP, 387 - .hfi_id = HFI_PROP_MAX_QP_PACKED, 388 - .flags = CAP_FLAG_OUTPUT_PORT, 389 - }, 390 - { 391 - .cap_id = I_FRAME_MIN_QP_H264, 392 - .min = MIN_QP_8BIT, 393 - .max = MAX_QP, 394 - .step_or_mask = 1, 395 - .value = MIN_QP_8BIT, 396 - }, 397 - { 398 - .cap_id = I_FRAME_MIN_QP_HEVC, 399 - .min = MIN_QP_8BIT, 400 - .max = MAX_QP, 401 - .step_or_mask = 1, 402 - .value = MIN_QP_8BIT, 403 - }, 404 - { 405 - .cap_id = P_FRAME_MIN_QP_H264, 406 - .min = MIN_QP_8BIT, 407 - .max = MAX_QP, 408 - .step_or_mask = 1, 409 - .value = MIN_QP_8BIT, 410 - }, 411 - { 412 - .cap_id = P_FRAME_MIN_QP_HEVC, 413 - .min = MIN_QP_8BIT, 414 - .max = MAX_QP, 415 - .step_or_mask = 1, 416 - .value = MIN_QP_8BIT, 417 - }, 418 - { 419 - .cap_id = B_FRAME_MIN_QP_H264, 420 - .min = MIN_QP_8BIT, 421 - .max = MAX_QP, 422 - .step_or_mask = 1, 423 - .value = MIN_QP_8BIT, 424 - }, 425 - { 426 - .cap_id = B_FRAME_MIN_QP_HEVC, 427 - .min = MIN_QP_8BIT, 428 - .max = MAX_QP, 429 - .step_or_mask = 1, 430 - .value = MIN_QP_8BIT, 431 - }, 432 - { 433 - .cap_id = I_FRAME_MAX_QP_H264, 434 - .min = MIN_QP_8BIT, 435 - .max = MAX_QP, 436 - .step_or_mask = 1, 437 - .value = MAX_QP, 438 - }, 439 - { 440 - .cap_id = I_FRAME_MAX_QP_HEVC, 441 - .min = MIN_QP_8BIT, 442 - .max = MAX_QP, 443 - .step_or_mask = 1, 444 - .value = MAX_QP, 445 - }, 446 - { 447 - .cap_id = P_FRAME_MAX_QP_H264, 448 - .min = MIN_QP_8BIT, 449 - .max = MAX_QP, 450 - .step_or_mask = 1, 451 - .value = MAX_QP, 452 - }, 453 - { 454 - .cap_id = P_FRAME_MAX_QP_HEVC, 455 - .min = MIN_QP_8BIT, 456 - .max = MAX_QP, 457 - .step_or_mask = 1, 458 - .value = MAX_QP, 459 - }, 460 - { 461 - .cap_id = B_FRAME_MAX_QP_H264, 462 - .min = MIN_QP_8BIT, 463 - .max = MAX_QP, 464 - .step_or_mask = 1, 465 - .value = MAX_QP, 466 - }, 467 - { 468 - .cap_id = B_FRAME_MAX_QP_HEVC, 469 - .min = MIN_QP_8BIT, 470 - .max = MAX_QP, 471 - .step_or_mask = 1, 472 - .value = MAX_QP, 473 - }, 474 - { 475 - .cap_id = I_FRAME_QP_H264, 476 - .min = MIN_QP_8BIT, 477 - .max = MAX_QP, 478 - .step_or_mask = 1, 479 - .value = DEFAULT_QP, 480 - .hfi_id = HFI_PROP_QP_PACKED, 481 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | 482 - CAP_FLAG_DYNAMIC_ALLOWED, 483 - }, 484 - { 485 - .cap_id = I_FRAME_QP_HEVC, 486 - .min = MIN_QP_8BIT, 487 - .max = MAX_QP, 488 - .step_or_mask = 1, 489 - .value = DEFAULT_QP, 490 - .hfi_id = HFI_PROP_QP_PACKED, 491 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | 492 - CAP_FLAG_DYNAMIC_ALLOWED, 493 - }, 494 - { 495 - .cap_id = P_FRAME_QP_H264, 496 - .min = MIN_QP_8BIT, 497 - .max = MAX_QP, 498 - .step_or_mask = 1, 499 - .value = DEFAULT_QP, 500 - .hfi_id = HFI_PROP_QP_PACKED, 501 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | 502 - CAP_FLAG_DYNAMIC_ALLOWED, 503 - }, 504 - { 505 - .cap_id = P_FRAME_QP_HEVC, 506 - .min = MIN_QP_8BIT, 507 - .max = MAX_QP, 508 - .step_or_mask = 1, 509 - .value = DEFAULT_QP, 510 - .hfi_id = HFI_PROP_QP_PACKED, 511 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | 512 - CAP_FLAG_DYNAMIC_ALLOWED, 513 - }, 514 - { 515 - .cap_id = B_FRAME_QP_H264, 516 - .min = MIN_QP_8BIT, 517 - .max = MAX_QP, 518 - .step_or_mask = 1, 519 - .value = DEFAULT_QP, 520 - .hfi_id = HFI_PROP_QP_PACKED, 521 - .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT | 522 - CAP_FLAG_DYNAMIC_ALLOWED, 523 - }, 524 - { 525 - .cap_id = B_FRAME_QP_HEVC, 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 - }, 534 - }; 6 + #ifndef __IRIS_PLATFORM_QCS8300_H__ 7 + #define __IRIS_PLATFORM_QCS8300_H__ 535 8 536 9 static struct platform_inst_caps platform_inst_cap_qcs8300 = { 537 10 .min_frame_width = 96, ··· 19 546 .max_frame_rate = MAXIMUM_FPS, 20 547 .max_operating_rate = MAXIMUM_FPS, 21 548 }; 549 + 550 + #endif