From: Stanimir Varbanov <stanimir.varbanov@linaro.org>
To: Mauro Carvalho Chehab <mchehab@kernel.org>,
Hans Verkuil <hverkuil@xs4all.nl>
Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-msm@vger.kernel.org,
Vikash Garodia <vgarodia@codeaurora.org>,
Tomasz Figa <tfiga@chromium.org>,
Alexandre Courbot <acourbot@chromium.org>,
Stanimir Varbanov <stanimir.varbanov@linaro.org>
Subject: [PATCH v5 03/27] venus: hfi: update sequence event to handle more properties
Date: Thu, 5 Jul 2018 16:03:37 +0300 [thread overview]
Message-ID: <20180705130401.24315-4-stanimir.varbanov@linaro.org> (raw)
In-Reply-To: <20180705130401.24315-1-stanimir.varbanov@linaro.org>
HFI version 4xx can pass more properties in the sequence change
event, extend the event structure with them.
Signed-off-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
---
drivers/media/platform/qcom/venus/hfi.h | 10 ++++++
drivers/media/platform/qcom/venus/hfi_helper.h | 28 ++++++++++++++++
drivers/media/platform/qcom/venus/hfi_msgs.c | 44 ++++++++++++++++++++++++++
3 files changed, 82 insertions(+)
diff --git a/drivers/media/platform/qcom/venus/hfi.h b/drivers/media/platform/qcom/venus/hfi.h
index 5466b7d60dd0..6038d8e0ab22 100644
--- a/drivers/media/platform/qcom/venus/hfi.h
+++ b/drivers/media/platform/qcom/venus/hfi.h
@@ -74,6 +74,16 @@ struct hfi_event_data {
u32 tag;
u32 profile;
u32 level;
+ /* the following properties start appear from v4 onwards */
+ u32 bit_depth;
+ u32 pic_struct;
+ u32 colour_space;
+ u32 entropy_mode;
+ u32 buf_count;
+ struct {
+ u32 left, top;
+ u32 width, height;
+ } input_crop;
};
/* define core states */
diff --git a/drivers/media/platform/qcom/venus/hfi_helper.h b/drivers/media/platform/qcom/venus/hfi_helper.h
index f5f1557b1176..1bc5aab1ce6b 100644
--- a/drivers/media/platform/qcom/venus/hfi_helper.h
+++ b/drivers/media/platform/qcom/venus/hfi_helper.h
@@ -801,6 +801,34 @@ struct hfi_h264_vui_timing_info {
u32 time_scale;
};
+struct hfi_bit_depth {
+ u32 buffer_type;
+ u32 bit_depth;
+};
+
+struct hfi_picture_type {
+ u32 is_sync_frame;
+ u32 picture_type;
+};
+
+struct hfi_pic_struct {
+ u32 progressive_only;
+};
+
+struct hfi_colour_space {
+ u32 colour_space;
+};
+
+struct hfi_extradata_input_crop {
+ u32 size;
+ u32 version;
+ u32 port_index;
+ u32 left;
+ u32 top;
+ u32 width;
+ u32 height;
+};
+
#define HFI_COLOR_FORMAT_MONOCHROME 0x01
#define HFI_COLOR_FORMAT_NV12 0x02
#define HFI_COLOR_FORMAT_NV21 0x03
diff --git a/drivers/media/platform/qcom/venus/hfi_msgs.c b/drivers/media/platform/qcom/venus/hfi_msgs.c
index 589e1a6b36a9..54cd41e5837c 100644
--- a/drivers/media/platform/qcom/venus/hfi_msgs.c
+++ b/drivers/media/platform/qcom/venus/hfi_msgs.c
@@ -25,10 +25,16 @@
static void event_seq_changed(struct venus_core *core, struct venus_inst *inst,
struct hfi_msg_event_notify_pkt *pkt)
{
+ enum hfi_version ver = core->res->hfi_version;
struct hfi_event_data event = {0};
int num_properties_changed;
struct hfi_framesize *frame_sz;
struct hfi_profile_level *profile_level;
+ struct hfi_bit_depth *pixel_depth;
+ struct hfi_pic_struct *pic_struct;
+ struct hfi_colour_space *colour_info;
+ struct hfi_buffer_requirements *bufreq;
+ struct hfi_extradata_input_crop *crop;
u8 *data_ptr;
u32 ptype;
@@ -69,6 +75,44 @@ static void event_seq_changed(struct venus_core *core, struct venus_inst *inst,
event.level = profile_level->level;
data_ptr += sizeof(*profile_level);
break;
+ case HFI_PROPERTY_PARAM_VDEC_PIXEL_BITDEPTH:
+ data_ptr += sizeof(u32);
+ pixel_depth = (struct hfi_bit_depth *)data_ptr;
+ event.bit_depth = pixel_depth->bit_depth;
+ data_ptr += sizeof(*pixel_depth);
+ break;
+ case HFI_PROPERTY_PARAM_VDEC_PIC_STRUCT:
+ data_ptr += sizeof(u32);
+ pic_struct = (struct hfi_pic_struct *)data_ptr;
+ event.pic_struct = pic_struct->progressive_only;
+ data_ptr += sizeof(*pic_struct);
+ break;
+ case HFI_PROPERTY_PARAM_VDEC_COLOUR_SPACE:
+ data_ptr += sizeof(u32);
+ colour_info = (struct hfi_colour_space *)data_ptr;
+ event.colour_space = colour_info->colour_space;
+ data_ptr += sizeof(*colour_info);
+ break;
+ case HFI_PROPERTY_CONFIG_VDEC_ENTROPY:
+ data_ptr += sizeof(u32);
+ event.entropy_mode = *(u32 *)data_ptr;
+ data_ptr += sizeof(u32);
+ break;
+ 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);
+ data_ptr += sizeof(*bufreq);
+ break;
+ case HFI_INDEX_EXTRADATA_INPUT_CROP:
+ data_ptr += sizeof(u32);
+ crop = (struct hfi_extradata_input_crop *)data_ptr;
+ event.input_crop.left = crop->left;
+ event.input_crop.top = crop->top;
+ event.input_crop.width = crop->width;
+ event.input_crop.height = crop->height;
+ data_ptr += sizeof(*crop);
+ break;
default:
break;
}
--
2.14.1
next prev parent reply other threads:[~2018-07-05 13:15 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-05 13:03 [PATCH v5 00/27] Venus updates Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 01/27] venus: hfi_msgs: correct pointer increment Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 02/27] venus: hfi: preparation to support venus 4xx Stanimir Varbanov
2018-07-05 13:03 ` Stanimir Varbanov [this message]
2018-07-05 13:03 ` [PATCH v5 04/27] venus: hfi_cmds: add set_properties for 4xx version Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 05/27] venus: hfi: support session continue " Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 06/27] venus: hfi: handle buffer output2 type as well Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 07/27] venus: hfi_venus: add halt AXI support for Venus 4xx Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 08/27] venus: hfi_venus: fix suspend function for venus 3xx versions Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 09/27] venus: hfi_venus: move set of default properties to core init Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 10/27] venus: hfi_venus: add suspend functionality for Venus 4xx Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 11/27] venus: core,helpers: add two more clocks found in " Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 12/27] venus: hfi_parser: add common capability parser Stanimir Varbanov
2018-07-06 11:21 ` Hans Verkuil
2018-07-06 12:19 ` Stanimir Varbanov
2018-07-06 12:27 ` Hans Verkuil
2018-07-06 12:47 ` [PATCH v6 " Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 13/27] venus: helpers: rename a helper function and use buffer mode from caps Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 14/27] venus: helpers: add a helper function to set dynamic buffer mode Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 15/27] venus: helpers: add helper function to set actual buffer size Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 16/27] venus: core: delete not used buffer mode flags Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 17/27] venus: helpers: add buffer type argument to a helper Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 18/27] venus: helpers: add a new helper to set raw format Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 19/27] venus: helpers,vdec,venc: add helpers to set work mode and core usage Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 20/27] venus: helpers: extend set_num_bufs helper with one more argument Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 21/27] venus: helpers: add a helper to return opb buffer sizes Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 22/27] venus: vdec: get required input buffers as well Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 23/27] venus: vdec: a new function for output configuration Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 24/27] venus: helpers: move frame size calculations on common place Stanimir Varbanov
2018-07-05 13:03 ` [PATCH v5 25/27] venus: implementing multi-stream support Stanimir Varbanov
2018-07-05 13:04 ` [PATCH v5 26/27] venus: core: add sdm845 DT compatible and resource data Stanimir Varbanov
2018-07-05 13:04 ` [PATCH v5 27/27] venus: add HEVC codec support Stanimir Varbanov
2018-07-05 14:07 ` [PATCH v5 00/27] Venus updates Tomasz Figa
2018-07-05 14:08 ` Hans Verkuil
2018-07-05 14:51 ` Stanimir Varbanov
2018-07-05 15:00 ` Alexandre Courbot
2018-07-06 3:55 ` Alexandre Courbot
2018-07-06 7:11 ` Stanimir Varbanov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180705130401.24315-4-stanimir.varbanov@linaro.org \
--to=stanimir.varbanov@linaro.org \
--cc=acourbot@chromium.org \
--cc=hverkuil@xs4all.nl \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=tfiga@chromium.org \
--cc=vgarodia@codeaurora.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).