blob: 57d685b1be63b8f1e8b6111bbc8b182468662772 [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)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800274
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700275#define HFI_PROPERTY_CONFIG_VDEC_OX_START \
276 (HFI_DOMAIN_BASE_VDEC + HFI_ARCH_OX_OFFSET + 0x0000)
277#define HFI_PROPERTY_CONFIG_VDEC_POST_LOOP_DEBLOCKER \
278 (HFI_PROPERTY_CONFIG_VDEC_OX_START + 0x001)
279#define HFI_PROPERTY_CONFIG_VDEC_MB_ERROR_MAP_REPORTING \
280 (HFI_PROPERTY_CONFIG_VDEC_OX_START + 0x002)
281#define HFI_PROPERTY_CONFIG_VDEC_MB_ERROR_MAP \
282 (HFI_PROPERTY_CONFIG_VDEC_OX_START + 0x003)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800283
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700284#define HFI_PROPERTY_PARAM_VENC_OX_START \
285 (HFI_DOMAIN_BASE_VENC + HFI_ARCH_OX_OFFSET + 0x5000)
Vinay Kaliadf7532d2012-07-09 11:21:16 -0700286#define HFI_PROPERTY_PARAM_VENC_MULTI_SLICE_INFO \
287 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x001)
288#define HFI_PROPERTY_PARAM_VENC_H264_IDR_S3D_FRAME_PACKING_NAL \
289 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x002)
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700290
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700291#define HFI_PROPERTY_CONFIG_VENC_OX_START \
292 (HFI_DOMAIN_BASE_VENC + HFI_ARCH_OX_OFFSET + 0x6000)
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700293#define HFI_PROPERTY_CONFIG_VENC_FRAME_QP \
294 (HFI_PROPERTY_CONFIG_VENC_OX_START + 0x001)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800295
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700296#define HFI_PROPERTY_PARAM_VPE_OX_START \
297 (HFI_DOMAIN_BASE_VPE + HFI_ARCH_OX_OFFSET + 0x7000)
298#define HFI_PROPERTY_CONFIG_VPE_OX_START \
299 (HFI_DOMAIN_BASE_VPE + HFI_ARCH_OX_OFFSET + 0x8000)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800300
301struct hfi_batch_info {
302 u32 input_batch_count;
303 u32 output_batch_count;
304};
305
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800306struct hfi_buffer_count_actual {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700307 u32 buffer_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800308 u32 buffer_count_actual;
309};
310
311struct hfi_buffer_requirements {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700312 u32 buffer_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800313 u32 buffer_size;
314 u32 buffer_region_size;
315 u32 buffer_hold_count;
316 u32 buffer_count_min;
317 u32 buffer_count_actual;
318 u32 contiguous;
319 u32 buffer_alignment;
320};
321
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700322#define HFI_CHROMA_SITE_0 (HFI_OX_BASE + 0x1)
323#define HFI_CHROMA_SITE_1 (HFI_OX_BASE + 0x2)
324#define HFI_CHROMA_SITE_2 (HFI_OX_BASE + 0x3)
325#define HFI_CHROMA_SITE_3 (HFI_OX_BASE + 0x4)
326#define HFI_CHROMA_SITE_4 (HFI_OX_BASE + 0x5)
327#define HFI_CHROMA_SITE_5 (HFI_OX_BASE + 0x6)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800328
329struct hfi_data_payload {
330 u32 size;
331 u8 rg_data[1];
332};
333
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800334struct hfi_enable_picture {
335 u32 picture_type;
336};
337
338struct hfi_display_picture_buffer_count {
339 int enable;
340 u32 count;
341};
342
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800343struct hfi_extra_data_header_config {
344 u32 type;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700345 u32 buffer_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800346 u32 version;
347 u32 port_index;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700348 u32 client_extra_data_id;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800349};
350
351struct hfi_interlace_format_supported {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700352 u32 buffer_type;
353 u32 format;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800354};
355
356struct hfi_mb_error_map {
357 u32 error_map_size;
358 u8 rg_error_map[1];
359};
360
361struct hfi_metadata_pass_through {
362 int enable;
363 u32 size;
364};
365
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800366struct hfi_multi_view_select {
367 u32 view_index;
368};
369
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700370#define HFI_PRIORITY_LOW 10
371#define HFI_PRIOIRTY_MEDIUM 20
372#define HFI_PRIORITY_HIGH 30
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800373
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700374#define HFI_OUTPUT_ORDER_DISPLAY (HFI_OX_BASE + 0x1)
375#define HFI_OUTPUT_ORDER_DECODE (HFI_OX_BASE + 0x2)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800376
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700377#define HFI_RATE_CONTROL_OFF (HFI_OX_BASE + 0x1)
378#define HFI_RATE_CONTROL_VBR_VFR (HFI_OX_BASE + 0x2)
379#define HFI_RATE_CONTROL_VBR_CFR (HFI_OX_BASE + 0x3)
380#define HFI_RATE_CONTROL_CBR_VFR (HFI_OX_BASE + 0x4)
381#define HFI_RATE_CONTROL_CBR_CFR (HFI_OX_BASE + 0x5)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800382
383struct hfi_uncompressed_plane_actual_constraints_info {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700384 u32 buffer_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800385 u32 num_planes;
386 struct hfi_uncompressed_plane_constraints rg_plane_format[1];
387};
388
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700389#define HFI_CMD_SYS_OX_START \
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700390(HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + HFI_CMD_START_OFFSET + 0x0000)
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700391#define HFI_CMD_SYS_SESSION_ABORT (HFI_CMD_SYS_OX_START + 0x001)
392#define HFI_CMD_SYS_PING (HFI_CMD_SYS_OX_START + 0x002)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800393
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700394#define HFI_CMD_SESSION_OX_START \
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700395(HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + HFI_CMD_START_OFFSET + 0x1000)
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700396#define HFI_CMD_SESSION_LOAD_RESOURCES (HFI_CMD_SESSION_OX_START + 0x001)
397#define HFI_CMD_SESSION_START (HFI_CMD_SESSION_OX_START + 0x002)
398#define HFI_CMD_SESSION_STOP (HFI_CMD_SESSION_OX_START + 0x003)
399#define HFI_CMD_SESSION_EMPTY_BUFFER (HFI_CMD_SESSION_OX_START + 0x004)
400#define HFI_CMD_SESSION_FILL_BUFFER (HFI_CMD_SESSION_OX_START + 0x005)
401#define HFI_CMD_SESSION_SUSPEND (HFI_CMD_SESSION_OX_START + 0x006)
402#define HFI_CMD_SESSION_RESUME (HFI_CMD_SESSION_OX_START + 0x007)
403#define HFI_CMD_SESSION_FLUSH (HFI_CMD_SESSION_OX_START + 0x008)
404#define HFI_CMD_SESSION_GET_PROPERTY (HFI_CMD_SESSION_OX_START + 0x009)
405#define HFI_CMD_SESSION_PARSE_SEQUENCE_HEADER \
406 (HFI_CMD_SESSION_OX_START + 0x00A)
407#define HFI_CMD_SESSION_RELEASE_BUFFERS \
408 (HFI_CMD_SESSION_OX_START + 0x00B)
409#define HFI_CMD_SESSION_RELEASE_RESOURCES \
410 (HFI_CMD_SESSION_OX_START + 0x00C)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800411
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700412#define HFI_MSG_SYS_OX_START \
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700413(HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + HFI_MSG_START_OFFSET + 0x0000)
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700414#define HFI_MSG_SYS_IDLE (HFI_MSG_SYS_OX_START + 0x1)
415#define HFI_MSG_SYS_PING_ACK (HFI_MSG_SYS_OX_START + 0x2)
416#define HFI_MSG_SYS_PROPERTY_INFO (HFI_MSG_SYS_OX_START + 0x3)
417#define HFI_MSG_SYS_SESSION_ABORT_DONE (HFI_MSG_SYS_OX_START + 0x4)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800418
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700419#define HFI_MSG_SESSION_OX_START \
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700420(HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + HFI_MSG_START_OFFSET + 0x1000)
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700421#define HFI_MSG_SESSION_LOAD_RESOURCES_DONE (HFI_MSG_SESSION_OX_START + 0x1)
422#define HFI_MSG_SESSION_START_DONE (HFI_MSG_SESSION_OX_START + 0x2)
423#define HFI_MSG_SESSION_STOP_DONE (HFI_MSG_SESSION_OX_START + 0x3)
424#define HFI_MSG_SESSION_SUSPEND_DONE (HFI_MSG_SESSION_OX_START + 0x4)
425#define HFI_MSG_SESSION_RESUME_DONE (HFI_MSG_SESSION_OX_START + 0x5)
426#define HFI_MSG_SESSION_FLUSH_DONE (HFI_MSG_SESSION_OX_START + 0x6)
427#define HFI_MSG_SESSION_EMPTY_BUFFER_DONE (HFI_MSG_SESSION_OX_START + 0x7)
428#define HFI_MSG_SESSION_FILL_BUFFER_DONE (HFI_MSG_SESSION_OX_START + 0x8)
429#define HFI_MSG_SESSION_PROPERTY_INFO (HFI_MSG_SESSION_OX_START + 0x9)
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700430#define HFI_MSG_SESSION_RELEASE_RESOURCES_DONE \
431 (HFI_MSG_SESSION_OX_START + 0xA)
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700432#define HFI_MSG_SESSION_PARSE_SEQUENCE_HEADER_DONE \
433 (HFI_MSG_SESSION_OX_START + 0xB)
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700434#define HFI_MSG_SESSION_RELEASE_BUFFERS_DONE \
435 (HFI_MSG_SESSION_OX_START + 0xC)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800436
437struct hfi_cmd_sys_session_abort_packet {
438 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700439 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800440 u32 session_id;
441};
442
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800443struct hfi_cmd_sys_ping_packet {
444 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700445 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800446 u32 client_data;
447};
448
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800449struct hfi_cmd_session_load_resources_packet {
450 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700451 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800452 u32 session_id;
453};
454
455struct hfi_cmd_session_start_packet {
456 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700457 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800458 u32 session_id;
459};
460
461struct hfi_cmd_session_stop_packet {
462 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700463 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800464 u32 session_id;
465};
466
467struct hfi_cmd_session_empty_buffer_compressed_packet {
468 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700469 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800470 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700471 u32 time_stamp_hi;
472 u32 time_stamp_lo;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800473 u32 flags;
474 u32 mark_target;
475 u32 mark_data;
476 u32 offset;
477 u32 alloc_len;
478 u32 filled_len;
479 u32 input_tag;
480 u8 *packet_buffer;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700481 u8 *extra_data_buffer;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800482};
483
484struct hfi_cmd_session_empty_buffer_uncompressed_plane0_packet {
485 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700486 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800487 u32 session_id;
488 u32 view_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700489 u32 time_stamp_hi;
490 u32 time_stamp_lo;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800491 u32 flags;
492 u32 mark_target;
493 u32 mark_data;
494 u32 alloc_len;
495 u32 filled_len;
496 u32 offset;
497 u32 input_tag;
498 u8 *packet_buffer;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700499 u8 *extra_data_buffer;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800500};
501
502struct hfi_cmd_session_empty_buffer_uncompressed_plane1_packet {
503 u32 flags;
504 u32 alloc_len;
505 u32 filled_len;
506 u32 offset;
507 u8 *packet_buffer2;
508};
509
510struct hfi_cmd_session_empty_buffer_uncompressed_plane2_packet {
511 u32 flags;
512 u32 alloc_len;
513 u32 filled_len;
514 u32 offset;
515 u8 *packet_buffer3;
516};
517
518struct hfi_cmd_session_fill_buffer_packet {
519 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700520 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800521 u32 session_id;
522 u32 stream_id;
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700523 u32 offset;
524 u32 alloc_len;
525 u32 filled_len;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700526 u32 output_tag;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800527 u8 *packet_buffer;
528 u8 *extra_data_buffer;
529};
530
531struct hfi_cmd_session_flush_packet {
532 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700533 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800534 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700535 u32 flush_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800536};
537
538struct hfi_cmd_session_suspend_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;
542};
543
544struct hfi_cmd_session_resume_packet {
545 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700546 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800547 u32 session_id;
548};
549
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800550struct hfi_cmd_session_get_property_packet {
551 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700552 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800553 u32 session_id;
554 u32 num_properties;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700555 u32 rg_property_data[1];
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800556};
557
558struct hfi_cmd_session_release_buffer_packet {
559 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700560 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800561 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700562 u32 buffer_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800563 u32 buffer_size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700564 u32 extra_data_size;
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700565 int response_req;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800566 u32 num_buffers;
567 u32 rg_buffer_info[1];
568};
569
570struct hfi_cmd_session_release_resources_packet {
571 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700572 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800573 u32 session_id;
574};
575
576struct hfi_cmd_session_parse_sequence_header_packet {
577 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700578 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800579 u32 session_id;
580 u32 header_len;
581 u8 *packet_buffer;
582};
583
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800584struct hfi_msg_sys_session_abort_done_packet {
585 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700586 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800587 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700588 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800589};
590
591struct hfi_msg_sys_idle_packet {
592 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700593 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800594};
595
596struct hfi_msg_sys_ping_ack_packet {
597 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700598 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800599 u32 client_data;
600};
601
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800602struct hfi_msg_sys_property_info_packet {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700603 u32 size;
604 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800605 u32 num_properties;
606 u32 rg_property_data[1];
607};
608
609struct hfi_msg_session_load_resources_done_packet {
610 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700611 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800612 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700613 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800614};
615
616struct hfi_msg_session_start_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_stop_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_suspend_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_resume_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;
642};
643
644struct hfi_msg_session_flush_done_packet {
645 u32 size;
646 u32 packet_type;
647 u32 session_id;
648 u32 error_type;
649 u32 flush_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800650};
651
652struct hfi_msg_session_empty_buffer_done_packet {
653 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700654 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800655 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700656 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800657 u32 offset;
658 u32 filled_len;
659 u32 input_tag;
660 u8 *packet_buffer;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700661 u8 *extra_data_buffer;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800662};
663
664struct hfi_msg_session_fill_buffer_done_compressed_packet {
665 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700666 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800667 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700668 u32 time_stamp_hi;
669 u32 time_stamp_lo;
670 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800671 u32 flags;
672 u32 mark_target;
673 u32 mark_data;
674 u32 stats;
675 u32 offset;
676 u32 alloc_len;
677 u32 filled_len;
678 u32 input_tag;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700679 u32 output_tag;
680 u32 picture_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800681 u8 *packet_buffer;
682 u8 *extra_data_buffer;
683};
684
685struct hfi_msg_session_fbd_uncompressed_plane0_packet {
686 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700687 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800688 u32 session_id;
689 u32 stream_id;
690 u32 view_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700691 u32 error_type;
692 u32 time_stamp_hi;
693 u32 time_stamp_lo;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800694 u32 flags;
695 u32 mark_target;
696 u32 mark_data;
697 u32 stats;
698 u32 alloc_len;
699 u32 filled_len;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700700 u32 offset;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800701 u32 frame_width;
702 u32 frame_height;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700703 u32 start_x_coord;
704 u32 start_y_coord;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800705 u32 input_tag;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700706 u32 input_tag2;
707 u32 output_tag;
708 u32 picture_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800709 u8 *packet_buffer;
710 u8 *extra_data_buffer;
711};
712
713struct hfi_msg_session_fill_buffer_done_uncompressed_plane1_packet {
714 u32 flags;
715 u32 alloc_len;
716 u32 filled_len;
717 u32 offset;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700718 u8 *packet_buffer2;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800719};
720
721struct hfi_msg_session_fill_buffer_done_uncompressed_plane2_packet {
722 u32 flags;
723 u32 alloc_len;
724 u32 filled_len;
725 u32 offset;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700726 u8 *packet_buffer3;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800727};
728
729struct hfi_msg_session_parse_sequence_header_done_packet {
730 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700731 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800732 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700733 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800734 u32 num_properties;
735 u32 rg_property_data[1];
736};
737
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800738struct hfi_msg_session_property_info_packet {
739 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700740 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800741 u32 session_id;
742 u32 num_properties;
743 u32 rg_property_data[1];
744};
745
746struct hfi_msg_session_release_resources_done_packet {
747 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700748 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800749 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700750 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800751};
752
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700753struct hfi_msg_session_release_buffers_done_packet {
754 u32 size;
755 u32 packet_type;
756 u32 session_id;
757 u32 error_type;
758 u32 num_buffers;
759 u32 rg_buffer_info[1];
760};
761
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800762struct hfi_extradata_mb_quantization_payload {
763 u8 rg_mb_qp[1];
764};
765
766struct hfi_extradata_vc1_pswnd {
767 u32 ps_wnd_h_offset;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700768 u32 ps_wnd_v_offset;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800769 u32 ps_wnd_width;
770 u32 ps_wnd_height;
771};
772
773struct hfi_extradata_vc1_framedisp_payload {
774 u32 res_pic;
775 u32 ref;
776 u32 range_map_present;
777 u32 range_map_y;
778 u32 range_map_uv;
779 u32 num_pan_scan_wnds;
780 struct hfi_extradata_vc1_pswnd rg_ps_wnd[1];
781};
782
783struct hfi_extradata_vc1_seqdisp_payload {
784 u32 prog_seg_frm;
785 u32 uv_sampling_fmt;
786 u32 color_fmt_flag;
787 u32 color_primaries;
788 u32 transfer_char;
789 u32 mat_coeff;
790 u32 aspect_ratio;
791 u32 aspect_horiz;
792 u32 aspect_vert;
793};
794
795struct hfi_extradata_timestamp_payload {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700796 u32 time_stamp_low;
797 u32 time_stamp_high;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800798};
799
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800800
801struct hfi_extradata_s3d_frame_packing_payload {
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700802 u32 fpa_id;
803 int cancel_flag;
804 u32 fpa_type;
805 int quin_cunx_flag;
806 u32 content_interprtation_type;
807 int spatial_flipping_flag;
808 int frame0_flipped_flag;
809 int field_views_flag;
810 int current_frame_isFrame0_flag;
811 int frame0_self_contained_flag;
812 int frame1_self_contained_flag;
813 u32 frame0_graid_pos_x;
814 u32 frame0_graid_pos_y;
815 u32 frame1_graid_pos_x;
816 u32 frame1_graid_pos_y;
817 u32 fpa_reserved_byte;
818 u32 fpa_repetition_period;
819 int fpa_extension_flag;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700820};
821
822struct hfi_extradata_interlace_video_payload {
823 u32 format;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800824};
825
826struct hfi_extradata_num_concealed_mb_payload {
827 u32 num_mb_concealed;
828};
829
830struct hfi_extradata_sliceinfo {
831 u32 offset_in_stream;
832 u32 slice_length;
833};
834
835struct hfi_extradata_multislice_info_payload {
836 u32 num_slices;
837 struct hfi_extradata_sliceinfo rg_slice_info[1];
838};
839
840struct hfi_index_extradata_input_crop_payload {
841 u32 size;
842 u32 version;
843 u32 port_index;
844 u32 left;
845 u32 top;
846 u32 width;
847 u32 height;
848};
849
850struct hfi_index_extradata_digital_zoom_payload {
851 u32 size;
852 u32 version;
853 u32 port_index;
854 int width;
855 int height;
856};
857
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700858struct hfi_index_extradata_aspect_ratio_payload {
859 u32 size;
860 u32 version;
861 u32 port_index;
862 u32 aspect_width;
863 u32 aspect_height;
864};
865struct hfi_extradata_panscan_wndw_payload {
866 u32 num_window;
867 struct hfi_extradata_vc1_pswnd wnd[1];
868};
869
870struct hfi_extradata_frame_type_payload {
871 u32 frame_rate;
872};
873
874struct hfi_extradata_recovery_point_sei_payload {
875 u32 flag;
876};
877
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800878struct vidc_mem_addr {
879 u8 *align_device_addr;
880 u8 *align_virtual_addr;
881 u32 mem_size;
882 struct msm_smem *mem_data;
883};
884
885struct vidc_iface_q_info {
886 void *q_hdr;
887 struct vidc_mem_addr q_array;
888};
889
890/* Internal data used in vidc_hal not exposed to msm_vidc*/
891
892struct hal_data {
893 u32 irq;
Vinay Kalia68398a42012-06-22 18:36:12 -0700894 u32 device_base_addr;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800895 u8 *register_base_addr;
896};
897
898struct hal_device {
899 struct list_head list;
900 struct list_head sess_head;
901 u32 intr_status;
902 u32 device_id;
903 spinlock_t read_lock;
904 spinlock_t write_lock;
905 void (*callback) (u32 response, void *callback);
906 struct vidc_mem_addr iface_q_table;
Ashray Kulkarni0eaa2262012-11-02 11:57:55 -0700907 struct vidc_mem_addr qdss;
908 struct vidc_mem_addr sfr;
909 struct vidc_mem_addr mem_addr;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800910 struct vidc_iface_q_info iface_queues[VIDC_IFACEQ_NUMQ];
911 struct smem_client *hal_client;
912 struct hal_data *hal_data;
913 struct workqueue_struct *vidc_workq;
914 int spur_count;
915 int reg_count;
916};
917
918struct hal_session {
919 struct list_head list;
920 u32 session_id;
921 u32 is_decoder;
922 struct hal_device *device;
923};
924
925struct hal_device_data {
926 struct list_head dev_head;
927 int dev_count;
928};
929
930extern struct hal_device_data hal_ctxt;
931
932int vidc_hal_iface_msgq_read(struct hal_device *device, void *pkt);
933int vidc_hal_iface_dbgq_read(struct hal_device *device, void *pkt);
934
935/* Interrupt Processing:*/
936void vidc_hal_response_handler(struct hal_device *device);
937
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700938#endif