blob: c8a7d43856e6a89c5b70a5f7d67b0b1b1c6e9308 [file] [log] [blame]
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -08001/* Copyright (c) 2012, Code Aurora Forum. 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
Ashray Kulkarnife72c452012-05-29 19:52:00 -070014#ifndef __H_VIDC_HAL_H__
15#define __H_VIDC_HAL_H__
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -080016
17#include <linux/spinlock.h>
18#include <linux/mutex.h>
19#include "vidc_hal_api.h"
20#include "msm_smem.h"
Ashray Kulkarnife72c452012-05-29 19:52:00 -070021#include "vidc_hal_helper.h"
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -080022
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -080023#define HFI_MASK_QHDR_TX_TYPE 0xFF000000
24#define HFI_MASK_QHDR_RX_TYPE 0x00FF0000
25#define HFI_MASK_QHDR_PRI_TYPE 0x0000FF00
26#define HFI_MASK_QHDR_Q_ID_TYPE 0x000000FF
27#define HFI_Q_ID_HOST_TO_CTRL_CMD_Q 0x00
28#define HFI_Q_ID_CTRL_TO_HOST_MSG_Q 0x01
29#define HFI_Q_ID_CTRL_TO_HOST_DEBUG_Q 0x02
30#define HFI_MASK_QHDR_STATUS 0x000000FF
31
32#define VIDC_MAX_UNCOMPRESSED_FMT_PLANES 3
33
34#define VIDC_IFACEQ_NUMQ 3
35#define VIDC_IFACEQ_CMDQ_IDX 0
36#define VIDC_IFACEQ_MSGQ_IDX 1
37#define VIDC_IFACEQ_DBGQ_IDX 2
38
39#define VIDC_IFACEQ_MAX_PKT_SIZE 1024
40#define VIDC_IFACEQ_MED_PKT_SIZE 768
41#define VIDC_IFACEQ_MIN_PKT_SIZE 8
42#define VIDC_IFACEQ_VAR_SMALL_PKT_SIZE 100
43#define VIDC_IFACEQ_VAR_LARGE_PKT_SIZE 512
44#define VIDC_IFACEQ_MAX_BUF_COUNT 50
45#define VIDC_IFACE_MAX_PARALLEL_CLNTS 16
46#define VIDC_IFACEQ_DFLT_QHDR 0x01010000
47
48struct hfi_queue_table_header {
49 u32 qtbl_version;
50 u32 qtbl_size;
51 u32 qtbl_qhdr0_offset;
52 u32 qtbl_qhdr_size;
53 u32 qtbl_num_q;
54 u32 qtbl_num_active_q;
55};
56
57struct hfi_queue_header {
58 u32 qhdr_status;
59 u32 qhdr_start_addr;
60 u32 qhdr_type;
61 u32 qhdr_q_size;
62 u32 qhdr_pkt_size;
63 u32 qhdr_pkt_drop_cnt;
64 u32 qhdr_rx_wm;
65 u32 qhdr_tx_wm;
66 u32 qhdr_rx_req;
67 u32 qhdr_tx_req;
68 u32 qhdr_rx_irq_status;
69 u32 qhdr_tx_irq_status;
70 u32 qhdr_read_idx;
71 u32 qhdr_write_idx;
72};
73
74#define VIDC_IFACEQ_TABLE_SIZE (sizeof(struct hfi_queue_table_header) \
75 + sizeof(struct hfi_queue_header) * VIDC_IFACEQ_NUMQ)
76
Ashray Kulkarnife72c452012-05-29 19:52:00 -070077#define VIDC_IFACEQ_QUEUE_SIZE (VIDC_IFACEQ_MAX_PKT_SIZE * \
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -080078 VIDC_IFACEQ_MAX_BUF_COUNT * VIDC_IFACE_MAX_PARALLEL_CLNTS)
79
80#define VIDC_IFACEQ_GET_QHDR_START_ADDR(ptr, i) \
81 (void *)((((u32)ptr) + sizeof(struct hfi_queue_table_header)) + \
82 (i * sizeof(struct hfi_queue_header)))
83
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -070084#define QDSS_SIZE 4096
85#define SFR_SIZE 4096
86
87#define UC_SIZE (VIDC_IFACEQ_TABLE_SIZE + \
88 (VIDC_IFACEQ_QUEUE_SIZE * VIDC_IFACEQ_NUMQ) + QDSS_SIZE + SFR_SIZE)
89
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -080090enum vidc_hw_reg {
91 VIDC_HWREG_CTRL_STATUS = 0x1,
92 VIDC_HWREG_QTBL_INFO = 0x2,
93 VIDC_HWREG_QTBL_ADDR = 0x3,
94 VIDC_HWREG_CTRLR_RESET = 0x4,
95 VIDC_HWREG_IFACEQ_FWRXREQ = 0x5,
96 VIDC_HWREG_IFACEQ_FWTXREQ = 0x6,
97 VIDC_HWREG_VHI_SOFTINTEN = 0x7,
98 VIDC_HWREG_VHI_SOFTINTSTATUS = 0x8,
99 VIDC_HWREG_VHI_SOFTINTCLR = 0x9,
100 VIDC_HWREG_HVI_SOFTINTEN = 0xA,
101};
102
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700103#define HFI_EVENT_SESSION_SEQUENCE_CHANGED (HFI_OX_BASE + 0x3)
104#define HFI_EVENT_SESSION_PROPERTY_CHANGED (HFI_OX_BASE + 0x4)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800105
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700106#define HFI_EVENT_DATA_SEQUENCE_CHANGED_SUFFICIENT_BUFFER_RESOURCES \
107 (HFI_OX_BASE + 0x1)
108#define HFI_EVENT_DATA_SEQUENCE_CHANGED_INSUFFICIENT_BUFFER_RESOURCES \
109 (HFI_OX_BASE + 0x2)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800110
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700111#define HFI_BUFFERFLAG_EOS 0x00000001
112#define HFI_BUFFERFLAG_STARTTIME 0x00000002
113#define HFI_BUFFERFLAG_DECODEONLY 0x00000004
114#define HFI_BUFFERFLAG_DATACORRUPT 0x00000008
115#define HFI_BUFFERFLAG_ENDOFFRAME 0x00000010
116#define HFI_BUFFERFLAG_SYNCFRAME 0x00000020
117#define HFI_BUFFERFLAG_EXTRADATA 0x00000040
118#define HFI_BUFFERFLAG_CODECCONFIG 0x00000080
119#define HFI_BUFFERFLAG_TIMESTAMPINVALID 0x00000100
120#define HFI_BUFFERFLAG_READONLY 0x00000200
121#define HFI_BUFFERFLAG_ENDOFSUBFRAME 0x00000400
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700122#define HFI_BUFFERFLAG_EOSEQ 0x00200000
123#define HFI_BUFFERFLAG_DISCONTINUITY 0x80000000
124#define HFI_BUFFERFLAG_TEI 0x40000000
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800125
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700126#define HFI_ERR_SESSION_EMPTY_BUFFER_DONE_OUTPUT_PENDING \
127 (HFI_OX_BASE + 0x1001)
128#define HFI_ERR_SESSION_SAME_STATE_OPERATION \
129 (HFI_OX_BASE + 0x1002)
130#define HFI_ERR_SESSION_SYNC_FRAME_NOT_DETECTED \
131 (HFI_OX_BASE + 0x1003)
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700132#define HFI_ERR_SESSION_START_CODE_NOT_FOUND \
133 (HFI_OX_BASE + 0x1004)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800134
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700135#define HFI_BUFFER_INTERNAL_SCRATCH (HFI_OX_BASE + 0x1)
136#define HFI_BUFFER_EXTRADATA_INPUT (HFI_OX_BASE + 0x2)
137#define HFI_BUFFER_EXTRADATA_OUTPUT (HFI_OX_BASE + 0x3)
138#define HFI_BUFFER_EXTRADATA_OUTPUT2 (HFI_OX_BASE + 0x4)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800139
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700140#define HFI_BUFFER_MODE_STATIC (HFI_OX_BASE + 0x1)
141#define HFI_BUFFER_MODE_RING (HFI_OX_BASE + 0x2)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800142
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700143struct hfi_buffer_alloc_mode {
144 u32 buffer_type;
145 u32 buffer_mode;
146};
147
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700148#define HFI_FLUSH_INPUT (HFI_OX_BASE + 0x1)
149#define HFI_FLUSH_OUTPUT (HFI_OX_BASE + 0x2)
150#define HFI_FLUSH_OUTPUT2 (HFI_OX_BASE + 0x3)
151#define HFI_FLUSH_ALL (HFI_OX_BASE + 0x4)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800152
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700153#define HFI_EXTRADATA_NONE 0x00000000
154#define HFI_EXTRADATA_MB_QUANTIZATION 0x00000001
155#define HFI_EXTRADATA_INTERLACE_VIDEO 0x00000002
156#define HFI_EXTRADATA_VC1_FRAMEDISP 0x00000003
157#define HFI_EXTRADATA_VC1_SEQDISP 0x00000004
158#define HFI_EXTRADATA_TIMESTAMP 0x00000005
159#define HFI_EXTRADATA_S3D_FRAME_PACKING 0x00000006
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700160#define HFI_EXTRADATA_FRAME_RATE 0x00000007
161#define HFI_EXTRADATA_PANSCAN_WINDOW 0x00000008
162#define HFI_EXTRADATA_RECOVERY_POINT_SEI 0x00000009
163#define HFI_EXTRADATA_CLOSED_CAPTION_UD 0x0000000A
164#define HFI_EXTRADATA_AFD_UD 0x0000000B
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700165#define HFI_EXTRADATA_MULTISLICE_INFO 0x7F100000
166#define HFI_EXTRADATA_NUM_CONCEALED_MB 0x7F100001
167#define HFI_EXTRADATA_INDEX 0x7F100002
168#define HFI_EXTRADATA_METADATA_FILLER 0x7FE00002
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800169
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700170#define HFI_INDEX_EXTRADATA_INPUT_CROP 0x0700000E
171#define HFI_INDEX_EXTRADATA_DIGITAL_ZOOM 0x07000010
172#define HFI_INDEX_EXTRADATA_ASPECT_RATIO 0x7F100003
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800173
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700174struct hfi_index_extradata_config {
Vinay Kaliadf7532d2012-07-09 11:21:16 -0700175 int enable;
176 u32 index_extra_data_id;
177};
178
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800179struct hfi_extradata_header {
180 u32 size;
181 u32 version;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700182 u32 port_index;
183 u32 type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800184 u32 data_size;
185 u8 rg_data[1];
186};
187
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700188#define HFI_INTERLACE_FRAME_PROGRESSIVE 0x01
189#define HFI_INTERLACE_INTERLEAVE_FRAME_TOPFIELDFIRST 0x02
190#define HFI_INTERLACE_INTERLEAVE_FRAME_BOTTOMFIELDFIRST 0x04
191#define HFI_INTERLACE_FRAME_TOPFIELDFIRST 0x08
192#define HFI_INTERLACE_FRAME_BOTTOMFIELDFIRST 0x10
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800193
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700194#define HFI_PROPERTY_SYS_OX_START \
195 (HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x0000)
196#define HFI_PROPERTY_SYS_IDLE_INDICATOR \
197 (HFI_PROPERTY_SYS_OX_START + 0x001)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800198
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700199#define HFI_PROPERTY_PARAM_OX_START \
200 (HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x1000)
201#define HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL \
202 (HFI_PROPERTY_PARAM_OX_START + 0x001)
203#define HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_CONSTRAINTS_INFO \
204 (HFI_PROPERTY_PARAM_OX_START + 0x002)
205#define HFI_PROPERTY_PARAM_INTERLACE_FORMAT_SUPPORTED \
206 (HFI_PROPERTY_PARAM_OX_START + 0x003)
207#define HFI_PROPERTY_PARAM_CHROMA_SITE \
208(HFI_PROPERTY_PARAM_OX_START + 0x004)
209#define HFI_PROPERTY_PARAM_EXTRA_DATA_HEADER_CONFIG \
210 (HFI_PROPERTY_PARAM_OX_START + 0x005)
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700211#define HFI_PROPERTY_PARAM_INDEX_EXTRADATA \
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700212 (HFI_PROPERTY_PARAM_OX_START + 0x006)
213#define HFI_PROPERTY_PARAM_DIVX_FORMAT \
214 (HFI_PROPERTY_PARAM_OX_START + 0x007)
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700215#define HFI_PROPERTY_PARAM_BUFFER_ALLOC_MODE \
216 (HFI_PROPERTY_PARAM_OX_START + 0x008)
217#define HFI_PROPERTY_PARAM_S3D_FRAME_PACKING_EXTRADATA \
218 (HFI_PROPERTY_PARAM_OX_START + 0x009)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800219
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700220#define HFI_PROPERTY_CONFIG_OX_START \
221 (HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x02000)
222#define HFI_PROPERTY_CONFIG_BUFFER_REQUIREMENTS \
223 (HFI_PROPERTY_CONFIG_OX_START + 0x001)
224#define HFI_PROPERTY_CONFIG_REALTIME \
225 (HFI_PROPERTY_CONFIG_OX_START + 0x002)
226#define HFI_PROPERTY_CONFIG_PRIORITY \
227 (HFI_PROPERTY_CONFIG_OX_START + 0x003)
228#define HFI_PROPERTY_CONFIG_BATCH_INFO \
229 (HFI_PROPERTY_CONFIG_OX_START + 0x004)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800230
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700231#define HFI_PROPERTY_PARAM_VDEC_OX_START \
232 (HFI_DOMAIN_BASE_VDEC + HFI_ARCH_OX_OFFSET + 0x3000)
233#define HFI_PROPERTY_PARAM_VDEC_CONTINUE_DATA_TRANSFER \
234 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x001)
235#define HFI_PROPERTY_PARAM_VDEC_DISPLAY_PICTURE_BUFFER_COUNT\
236 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x002)
237#define HFI_PROPERTY_PARAM_VDEC_MULTI_VIEW_SELECT \
238 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x003)
239#define HFI_PROPERTY_PARAM_VDEC_PICTURE_TYPE_DECODE \
240 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x004)
241#define HFI_PROPERTY_PARAM_VDEC_OUTPUT_ORDER \
242 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x005)
243#define HFI_PROPERTY_PARAM_VDEC_MB_QUANTIZATION \
244 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x006)
245#define HFI_PROPERTY_PARAM_VDEC_NUM_CONCEALED_MB \
246 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x007)
247#define HFI_PROPERTY_PARAM_VDEC_H264_ENTROPY_SWITCHING \
248 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x008)
249#define HFI_PROPERTY_PARAM_VDEC_OUTPUT2_KEEP_ASPECT_RATIO\
250 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x009)
Praneeth Paladugu131aaac2012-10-16 17:30:22 -0700251#define HFI_PROPERTY_PARAM_VDEC_FRAME_RATE_EXTRADATA \
252 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x00A)
253#define HFI_PROPERTY_PARAM_VDEC_PANSCAN_WNDW_EXTRADATA \
254 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x00B)
255#define HFI_PROPERTY_PARAM_VDEC_RECOVERY_POINT_SEI_EXTRADATA \
256 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x00C)
257#define HFI_PROPERTY_PARAM_VDEC_THUMBNAIL_MODE \
258 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x00D)
259
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700260#define HFI_PROPERTY_PARAM_VDEC_FRAME_ASSEMBLY \
261 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x00E)
262#define HFI_PROPERTY_PARAM_VDEC_CLOSED_CAPTION_EXTRADATA \
263 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x00F)
264#define HFI_PROPERTY_PARAM_VDEC_AFD_EXTRADATA \
265 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x010)
266#define HFI_PROPERTY_PARAM_VDEC_VC1_FRAMEDISP_EXTRADATA \
267 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x011)
268#define HFI_PROPERTY_PARAM_VDEC_VC1_SEQDISP_EXTRADATA \
269 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x012)
270#define HFI_PROPERTY_PARAM_VDEC_TIMESTAMP_EXTRADATA \
271 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x013)
272#define HFI_PROPERTY_PARAM_VDEC_INTERLACE_VIDEO_EXTRADATA \
273 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x014)
Praneeth Paladugu4e4922b2012-11-27 12:17:11 -0800274#define HFI_PROPERTY_PARAM_VDEC_AVC_SESSION_SELECT \
275 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x015)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800276
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700277#define HFI_PROPERTY_CONFIG_VDEC_OX_START \
278 (HFI_DOMAIN_BASE_VDEC + HFI_ARCH_OX_OFFSET + 0x0000)
279#define HFI_PROPERTY_CONFIG_VDEC_POST_LOOP_DEBLOCKER \
280 (HFI_PROPERTY_CONFIG_VDEC_OX_START + 0x001)
281#define HFI_PROPERTY_CONFIG_VDEC_MB_ERROR_MAP_REPORTING \
282 (HFI_PROPERTY_CONFIG_VDEC_OX_START + 0x002)
283#define HFI_PROPERTY_CONFIG_VDEC_MB_ERROR_MAP \
284 (HFI_PROPERTY_CONFIG_VDEC_OX_START + 0x003)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800285
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700286#define HFI_PROPERTY_PARAM_VENC_OX_START \
287 (HFI_DOMAIN_BASE_VENC + HFI_ARCH_OX_OFFSET + 0x5000)
Vinay Kaliadf7532d2012-07-09 11:21:16 -0700288#define HFI_PROPERTY_PARAM_VENC_MULTI_SLICE_INFO \
289 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x001)
290#define HFI_PROPERTY_PARAM_VENC_H264_IDR_S3D_FRAME_PACKING_NAL \
291 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x002)
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700292
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700293#define HFI_PROPERTY_CONFIG_VENC_OX_START \
294 (HFI_DOMAIN_BASE_VENC + HFI_ARCH_OX_OFFSET + 0x6000)
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700295#define HFI_PROPERTY_CONFIG_VENC_FRAME_QP \
296 (HFI_PROPERTY_CONFIG_VENC_OX_START + 0x001)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800297
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700298#define HFI_PROPERTY_PARAM_VPE_OX_START \
299 (HFI_DOMAIN_BASE_VPE + HFI_ARCH_OX_OFFSET + 0x7000)
300#define HFI_PROPERTY_CONFIG_VPE_OX_START \
301 (HFI_DOMAIN_BASE_VPE + HFI_ARCH_OX_OFFSET + 0x8000)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800302
303struct hfi_batch_info {
304 u32 input_batch_count;
305 u32 output_batch_count;
306};
307
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800308struct hfi_buffer_count_actual {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700309 u32 buffer_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800310 u32 buffer_count_actual;
311};
312
313struct hfi_buffer_requirements {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700314 u32 buffer_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800315 u32 buffer_size;
316 u32 buffer_region_size;
317 u32 buffer_hold_count;
318 u32 buffer_count_min;
319 u32 buffer_count_actual;
320 u32 contiguous;
321 u32 buffer_alignment;
322};
323
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700324#define HFI_CHROMA_SITE_0 (HFI_OX_BASE + 0x1)
325#define HFI_CHROMA_SITE_1 (HFI_OX_BASE + 0x2)
326#define HFI_CHROMA_SITE_2 (HFI_OX_BASE + 0x3)
327#define HFI_CHROMA_SITE_3 (HFI_OX_BASE + 0x4)
328#define HFI_CHROMA_SITE_4 (HFI_OX_BASE + 0x5)
329#define HFI_CHROMA_SITE_5 (HFI_OX_BASE + 0x6)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800330
331struct hfi_data_payload {
332 u32 size;
333 u8 rg_data[1];
334};
335
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800336struct hfi_enable_picture {
337 u32 picture_type;
338};
339
340struct hfi_display_picture_buffer_count {
341 int enable;
342 u32 count;
343};
344
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800345struct hfi_extra_data_header_config {
346 u32 type;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700347 u32 buffer_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800348 u32 version;
349 u32 port_index;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700350 u32 client_extra_data_id;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800351};
352
353struct hfi_interlace_format_supported {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700354 u32 buffer_type;
355 u32 format;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800356};
357
358struct hfi_mb_error_map {
359 u32 error_map_size;
360 u8 rg_error_map[1];
361};
362
363struct hfi_metadata_pass_through {
364 int enable;
365 u32 size;
366};
367
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800368struct hfi_multi_view_select {
369 u32 view_index;
370};
371
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700372#define HFI_PRIORITY_LOW 10
373#define HFI_PRIOIRTY_MEDIUM 20
374#define HFI_PRIORITY_HIGH 30
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800375
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700376#define HFI_OUTPUT_ORDER_DISPLAY (HFI_OX_BASE + 0x1)
377#define HFI_OUTPUT_ORDER_DECODE (HFI_OX_BASE + 0x2)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800378
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700379#define HFI_RATE_CONTROL_OFF (HFI_OX_BASE + 0x1)
380#define HFI_RATE_CONTROL_VBR_VFR (HFI_OX_BASE + 0x2)
381#define HFI_RATE_CONTROL_VBR_CFR (HFI_OX_BASE + 0x3)
382#define HFI_RATE_CONTROL_CBR_VFR (HFI_OX_BASE + 0x4)
383#define HFI_RATE_CONTROL_CBR_CFR (HFI_OX_BASE + 0x5)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800384
385struct hfi_uncompressed_plane_actual_constraints_info {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700386 u32 buffer_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800387 u32 num_planes;
388 struct hfi_uncompressed_plane_constraints rg_plane_format[1];
389};
390
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700391#define HFI_CMD_SYS_OX_START \
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700392(HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + HFI_CMD_START_OFFSET + 0x0000)
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700393#define HFI_CMD_SYS_SESSION_ABORT (HFI_CMD_SYS_OX_START + 0x001)
394#define HFI_CMD_SYS_PING (HFI_CMD_SYS_OX_START + 0x002)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800395
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700396#define HFI_CMD_SESSION_OX_START \
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700397(HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + HFI_CMD_START_OFFSET + 0x1000)
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700398#define HFI_CMD_SESSION_LOAD_RESOURCES (HFI_CMD_SESSION_OX_START + 0x001)
399#define HFI_CMD_SESSION_START (HFI_CMD_SESSION_OX_START + 0x002)
400#define HFI_CMD_SESSION_STOP (HFI_CMD_SESSION_OX_START + 0x003)
401#define HFI_CMD_SESSION_EMPTY_BUFFER (HFI_CMD_SESSION_OX_START + 0x004)
402#define HFI_CMD_SESSION_FILL_BUFFER (HFI_CMD_SESSION_OX_START + 0x005)
403#define HFI_CMD_SESSION_SUSPEND (HFI_CMD_SESSION_OX_START + 0x006)
404#define HFI_CMD_SESSION_RESUME (HFI_CMD_SESSION_OX_START + 0x007)
405#define HFI_CMD_SESSION_FLUSH (HFI_CMD_SESSION_OX_START + 0x008)
406#define HFI_CMD_SESSION_GET_PROPERTY (HFI_CMD_SESSION_OX_START + 0x009)
407#define HFI_CMD_SESSION_PARSE_SEQUENCE_HEADER \
408 (HFI_CMD_SESSION_OX_START + 0x00A)
409#define HFI_CMD_SESSION_RELEASE_BUFFERS \
410 (HFI_CMD_SESSION_OX_START + 0x00B)
411#define HFI_CMD_SESSION_RELEASE_RESOURCES \
412 (HFI_CMD_SESSION_OX_START + 0x00C)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800413
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700414#define HFI_MSG_SYS_OX_START \
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700415(HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + HFI_MSG_START_OFFSET + 0x0000)
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700416#define HFI_MSG_SYS_IDLE (HFI_MSG_SYS_OX_START + 0x1)
417#define HFI_MSG_SYS_PING_ACK (HFI_MSG_SYS_OX_START + 0x2)
418#define HFI_MSG_SYS_PROPERTY_INFO (HFI_MSG_SYS_OX_START + 0x3)
419#define HFI_MSG_SYS_SESSION_ABORT_DONE (HFI_MSG_SYS_OX_START + 0x4)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800420
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700421#define HFI_MSG_SESSION_OX_START \
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700422(HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + HFI_MSG_START_OFFSET + 0x1000)
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700423#define HFI_MSG_SESSION_LOAD_RESOURCES_DONE (HFI_MSG_SESSION_OX_START + 0x1)
424#define HFI_MSG_SESSION_START_DONE (HFI_MSG_SESSION_OX_START + 0x2)
425#define HFI_MSG_SESSION_STOP_DONE (HFI_MSG_SESSION_OX_START + 0x3)
426#define HFI_MSG_SESSION_SUSPEND_DONE (HFI_MSG_SESSION_OX_START + 0x4)
427#define HFI_MSG_SESSION_RESUME_DONE (HFI_MSG_SESSION_OX_START + 0x5)
428#define HFI_MSG_SESSION_FLUSH_DONE (HFI_MSG_SESSION_OX_START + 0x6)
429#define HFI_MSG_SESSION_EMPTY_BUFFER_DONE (HFI_MSG_SESSION_OX_START + 0x7)
430#define HFI_MSG_SESSION_FILL_BUFFER_DONE (HFI_MSG_SESSION_OX_START + 0x8)
431#define HFI_MSG_SESSION_PROPERTY_INFO (HFI_MSG_SESSION_OX_START + 0x9)
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700432#define HFI_MSG_SESSION_RELEASE_RESOURCES_DONE \
433 (HFI_MSG_SESSION_OX_START + 0xA)
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700434#define HFI_MSG_SESSION_PARSE_SEQUENCE_HEADER_DONE \
435 (HFI_MSG_SESSION_OX_START + 0xB)
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700436#define HFI_MSG_SESSION_RELEASE_BUFFERS_DONE \
437 (HFI_MSG_SESSION_OX_START + 0xC)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800438
439struct hfi_cmd_sys_session_abort_packet {
440 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700441 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800442 u32 session_id;
443};
444
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800445struct hfi_cmd_sys_ping_packet {
446 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700447 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800448 u32 client_data;
449};
450
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800451struct hfi_cmd_session_load_resources_packet {
452 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700453 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800454 u32 session_id;
455};
456
457struct hfi_cmd_session_start_packet {
458 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700459 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800460 u32 session_id;
461};
462
463struct hfi_cmd_session_stop_packet {
464 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700465 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800466 u32 session_id;
467};
468
469struct hfi_cmd_session_empty_buffer_compressed_packet {
470 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700471 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800472 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700473 u32 time_stamp_hi;
474 u32 time_stamp_lo;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800475 u32 flags;
476 u32 mark_target;
477 u32 mark_data;
478 u32 offset;
479 u32 alloc_len;
480 u32 filled_len;
481 u32 input_tag;
482 u8 *packet_buffer;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700483 u8 *extra_data_buffer;
Praneeth Paladugu4e4922b2012-11-27 12:17:11 -0800484 u32 rgData[0];
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800485};
486
487struct hfi_cmd_session_empty_buffer_uncompressed_plane0_packet {
488 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700489 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800490 u32 session_id;
491 u32 view_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700492 u32 time_stamp_hi;
493 u32 time_stamp_lo;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800494 u32 flags;
495 u32 mark_target;
496 u32 mark_data;
497 u32 alloc_len;
498 u32 filled_len;
499 u32 offset;
500 u32 input_tag;
501 u8 *packet_buffer;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700502 u8 *extra_data_buffer;
Praneeth Paladugu4e4922b2012-11-27 12:17:11 -0800503 u32 rgData[0];
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800504};
505
506struct hfi_cmd_session_empty_buffer_uncompressed_plane1_packet {
507 u32 flags;
508 u32 alloc_len;
509 u32 filled_len;
510 u32 offset;
511 u8 *packet_buffer2;
Praneeth Paladugu4e4922b2012-11-27 12:17:11 -0800512 u32 rgData[0];
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800513};
514
515struct hfi_cmd_session_empty_buffer_uncompressed_plane2_packet {
516 u32 flags;
517 u32 alloc_len;
518 u32 filled_len;
519 u32 offset;
520 u8 *packet_buffer3;
Praneeth Paladugu4e4922b2012-11-27 12:17:11 -0800521 u32 rgData[0];
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800522};
523
524struct hfi_cmd_session_fill_buffer_packet {
525 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700526 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800527 u32 session_id;
528 u32 stream_id;
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700529 u32 offset;
530 u32 alloc_len;
531 u32 filled_len;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700532 u32 output_tag;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800533 u8 *packet_buffer;
534 u8 *extra_data_buffer;
Praneeth Paladugu4e4922b2012-11-27 12:17:11 -0800535 u32 rgData[0];
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800536};
537
538struct hfi_cmd_session_flush_packet {
539 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700540 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800541 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700542 u32 flush_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800543};
544
545struct hfi_cmd_session_suspend_packet {
546 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700547 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800548 u32 session_id;
549};
550
551struct hfi_cmd_session_resume_packet {
552 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700553 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800554 u32 session_id;
555};
556
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800557struct hfi_cmd_session_get_property_packet {
558 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700559 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800560 u32 session_id;
561 u32 num_properties;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700562 u32 rg_property_data[1];
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800563};
564
565struct hfi_cmd_session_release_buffer_packet {
566 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700567 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800568 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700569 u32 buffer_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800570 u32 buffer_size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700571 u32 extra_data_size;
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700572 int response_req;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800573 u32 num_buffers;
574 u32 rg_buffer_info[1];
575};
576
577struct hfi_cmd_session_release_resources_packet {
578 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700579 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800580 u32 session_id;
581};
582
583struct hfi_cmd_session_parse_sequence_header_packet {
584 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700585 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800586 u32 session_id;
587 u32 header_len;
588 u8 *packet_buffer;
589};
590
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800591struct hfi_msg_sys_session_abort_done_packet {
592 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700593 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800594 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700595 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800596};
597
598struct hfi_msg_sys_idle_packet {
599 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700600 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800601};
602
603struct hfi_msg_sys_ping_ack_packet {
604 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700605 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800606 u32 client_data;
607};
608
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800609struct hfi_msg_sys_property_info_packet {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700610 u32 size;
611 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800612 u32 num_properties;
613 u32 rg_property_data[1];
614};
615
616struct hfi_msg_session_load_resources_done_packet {
617 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700618 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800619 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700620 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800621};
622
623struct hfi_msg_session_start_done_packet {
624 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700625 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800626 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700627 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800628};
629
630struct hfi_msg_session_stop_done_packet {
631 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700632 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800633 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700634 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800635};
636
637struct hfi_msg_session_suspend_done_packet {
638 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700639 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800640 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700641 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800642};
643
644struct hfi_msg_session_resume_done_packet {
645 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700646 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800647 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700648 u32 error_type;
649};
650
651struct hfi_msg_session_flush_done_packet {
652 u32 size;
653 u32 packet_type;
654 u32 session_id;
655 u32 error_type;
656 u32 flush_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800657};
658
659struct hfi_msg_session_empty_buffer_done_packet {
660 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700661 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800662 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700663 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800664 u32 offset;
665 u32 filled_len;
666 u32 input_tag;
667 u8 *packet_buffer;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700668 u8 *extra_data_buffer;
Praneeth Paladugu4e4922b2012-11-27 12:17:11 -0800669 u32 rgData[0];
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800670};
671
672struct hfi_msg_session_fill_buffer_done_compressed_packet {
673 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700674 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800675 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700676 u32 time_stamp_hi;
677 u32 time_stamp_lo;
678 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800679 u32 flags;
680 u32 mark_target;
681 u32 mark_data;
682 u32 stats;
683 u32 offset;
684 u32 alloc_len;
685 u32 filled_len;
686 u32 input_tag;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700687 u32 output_tag;
688 u32 picture_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800689 u8 *packet_buffer;
690 u8 *extra_data_buffer;
Praneeth Paladugu4e4922b2012-11-27 12:17:11 -0800691 u32 rgData[0];
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800692};
693
694struct hfi_msg_session_fbd_uncompressed_plane0_packet {
695 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700696 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800697 u32 session_id;
698 u32 stream_id;
699 u32 view_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700700 u32 error_type;
701 u32 time_stamp_hi;
702 u32 time_stamp_lo;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800703 u32 flags;
704 u32 mark_target;
705 u32 mark_data;
706 u32 stats;
707 u32 alloc_len;
708 u32 filled_len;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700709 u32 offset;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800710 u32 frame_width;
711 u32 frame_height;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700712 u32 start_x_coord;
713 u32 start_y_coord;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800714 u32 input_tag;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700715 u32 input_tag2;
716 u32 output_tag;
717 u32 picture_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800718 u8 *packet_buffer;
719 u8 *extra_data_buffer;
Praneeth Paladugu4e4922b2012-11-27 12:17:11 -0800720 u32 rgData[0];
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800721};
722
723struct hfi_msg_session_fill_buffer_done_uncompressed_plane1_packet {
724 u32 flags;
725 u32 alloc_len;
726 u32 filled_len;
727 u32 offset;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700728 u8 *packet_buffer2;
Praneeth Paladugu4e4922b2012-11-27 12:17:11 -0800729 u32 rgData[0];
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800730};
731
732struct hfi_msg_session_fill_buffer_done_uncompressed_plane2_packet {
733 u32 flags;
734 u32 alloc_len;
735 u32 filled_len;
736 u32 offset;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700737 u8 *packet_buffer3;
Praneeth Paladugu4e4922b2012-11-27 12:17:11 -0800738 u32 rgData[0];
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800739};
740
741struct hfi_msg_session_parse_sequence_header_done_packet {
742 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700743 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800744 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700745 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800746 u32 num_properties;
747 u32 rg_property_data[1];
748};
749
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800750struct hfi_msg_session_property_info_packet {
751 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700752 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800753 u32 session_id;
754 u32 num_properties;
755 u32 rg_property_data[1];
756};
757
758struct hfi_msg_session_release_resources_done_packet {
759 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700760 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800761 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700762 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800763};
764
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700765struct hfi_msg_session_release_buffers_done_packet {
766 u32 size;
767 u32 packet_type;
768 u32 session_id;
769 u32 error_type;
770 u32 num_buffers;
771 u32 rg_buffer_info[1];
772};
773
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800774struct hfi_extradata_mb_quantization_payload {
775 u8 rg_mb_qp[1];
776};
777
778struct hfi_extradata_vc1_pswnd {
779 u32 ps_wnd_h_offset;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700780 u32 ps_wnd_v_offset;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800781 u32 ps_wnd_width;
782 u32 ps_wnd_height;
783};
784
785struct hfi_extradata_vc1_framedisp_payload {
786 u32 res_pic;
787 u32 ref;
788 u32 range_map_present;
789 u32 range_map_y;
790 u32 range_map_uv;
791 u32 num_pan_scan_wnds;
792 struct hfi_extradata_vc1_pswnd rg_ps_wnd[1];
793};
794
795struct hfi_extradata_vc1_seqdisp_payload {
796 u32 prog_seg_frm;
797 u32 uv_sampling_fmt;
798 u32 color_fmt_flag;
799 u32 color_primaries;
800 u32 transfer_char;
801 u32 mat_coeff;
802 u32 aspect_ratio;
803 u32 aspect_horiz;
804 u32 aspect_vert;
805};
806
807struct hfi_extradata_timestamp_payload {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700808 u32 time_stamp_low;
809 u32 time_stamp_high;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800810};
811
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800812
813struct hfi_extradata_s3d_frame_packing_payload {
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700814 u32 fpa_id;
815 int cancel_flag;
816 u32 fpa_type;
817 int quin_cunx_flag;
818 u32 content_interprtation_type;
819 int spatial_flipping_flag;
820 int frame0_flipped_flag;
821 int field_views_flag;
822 int current_frame_isFrame0_flag;
823 int frame0_self_contained_flag;
824 int frame1_self_contained_flag;
825 u32 frame0_graid_pos_x;
826 u32 frame0_graid_pos_y;
827 u32 frame1_graid_pos_x;
828 u32 frame1_graid_pos_y;
829 u32 fpa_reserved_byte;
830 u32 fpa_repetition_period;
831 int fpa_extension_flag;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700832};
833
834struct hfi_extradata_interlace_video_payload {
835 u32 format;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800836};
837
838struct hfi_extradata_num_concealed_mb_payload {
839 u32 num_mb_concealed;
840};
841
842struct hfi_extradata_sliceinfo {
843 u32 offset_in_stream;
844 u32 slice_length;
845};
846
847struct hfi_extradata_multislice_info_payload {
848 u32 num_slices;
849 struct hfi_extradata_sliceinfo rg_slice_info[1];
850};
851
852struct hfi_index_extradata_input_crop_payload {
853 u32 size;
854 u32 version;
855 u32 port_index;
856 u32 left;
857 u32 top;
858 u32 width;
859 u32 height;
860};
861
862struct hfi_index_extradata_digital_zoom_payload {
863 u32 size;
864 u32 version;
865 u32 port_index;
866 int width;
867 int height;
868};
869
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700870struct hfi_index_extradata_aspect_ratio_payload {
871 u32 size;
872 u32 version;
873 u32 port_index;
874 u32 aspect_width;
875 u32 aspect_height;
876};
877struct hfi_extradata_panscan_wndw_payload {
878 u32 num_window;
879 struct hfi_extradata_vc1_pswnd wnd[1];
880};
881
882struct hfi_extradata_frame_type_payload {
883 u32 frame_rate;
884};
885
886struct hfi_extradata_recovery_point_sei_payload {
887 u32 flag;
888};
889
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800890struct vidc_mem_addr {
891 u8 *align_device_addr;
892 u8 *align_virtual_addr;
893 u32 mem_size;
894 struct msm_smem *mem_data;
895};
896
897struct vidc_iface_q_info {
898 void *q_hdr;
899 struct vidc_mem_addr q_array;
900};
901
902/* Internal data used in vidc_hal not exposed to msm_vidc*/
903
904struct hal_data {
905 u32 irq;
Vinay Kalia68398a42012-06-22 18:36:12 -0700906 u32 device_base_addr;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800907 u8 *register_base_addr;
908};
909
910struct hal_device {
911 struct list_head list;
912 struct list_head sess_head;
913 u32 intr_status;
914 u32 device_id;
915 spinlock_t read_lock;
916 spinlock_t write_lock;
917 void (*callback) (u32 response, void *callback);
918 struct vidc_mem_addr iface_q_table;
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700919 struct vidc_mem_addr qdss;
920 struct vidc_mem_addr sfr;
921 struct vidc_mem_addr mem_addr;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800922 struct vidc_iface_q_info iface_queues[VIDC_IFACEQ_NUMQ];
923 struct smem_client *hal_client;
924 struct hal_data *hal_data;
925 struct workqueue_struct *vidc_workq;
926 int spur_count;
927 int reg_count;
928};
929
930struct hal_session {
931 struct list_head list;
932 u32 session_id;
933 u32 is_decoder;
934 struct hal_device *device;
935};
936
937struct hal_device_data {
938 struct list_head dev_head;
939 int dev_count;
940};
941
942extern struct hal_device_data hal_ctxt;
943
944int vidc_hal_iface_msgq_read(struct hal_device *device, void *pkt);
945int vidc_hal_iface_dbgq_read(struct hal_device *device, void *pkt);
946
947/* Interrupt Processing:*/
948void vidc_hal_response_handler(struct hal_device *device);
949
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700950#endif