blob: 0e70e30b8f3508b5503641b2c3c86c49259564a7 [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
84enum vidc_hw_reg {
85 VIDC_HWREG_CTRL_STATUS = 0x1,
86 VIDC_HWREG_QTBL_INFO = 0x2,
87 VIDC_HWREG_QTBL_ADDR = 0x3,
88 VIDC_HWREG_CTRLR_RESET = 0x4,
89 VIDC_HWREG_IFACEQ_FWRXREQ = 0x5,
90 VIDC_HWREG_IFACEQ_FWTXREQ = 0x6,
91 VIDC_HWREG_VHI_SOFTINTEN = 0x7,
92 VIDC_HWREG_VHI_SOFTINTSTATUS = 0x8,
93 VIDC_HWREG_VHI_SOFTINTCLR = 0x9,
94 VIDC_HWREG_HVI_SOFTINTEN = 0xA,
95};
96
Ashray Kulkarnife72c452012-05-29 19:52:00 -070097#define HFI_EVENT_SESSION_SEQUENCE_CHANGED (HFI_OX_BASE + 0x3)
98#define HFI_EVENT_SESSION_PROPERTY_CHANGED (HFI_OX_BASE + 0x4)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -080099
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700100#define HFI_EVENT_DATA_SEQUENCE_CHANGED_SUFFICIENT_BUFFER_RESOURCES \
101 (HFI_OX_BASE + 0x1)
102#define HFI_EVENT_DATA_SEQUENCE_CHANGED_INSUFFICIENT_BUFFER_RESOURCES \
103 (HFI_OX_BASE + 0x2)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800104
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700105#define HFI_BUFFERFLAG_EOS 0x00000001
106#define HFI_BUFFERFLAG_STARTTIME 0x00000002
107#define HFI_BUFFERFLAG_DECODEONLY 0x00000004
108#define HFI_BUFFERFLAG_DATACORRUPT 0x00000008
109#define HFI_BUFFERFLAG_ENDOFFRAME 0x00000010
110#define HFI_BUFFERFLAG_SYNCFRAME 0x00000020
111#define HFI_BUFFERFLAG_EXTRADATA 0x00000040
112#define HFI_BUFFERFLAG_CODECCONFIG 0x00000080
113#define HFI_BUFFERFLAG_TIMESTAMPINVALID 0x00000100
114#define HFI_BUFFERFLAG_READONLY 0x00000200
115#define HFI_BUFFERFLAG_ENDOFSUBFRAME 0x00000400
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800116
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700117#define HFI_ERR_SESSION_EMPTY_BUFFER_DONE_OUTPUT_PENDING \
118 (HFI_OX_BASE + 0x1001)
119#define HFI_ERR_SESSION_SAME_STATE_OPERATION \
120 (HFI_OX_BASE + 0x1002)
121#define HFI_ERR_SESSION_SYNC_FRAME_NOT_DETECTED \
122 (HFI_OX_BASE + 0x1003)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800123
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700124#define HFI_BUFFER_INTERNAL_SCRATCH (HFI_OX_BASE + 0x1)
125#define HFI_BUFFER_EXTRADATA_INPUT (HFI_OX_BASE + 0x2)
126#define HFI_BUFFER_EXTRADATA_OUTPUT (HFI_OX_BASE + 0x3)
127#define HFI_BUFFER_EXTRADATA_OUTPUT2 (HFI_OX_BASE + 0x4)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800128
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700129#define HFI_BUFFER_MODE_STATIC (HFI_OX_BASE + 0x1)
130#define HFI_BUFFER_MODE_RING (HFI_OX_BASE + 0x2)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800131
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700132#define HFI_FLUSH_INPUT (HFI_OX_BASE + 0x1)
133#define HFI_FLUSH_OUTPUT (HFI_OX_BASE + 0x2)
134#define HFI_FLUSH_OUTPUT2 (HFI_OX_BASE + 0x3)
135#define HFI_FLUSH_ALL (HFI_OX_BASE + 0x4)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800136
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700137#define HFI_EXTRADATA_NONE 0x00000000
138#define HFI_EXTRADATA_MB_QUANTIZATION 0x00000001
139#define HFI_EXTRADATA_INTERLACE_VIDEO 0x00000002
140#define HFI_EXTRADATA_VC1_FRAMEDISP 0x00000003
141#define HFI_EXTRADATA_VC1_SEQDISP 0x00000004
142#define HFI_EXTRADATA_TIMESTAMP 0x00000005
143#define HFI_EXTRADATA_S3D_FRAME_PACKING 0x00000006
Vinay Kaliadf7532d2012-07-09 11:21:16 -0700144#define HFI_EXTRADATA_EOSNAL_DETECTED 0x00000007
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700145#define HFI_EXTRADATA_MULTISLICE_INFO 0x7F100000
146#define HFI_EXTRADATA_NUM_CONCEALED_MB 0x7F100001
147#define HFI_EXTRADATA_INDEX 0x7F100002
148#define HFI_EXTRADATA_METADATA_FILLER 0x7FE00002
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800149
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700150#define HFI_INDEX_EXTRADATA_INPUT_CROP 0x0700000E
151#define HFI_INDEX_EXTRADATA_DIGITAL_ZOOM 0x07000010
152#define HFI_INDEX_EXTRADATA_ASPECT_RATIO 0x7F100003
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800153
Vinay Kaliadf7532d2012-07-09 11:21:16 -0700154struct HFI_INDEX_EXTRADATA_CONFIG_TYPE {
155 int enable;
156 u32 index_extra_data_id;
157};
158
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800159struct hfi_extradata_header {
160 u32 size;
161 u32 version;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700162 u32 port_index;
163 u32 type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800164 u32 data_size;
165 u8 rg_data[1];
166};
167
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700168#define HFI_INTERLACE_FRAME_PROGRESSIVE 0x01
169#define HFI_INTERLACE_INTERLEAVE_FRAME_TOPFIELDFIRST 0x02
170#define HFI_INTERLACE_INTERLEAVE_FRAME_BOTTOMFIELDFIRST 0x04
171#define HFI_INTERLACE_FRAME_TOPFIELDFIRST 0x08
172#define HFI_INTERLACE_FRAME_BOTTOMFIELDFIRST 0x10
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800173
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700174#define HFI_PROPERTY_SYS_OX_START \
175 (HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x0000)
176#define HFI_PROPERTY_SYS_IDLE_INDICATOR \
177 (HFI_PROPERTY_SYS_OX_START + 0x001)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800178
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700179#define HFI_PROPERTY_PARAM_OX_START \
180 (HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x1000)
181#define HFI_PROPERTY_PARAM_BUFFER_COUNT_ACTUAL \
182 (HFI_PROPERTY_PARAM_OX_START + 0x001)
183#define HFI_PROPERTY_PARAM_UNCOMPRESSED_PLANE_ACTUAL_CONSTRAINTS_INFO \
184 (HFI_PROPERTY_PARAM_OX_START + 0x002)
185#define HFI_PROPERTY_PARAM_INTERLACE_FORMAT_SUPPORTED \
186 (HFI_PROPERTY_PARAM_OX_START + 0x003)
187#define HFI_PROPERTY_PARAM_CHROMA_SITE \
188(HFI_PROPERTY_PARAM_OX_START + 0x004)
189#define HFI_PROPERTY_PARAM_EXTRA_DATA_HEADER_CONFIG \
190 (HFI_PROPERTY_PARAM_OX_START + 0x005)
Vinay Kaliadf7532d2012-07-09 11:21:16 -0700191#define HFI_PROPERTY_PARAM_INDEX_EXTRADATA \
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700192 (HFI_PROPERTY_PARAM_OX_START + 0x006)
193#define HFI_PROPERTY_PARAM_DIVX_FORMAT \
194 (HFI_PROPERTY_PARAM_OX_START + 0x007)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800195
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700196#define HFI_PROPERTY_CONFIG_OX_START \
197 (HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x02000)
198#define HFI_PROPERTY_CONFIG_BUFFER_REQUIREMENTS \
199 (HFI_PROPERTY_CONFIG_OX_START + 0x001)
200#define HFI_PROPERTY_CONFIG_REALTIME \
201 (HFI_PROPERTY_CONFIG_OX_START + 0x002)
202#define HFI_PROPERTY_CONFIG_PRIORITY \
203 (HFI_PROPERTY_CONFIG_OX_START + 0x003)
204#define HFI_PROPERTY_CONFIG_BATCH_INFO \
205 (HFI_PROPERTY_CONFIG_OX_START + 0x004)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800206
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700207#define HFI_PROPERTY_PARAM_VDEC_OX_START \
208 (HFI_DOMAIN_BASE_VDEC + HFI_ARCH_OX_OFFSET + 0x3000)
209#define HFI_PROPERTY_PARAM_VDEC_CONTINUE_DATA_TRANSFER \
210 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x001)
211#define HFI_PROPERTY_PARAM_VDEC_DISPLAY_PICTURE_BUFFER_COUNT\
212 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x002)
213#define HFI_PROPERTY_PARAM_VDEC_MULTI_VIEW_SELECT \
214 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x003)
215#define HFI_PROPERTY_PARAM_VDEC_PICTURE_TYPE_DECODE \
216 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x004)
217#define HFI_PROPERTY_PARAM_VDEC_OUTPUT_ORDER \
218 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x005)
219#define HFI_PROPERTY_PARAM_VDEC_MB_QUANTIZATION \
220 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x006)
221#define HFI_PROPERTY_PARAM_VDEC_NUM_CONCEALED_MB \
222 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x007)
223#define HFI_PROPERTY_PARAM_VDEC_H264_ENTROPY_SWITCHING \
224 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x008)
225#define HFI_PROPERTY_PARAM_VDEC_OUTPUT2_KEEP_ASPECT_RATIO\
226 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x009)
Praneeth Paladugu131aaac2012-10-16 17:30:22 -0700227#define HFI_PROPERTY_PARAM_VDEC_FRAME_RATE_EXTRADATA \
228 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x00A)
229#define HFI_PROPERTY_PARAM_VDEC_PANSCAN_WNDW_EXTRADATA \
230 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x00B)
231#define HFI_PROPERTY_PARAM_VDEC_RECOVERY_POINT_SEI_EXTRADATA \
232 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x00C)
233#define HFI_PROPERTY_PARAM_VDEC_THUMBNAIL_MODE \
234 (HFI_PROPERTY_PARAM_VDEC_OX_START + 0x00D)
235
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800236
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700237#define HFI_PROPERTY_CONFIG_VDEC_OX_START \
238 (HFI_DOMAIN_BASE_VDEC + HFI_ARCH_OX_OFFSET + 0x0000)
239#define HFI_PROPERTY_CONFIG_VDEC_POST_LOOP_DEBLOCKER \
240 (HFI_PROPERTY_CONFIG_VDEC_OX_START + 0x001)
241#define HFI_PROPERTY_CONFIG_VDEC_MB_ERROR_MAP_REPORTING \
242 (HFI_PROPERTY_CONFIG_VDEC_OX_START + 0x002)
243#define HFI_PROPERTY_CONFIG_VDEC_MB_ERROR_MAP \
244 (HFI_PROPERTY_CONFIG_VDEC_OX_START + 0x003)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800245
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700246#define HFI_PROPERTY_PARAM_VENC_OX_START \
247 (HFI_DOMAIN_BASE_VENC + HFI_ARCH_OX_OFFSET + 0x5000)
Vinay Kaliadf7532d2012-07-09 11:21:16 -0700248#define HFI_PROPERTY_PARAM_VENC_MULTI_SLICE_INFO \
249 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x001)
250#define HFI_PROPERTY_PARAM_VENC_H264_IDR_S3D_FRAME_PACKING_NAL \
251 (HFI_PROPERTY_PARAM_VENC_OX_START + 0x002)
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700252#define HFI_PROPERTY_CONFIG_VENC_OX_START \
253 (HFI_DOMAIN_BASE_VENC + HFI_ARCH_OX_OFFSET + 0x6000)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800254
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700255#define HFI_PROPERTY_PARAM_VPE_OX_START \
256 (HFI_DOMAIN_BASE_VPE + HFI_ARCH_OX_OFFSET + 0x7000)
257#define HFI_PROPERTY_CONFIG_VPE_OX_START \
258 (HFI_DOMAIN_BASE_VPE + HFI_ARCH_OX_OFFSET + 0x8000)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800259
260struct hfi_batch_info {
261 u32 input_batch_count;
262 u32 output_batch_count;
263};
264
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800265struct hfi_buffer_count_actual {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700266 u32 buffer_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800267 u32 buffer_count_actual;
268};
269
270struct hfi_buffer_requirements {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700271 u32 buffer_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800272 u32 buffer_size;
273 u32 buffer_region_size;
274 u32 buffer_hold_count;
275 u32 buffer_count_min;
276 u32 buffer_count_actual;
277 u32 contiguous;
278 u32 buffer_alignment;
279};
280
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700281#define HFI_CHROMA_SITE_0 (HFI_OX_BASE + 0x1)
282#define HFI_CHROMA_SITE_1 (HFI_OX_BASE + 0x2)
283#define HFI_CHROMA_SITE_2 (HFI_OX_BASE + 0x3)
284#define HFI_CHROMA_SITE_3 (HFI_OX_BASE + 0x4)
285#define HFI_CHROMA_SITE_4 (HFI_OX_BASE + 0x5)
286#define HFI_CHROMA_SITE_5 (HFI_OX_BASE + 0x6)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800287
288struct hfi_data_payload {
289 u32 size;
290 u8 rg_data[1];
291};
292
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800293struct hfi_enable_picture {
294 u32 picture_type;
295};
296
297struct hfi_display_picture_buffer_count {
298 int enable;
299 u32 count;
300};
301
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800302struct hfi_extra_data_header_config {
303 u32 type;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700304 u32 buffer_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800305 u32 version;
306 u32 port_index;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700307 u32 client_extra_data_id;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800308};
309
310struct hfi_interlace_format_supported {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700311 u32 buffer_type;
312 u32 format;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800313};
314
315struct hfi_mb_error_map {
316 u32 error_map_size;
317 u8 rg_error_map[1];
318};
319
320struct hfi_metadata_pass_through {
321 int enable;
322 u32 size;
323};
324
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800325struct hfi_multi_view_select {
326 u32 view_index;
327};
328
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700329#define HFI_PRIORITY_LOW 10
330#define HFI_PRIOIRTY_MEDIUM 20
331#define HFI_PRIORITY_HIGH 30
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800332
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700333#define HFI_OUTPUT_ORDER_DISPLAY (HFI_OX_BASE + 0x1)
334#define HFI_OUTPUT_ORDER_DECODE (HFI_OX_BASE + 0x2)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800335
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700336#define HFI_RATE_CONTROL_OFF (HFI_OX_BASE + 0x1)
337#define HFI_RATE_CONTROL_VBR_VFR (HFI_OX_BASE + 0x2)
338#define HFI_RATE_CONTROL_VBR_CFR (HFI_OX_BASE + 0x3)
339#define HFI_RATE_CONTROL_CBR_VFR (HFI_OX_BASE + 0x4)
340#define HFI_RATE_CONTROL_CBR_CFR (HFI_OX_BASE + 0x5)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800341
342struct hfi_uncompressed_plane_actual_constraints_info {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700343 u32 buffer_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800344 u32 num_planes;
345 struct hfi_uncompressed_plane_constraints rg_plane_format[1];
346};
347
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700348#define HFI_CMD_SYS_OX_START \
349 (HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x0000)
350#define HFI_CMD_SYS_SESSION_ABORT (HFI_CMD_SYS_OX_START + 0x001)
351#define HFI_CMD_SYS_PING (HFI_CMD_SYS_OX_START + 0x002)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800352
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700353#define HFI_CMD_SESSION_OX_START \
354 (HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x1000)
355#define HFI_CMD_SESSION_LOAD_RESOURCES (HFI_CMD_SESSION_OX_START + 0x001)
356#define HFI_CMD_SESSION_START (HFI_CMD_SESSION_OX_START + 0x002)
357#define HFI_CMD_SESSION_STOP (HFI_CMD_SESSION_OX_START + 0x003)
358#define HFI_CMD_SESSION_EMPTY_BUFFER (HFI_CMD_SESSION_OX_START + 0x004)
359#define HFI_CMD_SESSION_FILL_BUFFER (HFI_CMD_SESSION_OX_START + 0x005)
360#define HFI_CMD_SESSION_SUSPEND (HFI_CMD_SESSION_OX_START + 0x006)
361#define HFI_CMD_SESSION_RESUME (HFI_CMD_SESSION_OX_START + 0x007)
362#define HFI_CMD_SESSION_FLUSH (HFI_CMD_SESSION_OX_START + 0x008)
363#define HFI_CMD_SESSION_GET_PROPERTY (HFI_CMD_SESSION_OX_START + 0x009)
364#define HFI_CMD_SESSION_PARSE_SEQUENCE_HEADER \
365 (HFI_CMD_SESSION_OX_START + 0x00A)
366#define HFI_CMD_SESSION_RELEASE_BUFFERS \
367 (HFI_CMD_SESSION_OX_START + 0x00B)
368#define HFI_CMD_SESSION_RELEASE_RESOURCES \
369 (HFI_CMD_SESSION_OX_START + 0x00C)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800370
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700371#define HFI_MSG_SYS_OX_START \
372 (HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x0000)
373#define HFI_MSG_SYS_IDLE (HFI_MSG_SYS_OX_START + 0x1)
374#define HFI_MSG_SYS_PING_ACK (HFI_MSG_SYS_OX_START + 0x2)
375#define HFI_MSG_SYS_PROPERTY_INFO (HFI_MSG_SYS_OX_START + 0x3)
376#define HFI_MSG_SYS_SESSION_ABORT_DONE (HFI_MSG_SYS_OX_START + 0x4)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800377
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700378#define HFI_MSG_SESSION_OX_START \
379 (HFI_DOMAIN_BASE_COMMON + HFI_ARCH_OX_OFFSET + 0x1000)
380#define HFI_MSG_SESSION_LOAD_RESOURCES_DONE (HFI_MSG_SESSION_OX_START + 0x1)
381#define HFI_MSG_SESSION_START_DONE (HFI_MSG_SESSION_OX_START + 0x2)
382#define HFI_MSG_SESSION_STOP_DONE (HFI_MSG_SESSION_OX_START + 0x3)
383#define HFI_MSG_SESSION_SUSPEND_DONE (HFI_MSG_SESSION_OX_START + 0x4)
384#define HFI_MSG_SESSION_RESUME_DONE (HFI_MSG_SESSION_OX_START + 0x5)
385#define HFI_MSG_SESSION_FLUSH_DONE (HFI_MSG_SESSION_OX_START + 0x6)
386#define HFI_MSG_SESSION_EMPTY_BUFFER_DONE (HFI_MSG_SESSION_OX_START + 0x7)
387#define HFI_MSG_SESSION_FILL_BUFFER_DONE (HFI_MSG_SESSION_OX_START + 0x8)
388#define HFI_MSG_SESSION_PROPERTY_INFO (HFI_MSG_SESSION_OX_START + 0x9)
389#define HFI_MSG_SESSION_RELEASE_RESOURCES_DONE (HFI_MSG_SESSION_OX_START + 0xA)
390#define HFI_MSG_SESSION_PARSE_SEQUENCE_HEADER_DONE \
391 (HFI_MSG_SESSION_OX_START + 0xB)
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800392
393struct hfi_cmd_sys_session_abort_packet {
394 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700395 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800396 u32 session_id;
397};
398
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800399struct hfi_cmd_sys_ping_packet {
400 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700401 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800402 u32 client_data;
403};
404
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800405struct hfi_cmd_session_load_resources_packet {
406 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700407 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800408 u32 session_id;
409};
410
411struct hfi_cmd_session_start_packet {
412 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700413 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800414 u32 session_id;
415};
416
417struct hfi_cmd_session_stop_packet {
418 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700419 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800420 u32 session_id;
421};
422
423struct hfi_cmd_session_empty_buffer_compressed_packet {
424 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700425 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800426 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700427 u32 time_stamp_hi;
428 u32 time_stamp_lo;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800429 u32 flags;
430 u32 mark_target;
431 u32 mark_data;
432 u32 offset;
433 u32 alloc_len;
434 u32 filled_len;
435 u32 input_tag;
436 u8 *packet_buffer;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700437 u8 *extra_data_buffer;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800438};
439
440struct hfi_cmd_session_empty_buffer_uncompressed_plane0_packet {
441 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700442 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800443 u32 session_id;
444 u32 view_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700445 u32 time_stamp_hi;
446 u32 time_stamp_lo;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800447 u32 flags;
448 u32 mark_target;
449 u32 mark_data;
450 u32 alloc_len;
451 u32 filled_len;
452 u32 offset;
453 u32 input_tag;
454 u8 *packet_buffer;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700455 u8 *extra_data_buffer;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800456};
457
458struct hfi_cmd_session_empty_buffer_uncompressed_plane1_packet {
459 u32 flags;
460 u32 alloc_len;
461 u32 filled_len;
462 u32 offset;
463 u8 *packet_buffer2;
464};
465
466struct hfi_cmd_session_empty_buffer_uncompressed_plane2_packet {
467 u32 flags;
468 u32 alloc_len;
469 u32 filled_len;
470 u32 offset;
471 u8 *packet_buffer3;
472};
473
474struct hfi_cmd_session_fill_buffer_packet {
475 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700476 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800477 u32 session_id;
478 u32 stream_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700479 u32 output_tag;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800480 u8 *packet_buffer;
481 u8 *extra_data_buffer;
482};
483
484struct hfi_cmd_session_flush_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;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700488 u32 flush_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800489};
490
491struct hfi_cmd_session_suspend_packet {
492 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700493 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800494 u32 session_id;
495};
496
497struct hfi_cmd_session_resume_packet {
498 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700499 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800500 u32 session_id;
501};
502
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800503struct hfi_cmd_session_get_property_packet {
504 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700505 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800506 u32 session_id;
507 u32 num_properties;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700508 u32 rg_property_data[1];
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800509};
510
511struct hfi_cmd_session_release_buffer_packet {
512 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700513 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800514 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700515 u32 buffer_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800516 u32 buffer_size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700517 u32 extra_data_size;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800518 u32 num_buffers;
519 u32 rg_buffer_info[1];
520};
521
522struct hfi_cmd_session_release_resources_packet {
523 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700524 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800525 u32 session_id;
526};
527
528struct hfi_cmd_session_parse_sequence_header_packet {
529 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700530 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800531 u32 session_id;
532 u32 header_len;
533 u8 *packet_buffer;
534};
535
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800536struct hfi_msg_sys_session_abort_done_packet {
537 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700538 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800539 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700540 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800541};
542
543struct hfi_msg_sys_idle_packet {
544 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700545 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800546};
547
548struct hfi_msg_sys_ping_ack_packet {
549 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700550 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800551 u32 client_data;
552};
553
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800554struct hfi_msg_sys_property_info_packet {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700555 u32 size;
556 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800557 u32 num_properties;
558 u32 rg_property_data[1];
559};
560
561struct hfi_msg_session_load_resources_done_packet {
562 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700563 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800564 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700565 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800566};
567
568struct hfi_msg_session_start_done_packet {
569 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700570 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800571 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700572 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800573};
574
575struct hfi_msg_session_stop_done_packet {
576 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700577 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800578 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700579 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800580};
581
582struct hfi_msg_session_suspend_done_packet {
583 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700584 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800585 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700586 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800587};
588
589struct hfi_msg_session_resume_done_packet {
590 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700591 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800592 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700593 u32 error_type;
594};
595
596struct hfi_msg_session_flush_done_packet {
597 u32 size;
598 u32 packet_type;
599 u32 session_id;
600 u32 error_type;
601 u32 flush_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800602};
603
604struct hfi_msg_session_empty_buffer_done_packet {
605 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700606 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800607 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700608 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800609 u32 offset;
610 u32 filled_len;
611 u32 input_tag;
612 u8 *packet_buffer;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700613 u8 *extra_data_buffer;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800614};
615
616struct hfi_msg_session_fill_buffer_done_compressed_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 time_stamp_hi;
621 u32 time_stamp_lo;
622 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800623 u32 flags;
624 u32 mark_target;
625 u32 mark_data;
626 u32 stats;
627 u32 offset;
628 u32 alloc_len;
629 u32 filled_len;
630 u32 input_tag;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700631 u32 output_tag;
632 u32 picture_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800633 u8 *packet_buffer;
634 u8 *extra_data_buffer;
635};
636
637struct hfi_msg_session_fbd_uncompressed_plane0_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;
641 u32 stream_id;
642 u32 view_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700643 u32 error_type;
644 u32 time_stamp_hi;
645 u32 time_stamp_lo;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800646 u32 flags;
647 u32 mark_target;
648 u32 mark_data;
649 u32 stats;
650 u32 alloc_len;
651 u32 filled_len;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700652 u32 offset;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800653 u32 frame_width;
654 u32 frame_height;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700655 u32 start_x_coord;
656 u32 start_y_coord;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800657 u32 input_tag;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700658 u32 input_tag2;
659 u32 output_tag;
660 u32 picture_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800661 u8 *packet_buffer;
662 u8 *extra_data_buffer;
663};
664
665struct hfi_msg_session_fill_buffer_done_uncompressed_plane1_packet {
666 u32 flags;
667 u32 alloc_len;
668 u32 filled_len;
669 u32 offset;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700670 u8 *packet_buffer2;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800671};
672
673struct hfi_msg_session_fill_buffer_done_uncompressed_plane2_packet {
674 u32 flags;
675 u32 alloc_len;
676 u32 filled_len;
677 u32 offset;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700678 u8 *packet_buffer3;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800679};
680
681struct hfi_msg_session_parse_sequence_header_done_packet {
682 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700683 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800684 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700685 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800686 u32 num_properties;
687 u32 rg_property_data[1];
688};
689
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800690struct hfi_msg_session_property_info_packet {
691 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700692 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800693 u32 session_id;
694 u32 num_properties;
695 u32 rg_property_data[1];
696};
697
698struct hfi_msg_session_release_resources_done_packet {
699 u32 size;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700700 u32 packet_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800701 u32 session_id;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700702 u32 error_type;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800703};
704
705struct hfi_extradata_mb_quantization_payload {
706 u8 rg_mb_qp[1];
707};
708
709struct hfi_extradata_vc1_pswnd {
710 u32 ps_wnd_h_offset;
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700711 u32 ps_wnd_v_offset;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800712 u32 ps_wnd_width;
713 u32 ps_wnd_height;
714};
715
716struct hfi_extradata_vc1_framedisp_payload {
717 u32 res_pic;
718 u32 ref;
719 u32 range_map_present;
720 u32 range_map_y;
721 u32 range_map_uv;
722 u32 num_pan_scan_wnds;
723 struct hfi_extradata_vc1_pswnd rg_ps_wnd[1];
724};
725
726struct hfi_extradata_vc1_seqdisp_payload {
727 u32 prog_seg_frm;
728 u32 uv_sampling_fmt;
729 u32 color_fmt_flag;
730 u32 color_primaries;
731 u32 transfer_char;
732 u32 mat_coeff;
733 u32 aspect_ratio;
734 u32 aspect_horiz;
735 u32 aspect_vert;
736};
737
738struct hfi_extradata_timestamp_payload {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700739 u32 time_stamp_low;
740 u32 time_stamp_high;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800741};
742
743enum HFI_S3D_FP_LAYOUT {
744 HFI_S3D_FP_LAYOUT_NONE,
745 HFI_S3D_FP_LAYOUT_INTRLV_CHECKERBOARD,
746 HFI_S3D_FP_LAYOUT_INTRLV_COLUMN,
747 HFI_S3D_FP_LAYOUT_INTRLV_ROW,
748 HFI_S3D_FP_LAYOUT_SIDEBYSIDE,
749 HFI_S3D_FP_LAYOUT_TOPBOTTOM,
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700750 HFI_S3D_FP_LAYOUT_UNUSED = 0x10000000
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800751};
752
753enum HFI_S3D_FP_VIEW_ORDER {
754 HFI_S3D_FP_LEFTVIEW_FIRST,
755 HFI_S3D_FP_RIGHTVIEW_FIRST,
756 HFI_S3D_FP_UNKNOWN,
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700757 HFI_S3D_FP_VIEWORDER_UNUSED = 0x10000000
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800758};
759
760enum HFI_S3D_FP_FLIP {
761 HFI_S3D_FP_FLIP_NONE,
762 HFI_S3D_FP_FLIP_LEFT_HORIZ,
763 HFI_S3D_FP_FLIP_LEFT_VERT,
764 HFI_S3D_FP_FLIP_RIGHT_HORIZ,
765 HFI_S3D_FP_FLIP_RIGHT_VERT,
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700766 HFI_S3D_FP_FLIP_UNUSED = 0x10000000
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800767};
768
769struct hfi_extradata_s3d_frame_packing_payload {
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700770 enum HFI_S3D_FP_LAYOUT layout;
771 enum HFI_S3D_FP_VIEW_ORDER order;
772 enum HFI_S3D_FP_FLIP flip;
773 int quin_cunx;
774 u32 left_view_luma_site_x;
775 u32 left_view_luma_site_y;
776 u32 right_view_luma_site_x;
777 u32 right_view_luma_site_y;
778};
779
780struct hfi_extradata_interlace_video_payload {
781 u32 format;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800782};
783
784struct hfi_extradata_num_concealed_mb_payload {
785 u32 num_mb_concealed;
786};
787
788struct hfi_extradata_sliceinfo {
789 u32 offset_in_stream;
790 u32 slice_length;
791};
792
793struct hfi_extradata_multislice_info_payload {
794 u32 num_slices;
795 struct hfi_extradata_sliceinfo rg_slice_info[1];
796};
797
798struct hfi_index_extradata_input_crop_payload {
799 u32 size;
800 u32 version;
801 u32 port_index;
802 u32 left;
803 u32 top;
804 u32 width;
805 u32 height;
806};
807
808struct hfi_index_extradata_digital_zoom_payload {
809 u32 size;
810 u32 version;
811 u32 port_index;
812 int width;
813 int height;
814};
815
816struct vidc_mem_addr {
817 u8 *align_device_addr;
818 u8 *align_virtual_addr;
819 u32 mem_size;
820 struct msm_smem *mem_data;
821};
822
823struct vidc_iface_q_info {
824 void *q_hdr;
825 struct vidc_mem_addr q_array;
826};
827
828/* Internal data used in vidc_hal not exposed to msm_vidc*/
829
830struct hal_data {
831 u32 irq;
Vinay Kalia68398a42012-06-22 18:36:12 -0700832 u32 device_base_addr;
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800833 u8 *register_base_addr;
834};
835
836struct hal_device {
837 struct list_head list;
838 struct list_head sess_head;
839 u32 intr_status;
840 u32 device_id;
841 spinlock_t read_lock;
842 spinlock_t write_lock;
843 void (*callback) (u32 response, void *callback);
844 struct vidc_mem_addr iface_q_table;
845 struct vidc_iface_q_info iface_queues[VIDC_IFACEQ_NUMQ];
846 struct smem_client *hal_client;
847 struct hal_data *hal_data;
848 struct workqueue_struct *vidc_workq;
849 int spur_count;
850 int reg_count;
851};
852
853struct hal_session {
854 struct list_head list;
855 u32 session_id;
856 u32 is_decoder;
857 struct hal_device *device;
858};
859
860struct hal_device_data {
861 struct list_head dev_head;
862 int dev_count;
863};
864
Vinay Kaliadf7532d2012-07-09 11:21:16 -0700865struct hfi_index_extradata_aspect_ratio_payload {
866 u32 size;
867 u32 version;
868 u32 port_index;
869 u32 saspect_width;
870 u32 saspect_height;
871};
872
Ashray Kulkarni6ab782b2012-01-26 16:58:01 -0800873extern struct hal_device_data hal_ctxt;
874
875int vidc_hal_iface_msgq_read(struct hal_device *device, void *pkt);
876int vidc_hal_iface_dbgq_read(struct hal_device *device, void *pkt);
877
878/* Interrupt Processing:*/
879void vidc_hal_response_handler(struct hal_device *device);
880
Ashray Kulkarnife72c452012-05-29 19:52:00 -0700881#endif