blob: 3267999017cbf5d7041170799d75e8ccff57940f [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
59#define HFI_BUFFER_INTERNAL_SCRATCH (HFI_OX_BASE + 0x1)
60#define HFI_BUFFER_EXTRADATA_INPUT (HFI_OX_BASE + 0x2)
61#define HFI_BUFFER_EXTRADATA_OUTPUT (HFI_OX_BASE + 0x3)
62#define HFI_BUFFER_EXTRADATA_OUTPUT2 (HFI_OX_BASE + 0x4)
63#define HFI_BUFFER_INTERNAL_SCRATCH_1 (HFI_OX_BASE + 0x5)
64#define HFI_BUFFER_INTERNAL_SCRATCH_2 (HFI_OX_BASE + 0x6)
Umesh Pandey3cfce632017-03-02 13:56:18 -080065#define HFI_BUFFER_INTERNAL_RECON (HFI_OX_BASE + 0x9)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -080066
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -080067#define HFI_BUFFER_MODE_DYNAMIC (HFI_OX_BASE + 0x3)
68
69#define HFI_FLUSH_INPUT (HFI_OX_BASE + 0x1)
70#define HFI_FLUSH_OUTPUT (HFI_OX_BASE + 0x2)
71#define HFI_FLUSH_ALL (HFI_OX_BASE + 0x4)
72
73#define HFI_EXTRADATA_NONE 0x00000000
74#define HFI_EXTRADATA_MB_QUANTIZATION 0x00000001
75#define HFI_EXTRADATA_INTERLACE_VIDEO 0x00000002
76#define HFI_EXTRADATA_VC1_FRAMEDISP 0x00000003
77#define HFI_EXTRADATA_VC1_SEQDISP 0x00000004
78#define HFI_EXTRADATA_TIMESTAMP 0x00000005
79#define HFI_EXTRADATA_S3D_FRAME_PACKING 0x00000006
80#define HFI_EXTRADATA_FRAME_RATE 0x00000007
81#define HFI_EXTRADATA_PANSCAN_WINDOW 0x00000008
82#define HFI_EXTRADATA_RECOVERY_POINT_SEI 0x00000009
83#define HFI_EXTRADATA_MPEG2_SEQDISP 0x0000000D
84#define HFI_EXTRADATA_STREAM_USERDATA 0x0000000E
85#define HFI_EXTRADATA_FRAME_QP 0x0000000F
86#define HFI_EXTRADATA_FRAME_BITS_INFO 0x00000010
87#define HFI_EXTRADATA_VPX_COLORSPACE 0x00000014
Umesh Pandey3cfce632017-03-02 13:56:18 -080088#define HFI_EXTRADATA_UBWC_CR_STAT_INFO 0x00000019
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -080089#define HFI_EXTRADATA_MULTISLICE_INFO 0x7F100000
90#define HFI_EXTRADATA_NUM_CONCEALED_MB 0x7F100001
91#define HFI_EXTRADATA_INDEX 0x7F100002
92#define HFI_EXTRADATA_METADATA_LTR 0x7F100004
93#define HFI_EXTRADATA_METADATA_FILLER 0x7FE00002
94
95#define HFI_INDEX_EXTRADATA_INPUT_CROP 0x0700000E
96#define HFI_INDEX_EXTRADATA_OUTPUT_CROP 0x0700000F
97#define HFI_INDEX_EXTRADATA_ASPECT_RATIO 0x7F100003
98
99struct hfi_buffer_alloc_mode {
100 u32 buffer_type;
101 u32 buffer_mode;
102};
103
104
105struct hfi_index_extradata_config {
106 int enable;
107 u32 index_extra_data_id;
108};
109
110struct hfi_extradata_header {
111 u32 size;
112 u32 version;
113 u32 port_index;
114 u32 type;
115 u32 data_size;
116 u8 rg_data[1];
117};
118
119#define HFI_INTERLACE_FRAME_PROGRESSIVE 0x01
120#define HFI_INTERLACE_INTERLEAVE_FRAME_TOPFIELDFIRST 0x02
121#define HFI_INTERLACE_INTERLEAVE_FRAME_BOTTOMFIELDFIRST 0x04
122#define HFI_INTERLACE_FRAME_TOPFIELDFIRST 0x08
123#define HFI_INTERLACE_FRAME_BOTTOMFIELDFIRST 0x10
Umesh Pandey3cfce632017-03-02 13:56:18 -0800124#define HFI_INTERLACE_FRAME_MBAFF 0x20
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800125
126#define HFI_PROPERTY_SYS_OX_START \
127 (HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x0000)
128
129#define HFI_PROPERTY_PARAM_OX_START \
130 (HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x1000)
131#define HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL \
132 (HFI_PROPERTY_PARAM_OX_START + 0x001)
133#define HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_CONSTRAINTS_INFO \
134 (HFI_PROPERTY_PARAM_OX_START + 0x002)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800135#define HFI_PROPERTY_PARAM_EXTRA_DATA_HEADER_CONFIG \
136 (HFI_PROPERTY_PARAM_OX_START + 0x005)
137#define HFI_PROPERTY_PARAM_INDEX_EXTRADATA \
138 (HFI_PROPERTY_PARAM_OX_START + 0x006)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800139#define HFI_PROPERTY_PARAM_S3D_FRAME_PACKING_EXTRADATA \
140 (HFI_PROPERTY_PARAM_OX_START + 0x009)
Umesh Pandey3cfce632017-03-02 13:56:18 -0800141#define HFI_PROPERTY_PARAM_BUFFER_SIZE_MINIMUM \
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800142 (HFI_PROPERTY_PARAM_OX_START + 0x00C)
143#define HFI_PROPERTY_PARAM_SYNC_BASED_INTERRUPT \
144 (HFI_PROPERTY_PARAM_OX_START + 0x00E)
145
146#define HFI_PROPERTY_CONFIG_OX_START \
147 (HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x02000)
148#define HFI_PROPERTY_CONFIG_BUFFER_REQUIREMENTS \
149 (HFI_PROPERTY_CONFIG_OX_START + 0x001)
150#define HFI_PROPERTY_CONFIG_REALTIME \
151 (HFI_PROPERTY_CONFIG_OX_START + 0x002)
152#define HFI_PROPERTY_CONFIG_PRIORITY \
153 (HFI_PROPERTY_CONFIG_OX_START + 0x003)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800154#define HFI_PROPERTY_PARAM_VDEC_OX_START \
155 (HFI_DOMAIN_BASE_VDEC + HFI_ARCH_OX_OFFSET + 0x3000)
156#define HFI_PROPERTY_PARAM_VDEC_CONTINUE_DATA_TRANSFER \
157 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x001)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800158#define HFI_PROPERTY_PARAM_VDEC_MULTI_VIEW_SELECT \
159 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x003)
160#define HFI_PROPERTY_PARAM_VDEC_PICTURE_TYPE_DECODE \
161 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x004)
162#define HFI_PROPERTY_PARAM_VDEC_OUTPUT_ORDER \
163 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x005)
164#define HFI_PROPERTY_PARAM_VDEC_MB_QUANTIZATION \
165 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x006)
166#define HFI_PROPERTY_PARAM_VDEC_NUM_CONCEALED_MB \
167 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x007)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800168#define HFI_PROPERTY_PARAM_VDEC_OUTPUT2_KEEP_ASPECT_RATIO\
169 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x009)
170#define HFI_PROPERTY_PARAM_VDEC_FRAME_RATE_EXTRADATA \
171 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x00A)
172#define HFI_PROPERTY_PARAM_VDEC_PANSCAN_WNDW_EXTRADATA \
173 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x00B)
174#define HFI_PROPERTY_PARAM_VDEC_RECOVERY_POINT_SEI_EXTRADATA \
175 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x00C)
176#define HFI_PROPERTY_PARAM_VDEC_THUMBNAIL_MODE \
177 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x00D)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800178#define HFI_PROPERTY_PARAM_VDEC_VC1_FRAMEDISP_EXTRADATA \
179 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x011)
180#define HFI_PROPERTY_PARAM_VDEC_VC1_SEQDISP_EXTRADATA \
181 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x012)
182#define HFI_PROPERTY_PARAM_VDEC_TIMESTAMP_EXTRADATA \
183 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x013)
184#define HFI_PROPERTY_PARAM_VDEC_INTERLACE_VIDEO_EXTRADATA \
185 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x014)
186#define HFI_PROPERTY_PARAM_VDEC_AVC_SESSION_SELECT \
187 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x015)
188#define HFI_PROPERTY_PARAM_VDEC_MPEG2_SEQDISP_EXTRADATA \
189 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x016)
190#define HFI_PROPERTY_PARAM_VDEC_STREAM_USERDATA_EXTRADATA \
191 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x017)
192#define HFI_PROPERTY_PARAM_VDEC_FRAME_QP_EXTRADATA \
193 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x018)
194#define HFI_PROPERTY_PARAM_VDEC_FRAME_BITS_INFO_EXTRADATA \
195 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x019)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800196#define HFI_PROPERTY_PARAM_VUI_DISPLAY_INFO_EXTRADATA \
197 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x01B)
198#define HFI_PROPERTY_PARAM_VDEC_VQZIP_SEI_EXTRADATA \
199 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x001C)
200#define HFI_PROPERTY_PARAM_VDEC_VPX_COLORSPACE_EXTRADATA \
201 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x001D)
202#define HFI_PROPERTY_PARAM_VDEC_MASTERING_DISPLAY_COLOUR_SEI_EXTRADATA \
203 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x001E)
204#define HFI_PROPERTY_PARAM_VDEC_CONTENT_LIGHT_LEVEL_SEI_EXTRADATA \
205 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x001F)
206
207#define HFI_PROPERTY_CONFIG_VDEC_OX_START \
208 (HFI_DOMAIN_BASE_VDEC + HFI_ARCH_OX_OFFSET + 0x4000)
209#define HFI_PROPERTY_CONFIG_VDEC_POST_LOOP_DEBLOCKER \
210 (HFI_PROPERTY_CONFIG_VDEC_OX_START + 0x001)
211#define HFI_PROPERTY_CONFIG_VDEC_MB_ERROR_MAP_REPORTING \
212 (HFI_PROPERTY_CONFIG_VDEC_OX_START + 0x002)
213#define HFI_PROPERTY_CONFIG_VDEC_MB_ERROR_MAP \
214 (HFI_PROPERTY_CONFIG_VDEC_OX_START + 0x003)
215#define HFI_PROPERTY_CONFIG_VDEC_ENTROPY \
216 (HFI_PROPERTY_CONFIG_VDEC_OX_START + 0x004)
217
218#define HFI_PROPERTY_PARAM_VENC_OX_START \
219 (HFI_DOMAIN_BASE_VENC + HFI_ARCH_OX_OFFSET + 0x5000)
220#define HFI_PROPERTY_PARAM_VENC_MULTI_SLICE_INFO \
221 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x001)
222#define HFI_PROPERTY_PARAM_VENC_H264_IDR_S3D_FRAME_PACKING_NAL \
223 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x002)
224#define HFI_PROPERTY_PARAM_VENC_LTR_INFO \
225 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x003)
226#define HFI_PROPERTY_PARAM_VENC_MBI_DUMPING \
227 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x005)
228#define HFI_PROPERTY_PARAM_VENC_FRAME_QP_EXTRADATA \
229 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x006)
230#define HFI_PROPERTY_PARAM_VENC_YUVSTAT_INFO_EXTRADATA \
231 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x007)
232#define HFI_PROPERTY_PARAM_VENC_ROI_QP_EXTRADATA \
233 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x008)
234#define HFI_PROPERTY_PARAM_VENC_OVERRIDE_QP_EXTRADATA \
235 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x009)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800236#define HFI_PROPERTY_CONFIG_VENC_OX_START \
237 (HFI_DOMAIN_BASE_VENC + HFI_ARCH_OX_OFFSET + 0x6000)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800238#define HFI_PROPERTY_PARAM_VPE_OX_START \
239 (HFI_DOMAIN_BASE_VPE + HFI_ARCH_OX_OFFSET + 0x7000)
240#define HFI_PROPERTY_PARAM_VPE_COLOR_SPACE_CONVERSION \
241 (HFI_PROPERTY_PARAM_VPE_OX_START + 0x001)
242
243#define HFI_PROPERTY_CONFIG_VPE_OX_START \
244 (HFI_DOMAIN_BASE_VPE + HFI_ARCH_OX_OFFSET + 0x8000)
245
246struct hfi_batch_info {
247 u32 input_batch_count;
248 u32 output_batch_count;
249};
250
251struct hfi_buffer_count_actual {
252 u32 buffer_type;
253 u32 buffer_count_actual;
254};
255
256struct hfi_buffer_size_minimum {
257 u32 buffer_type;
258 u32 buffer_size;
259};
260
261struct hfi_buffer_requirements {
262 u32 buffer_type;
263 u32 buffer_size;
264 u32 buffer_region_size;
265 u32 buffer_hold_count;
266 u32 buffer_count_min;
267 u32 buffer_count_actual;
268 u32 contiguous;
269 u32 buffer_alignment;
270};
271
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800272struct hfi_data_payload {
273 u32 size;
274 u8 rg_data[1];
275};
276
277struct hfi_enable_picture {
278 u32 picture_type;
279};
280
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800281struct hfi_extra_data_header_config {
282 u32 type;
283 u32 buffer_type;
284 u32 version;
285 u32 port_index;
286 u32 client_extra_data_id;
287};
288
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800289struct hfi_mb_error_map {
290 u32 error_map_size;
291 u8 rg_error_map[1];
292};
293
294struct hfi_metadata_pass_through {
295 int enable;
296 u32 size;
297};
298
299struct hfi_multi_view_select {
300 u32 view_index;
301};
302
303struct hfi_hybrid_hierp {
304 u32 layers;
305};
306
307#define HFI_PRIORITY_LOW 10
308#define HFI_PRIOIRTY_MEDIUM 20
309#define HFI_PRIORITY_HIGH 30
310
311#define HFI_OUTPUT_ORDER_DISPLAY (HFI_OX_BASE + 0x1)
312#define HFI_OUTPUT_ORDER_DECODE (HFI_OX_BASE + 0x2)
313
314#define HFI_RATE_CONTROL_OFF (HFI_OX_BASE + 0x1)
315#define HFI_RATE_CONTROL_VBR_VFR (HFI_OX_BASE + 0x2)
316#define HFI_RATE_CONTROL_VBR_CFR (HFI_OX_BASE + 0x3)
317#define HFI_RATE_CONTROL_CBR_VFR (HFI_OX_BASE + 0x4)
318#define HFI_RATE_CONTROL_CBR_CFR (HFI_OX_BASE + 0x5)
319#define HFI_RATE_CONTROL_MBR_CFR (HFI_OX_BASE + 0x6)
320#define HFI_RATE_CONTROL_MBR_VFR (HFI_OX_BASE + 0x7)
321
322
323struct hfi_uncompressed_plane_actual_constraints_info {
324 u32 buffer_type;
325 u32 num_planes;
326 struct hfi_uncompressed_plane_constraints rg_plane_format[1];
327};
328
329#define HFI_CMD_SYS_OX_START \
330(HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + HFI_CMD_START_OFFSET + 0x0000)
331#define HFI_CMD_SYS_SESSION_ABORT (HFI_CMD_SYS_OX_START + 0x001)
332#define HFI_CMD_SYS_PING (HFI_CMD_SYS_OX_START + 0x002)
333
334#define HFI_CMD_SESSION_OX_START \
335(HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + HFI_CMD_START_OFFSET + 0x1000)
336#define HFI_CMD_SESSION_LOAD_RESOURCES (HFI_CMD_SESSION_OX_START + 0x001)
337#define HFI_CMD_SESSION_START (HFI_CMD_SESSION_OX_START + 0x002)
338#define HFI_CMD_SESSION_STOP (HFI_CMD_SESSION_OX_START + 0x003)
339#define HFI_CMD_SESSION_EMPTY_BUFFER (HFI_CMD_SESSION_OX_START + 0x004)
340#define HFI_CMD_SESSION_FILL_BUFFER (HFI_CMD_SESSION_OX_START + 0x005)
341#define HFI_CMD_SESSION_SUSPEND (HFI_CMD_SESSION_OX_START + 0x006)
342#define HFI_CMD_SESSION_RESUME (HFI_CMD_SESSION_OX_START + 0x007)
343#define HFI_CMD_SESSION_FLUSH (HFI_CMD_SESSION_OX_START + 0x008)
344#define HFI_CMD_SESSION_GET_PROPERTY (HFI_CMD_SESSION_OX_START + 0x009)
345#define HFI_CMD_SESSION_PARSE_SEQUENCE_HEADER \
346 (HFI_CMD_SESSION_OX_START + 0x00A)
347#define HFI_CMD_SESSION_RELEASE_BUFFERS \
348 (HFI_CMD_SESSION_OX_START + 0x00B)
349#define HFI_CMD_SESSION_RELEASE_RESOURCES \
350 (HFI_CMD_SESSION_OX_START + 0x00C)
351#define HFI_CMD_SESSION_CONTINUE (HFI_CMD_SESSION_OX_START + 0x00D)
352#define HFI_CMD_SESSION_SYNC (HFI_CMD_SESSION_OX_START + 0x00E)
353
354#define HFI_MSG_SYS_OX_START \
355(HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + HFI_MSG_START_OFFSET + 0x0000)
356#define HFI_MSG_SYS_PING_ACK (HFI_MSG_SYS_OX_START + 0x2)
357#define HFI_MSG_SYS_SESSION_ABORT_DONE (HFI_MSG_SYS_OX_START + 0x4)
358
359#define HFI_MSG_SESSION_OX_START \
360(HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + HFI_MSG_START_OFFSET + 0x1000)
361#define HFI_MSG_SESSION_LOAD_RESOURCES_DONE (HFI_MSG_SESSION_OX_START + 0x1)
362#define HFI_MSG_SESSION_START_DONE (HFI_MSG_SESSION_OX_START + 0x2)
363#define HFI_MSG_SESSION_STOP_DONE (HFI_MSG_SESSION_OX_START + 0x3)
364#define HFI_MSG_SESSION_SUSPEND_DONE (HFI_MSG_SESSION_OX_START + 0x4)
365#define HFI_MSG_SESSION_RESUME_DONE (HFI_MSG_SESSION_OX_START + 0x5)
366#define HFI_MSG_SESSION_FLUSH_DONE (HFI_MSG_SESSION_OX_START + 0x6)
367#define HFI_MSG_SESSION_EMPTY_BUFFER_DONE (HFI_MSG_SESSION_OX_START + 0x7)
368#define HFI_MSG_SESSION_FILL_BUFFER_DONE (HFI_MSG_SESSION_OX_START + 0x8)
369#define HFI_MSG_SESSION_PROPERTY_INFO (HFI_MSG_SESSION_OX_START + 0x9)
370#define HFI_MSG_SESSION_RELEASE_RESOURCES_DONE \
371 (HFI_MSG_SESSION_OX_START + 0xA)
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800372#define HFI_MSG_SESSION_RELEASE_BUFFERS_DONE \
373 (HFI_MSG_SESSION_OX_START + 0xC)
374
375#define VIDC_IFACEQ_MAX_PKT_SIZE 1024
376#define VIDC_IFACEQ_MED_PKT_SIZE 768
377#define VIDC_IFACEQ_MIN_PKT_SIZE 8
378#define VIDC_IFACEQ_VAR_SMALL_PKT_SIZE 100
379#define VIDC_IFACEQ_VAR_LARGE_PKT_SIZE 512
380#define VIDC_IFACEQ_VAR_HUGE_PKT_SIZE (1024*12)
381
382
383struct hfi_cmd_sys_session_abort_packet {
384 u32 size;
385 u32 packet_type;
386 u32 session_id;
387};
388
389struct hfi_cmd_sys_ping_packet {
390 u32 size;
391 u32 packet_type;
392 u32 client_data;
393};
394
395struct hfi_cmd_session_load_resources_packet {
396 u32 size;
397 u32 packet_type;
398 u32 session_id;
399};
400
401struct hfi_cmd_session_start_packet {
402 u32 size;
403 u32 packet_type;
404 u32 session_id;
405};
406
407struct hfi_cmd_session_stop_packet {
408 u32 size;
409 u32 packet_type;
410 u32 session_id;
411};
412
413struct hfi_cmd_session_empty_buffer_compressed_packet {
414 u32 size;
415 u32 packet_type;
416 u32 session_id;
417 u32 time_stamp_hi;
418 u32 time_stamp_lo;
419 u32 flags;
420 u32 mark_target;
421 u32 mark_data;
422 u32 offset;
423 u32 alloc_len;
424 u32 filled_len;
425 u32 input_tag;
426 u32 packet_buffer;
427 u32 extra_data_buffer;
428 u32 rgData[1];
429};
430
431struct hfi_cmd_session_empty_buffer_uncompressed_plane0_packet {
432 u32 size;
433 u32 packet_type;
434 u32 session_id;
435 u32 view_id;
436 u32 time_stamp_hi;
437 u32 time_stamp_lo;
438 u32 flags;
439 u32 mark_target;
440 u32 mark_data;
441 u32 alloc_len;
442 u32 filled_len;
443 u32 offset;
444 u32 input_tag;
445 u32 packet_buffer;
446 u32 extra_data_buffer;
447 u32 rgData[1];
448};
449
450struct hfi_cmd_session_empty_buffer_uncompressed_plane1_packet {
451 u32 flags;
452 u32 alloc_len;
453 u32 filled_len;
454 u32 offset;
455 u32 packet_buffer2;
456 u32 rgData[1];
457};
458
459struct hfi_cmd_session_empty_buffer_uncompressed_plane2_packet {
460 u32 flags;
461 u32 alloc_len;
462 u32 filled_len;
463 u32 offset;
464 u32 packet_buffer3;
465 u32 rgData[1];
466};
467
468struct hfi_cmd_session_fill_buffer_packet {
469 u32 size;
470 u32 packet_type;
471 u32 session_id;
472 u32 stream_id;
473 u32 offset;
474 u32 alloc_len;
475 u32 filled_len;
476 u32 output_tag;
477 u32 packet_buffer;
478 u32 extra_data_buffer;
479 u32 rgData[1];
480};
481
482struct hfi_cmd_session_flush_packet {
483 u32 size;
484 u32 packet_type;
485 u32 session_id;
486 u32 flush_type;
487};
488
489struct hfi_cmd_session_suspend_packet {
490 u32 size;
491 u32 packet_type;
492 u32 session_id;
493};
494
495struct hfi_cmd_session_resume_packet {
496 u32 size;
497 u32 packet_type;
498 u32 session_id;
499};
500
501struct hfi_cmd_session_get_property_packet {
502 u32 size;
503 u32 packet_type;
504 u32 session_id;
505 u32 num_properties;
506 u32 rg_property_data[1];
507};
508
509struct hfi_cmd_session_release_buffer_packet {
510 u32 size;
511 u32 packet_type;
512 u32 session_id;
513 u32 buffer_type;
514 u32 buffer_size;
515 u32 extra_data_size;
516 int response_req;
517 u32 num_buffers;
518 u32 rg_buffer_info[1];
519};
520
521struct hfi_cmd_session_release_resources_packet {
522 u32 size;
523 u32 packet_type;
524 u32 session_id;
525};
526
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800527struct hfi_msg_sys_session_abort_done_packet {
528 u32 size;
529 u32 packet_type;
530 u32 session_id;
531 u32 error_type;
532};
533
534struct hfi_msg_sys_idle_packet {
535 u32 size;
536 u32 packet_type;
537};
538
539struct hfi_msg_sys_ping_ack_packet {
540 u32 size;
541 u32 packet_type;
542 u32 client_data;
543};
544
545struct hfi_msg_sys_property_info_packet {
546 u32 size;
547 u32 packet_type;
548 u32 num_properties;
549 u32 rg_property_data[1];
550};
551
552struct hfi_msg_session_load_resources_done_packet {
553 u32 size;
554 u32 packet_type;
555 u32 session_id;
556 u32 error_type;
557};
558
559struct hfi_msg_session_start_done_packet {
560 u32 size;
561 u32 packet_type;
562 u32 session_id;
563 u32 error_type;
564};
565
566struct hfi_msg_session_stop_done_packet {
567 u32 size;
568 u32 packet_type;
569 u32 session_id;
570 u32 error_type;
571};
572
573struct hfi_msg_session_suspend_done_packet {
574 u32 size;
575 u32 packet_type;
576 u32 session_id;
577 u32 error_type;
578};
579
580struct hfi_msg_session_resume_done_packet {
581 u32 size;
582 u32 packet_type;
583 u32 session_id;
584 u32 error_type;
585};
586
587struct hfi_msg_session_flush_done_packet {
588 u32 size;
589 u32 packet_type;
590 u32 session_id;
591 u32 error_type;
592 u32 flush_type;
593};
594
Umesh Pandey3cfce632017-03-02 13:56:18 -0800595struct hfi_ubwc_cr_stats_info_type {
596 u32 cr_stats_info0;
597 u32 cr_stats_info1;
598 u32 cr_stats_info2;
599 u32 cr_stats_info3;
600 u32 cr_stats_info4;
601 u32 cr_stats_info5;
602 u32 cr_stats_info6;
603};
604
605struct hfi_frame_cr_stats_type {
606 u32 frame_index;
607 struct hfi_ubwc_cr_stats_info_type ubwc_stats_info;
608};
609
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800610struct hfi_msg_session_empty_buffer_done_packet {
611 u32 size;
612 u32 packet_type;
613 u32 session_id;
614 u32 error_type;
615 u32 offset;
616 u32 filled_len;
617 u32 input_tag;
618 u32 packet_buffer;
619 u32 extra_data_buffer;
Umesh Pandey3cfce632017-03-02 13:56:18 -0800620 u32 flags;
621 struct hfi_frame_cr_stats_type ubwc_cr_stats;
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800622 u32 rgData[0];
623};
624
625struct hfi_msg_session_fill_buffer_done_compressed_packet {
626 u32 size;
627 u32 packet_type;
628 u32 session_id;
629 u32 time_stamp_hi;
630 u32 time_stamp_lo;
631 u32 error_type;
632 u32 flags;
633 u32 mark_target;
634 u32 mark_data;
635 u32 stats;
636 u32 offset;
637 u32 alloc_len;
638 u32 filled_len;
639 u32 input_tag;
640 u32 output_tag;
641 u32 picture_type;
642 u32 packet_buffer;
643 u32 extra_data_buffer;
644 u32 rgData[0];
645};
646
647struct hfi_msg_session_fbd_uncompressed_plane0_packet {
648 u32 size;
649 u32 packet_type;
650 u32 session_id;
651 u32 stream_id;
652 u32 view_id;
653 u32 error_type;
654 u32 time_stamp_hi;
655 u32 time_stamp_lo;
656 u32 flags;
657 u32 mark_target;
658 u32 mark_data;
659 u32 stats;
660 u32 alloc_len;
661 u32 filled_len;
662 u32 offset;
663 u32 frame_width;
664 u32 frame_height;
665 u32 start_x_coord;
666 u32 start_y_coord;
667 u32 input_tag;
668 u32 input_tag2;
669 u32 output_tag;
670 u32 picture_type;
671 u32 packet_buffer;
672 u32 extra_data_buffer;
673 u32 rgData[0];
674};
675
676struct hfi_msg_session_fill_buffer_done_uncompressed_plane1_packet {
677 u32 flags;
678 u32 alloc_len;
679 u32 filled_len;
680 u32 offset;
681 u32 packet_buffer2;
682 u32 rgData[0];
683};
684
685struct hfi_msg_session_fill_buffer_done_uncompressed_plane2_packet {
686 u32 flags;
687 u32 alloc_len;
688 u32 filled_len;
689 u32 offset;
690 u32 packet_buffer3;
691 u32 rgData[0];
692};
693
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800694struct hfi_msg_session_property_info_packet {
695 u32 size;
696 u32 packet_type;
697 u32 session_id;
698 u32 num_properties;
699 u32 rg_property_data[1];
700};
701
702struct hfi_msg_session_release_resources_done_packet {
703 u32 size;
704 u32 packet_type;
705 u32 session_id;
706 u32 error_type;
707};
708
709struct hfi_msg_session_release_buffers_done_packet {
710 u32 size;
711 u32 packet_type;
712 u32 session_id;
713 u32 error_type;
714 u32 num_buffers;
715 u32 rg_buffer_info[1];
716};
717
718struct hfi_extradata_mb_quantization_payload {
719 u8 rg_mb_qp[1];
720};
721
722struct hfi_extradata_vc1_pswnd {
723 u32 ps_wnd_h_offset;
724 u32 ps_wnd_v_offset;
725 u32 ps_wnd_width;
726 u32 ps_wnd_height;
727};
728
729struct hfi_extradata_vc1_framedisp_payload {
730 u32 res_pic;
731 u32 ref;
732 u32 range_map_present;
733 u32 range_map_y;
734 u32 range_map_uv;
735 u32 num_pan_scan_wnds;
736 struct hfi_extradata_vc1_pswnd rg_ps_wnd[1];
737};
738
739struct hfi_extradata_vc1_seqdisp_payload {
740 u32 prog_seg_frm;
741 u32 uv_sampling_fmt;
742 u32 color_fmt_flag;
743 u32 color_primaries;
744 u32 transfer_char;
745 u32 mat_coeff;
746 u32 aspect_ratio;
747 u32 aspect_horiz;
748 u32 aspect_vert;
749};
750
751struct hfi_extradata_timestamp_payload {
752 u32 time_stamp_low;
753 u32 time_stamp_high;
754};
755
756
757struct hfi_extradata_s3d_frame_packing_payload {
758 u32 fpa_id;
759 int cancel_flag;
760 u32 fpa_type;
761 int quin_cunx_flag;
762 u32 content_interprtation_type;
763 int spatial_flipping_flag;
764 int frame0_flipped_flag;
765 int field_views_flag;
766 int current_frame_isFrame0_flag;
767 int frame0_self_contained_flag;
768 int frame1_self_contained_flag;
769 u32 frame0_graid_pos_x;
770 u32 frame0_graid_pos_y;
771 u32 frame1_graid_pos_x;
772 u32 frame1_graid_pos_y;
773 u32 fpa_reserved_byte;
774 u32 fpa_repetition_period;
775 int fpa_extension_flag;
776};
777
778struct hfi_extradata_interlace_video_payload {
779 u32 format;
780};
781
Umesh Pandey3cfce632017-03-02 13:56:18 -0800782struct hfi_conceal_color_type {
783 u32 value_8bit;
784 u32 value_10bit;
785};
786
Praneeth Paladugu6e6fbdb2017-01-16 15:43:01 -0800787struct hfi_extradata_num_concealed_mb_payload {
788 u32 num_mb_concealed;
789};
790
791struct hfi_extradata_sliceinfo {
792 u32 offset_in_stream;
793 u32 slice_length;
794};
795
796struct hfi_extradata_multislice_info_payload {
797 u32 num_slices;
798 struct hfi_extradata_sliceinfo rg_slice_info[1];
799};
800
801struct hfi_index_extradata_input_crop_payload {
802 u32 size;
803 u32 version;
804 u32 port_index;
805 u32 left;
806 u32 top;
807 u32 width;
808 u32 height;
809};
810
811struct hfi_index_extradata_output_crop_payload {
812 u32 size;
813 u32 version;
814 u32 port_index;
815 u32 left;
816 u32 top;
817 u32 display_width;
818 u32 display_height;
819 u32 width;
820 u32 height;
821};
822
823struct hfi_index_extradata_digital_zoom_payload {
824 u32 size;
825 u32 version;
826 u32 port_index;
827 int width;
828 int height;
829};
830
831struct hfi_index_extradata_aspect_ratio_payload {
832 u32 size;
833 u32 version;
834 u32 port_index;
835 u32 aspect_width;
836 u32 aspect_height;
837};
838struct hfi_extradata_panscan_wndw_payload {
839 u32 num_window;
840 struct hfi_extradata_vc1_pswnd wnd[1];
841};
842
843struct hfi_extradata_frame_type_payload {
844 u32 frame_rate;
845};
846
847struct hfi_extradata_recovery_point_sei_payload {
848 u32 flag;
849};
850
851struct hfi_cmd_session_continue_packet {
852 u32 size;
853 u32 packet_type;
854 u32 session_id;
855};
856
857struct hal_session {
858 struct list_head list;
859 void *session_id;
860 bool is_decoder;
861 enum hal_video_codec codec;
862 enum hal_domain domain;
863 void *device;
864};
865
866struct hal_device_data {
867 struct list_head dev_head;
868 int dev_count;
869};
870
871struct msm_vidc_fw {
872 void *cookie;
873};
874
875int hfi_process_msg_packet(u32 device_id, struct vidc_hal_msg_pkt_hdr *msg_hdr,
876 struct msm_vidc_cb_info *info);
877
878enum vidc_status hfi_process_sys_init_done_prop_read(
879 struct hfi_msg_sys_init_done_packet *pkt,
880 struct vidc_hal_sys_init_done *sys_init_done);
881
882enum vidc_status hfi_process_session_init_done_prop_read(
883 struct hfi_msg_sys_session_init_done_packet *pkt,
884 struct vidc_hal_session_init_done *session_init_done);
885
886#endif
887