Commit 6483a8cb authored by Dikshita Agarwal's avatar Dikshita Agarwal Committed by Mauro Carvalho Chehab
Browse files

media: venus: vdec: set work route to fw



Set work route to FW based on num of vpp pipes.

Signed-off-by: default avatarDikshita Agarwal <dikshita@codeaurora.org>
Signed-off-by: default avatarStanimir Varbanov <stanimir.varbanov@linaro.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 78d434ba
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -1299,6 +1299,13 @@ pkt_session_set_property_6xx(struct hfi_session_set_property_pkt *pkt,
		pkt->shdr.hdr.size += sizeof(u32) + sizeof(*cq);
		break;
	}
	case HFI_PROPERTY_PARAM_WORK_ROUTE: {
		struct hfi_video_work_route *in = pdata, *wr = prop_data;

		wr->video_work_route = in->video_work_route;
		pkt->shdr.hdr.size += sizeof(u32) + sizeof(*wr);
		break;
	}
	default:
		return pkt_session_set_property_4xx(pkt, cookie, ptype, pdata);
	}
+5 −0
Original line number Diff line number Diff line
@@ -448,6 +448,7 @@
#define HFI_PROPERTY_PARAM_MVC_BUFFER_LAYOUT			0x100f
#define HFI_PROPERTY_PARAM_MAX_SESSIONS_SUPPORTED		0x1010
#define HFI_PROPERTY_PARAM_WORK_MODE				0x1015
#define HFI_PROPERTY_PARAM_WORK_ROUTE				0x1017

/*
 * HFI_PROPERTY_CONFIG_COMMON_START
@@ -873,6 +874,10 @@ struct hfi_video_work_mode {
	u32 video_work_mode;
};

struct hfi_video_work_route {
	u32 video_work_route;
};

struct hfi_h264_vui_timing_info {
	u32 enable;
	u32 fixed_framerate;
+17 −0
Original line number Diff line number Diff line
@@ -656,6 +656,19 @@ static int vdec_set_properties(struct venus_inst *inst)
	return 0;
}

static int vdec_set_work_route(struct venus_inst *inst)
{
	u32 ptype = HFI_PROPERTY_PARAM_WORK_ROUTE;
	struct hfi_video_work_route wr;

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

	wr.video_work_route = inst->core->res->num_vpp_pipes;

	return hfi_session_set_property(inst, ptype, &wr);
}

#define is_ubwc_fmt(fmt) (!!((fmt) & HFI_COLOR_FORMAT_UBWC_BASE))

static int vdec_output_conf(struct venus_inst *inst)
@@ -1042,6 +1055,10 @@ static int vdec_start_output(struct venus_inst *inst)
	if (ret)
		return ret;

	ret = vdec_set_work_route(inst);
	if (ret)
		return ret;

	ret = vdec_output_conf(inst);
	if (ret)
		return ret;