video: driver: define hfi setter for configuring pipe

Deprecate custom pipe setting and use the hfi setter
to configure it alongwith other configurations.

Change-Id: Iffbd25df89f43cf77c1fa85ffa97601a31998410
Signed-off-by: Vikash Garodia <vgarodia@codeaurora.org>
This commit is contained in:
Vikash Garodia
2021-04-29 11:35:57 +05:30
rodzic 75ecec1bb5
commit 90d7de5658
5 zmienionych plików z 39 dodań i 63 usunięć

Wyświetl plik

@@ -1158,7 +1158,12 @@ static struct msm_platform_inst_capability instance_data_waipio[] = {
{PIPE, DEC|ENC, CODECS_ALL,
MSM_VIDC_PIPE_1,
MSM_VIDC_PIPE_4, 1,
MSM_VIDC_PIPE_4},
MSM_VIDC_PIPE_4,
0,
HFI_PROP_PIPE,
CAP_FLAG_ROOT,
{0}, {0},
NULL, msm_vidc_set_pipe},
{POC, DEC, H264, 0, 18, 1, 1},
{QUALITY_MODE, ENC, CODECS_ALL,
MSM_VIDC_MAX_QUALITY_MODE,

Wyświetl plik

@@ -88,6 +88,8 @@ int msm_vidc_set_blur_resolution(void *instance,
enum msm_vidc_inst_capability_type cap_id);
int msm_vidc_set_stage(void *instance,
enum msm_vidc_inst_capability_type cap_id);
int msm_vidc_set_pipe(void *instance,
enum msm_vidc_inst_capability_type cap_id);
int msm_vidc_set_s32(void *instance,
enum msm_vidc_inst_capability_type cap_id);
int msm_vidc_set_q16(void *instance,

Wyświetl plik

@@ -528,35 +528,6 @@ static int msm_vdec_set_colorformat(struct msm_vidc_inst *inst)
return rc;
}
static int msm_vdec_set_pipe(struct msm_vidc_inst *inst)
{
int rc = 0;
u32 pipe;
struct msm_vidc_core *core = inst->core;
struct msm_vidc_inst_capability *capability = inst->capabilities;
rc = call_session_op(core, decide_work_route, inst);
if (rc) {
i_vpr_e(inst, "%s: decide_work_route failed\n",
__func__);
return -EINVAL;
}
pipe = capability->cap[PIPE].value;
i_vpr_h(inst, "%s: pipe: %d", __func__, pipe);
rc = venus_hfi_session_property(inst,
HFI_PROP_PIPE,
HFI_HOST_FLAGS_NONE,
HFI_PORT_NONE,
HFI_PAYLOAD_U32,
&pipe,
sizeof(u32));
if (rc)
i_vpr_e(inst, "%s: set property failed\n", __func__);
return rc;
}
static int msm_vdec_set_output_order(struct msm_vidc_inst *inst,
enum msm_vidc_port_type port)
{
@@ -791,7 +762,7 @@ static int msm_vdec_set_output_properties(struct msm_vidc_inst *inst)
if (rc)
return rc;
rc = msm_vdec_set_pipe(inst);
rc = msm_vidc_set_pipe(inst, PIPE);
if (rc)
return rc;

Wyświetl plik

@@ -399,34 +399,6 @@ static int msm_venc_set_csc(struct msm_vidc_inst* inst,
return 0;
}
static int msm_venc_set_pipe(struct msm_vidc_inst *inst)
{
int rc = 0;
struct msm_vidc_core *core = inst->core;
struct msm_vidc_inst_capability *capability = inst->capabilities;
u32 pipe;
rc = call_session_op(core, decide_work_route, inst);
if (rc) {
i_vpr_e(inst, "%s: decide_work_route failed\n",
__func__);
return -EINVAL;
}
pipe = capability->cap[PIPE].value;
i_vpr_h(inst, "%s: pipe: %u\n", __func__, pipe);
rc = venus_hfi_session_property(inst,
HFI_PROP_PIPE,
HFI_HOST_FLAGS_NONE,
HFI_PORT_NONE,
HFI_PAYLOAD_U32,
&pipe,
sizeof(u32));
if (rc)
return rc;
return 0;
}
static int msm_venc_set_quality_mode(struct msm_vidc_inst *inst)
{
int rc = 0;
@@ -540,10 +512,6 @@ static int msm_venc_set_internal_properties(struct msm_vidc_inst *inst)
}
i_vpr_h(inst, "%s()\n", __func__);
rc = msm_venc_set_pipe(inst);
if (rc)
return rc;
rc = msm_venc_set_quality_mode(inst);
if (rc)
return rc;

Wyświetl plik

@@ -3143,3 +3143,33 @@ int msm_vidc_set_stage(void *instance,
return rc;
}
int msm_vidc_set_pipe(void *instance,
enum msm_vidc_inst_capability_type cap_id)
{
int rc = 0;
u32 pipe;
struct msm_vidc_core *core;
struct msm_vidc_inst *inst = (struct msm_vidc_inst *)instance;
if (!inst || !inst->capabilities || !inst->core) {
d_vpr_e("%s: invalid params\n", __func__);
return -EINVAL;
}
core = inst->core;
rc = call_session_op(core, decide_work_route, inst);
if (rc) {
i_vpr_e(inst, "%s: decide_work_route failed\n",
__func__);
return -EINVAL;
}
pipe = inst->capabilities->cap[PIPE].value;
rc = msm_vidc_packetize_control(inst, cap_id, HFI_PAYLOAD_U32,
&pipe, sizeof(u32), __func__);
if (rc)
return rc;
return rc;
}