Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 01165b84 authored by Stanimir Varbanov's avatar Stanimir Varbanov Committed by Mauro Carvalho Chehab
Browse files

media: venus: helpers, vdec, venc: add helpers to set work mode and core usage



These are new properties applicable to Venus version 4xx. Add the
helpers and call them from decoder and encoder drivers.

Signed-off-by: default avatarStanimir Varbanov <stanimir.varbanov@linaro.org>
Reviewed-by: default avatarTomasz Figa <tfiga@chromium.org>
Reviewed-by: default avatarAlexandre Courbot <acourbot@chromium.org>
Tested-by: default avatarAlexandre Courbot <acourbot@chromium.org>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
parent ab97a3fb
Loading
Loading
Loading
Loading
+28 −0
Original line number Original line Diff line number Diff line
@@ -486,6 +486,34 @@ int venus_helper_set_output_resolution(struct venus_inst *inst,
}
}
EXPORT_SYMBOL_GPL(venus_helper_set_output_resolution);
EXPORT_SYMBOL_GPL(venus_helper_set_output_resolution);


int venus_helper_set_work_mode(struct venus_inst *inst, u32 mode)
{
	const u32 ptype = HFI_PROPERTY_PARAM_WORK_MODE;
	struct hfi_video_work_mode wm;

	if (!IS_V4(inst->core))
		return 0;

	wm.video_work_mode = mode;

	return hfi_session_set_property(inst, ptype, &wm);
}
EXPORT_SYMBOL_GPL(venus_helper_set_work_mode);

int venus_helper_set_core_usage(struct venus_inst *inst, u32 usage)
{
	const u32 ptype = HFI_PROPERTY_CONFIG_VIDEOCORES_USAGE;
	struct hfi_videocores_usage_type cu;

	if (!IS_V4(inst->core))
		return 0;

	cu.video_core_enable_mask = usage;

	return hfi_session_set_property(inst, ptype, &cu);
}
EXPORT_SYMBOL_GPL(venus_helper_set_core_usage);

int venus_helper_set_num_bufs(struct venus_inst *inst, unsigned int input_bufs,
int venus_helper_set_num_bufs(struct venus_inst *inst, unsigned int input_bufs,
			      unsigned int output_bufs)
			      unsigned int output_bufs)
{
{
+2 −0
Original line number Original line Diff line number Diff line
@@ -38,6 +38,8 @@ int venus_helper_set_input_resolution(struct venus_inst *inst,
int venus_helper_set_output_resolution(struct venus_inst *inst,
int venus_helper_set_output_resolution(struct venus_inst *inst,
				       unsigned int width, unsigned int height,
				       unsigned int width, unsigned int height,
				       u32 buftype);
				       u32 buftype);
int venus_helper_set_work_mode(struct venus_inst *inst, u32 mode);
int venus_helper_set_core_usage(struct venus_inst *inst, u32 usage);
int venus_helper_set_num_bufs(struct venus_inst *inst, unsigned int input_bufs,
int venus_helper_set_num_bufs(struct venus_inst *inst, unsigned int input_bufs,
			      unsigned int output_bufs);
			      unsigned int output_bufs);
int venus_helper_set_raw_format(struct venus_inst *inst, u32 hfi_format,
int venus_helper_set_raw_format(struct venus_inst *inst, u32 hfi_format,
+8 −0
Original line number Original line Diff line number Diff line
@@ -548,6 +548,14 @@ static int vdec_set_properties(struct venus_inst *inst)
	u32 ptype;
	u32 ptype;
	int ret;
	int ret;


	ret = venus_helper_set_work_mode(inst, VIDC_WORK_MODE_2);
	if (ret)
		return ret;

	ret = venus_helper_set_core_usage(inst, VIDC_CORE_ID_1);
	if (ret)
		return ret;

	if (core->res->hfi_version == HFI_VERSION_1XX) {
	if (core->res->hfi_version == HFI_VERSION_1XX) {
		ptype = HFI_PROPERTY_PARAM_VDEC_CONTINUE_DATA_TRANSFER;
		ptype = HFI_PROPERTY_PARAM_VDEC_CONTINUE_DATA_TRANSFER;
		ret = hfi_session_set_property(inst, ptype, &en);
		ret = hfi_session_set_property(inst, ptype, &en);
+8 −0
Original line number Original line Diff line number Diff line
@@ -641,6 +641,14 @@ static int venc_set_properties(struct venus_inst *inst)
	u32 ptype, rate_control, bitrate, profile = 0, level = 0;
	u32 ptype, rate_control, bitrate, profile = 0, level = 0;
	int ret;
	int ret;


	ret = venus_helper_set_work_mode(inst, VIDC_WORK_MODE_2);
	if (ret)
		return ret;

	ret = venus_helper_set_core_usage(inst, VIDC_CORE_ID_2);
	if (ret)
		return ret;

	ptype = HFI_PROPERTY_CONFIG_FRAME_RATE;
	ptype = HFI_PROPERTY_CONFIG_FRAME_RATE;
	frate.buffer_type = HFI_BUFFER_OUTPUT;
	frate.buffer_type = HFI_BUFFER_OUTPUT;
	frate.framerate = inst->fps * (1 << 16);
	frate.framerate = inst->fps * (1 << 16);