blob: e899af363d2aa8b0985124f3d1cc631cb2ff66f2 [file] [log] [blame]
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -08001/* Copyright (c) 2012-2017, The Linux Foundation. All rights reserved.
2 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 */
13#ifndef __H_VIDC_HFI_H__
14#define __H_VIDC_HFI_H__
15
16#include <media/msm_media_info.h>
17#include "vidc_hfi_helper.h"
18#include "vidc_hfi_api.h"
19
20#define HFI_EVENT_SESSION_SEQUENCE_CHANGED (HFI_OX_BASE + 0x3)
21#define HFI_EVENT_SESSION_PROPERTY_CHANGED (HFI_OX_BASE + 0x4)
22#define HFI_EVENT_SESSION_LTRUSE_FAILED (HFI_OX_BASE + 0x5)
23#define HFI_EVENT_RELEASE_BUFFER_REFERENCE (HFI_OX_BASE + 0x6)
24
25#define HFI_EVENT_DATA_SEQUENCE_CHANGED_SUFFICIENT_BUFFER_RESOURCES \
26 (HFI_OX_BASE + 0x1)
27#define HFI_EVENT_DATA_SEQUENCE_CHANGED_INSUFFICIENT_BUFFER_RESOURCES \
28 (HFI_OX_BASE + 0x2)
29
30#define HFI_BUFFERFLAG_EOS 0x00000001
31#define HFI_BUFFERFLAG_STARTTIME 0x00000002
32#define HFI_BUFFERFLAG_DECODEONLY 0x00000004
33#define HFI_BUFFERFLAG_DATACORRUPT 0x00000008
34#define HFI_BUFFERFLAG_ENDOFFRAME 0x00000010
35#define HFI_BUFFERFLAG_SYNCFRAME 0x00000020
36#define HFI_BUFFERFLAG_EXTRADATA 0x00000040
37#define HFI_BUFFERFLAG_CODECCONFIG 0x00000080
38#define HFI_BUFFERFLAG_TIMESTAMPINVALID 0x00000100
39#define HFI_BUFFERFLAG_READONLY 0x00000200
40#define HFI_BUFFERFLAG_ENDOFSUBFRAME 0x00000400
41#define HFI_BUFFERFLAG_EOSEQ 0x00200000
42#define HFI_BUFFER_FLAG_MBAFF 0x08000000
43#define HFI_BUFFERFLAG_VPE_YUV_601_709_CSC_CLAMP \
44 0x10000000
45#define HFI_BUFFERFLAG_DROP_FRAME 0x20000000
46#define HFI_BUFFERFLAG_TEI 0x40000000
47#define HFI_BUFFERFLAG_DISCONTINUITY 0x80000000
48
49
50#define HFI_ERR_SESSION_EMPTY_BUFFER_DONE_OUTPUT_PENDING \
51 (HFI_OX_BASE + 0x1001)
52#define HFI_ERR_SESSION_SAME_STATE_OPERATION \
53 (HFI_OX_BASE + 0x1002)
54#define HFI_ERR_SESSION_SYNC_FRAME_NOT_DETECTED \
55 (HFI_OX_BASE + 0x1003)
56#define HFI_ERR_SESSION_START_CODE_NOT_FOUND \
57 (HFI_OX_BASE + 0x1004)
58
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -080059
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -080060#define HFI_BUFFER_MODE_DYNAMIC (HFI_OX_BASE + 0x3)
61
62#define HFI_FLUSH_INPUT (HFI_OX_BASE + 0x1)
63#define HFI_FLUSH_OUTPUT (HFI_OX_BASE + 0x2)
64#define HFI_FLUSH_ALL (HFI_OX_BASE + 0x4)
65
66#define HFI_EXTRADATA_NONE 0x00000000
67#define HFI_EXTRADATA_MB_QUANTIZATION 0x00000001
68#define HFI_EXTRADATA_INTERLACE_VIDEO 0x00000002
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -080069#define HFI_EXTRADATA_TIMESTAMP 0x00000005
70#define HFI_EXTRADATA_S3D_FRAME_PACKING 0x00000006
71#define HFI_EXTRADATA_FRAME_RATE 0x00000007
72#define HFI_EXTRADATA_PANSCAN_WINDOW 0x00000008
73#define HFI_EXTRADATA_RECOVERY_POINT_SEI 0x00000009
74#define HFI_EXTRADATA_MPEG2_SEQDISP 0x0000000D
75#define HFI_EXTRADATA_STREAM_USERDATA 0x0000000E
76#define HFI_EXTRADATA_FRAME_QP 0x0000000F
77#define HFI_EXTRADATA_FRAME_BITS_INFO 0x00000010
78#define HFI_EXTRADATA_VPX_COLORSPACE 0x00000014
Umesh Pandey3cfce632017-03-02 13:56:18 -080079#define HFI_EXTRADATA_UBWC_CR_STAT_INFO 0x00000019
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -080080#define HFI_EXTRADATA_MULTISLICE_INFO 0x7F100000
81#define HFI_EXTRADATA_NUM_CONCEALED_MB 0x7F100001
82#define HFI_EXTRADATA_INDEX 0x7F100002
83#define HFI_EXTRADATA_METADATA_LTR 0x7F100004
84#define HFI_EXTRADATA_METADATA_FILLER 0x7FE00002
85
86#define HFI_INDEX_EXTRADATA_INPUT_CROP 0x0700000E
87#define HFI_INDEX_EXTRADATA_OUTPUT_CROP 0x0700000F
88#define HFI_INDEX_EXTRADATA_ASPECT_RATIO 0x7F100003
89
90struct hfi_buffer_alloc_mode {
91 u32 buffer_type;
92 u32 buffer_mode;
93};
94
95
96struct hfi_index_extradata_config {
97 int enable;
98 u32 index_extra_data_id;
99};
100
101struct hfi_extradata_header {
102 u32 size;
103 u32 version;
104 u32 port_index;
105 u32 type;
106 u32 data_size;
107 u8 rg_data[1];
108};
109
110#define HFI_INTERLACE_FRAME_PROGRESSIVE 0x01
111#define HFI_INTERLACE_INTERLEAVE_FRAME_TOPFIELDFIRST 0x02
112#define HFI_INTERLACE_INTERLEAVE_FRAME_BOTTOMFIELDFIRST 0x04
113#define HFI_INTERLACE_FRAME_TOPFIELDFIRST 0x08
114#define HFI_INTERLACE_FRAME_BOTTOMFIELDFIRST 0x10
Umesh Pandey3cfce632017-03-02 13:56:18 -0800115#define HFI_INTERLACE_FRAME_MBAFF 0x20
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800116
117#define HFI_PROPERTY_SYS_OX_START \
118 (HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x0000)
119
120#define HFI_PROPERTY_PARAM_OX_START \
121 (HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x1000)
122#define HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL \
123 (HFI_PROPERTY_PARAM_OX_START + 0x001)
124#define HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_CONSTRAINTS_INFO \
125 (HFI_PROPERTY_PARAM_OX_START + 0x002)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800126#define HFI_PROPERTY_PARAM_INDEX_EXTRADATA \
127 (HFI_PROPERTY_PARAM_OX_START + 0x006)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800128#define HFI_PROPERTY_PARAM_S3D_FRAME_PACKING_EXTRADATA \
129 (HFI_PROPERTY_PARAM_OX_START + 0x009)
Umesh Pandey3cfce632017-03-02 13:56:18 -0800130#define HFI_PROPERTY_PARAM_BUFFER_SIZE_MINIMUM \
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800131 (HFI_PROPERTY_PARAM_OX_START + 0x00C)
132#define HFI_PROPERTY_PARAM_SYNC_BASED_INTERRUPT \
133 (HFI_PROPERTY_PARAM_OX_START + 0x00E)
134
135#define HFI_PROPERTY_CONFIG_OX_START \
136 (HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x02000)
137#define HFI_PROPERTY_CONFIG_BUFFER_REQUIREMENTS \
138 (HFI_PROPERTY_CONFIG_OX_START + 0x001)
139#define HFI_PROPERTY_CONFIG_REALTIME \
140 (HFI_PROPERTY_CONFIG_OX_START + 0x002)
141#define HFI_PROPERTY_CONFIG_PRIORITY \
142 (HFI_PROPERTY_CONFIG_OX_START + 0x003)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800143#define HFI_PROPERTY_PARAM_VDEC_OX_START \
144 (HFI_DOMAIN_BASE_VDEC + HFI_ARCH_OX_OFFSET + 0x3000)
145#define HFI_PROPERTY_PARAM_VDEC_CONTINUE_DATA_TRANSFER \
146 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x001)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800147#define HFI_PROPERTY_PARAM_VDEC_MULTI_VIEW_SELECT \
148 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x003)
149#define HFI_PROPERTY_PARAM_VDEC_PICTURE_TYPE_DECODE \
150 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x004)
151#define HFI_PROPERTY_PARAM_VDEC_OUTPUT_ORDER \
152 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x005)
153#define HFI_PROPERTY_PARAM_VDEC_MB_QUANTIZATION \
154 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x006)
155#define HFI_PROPERTY_PARAM_VDEC_NUM_CONCEALED_MB \
156 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x007)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800157#define HFI_PROPERTY_PARAM_VDEC_OUTPUT2_KEEP_ASPECT_RATIO\
158 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x009)
159#define HFI_PROPERTY_PARAM_VDEC_FRAME_RATE_EXTRADATA \
160 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x00A)
161#define HFI_PROPERTY_PARAM_VDEC_PANSCAN_WNDW_EXTRADATA \
162 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x00B)
163#define HFI_PROPERTY_PARAM_VDEC_RECOVERY_POINT_SEI_EXTRADATA \
164 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x00C)
165#define HFI_PROPERTY_PARAM_VDEC_THUMBNAIL_MODE \
166 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x00D)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800167#define HFI_PROPERTY_PARAM_VDEC_TIMESTAMP_EXTRADATA \
168 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x013)
169#define HFI_PROPERTY_PARAM_VDEC_INTERLACE_VIDEO_EXTRADATA \
170 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x014)
171#define HFI_PROPERTY_PARAM_VDEC_AVC_SESSION_SELECT \
172 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x015)
173#define HFI_PROPERTY_PARAM_VDEC_MPEG2_SEQDISP_EXTRADATA \
174 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x016)
175#define HFI_PROPERTY_PARAM_VDEC_STREAM_USERDATA_EXTRADATA \
176 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x017)
177#define HFI_PROPERTY_PARAM_VDEC_FRAME_QP_EXTRADATA \
178 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x018)
179#define HFI_PROPERTY_PARAM_VDEC_FRAME_BITS_INFO_EXTRADATA \
180 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x019)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800181#define HFI_PROPERTY_PARAM_VUI_DISPLAY_INFO_EXTRADATA \
182 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x01B)
183#define HFI_PROPERTY_PARAM_VDEC_VQZIP_SEI_EXTRADATA \
184 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x001C)
185#define HFI_PROPERTY_PARAM_VDEC_VPX_COLORSPACE_EXTRADATA \
186 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x001D)
187#define HFI_PROPERTY_PARAM_VDEC_MASTERING_DISPLAY_COLOUR_SEI_EXTRADATA \
188 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x001E)
189#define HFI_PROPERTY_PARAM_VDEC_CONTENT_LIGHT_LEVEL_SEI_EXTRADATA \
190 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x001F)
Praneeth Paladugua51b2c42017-06-23 12:48:06 -0700191#define HFI_PROPERTY_PARAM_VDEC_COLOUR_REMAPPING_INFO_SEI_EXTRADATA \
192 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x0020)
193#define HFI_PROPERTY_PARAM_VDEC_DOWN_SCALAR \
194 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x0021)
195#define HFI_PROPERTY_PARAM_VDEC_UBWC_CR_STAT_INFO_EXTRADATA \
196 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x0022)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800197
198#define HFI_PROPERTY_CONFIG_VDEC_OX_START \
199 (HFI_DOMAIN_BASE_VDEC + HFI_ARCH_OX_OFFSET + 0x4000)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800200#define HFI_PROPERTY_CONFIG_VDEC_MB_ERROR_MAP_REPORTING \
201 (HFI_PROPERTY_CONFIG_VDEC_OX_START + 0x002)
202#define HFI_PROPERTY_CONFIG_VDEC_MB_ERROR_MAP \
203 (HFI_PROPERTY_CONFIG_VDEC_OX_START + 0x003)
204#define HFI_PROPERTY_CONFIG_VDEC_ENTROPY \
205 (HFI_PROPERTY_CONFIG_VDEC_OX_START + 0x004)
206
207#define HFI_PROPERTY_PARAM_VENC_OX_START \
208 (HFI_DOMAIN_BASE_VENC + HFI_ARCH_OX_OFFSET + 0x5000)
209#define HFI_PROPERTY_PARAM_VENC_MULTI_SLICE_INFO \
210 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x001)
211#define HFI_PROPERTY_PARAM_VENC_H264_IDR_S3D_FRAME_PACKING_NAL \
212 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x002)
213#define HFI_PROPERTY_PARAM_VENC_LTR_INFO \
214 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x003)
215#define HFI_PROPERTY_PARAM_VENC_MBI_DUMPING \
216 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x005)
217#define HFI_PROPERTY_PARAM_VENC_FRAME_QP_EXTRADATA \
218 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x006)
219#define HFI_PROPERTY_PARAM_VENC_YUVSTAT_INFO_EXTRADATA \
220 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x007)
221#define HFI_PROPERTY_PARAM_VENC_ROI_QP_EXTRADATA \
222 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x008)
223#define HFI_PROPERTY_PARAM_VENC_OVERRIDE_QP_EXTRADATA \
224 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x009)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800225#define HFI_PROPERTY_CONFIG_VENC_OX_START \
226 (HFI_DOMAIN_BASE_VENC + HFI_ARCH_OX_OFFSET + 0x6000)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800227#define HFI_PROPERTY_PARAM_VPE_OX_START \
228 (HFI_DOMAIN_BASE_VPE + HFI_ARCH_OX_OFFSET + 0x7000)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800229
230#define HFI_PROPERTY_CONFIG_VPE_OX_START \
231 (HFI_DOMAIN_BASE_VPE + HFI_ARCH_OX_OFFSET + 0x8000)
232
233struct hfi_batch_info {
234 u32 input_batch_count;
235 u32 output_batch_count;
236};
237
238struct hfi_buffer_count_actual {
239 u32 buffer_type;
240 u32 buffer_count_actual;
Praneeth Paladugudefea4e2017-02-09 23:44:08 -0800241 u32 buffer_count_min_host;
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800242};
243
244struct hfi_buffer_size_minimum {
245 u32 buffer_type;
246 u32 buffer_size;
247};
248
249struct hfi_buffer_requirements {
250 u32 buffer_type;
251 u32 buffer_size;
252 u32 buffer_region_size;
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800253 u32 buffer_count_min;
Praneeth Paladugudefea4e2017-02-09 23:44:08 -0800254 u32 buffer_count_min_host;
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800255 u32 buffer_count_actual;
256 u32 contiguous;
257 u32 buffer_alignment;
258};
259
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800260struct hfi_data_payload {
261 u32 size;
262 u8 rg_data[1];
263};
264
265struct hfi_enable_picture {
266 u32 picture_type;
267};
268
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800269struct hfi_mb_error_map {
270 u32 error_map_size;
271 u8 rg_error_map[1];
272};
273
274struct hfi_metadata_pass_through {
275 int enable;
276 u32 size;
277};
278
279struct hfi_multi_view_select {
280 u32 view_index;
281};
282
283struct hfi_hybrid_hierp {
284 u32 layers;
285};
286
287#define HFI_PRIORITY_LOW 10
288#define HFI_PRIOIRTY_MEDIUM 20
289#define HFI_PRIORITY_HIGH 30
290
291#define HFI_OUTPUT_ORDER_DISPLAY (HFI_OX_BASE + 0x1)
292#define HFI_OUTPUT_ORDER_DECODE (HFI_OX_BASE + 0x2)
293
294#define HFI_RATE_CONTROL_OFF (HFI_OX_BASE + 0x1)
295#define HFI_RATE_CONTROL_VBR_VFR (HFI_OX_BASE + 0x2)
296#define HFI_RATE_CONTROL_VBR_CFR (HFI_OX_BASE + 0x3)
297#define HFI_RATE_CONTROL_CBR_VFR (HFI_OX_BASE + 0x4)
298#define HFI_RATE_CONTROL_CBR_CFR (HFI_OX_BASE + 0x5)
299#define HFI_RATE_CONTROL_MBR_CFR (HFI_OX_BASE + 0x6)
300#define HFI_RATE_CONTROL_MBR_VFR (HFI_OX_BASE + 0x7)
301
302
303struct hfi_uncompressed_plane_actual_constraints_info {
304 u32 buffer_type;
305 u32 num_planes;
306 struct hfi_uncompressed_plane_constraints rg_plane_format[1];
307};
308
309#define HFI_CMD_SYS_OX_START \
310(HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + HFI_CMD_START_OFFSET + 0x0000)
311#define HFI_CMD_SYS_SESSION_ABORT (HFI_CMD_SYS_OX_START + 0x001)
312#define HFI_CMD_SYS_PING (HFI_CMD_SYS_OX_START + 0x002)
313
314#define HFI_CMD_SESSION_OX_START \
315(HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + HFI_CMD_START_OFFSET + 0x1000)
316#define HFI_CMD_SESSION_LOAD_RESOURCES (HFI_CMD_SESSION_OX_START + 0x001)
317#define HFI_CMD_SESSION_START (HFI_CMD_SESSION_OX_START + 0x002)
318#define HFI_CMD_SESSION_STOP (HFI_CMD_SESSION_OX_START + 0x003)
319#define HFI_CMD_SESSION_EMPTY_BUFFER (HFI_CMD_SESSION_OX_START + 0x004)
320#define HFI_CMD_SESSION_FILL_BUFFER (HFI_CMD_SESSION_OX_START + 0x005)
321#define HFI_CMD_SESSION_SUSPEND (HFI_CMD_SESSION_OX_START + 0x006)
322#define HFI_CMD_SESSION_RESUME (HFI_CMD_SESSION_OX_START + 0x007)
323#define HFI_CMD_SESSION_FLUSH (HFI_CMD_SESSION_OX_START + 0x008)
324#define HFI_CMD_SESSION_GET_PROPERTY (HFI_CMD_SESSION_OX_START + 0x009)
325#define HFI_CMD_SESSION_PARSE_SEQUENCE_HEADER \
326 (HFI_CMD_SESSION_OX_START + 0x00A)
327#define HFI_CMD_SESSION_RELEASE_BUFFERS \
328 (HFI_CMD_SESSION_OX_START + 0x00B)
329#define HFI_CMD_SESSION_RELEASE_RESOURCES \
330 (HFI_CMD_SESSION_OX_START + 0x00C)
331#define HFI_CMD_SESSION_CONTINUE (HFI_CMD_SESSION_OX_START + 0x00D)
332#define HFI_CMD_SESSION_SYNC (HFI_CMD_SESSION_OX_START + 0x00E)
333
334#define HFI_MSG_SYS_OX_START \
335(HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + HFI_MSG_START_OFFSET + 0x0000)
336#define HFI_MSG_SYS_PING_ACK (HFI_MSG_SYS_OX_START + 0x2)
337#define HFI_MSG_SYS_SESSION_ABORT_DONE (HFI_MSG_SYS_OX_START + 0x4)
338
339#define HFI_MSG_SESSION_OX_START \
340(HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + HFI_MSG_START_OFFSET + 0x1000)
341#define HFI_MSG_SESSION_LOAD_RESOURCES_DONE (HFI_MSG_SESSION_OX_START + 0x1)
342#define HFI_MSG_SESSION_START_DONE (HFI_MSG_SESSION_OX_START + 0x2)
343#define HFI_MSG_SESSION_STOP_DONE (HFI_MSG_SESSION_OX_START + 0x3)
344#define HFI_MSG_SESSION_SUSPEND_DONE (HFI_MSG_SESSION_OX_START + 0x4)
345#define HFI_MSG_SESSION_RESUME_DONE (HFI_MSG_SESSION_OX_START + 0x5)
346#define HFI_MSG_SESSION_FLUSH_DONE (HFI_MSG_SESSION_OX_START + 0x6)
347#define HFI_MSG_SESSION_EMPTY_BUFFER_DONE (HFI_MSG_SESSION_OX_START + 0x7)
348#define HFI_MSG_SESSION_FILL_BUFFER_DONE (HFI_MSG_SESSION_OX_START + 0x8)
349#define HFI_MSG_SESSION_PROPERTY_INFO (HFI_MSG_SESSION_OX_START + 0x9)
350#define HFI_MSG_SESSION_RELEASE_RESOURCES_DONE \
351 (HFI_MSG_SESSION_OX_START + 0xA)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800352#define HFI_MSG_SESSION_RELEASE_BUFFERS_DONE \
353 (HFI_MSG_SESSION_OX_START + 0xC)
354
355#define VIDC_IFACEQ_MAX_PKT_SIZE 1024
356#define VIDC_IFACEQ_MED_PKT_SIZE 768
357#define VIDC_IFACEQ_MIN_PKT_SIZE 8
358#define VIDC_IFACEQ_VAR_SMALL_PKT_SIZE 100
359#define VIDC_IFACEQ_VAR_LARGE_PKT_SIZE 512
360#define VIDC_IFACEQ_VAR_HUGE_PKT_SIZE (1024*12)
361
362
363struct hfi_cmd_sys_session_abort_packet {
364 u32 size;
365 u32 packet_type;
366 u32 session_id;
367};
368
369struct hfi_cmd_sys_ping_packet {
370 u32 size;
371 u32 packet_type;
372 u32 client_data;
373};
374
375struct hfi_cmd_session_load_resources_packet {
376 u32 size;
377 u32 packet_type;
378 u32 session_id;
379};
380
381struct hfi_cmd_session_start_packet {
382 u32 size;
383 u32 packet_type;
384 u32 session_id;
385};
386
387struct hfi_cmd_session_stop_packet {
388 u32 size;
389 u32 packet_type;
390 u32 session_id;
391};
392
393struct hfi_cmd_session_empty_buffer_compressed_packet {
394 u32 size;
395 u32 packet_type;
396 u32 session_id;
397 u32 time_stamp_hi;
398 u32 time_stamp_lo;
399 u32 flags;
400 u32 mark_target;
401 u32 mark_data;
402 u32 offset;
403 u32 alloc_len;
404 u32 filled_len;
405 u32 input_tag;
406 u32 packet_buffer;
407 u32 extra_data_buffer;
408 u32 rgData[1];
409};
410
411struct hfi_cmd_session_empty_buffer_uncompressed_plane0_packet {
412 u32 size;
413 u32 packet_type;
414 u32 session_id;
415 u32 view_id;
416 u32 time_stamp_hi;
417 u32 time_stamp_lo;
418 u32 flags;
419 u32 mark_target;
420 u32 mark_data;
421 u32 alloc_len;
422 u32 filled_len;
423 u32 offset;
424 u32 input_tag;
425 u32 packet_buffer;
426 u32 extra_data_buffer;
427 u32 rgData[1];
428};
429
430struct hfi_cmd_session_empty_buffer_uncompressed_plane1_packet {
431 u32 flags;
432 u32 alloc_len;
433 u32 filled_len;
434 u32 offset;
435 u32 packet_buffer2;
436 u32 rgData[1];
437};
438
439struct hfi_cmd_session_empty_buffer_uncompressed_plane2_packet {
440 u32 flags;
441 u32 alloc_len;
442 u32 filled_len;
443 u32 offset;
444 u32 packet_buffer3;
445 u32 rgData[1];
446};
447
448struct hfi_cmd_session_fill_buffer_packet {
449 u32 size;
450 u32 packet_type;
451 u32 session_id;
452 u32 stream_id;
453 u32 offset;
454 u32 alloc_len;
455 u32 filled_len;
456 u32 output_tag;
457 u32 packet_buffer;
458 u32 extra_data_buffer;
459 u32 rgData[1];
460};
461
462struct hfi_cmd_session_flush_packet {
463 u32 size;
464 u32 packet_type;
465 u32 session_id;
466 u32 flush_type;
467};
468
469struct hfi_cmd_session_suspend_packet {
470 u32 size;
471 u32 packet_type;
472 u32 session_id;
473};
474
475struct hfi_cmd_session_resume_packet {
476 u32 size;
477 u32 packet_type;
478 u32 session_id;
479};
480
481struct hfi_cmd_session_get_property_packet {
482 u32 size;
483 u32 packet_type;
484 u32 session_id;
485 u32 num_properties;
486 u32 rg_property_data[1];
487};
488
489struct hfi_cmd_session_release_buffer_packet {
490 u32 size;
491 u32 packet_type;
492 u32 session_id;
493 u32 buffer_type;
494 u32 buffer_size;
495 u32 extra_data_size;
496 int response_req;
497 u32 num_buffers;
498 u32 rg_buffer_info[1];
499};
500
501struct hfi_cmd_session_release_resources_packet {
502 u32 size;
503 u32 packet_type;
504 u32 session_id;
505};
506
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800507struct hfi_msg_sys_session_abort_done_packet {
508 u32 size;
509 u32 packet_type;
510 u32 session_id;
511 u32 error_type;
512};
513
514struct hfi_msg_sys_idle_packet {
515 u32 size;
516 u32 packet_type;
517};
518
519struct hfi_msg_sys_ping_ack_packet {
520 u32 size;
521 u32 packet_type;
522 u32 client_data;
523};
524
525struct hfi_msg_sys_property_info_packet {
526 u32 size;
527 u32 packet_type;
528 u32 num_properties;
529 u32 rg_property_data[1];
530};
531
532struct hfi_msg_session_load_resources_done_packet {
533 u32 size;
534 u32 packet_type;
535 u32 session_id;
536 u32 error_type;
537};
538
539struct hfi_msg_session_start_done_packet {
540 u32 size;
541 u32 packet_type;
542 u32 session_id;
543 u32 error_type;
544};
545
546struct hfi_msg_session_stop_done_packet {
547 u32 size;
548 u32 packet_type;
549 u32 session_id;
550 u32 error_type;
551};
552
553struct hfi_msg_session_suspend_done_packet {
554 u32 size;
555 u32 packet_type;
556 u32 session_id;
557 u32 error_type;
558};
559
560struct hfi_msg_session_resume_done_packet {
561 u32 size;
562 u32 packet_type;
563 u32 session_id;
564 u32 error_type;
565};
566
567struct hfi_msg_session_flush_done_packet {
568 u32 size;
569 u32 packet_type;
570 u32 session_id;
571 u32 error_type;
572 u32 flush_type;
573};
574
Umesh Pandey3cfce632017-03-02 13:56:18 -0800575struct hfi_ubwc_cr_stats_info_type {
576 u32 cr_stats_info0;
577 u32 cr_stats_info1;
578 u32 cr_stats_info2;
579 u32 cr_stats_info3;
580 u32 cr_stats_info4;
581 u32 cr_stats_info5;
582 u32 cr_stats_info6;
583};
584
585struct hfi_frame_cr_stats_type {
586 u32 frame_index;
587 struct hfi_ubwc_cr_stats_info_type ubwc_stats_info;
Saurabh Kothawadeb3ce6da2017-04-10 17:43:26 -0700588 u32 complexity_number;
Umesh Pandey3cfce632017-03-02 13:56:18 -0800589};
590
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800591struct hfi_msg_session_empty_buffer_done_packet {
592 u32 size;
593 u32 packet_type;
594 u32 session_id;
595 u32 error_type;
596 u32 offset;
597 u32 filled_len;
598 u32 input_tag;
599 u32 packet_buffer;
600 u32 extra_data_buffer;
Umesh Pandey3cfce632017-03-02 13:56:18 -0800601 u32 flags;
602 struct hfi_frame_cr_stats_type ubwc_cr_stats;
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800603 u32 rgData[0];
604};
605
606struct hfi_msg_session_fill_buffer_done_compressed_packet {
607 u32 size;
608 u32 packet_type;
609 u32 session_id;
610 u32 time_stamp_hi;
611 u32 time_stamp_lo;
612 u32 error_type;
613 u32 flags;
614 u32 mark_target;
615 u32 mark_data;
616 u32 stats;
617 u32 offset;
618 u32 alloc_len;
619 u32 filled_len;
620 u32 input_tag;
621 u32 output_tag;
622 u32 picture_type;
623 u32 packet_buffer;
624 u32 extra_data_buffer;
625 u32 rgData[0];
626};
627
628struct hfi_msg_session_fbd_uncompressed_plane0_packet {
629 u32 size;
630 u32 packet_type;
631 u32 session_id;
632 u32 stream_id;
633 u32 view_id;
634 u32 error_type;
635 u32 time_stamp_hi;
636 u32 time_stamp_lo;
637 u32 flags;
638 u32 mark_target;
639 u32 mark_data;
640 u32 stats;
641 u32 alloc_len;
642 u32 filled_len;
643 u32 offset;
644 u32 frame_width;
645 u32 frame_height;
646 u32 start_x_coord;
647 u32 start_y_coord;
648 u32 input_tag;
649 u32 input_tag2;
650 u32 output_tag;
651 u32 picture_type;
652 u32 packet_buffer;
653 u32 extra_data_buffer;
654 u32 rgData[0];
655};
656
657struct hfi_msg_session_fill_buffer_done_uncompressed_plane1_packet {
658 u32 flags;
659 u32 alloc_len;
660 u32 filled_len;
661 u32 offset;
662 u32 packet_buffer2;
663 u32 rgData[0];
664};
665
666struct hfi_msg_session_fill_buffer_done_uncompressed_plane2_packet {
667 u32 flags;
668 u32 alloc_len;
669 u32 filled_len;
670 u32 offset;
671 u32 packet_buffer3;
672 u32 rgData[0];
673};
674
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800675struct hfi_msg_session_property_info_packet {
676 u32 size;
677 u32 packet_type;
678 u32 session_id;
679 u32 num_properties;
680 u32 rg_property_data[1];
681};
682
683struct hfi_msg_session_release_resources_done_packet {
684 u32 size;
685 u32 packet_type;
686 u32 session_id;
687 u32 error_type;
688};
689
690struct hfi_msg_session_release_buffers_done_packet {
691 u32 size;
692 u32 packet_type;
693 u32 session_id;
694 u32 error_type;
695 u32 num_buffers;
696 u32 rg_buffer_info[1];
697};
698
699struct hfi_extradata_mb_quantization_payload {
700 u8 rg_mb_qp[1];
701};
702
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800703struct hfi_extradata_timestamp_payload {
704 u32 time_stamp_low;
705 u32 time_stamp_high;
706};
707
708
709struct hfi_extradata_s3d_frame_packing_payload {
710 u32 fpa_id;
711 int cancel_flag;
712 u32 fpa_type;
713 int quin_cunx_flag;
714 u32 content_interprtation_type;
715 int spatial_flipping_flag;
716 int frame0_flipped_flag;
717 int field_views_flag;
718 int current_frame_isFrame0_flag;
719 int frame0_self_contained_flag;
720 int frame1_self_contained_flag;
721 u32 frame0_graid_pos_x;
722 u32 frame0_graid_pos_y;
723 u32 frame1_graid_pos_x;
724 u32 frame1_graid_pos_y;
725 u32 fpa_reserved_byte;
726 u32 fpa_repetition_period;
727 int fpa_extension_flag;
728};
729
730struct hfi_extradata_interlace_video_payload {
731 u32 format;
732};
733
Umesh Pandey3cfce632017-03-02 13:56:18 -0800734struct hfi_conceal_color_type {
735 u32 value_8bit;
736 u32 value_10bit;
737};
738
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800739struct hfi_extradata_num_concealed_mb_payload {
740 u32 num_mb_concealed;
741};
742
743struct hfi_extradata_sliceinfo {
744 u32 offset_in_stream;
745 u32 slice_length;
746};
747
748struct hfi_extradata_multislice_info_payload {
749 u32 num_slices;
750 struct hfi_extradata_sliceinfo rg_slice_info[1];
751};
752
753struct hfi_index_extradata_input_crop_payload {
754 u32 size;
755 u32 version;
756 u32 port_index;
757 u32 left;
758 u32 top;
759 u32 width;
760 u32 height;
761};
762
763struct hfi_index_extradata_output_crop_payload {
764 u32 size;
765 u32 version;
766 u32 port_index;
767 u32 left;
768 u32 top;
769 u32 display_width;
770 u32 display_height;
771 u32 width;
772 u32 height;
773};
774
775struct hfi_index_extradata_digital_zoom_payload {
776 u32 size;
777 u32 version;
778 u32 port_index;
779 int width;
780 int height;
781};
782
783struct hfi_index_extradata_aspect_ratio_payload {
784 u32 size;
785 u32 version;
786 u32 port_index;
787 u32 aspect_width;
788 u32 aspect_height;
789};
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800790
791struct hfi_extradata_frame_type_payload {
792 u32 frame_rate;
793};
794
795struct hfi_extradata_recovery_point_sei_payload {
796 u32 flag;
797};
798
799struct hfi_cmd_session_continue_packet {
800 u32 size;
801 u32 packet_type;
802 u32 session_id;
803};
804
805struct hal_session {
806 struct list_head list;
807 void *session_id;
808 bool is_decoder;
809 enum hal_video_codec codec;
810 enum hal_domain domain;
811 void *device;
812};
813
814struct hal_device_data {
815 struct list_head dev_head;
816 int dev_count;
817};
818
819struct msm_vidc_fw {
820 void *cookie;
821};
822
823int hfi_process_msg_packet(u32 device_id, struct vidc_hal_msg_pkt_hdr *msg_hdr,
824 struct msm_vidc_cb_info *info);
825
826enum vidc_status hfi_process_sys_init_done_prop_read(
827 struct hfi_msg_sys_init_done_packet *pkt,
828 struct vidc_hal_sys_init_done *sys_init_done);
829
830enum vidc_status hfi_process_session_init_done_prop_read(
831 struct hfi_msg_sys_session_init_done_packet *pkt,
832 struct vidc_hal_session_init_done *session_init_done);
833
834#endif
835