1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (c) 2022-2025 Qualcomm Innovation Center, Inc. All rights reserved. 4 */ 5 6 static struct platform_inst_fw_cap inst_fw_cap_qcs8300[] = { 7 { 8 .cap_id = PROFILE_H264, 9 .min = V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE, 10 .max = V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH, 11 .step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE) | 12 BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE) | 13 BIT(V4L2_MPEG_VIDEO_H264_PROFILE_MAIN) | 14 BIT(V4L2_MPEG_VIDEO_H264_PROFILE_HIGH) | 15 BIT(V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH), 16 .value = V4L2_MPEG_VIDEO_H264_PROFILE_HIGH, 17 .hfi_id = HFI_PROP_PROFILE, 18 .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, 19 .set = iris_set_u32_enum, 20 }, 21 { 22 .cap_id = PROFILE_HEVC, 23 .min = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN, 24 .max = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE, 25 .step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN) | 26 BIT(V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE), 27 .value = V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN, 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_VP9, 34 .min = V4L2_MPEG_VIDEO_VP9_PROFILE_0, 35 .max = V4L2_MPEG_VIDEO_VP9_PROFILE_2, 36 .step_or_mask = BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_0) | 37 BIT(V4L2_MPEG_VIDEO_VP9_PROFILE_2), 38 .value = V4L2_MPEG_VIDEO_VP9_PROFILE_0, 39 .hfi_id = HFI_PROP_PROFILE, 40 .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, 41 .set = iris_set_u32_enum, 42 }, 43 { 44 .cap_id = LEVEL_H264, 45 .min = V4L2_MPEG_VIDEO_H264_LEVEL_1_0, 46 .max = V4L2_MPEG_VIDEO_H264_LEVEL_6_2, 47 .step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_0) | 48 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1B) | 49 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_1) | 50 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_2) | 51 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_1_3) | 52 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_0) | 53 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_1) | 54 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_2_2) | 55 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_0) | 56 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_1) | 57 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_3_2) | 58 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_0) | 59 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_1) | 60 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_4_2) | 61 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_0) | 62 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_1) | 63 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_5_2) | 64 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_0) | 65 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_1) | 66 BIT(V4L2_MPEG_VIDEO_H264_LEVEL_6_2), 67 .value = V4L2_MPEG_VIDEO_H264_LEVEL_6_1, 68 .hfi_id = HFI_PROP_LEVEL, 69 .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, 70 .set = iris_set_u32_enum, 71 }, 72 { 73 .cap_id = LEVEL_HEVC, 74 .min = V4L2_MPEG_VIDEO_HEVC_LEVEL_1, 75 .max = V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2, 76 .step_or_mask = BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_1) | 77 BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2) | 78 BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1) | 79 BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3) | 80 BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1) | 81 BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4) | 82 BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1) | 83 BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5) | 84 BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1) | 85 BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2) | 86 BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6) | 87 BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1) | 88 BIT(V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2), 89 .value = V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1, 90 .hfi_id = HFI_PROP_LEVEL, 91 .flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU, 92 .set = iris_set_u32_enum, 93 }, 94 { 95 .cap_id = LEVEL_VP9, 96 .min = V4L2_MPEG_VIDEO_VP9_LEVEL_1_0, 97 .max = V4L2_MPEG_VIDEO_VP9_LEVEL_6_0, 98 .step_or_mask = BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_0) | 99 BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_1_1) | 100 BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_0) | 101 BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_2_1) | 102 BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_0) | 103 BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_3_1) | 104 BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_0) | 105 BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_4_1) | 106 BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_0) | 107 BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_1) | 108 BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_5_2) | 109 BIT(V4L2_MPEG_VIDEO_VP9_LEVEL_6_0), 110 .value = V4L2_MPEG_VIDEO_VP9_LEVEL_6_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 .min = PIPE_1, 148 .max = PIPE_2, 149 .step_or_mask = 1, 150 .value = PIPE_2, 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 struct platform_inst_caps platform_inst_cap_qcs8300 = { 191 .min_frame_width = 96, 192 .max_frame_width = 4096, 193 .min_frame_height = 96, 194 .max_frame_height = 4096, 195 .max_mbpf = (4096 * 2176) / 256, 196 .mb_cycles_vpp = 200, 197 .mb_cycles_fw = 326389, 198 .mb_cycles_fw_vpp = 44156, 199 .num_comv = 0, 200 }; 201