media: venus: Introduce accessors for remapped hfi_buffer_reqs members
Currently we have macros to access these, but they don't provide a way to override the remapped fields. Replace the macros with actual get/set pairs to fix that. Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org> Signed-off-by: Konrad Dybcio <konrad.dybcio@linaro.org> Signed-off-by: Stanimir Varbanov <stanimir.k.varbanov@gmail.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
This commit is contained in:
parent
04e3a07275
commit
bbfc89e6f6
|
@ -189,7 +189,7 @@ int venus_helper_alloc_dpb_bufs(struct venus_inst *inst)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
count = HFI_BUFREQ_COUNT_MIN(&bufreq, ver);
|
||||
count = hfi_bufreq_get_count_min(&bufreq, ver);
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
buf = kzalloc(sizeof(*buf), GFP_KERNEL);
|
||||
|
|
|
@ -1170,14 +1170,6 @@ struct hfi_buffer_display_hold_count_actual {
|
|||
u32 hold_count;
|
||||
};
|
||||
|
||||
/* HFI 4XX reorder the fields, use these macros */
|
||||
#define HFI_BUFREQ_HOLD_COUNT(bufreq, ver) \
|
||||
((ver) == HFI_VERSION_4XX ? 0 : (bufreq)->hold_count)
|
||||
#define HFI_BUFREQ_COUNT_MIN(bufreq, ver) \
|
||||
((ver) == HFI_VERSION_4XX ? (bufreq)->hold_count : (bufreq)->count_min)
|
||||
#define HFI_BUFREQ_COUNT_MIN_HOST(bufreq, ver) \
|
||||
((ver) == HFI_VERSION_4XX ? (bufreq)->count_min : 0)
|
||||
|
||||
struct hfi_buffer_requirements {
|
||||
u32 type;
|
||||
u32 size;
|
||||
|
@ -1189,6 +1181,59 @@ struct hfi_buffer_requirements {
|
|||
u32 alignment;
|
||||
};
|
||||
|
||||
/* On HFI 4XX, some of the struct members have been swapped. */
|
||||
static inline u32 hfi_bufreq_get_hold_count(struct hfi_buffer_requirements *req,
|
||||
u32 ver)
|
||||
{
|
||||
if (ver == HFI_VERSION_4XX)
|
||||
return 0;
|
||||
|
||||
return req->hold_count;
|
||||
};
|
||||
|
||||
static inline u32 hfi_bufreq_get_count_min(struct hfi_buffer_requirements *req,
|
||||
u32 ver)
|
||||
{
|
||||
if (ver == HFI_VERSION_4XX)
|
||||
return req->hold_count;
|
||||
|
||||
return req->count_min;
|
||||
};
|
||||
|
||||
static inline u32 hfi_bufreq_get_count_min_host(struct hfi_buffer_requirements *req,
|
||||
u32 ver)
|
||||
{
|
||||
if (ver == HFI_VERSION_4XX)
|
||||
return req->count_min;
|
||||
|
||||
return 0;
|
||||
};
|
||||
|
||||
static inline void hfi_bufreq_set_hold_count(struct hfi_buffer_requirements *req,
|
||||
u32 ver, u32 val)
|
||||
{
|
||||
if (ver == HFI_VERSION_4XX)
|
||||
return;
|
||||
|
||||
req->hold_count = val;
|
||||
};
|
||||
|
||||
static inline void hfi_bufreq_set_count_min(struct hfi_buffer_requirements *req,
|
||||
u32 ver, u32 val)
|
||||
{
|
||||
if (ver == HFI_VERSION_4XX)
|
||||
req->hold_count = val;
|
||||
|
||||
req->count_min = val;
|
||||
};
|
||||
|
||||
static inline void hfi_bufreq_set_count_min_host(struct hfi_buffer_requirements *req,
|
||||
u32 ver, u32 val)
|
||||
{
|
||||
if (ver == HFI_VERSION_4XX)
|
||||
req->count_min = val;
|
||||
};
|
||||
|
||||
struct hfi_data_payload {
|
||||
u32 size;
|
||||
u8 data[1];
|
||||
|
|
|
@ -99,7 +99,7 @@ static void event_seq_changed(struct venus_core *core, struct venus_inst *inst,
|
|||
case HFI_PROPERTY_CONFIG_BUFFER_REQUIREMENTS:
|
||||
data_ptr += sizeof(u32);
|
||||
bufreq = (struct hfi_buffer_requirements *)data_ptr;
|
||||
event.buf_count = HFI_BUFREQ_COUNT_MIN(bufreq, ver);
|
||||
event.buf_count = hfi_bufreq_get_count_min(bufreq, ver);
|
||||
data_ptr += sizeof(*bufreq);
|
||||
break;
|
||||
case HFI_INDEX_EXTRADATA_INPUT_CROP:
|
||||
|
|
|
@ -899,13 +899,13 @@ static int vdec_num_buffers(struct venus_inst *inst, unsigned int *in_num,
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
*in_num = HFI_BUFREQ_COUNT_MIN(&bufreq, ver);
|
||||
*in_num = hfi_bufreq_get_count_min(&bufreq, ver);
|
||||
|
||||
ret = venus_helper_get_bufreq(inst, HFI_BUFFER_OUTPUT, &bufreq);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
*out_num = HFI_BUFREQ_COUNT_MIN(&bufreq, ver);
|
||||
*out_num = hfi_bufreq_get_count_min(&bufreq, ver);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1019,14 +1019,14 @@ static int vdec_verify_conf(struct venus_inst *inst)
|
|||
return ret;
|
||||
|
||||
if (inst->num_output_bufs < bufreq.count_actual ||
|
||||
inst->num_output_bufs < HFI_BUFREQ_COUNT_MIN(&bufreq, ver))
|
||||
inst->num_output_bufs < hfi_bufreq_get_count_min(&bufreq, ver))
|
||||
return -EINVAL;
|
||||
|
||||
ret = venus_helper_get_bufreq(inst, HFI_BUFFER_INPUT, &bufreq);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (inst->num_input_bufs < HFI_BUFREQ_COUNT_MIN(&bufreq, ver))
|
||||
if (inst->num_input_bufs < hfi_bufreq_get_count_min(&bufreq, ver))
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -79,7 +79,7 @@ static int vdec_op_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
|
|||
case V4L2_CID_MIN_BUFFERS_FOR_CAPTURE:
|
||||
ret = venus_helper_get_bufreq(inst, HFI_BUFFER_OUTPUT, &bufreq);
|
||||
if (!ret)
|
||||
ctrl->val = HFI_BUFREQ_COUNT_MIN(&bufreq, ver);
|
||||
ctrl->val = hfi_bufreq_get_count_min(&bufreq, ver);
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
|
|
@ -1207,7 +1207,7 @@ static int venc_verify_conf(struct venus_inst *inst)
|
|||
return ret;
|
||||
|
||||
if (inst->num_output_bufs < bufreq.count_actual ||
|
||||
inst->num_output_bufs < HFI_BUFREQ_COUNT_MIN(&bufreq, ver))
|
||||
inst->num_output_bufs < hfi_bufreq_get_count_min(&bufreq, ver))
|
||||
return -EINVAL;
|
||||
|
||||
ret = venus_helper_get_bufreq(inst, HFI_BUFFER_INPUT, &bufreq);
|
||||
|
@ -1215,7 +1215,7 @@ static int venc_verify_conf(struct venus_inst *inst)
|
|||
return ret;
|
||||
|
||||
if (inst->num_input_bufs < bufreq.count_actual ||
|
||||
inst->num_input_bufs < HFI_BUFREQ_COUNT_MIN(&bufreq, ver))
|
||||
inst->num_input_bufs < hfi_bufreq_get_count_min(&bufreq, ver))
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -358,7 +358,7 @@ static int venc_op_g_volatile_ctrl(struct v4l2_ctrl *ctrl)
|
|||
case V4L2_CID_MIN_BUFFERS_FOR_OUTPUT:
|
||||
ret = venus_helper_get_bufreq(inst, HFI_BUFFER_INPUT, &bufreq);
|
||||
if (!ret)
|
||||
ctrl->val = HFI_BUFREQ_COUNT_MIN(&bufreq, ver);
|
||||
ctrl->val = hfi_bufreq_get_count_min(&bufreq, ver);
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
|
Loading…
Reference in New Issue