Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
485 changes: 483 additions & 2 deletions drivers/media/platform/qcom/iris/iris_ctrls.c

Large diffs are not rendered by default.

16 changes: 14 additions & 2 deletions drivers/media/platform/qcom/iris/iris_ctrls.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ int iris_set_level(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id
int iris_set_profile_level_gen1(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_header_mode_gen1(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_header_mode_gen2(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_bitrate(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_bitrate_gen1(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_bitrate_gen2(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_peak_bitrate(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_bitrate_mode_gen1(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_bitrate_mode_gen2(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
Expand All @@ -34,7 +35,18 @@ int iris_set_frame_qp(struct iris_inst *inst, enum platform_inst_fw_cap_type cap
int iris_set_qp_range(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_rotation(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_flip(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_ir_period(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_ir_period_gen1(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_ir_period_gen2(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_ltr_count_gen1(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_ltr_count_gen2(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_use_ltr(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_mark_ltr(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_use_and_mark_ltr(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_intra_period(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_layer_type(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_layer_count_gen1(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_layer_count_gen2(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_layer_bitrate(struct iris_inst *inst, enum platform_inst_fw_cap_type cap_id);
int iris_set_properties(struct iris_inst *inst, u32 plane);

#endif
161 changes: 160 additions & 1 deletion drivers/media/platform/qcom/iris/iris_hfi_gen1.c
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ static const struct platform_inst_fw_cap inst_fw_cap_sm8250_enc[] = {
.hfi_id = HFI_PROPERTY_CONFIG_VENC_TARGET_BITRATE,
.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
CAP_FLAG_DYNAMIC_ALLOWED,
.set = iris_set_bitrate,
.set = iris_set_bitrate_gen1,
},
{
.cap_id = BITRATE_MODE,
Expand Down Expand Up @@ -224,6 +224,165 @@ static const struct platform_inst_fw_cap inst_fw_cap_sm8250_enc[] = {
.flags = CAP_FLAG_OUTPUT_PORT,
.set = iris_set_qp_range,
},
{
.cap_id = IR_TYPE,
.min = V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM,
.max = V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC,
.step_or_mask = BIT(V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM) |
BIT(V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_CYCLIC),
.value = V4L2_CID_MPEG_VIDEO_INTRA_REFRESH_PERIOD_TYPE_RANDOM,
.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
},
{
.cap_id = IR_PERIOD,
.min = 0,
.max = ((4096 * 2304) >> 8),
.step_or_mask = 1,
.value = 0,
.hfi_id = HFI_PROPERTY_PARAM_VENC_INTRA_REFRESH,
.flags = CAP_FLAG_OUTPUT_PORT,
.set = iris_set_ir_period_gen1,
},
{
.cap_id = LTR_COUNT,
.min = 0,
.max = MAX_LTR_FRAME_COUNT_GEN1,
.step_or_mask = 1,
.value = 0,
.hfi_id = HFI_PROPERTY_PARAM_VENC_LTRMODE,
.flags = CAP_FLAG_OUTPUT_PORT,
.set = iris_set_ltr_count_gen1,
},
{
.cap_id = USE_LTR,
.min = 0,
.max = ((1 << MAX_LTR_FRAME_COUNT_GEN1) - 1),
.step_or_mask = 0,
.value = 0,
.hfi_id = HFI_PROPERTY_CONFIG_VENC_USELTRFRAME,
.flags = CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
.set = iris_set_use_ltr,
},
{
.cap_id = MARK_LTR,
.min = 0,
.max = (MAX_LTR_FRAME_COUNT_GEN1 - 1),
.step_or_mask = 1,
.value = 0,
.hfi_id = HFI_PROPERTY_CONFIG_VENC_MARKLTRFRAME,
.flags = CAP_FLAG_INPUT_PORT | CAP_FLAG_DYNAMIC_ALLOWED,
.set = iris_set_mark_ltr,
},
{
.cap_id = B_FRAME,
.min = 0,
.max = 3,
.step_or_mask = 1,
.value = 0,
.flags = CAP_FLAG_OUTPUT_PORT,
},
{
.cap_id = INTRA_PERIOD,
.min = 0,
.max = 1,
.step_or_mask = 1,
.value = 0,
.hfi_id = HFI_PROPERTY_CONFIG_VENC_INTRA_PERIOD,
.flags = CAP_FLAG_OUTPUT_PORT,
.set = iris_set_intra_period,
},
{
.cap_id = LAYER_ENABLE,
.min = 0,
.max = 1,
.step_or_mask = 1,
.value = 0,
.flags = CAP_FLAG_OUTPUT_PORT,
},
{
.cap_id = LAYER_TYPE_H264,
.min = V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P,
.max = V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P,
.step_or_mask = BIT(V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P),
.value = V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P,
.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_MENU,
},
{
.cap_id = LAYER_COUNT_H264,
.min = 0,
.max = MAX_HIER_CODING_LAYER_GEN1,
.step_or_mask = 1,
.value = 0,
.hfi_id = HFI_PROPERTY_CONFIG_VENC_HIER_P_ENH_LAYER,
.flags = CAP_FLAG_OUTPUT_PORT,
.set = iris_set_layer_count_gen1,
},
{
.cap_id = LAYER0_BITRATE_H264,
.min = 1,
.max = BITRATE_MAX,
.step_or_mask = 1,
.value = BITRATE_DEFAULT,
.hfi_id = HFI_PROPERTY_CONFIG_VENC_TARGET_BITRATE,
.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
CAP_FLAG_DYNAMIC_ALLOWED,
.set = iris_set_bitrate_gen1,
},
{
.cap_id = LAYER1_BITRATE_H264,
.min = 1,
.max = BITRATE_MAX,
.step_or_mask = 1,
.value = BITRATE_DEFAULT,
.hfi_id = HFI_PROPERTY_CONFIG_VENC_TARGET_BITRATE,
.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
CAP_FLAG_DYNAMIC_ALLOWED,
.set = iris_set_bitrate_gen1,
},
{
.cap_id = LAYER2_BITRATE_H264,
.min = 1,
.max = BITRATE_MAX,
.step_or_mask = 1,
.value = BITRATE_DEFAULT,
.hfi_id = HFI_PROPERTY_CONFIG_VENC_TARGET_BITRATE,
.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
CAP_FLAG_DYNAMIC_ALLOWED,
.set = iris_set_bitrate_gen1,
},
{
.cap_id = LAYER3_BITRATE_H264,
.min = 1,
.max = BITRATE_MAX,
.step_or_mask = 1,
.value = BITRATE_DEFAULT,
.hfi_id = HFI_PROPERTY_CONFIG_VENC_TARGET_BITRATE,
.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
CAP_FLAG_DYNAMIC_ALLOWED,
.set = iris_set_bitrate_gen1,
},
{
.cap_id = LAYER4_BITRATE_H264,
.min = 1,
.max = BITRATE_MAX,
.step_or_mask = 1,
.value = BITRATE_DEFAULT,
.hfi_id = HFI_PROPERTY_CONFIG_VENC_TARGET_BITRATE,
.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
CAP_FLAG_DYNAMIC_ALLOWED,
.set = iris_set_bitrate_gen1,
},
{
.cap_id = LAYER5_BITRATE_H264,
.min = 1,
.max = BITRATE_MAX,
.step_or_mask = 1,
.value = BITRATE_DEFAULT,
.hfi_id = HFI_PROPERTY_CONFIG_VENC_TARGET_BITRATE,
.flags = CAP_FLAG_OUTPUT_PORT | CAP_FLAG_INPUT_PORT |
CAP_FLAG_DYNAMIC_ALLOWED,
.set = iris_set_bitrate_gen1,
},
};

static const u32 sm8250_vdec_input_config_param_default[] = {
Expand Down
Loading