media: venus: hfi_cmds: add set_properties for 4xx version
Adds set_properties method to handle newer 4xx properties and fall-back to 3xx for the rest. Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org> Reviewed-by: Tomasz Figa <tfiga@chromium.org> Reviewed-by: Alexandre Courbot <acourbot@chromium.org> Tested-by: Alexandre Courbot <acourbot@chromium.org> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
parent
9eb2146ecb
commit
6b183680dd
|
@ -1166,6 +1166,63 @@ pkt_session_set_property_3xx(struct hfi_session_set_property_pkt *pkt,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
pkt_session_set_property_4xx(struct hfi_session_set_property_pkt *pkt,
|
||||||
|
void *cookie, u32 ptype, void *pdata)
|
||||||
|
{
|
||||||
|
void *prop_data;
|
||||||
|
|
||||||
|
if (!pkt || !cookie || !pdata)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
prop_data = &pkt->data[1];
|
||||||
|
|
||||||
|
pkt->shdr.hdr.size = sizeof(*pkt);
|
||||||
|
pkt->shdr.hdr.pkt_type = HFI_CMD_SESSION_SET_PROPERTY;
|
||||||
|
pkt->shdr.session_id = hash32_ptr(cookie);
|
||||||
|
pkt->num_properties = 1;
|
||||||
|
pkt->data[0] = ptype;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Any session set property which is different in 3XX packetization
|
||||||
|
* should be added as a new case below. All unchanged session set
|
||||||
|
* properties will be handled in the default case.
|
||||||
|
*/
|
||||||
|
switch (ptype) {
|
||||||
|
case HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL: {
|
||||||
|
struct hfi_buffer_count_actual *in = pdata;
|
||||||
|
struct hfi_buffer_count_actual_4xx *count = prop_data;
|
||||||
|
|
||||||
|
count->count_actual = in->count_actual;
|
||||||
|
count->type = in->type;
|
||||||
|
count->count_min_host = in->count_actual;
|
||||||
|
pkt->shdr.hdr.size += sizeof(u32) + sizeof(*count);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case HFI_PROPERTY_PARAM_WORK_MODE: {
|
||||||
|
struct hfi_video_work_mode *in = pdata, *wm = prop_data;
|
||||||
|
|
||||||
|
wm->video_work_mode = in->video_work_mode;
|
||||||
|
pkt->shdr.hdr.size += sizeof(u32) + sizeof(*wm);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case HFI_PROPERTY_CONFIG_VIDEOCORES_USAGE: {
|
||||||
|
struct hfi_videocores_usage_type *in = pdata, *cu = prop_data;
|
||||||
|
|
||||||
|
cu->video_core_enable_mask = in->video_core_enable_mask;
|
||||||
|
pkt->shdr.hdr.size += sizeof(u32) + sizeof(*cu);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case HFI_PROPERTY_CONFIG_VENC_MAX_BITRATE:
|
||||||
|
/* not implemented on Venus 4xx */
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return pkt_session_set_property_3xx(pkt, cookie, ptype, pdata);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int pkt_session_get_property(struct hfi_session_get_property_pkt *pkt,
|
int pkt_session_get_property(struct hfi_session_get_property_pkt *pkt,
|
||||||
void *cookie, u32 ptype)
|
void *cookie, u32 ptype)
|
||||||
{
|
{
|
||||||
|
@ -1181,7 +1238,10 @@ int pkt_session_set_property(struct hfi_session_set_property_pkt *pkt,
|
||||||
if (hfi_ver == HFI_VERSION_1XX)
|
if (hfi_ver == HFI_VERSION_1XX)
|
||||||
return pkt_session_set_property_1x(pkt, cookie, ptype, pdata);
|
return pkt_session_set_property_1x(pkt, cookie, ptype, pdata);
|
||||||
|
|
||||||
|
if (hfi_ver == HFI_VERSION_3XX)
|
||||||
return pkt_session_set_property_3xx(pkt, cookie, ptype, pdata);
|
return pkt_session_set_property_3xx(pkt, cookie, ptype, pdata);
|
||||||
|
|
||||||
|
return pkt_session_set_property_4xx(pkt, cookie, ptype, pdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pkt_set_version(enum hfi_version version)
|
void pkt_set_version(enum hfi_version version)
|
||||||
|
|
Loading…
Reference in New Issue