lkml.org 
[lkml]   [2018]   [Jun]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 04/27] venus: hfi_cmds: add set_properties for 4xx version
    Date
    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>
    ---
    drivers/media/platform/qcom/venus/hfi_cmds.c | 62 +++++++++++++++++++++++++++-
    1 file changed, 61 insertions(+), 1 deletion(-)

    diff --git a/drivers/media/platform/qcom/venus/hfi_cmds.c b/drivers/media/platform/qcom/venus/hfi_cmds.c
    index 1cfeb7743041..e8389d8d8c48 100644
    --- a/drivers/media/platform/qcom/venus/hfi_cmds.c
    +++ b/drivers/media/platform/qcom/venus/hfi_cmds.c
    @@ -1166,6 +1166,63 @@ pkt_session_set_property_3xx(struct hfi_session_set_property_pkt *pkt,
    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,
    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)
    return pkt_session_set_property_1x(pkt, cookie, ptype, pdata);

    - return pkt_session_set_property_3xx(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_4xx(pkt, cookie, ptype, pdata);
    }

    void pkt_set_version(enum hfi_version version)
    --
    2.14.1
    \
     
     \ /
      Last update: 2018-06-27 17:37    [W:4.147 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site