]> bbs.cooldavid.org Git - net-next-2.6.git/blob - drivers/staging/dream/include/mach/qdsp5/qdsp5vdeccmdi.h
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel...
[net-next-2.6.git] / drivers / staging / dream / include / mach / qdsp5 / qdsp5vdeccmdi.h
1 #ifndef QDSP5VIDDECCMDI_H
2 #define QDSP5VIDDECCMDI_H
3
4 /*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*
5
6     V I D E O  D E C O D E R  I N T E R N A L  C O M M A N D S
7
8 GENERAL DESCRIPTION
9   This file contains defintions of format blocks of commands
10   that are accepted by VIDDEC Task
11
12 REFERENCES
13   None
14
15 EXTERNALIZED FUNCTIONS
16   None
17
18 Copyright(c) 1992 - 2008 by QUALCOMM, Incorporated.
19
20 This software is licensed under the terms of the GNU General Public
21 License version 2, as published by the Free Software Foundation, and
22 may be copied, distributed, and modified under those terms.
23
24 This program is distributed in the hope that it will be useful,
25 but WITHOUT ANY WARRANTY; without even the implied warranty of
26 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
27 GNU General Public License for more details.
28
29 *====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*/
30 /*===========================================================================
31
32                       EDIT HISTORY FOR FILE
33
34 This section contains comments describing changes made to this file.
35 Notice that changes are listed in reverse chronological order.
36
37 $Header: //source/qcom/qct/multimedia2/AdspSvc/7XXX/qdsp5cmd/video/qdsp5vdeccmdi.h#2 $ $DateTime: 2008/07/30 10:50:23 $ $Author: pavanr $
38 Revision History:
39
40 when       who     what, where, why
41 --------   ---     ----------------------------------------------------------
42 05/10/08   ac      initial version
43 ===========================================================================*/
44
45
46 /*
47  * Command to inform VIDDEC that new subframe packet is ready
48  */
49
50 #define VIDDEC_CMD_SUBFRAME_PKT         0x0000
51 #define VIDDEC_CMD_SUBFRAME_PKT_LEN \
52         sizeof(viddec_cmd_subframe_pkt)
53
54 #define VIDDEC_CMD_SF_INFO_1_DM_DMA_STATS_EXCHANGE_FLAG_DM              0x0000
55 #define VIDDEC_CMD_SF_INFO_1_DM_DMA_STATS_EXCHANGE_FLAG_DMA     0x0001
56
57 #define VIDDEC_CMD_SF_INFO_0_SUBFRAME_CONTI             0x0000
58 #define VIDDEC_CMD_SF_INFO_0_SUBFRAME_FIRST             0x0001
59 #define VIDDEC_CMD_SF_INFO_0_SUBFRAME_LAST              0x0002
60 #define VIDDEC_CMD_SF_INFO_0_SUBFRAME_FIRST_AND_LAST    0x0003
61
62 #define VIDDEC_CMD_CODEC_SELECTION_WORD_MPEG_4          0x0000
63 #define VIDDEC_CMD_CODEC_SELECTION_WORD_H_263_P0        0x0001
64 #define VIDDEC_CMD_CODEC_SELECTION_WORD_H_264           0x0002
65 #define VIDDEC_CMD_CODEC_SELECTION_WORD_H_263_p3        0x0003
66 #define VIDDEC_CMD_CODEC_SELECTION_WORD_RV9             0x0004
67 #define VIDDEC_CMD_CODEC_SELECTION_WORD_WMV9            0x0005
68 #define VIDDEC_CMD_CODEC_SELECTION_WORD_SMCDB           0x0006
69 #define VIDDEC_CMD_CODEC_SELECTION_WORD_QFRE            0x0007
70 #define VIDDEC_CMD_CODEC_SELECTION_WORD_VLD             0x0008
71
72 typedef struct {
73         unsigned short  cmd_id;
74         unsigned short  packet_seq_number;
75         unsigned short  codec_instance_id;
76         unsigned short  subframe_packet_size_high;
77         unsigned short  subframe_packet_size_low;
78         unsigned short  subframe_packet_high;
79         unsigned short  subframe_packet_low;
80         unsigned short  subframe_packet_partition;
81         unsigned short  statistics_packet_size_high;
82         unsigned short  statistics_packet_size_low;
83         unsigned short  statistics_packet_high;
84         unsigned short  statistics_packet_low;
85         unsigned short  statistics_partition;
86         unsigned short  subframe_info_1;
87         unsigned short  subframe_info_0;
88         unsigned short  codec_selection_word;
89         unsigned short  num_mbs;
90 } __attribute__((packed)) viddec_cmd_subframe_pkt;
91
92
93 /*
94  * Command to inform VIDDEC task that post processing is required for the frame
95  */
96
97 #define VIDDEC_CMD_PP_ENABLE            0x0001
98 #define VIDDEC_CMD_PP_ENABLE_LEN \
99         sizeof(viddec_cmd_pp_enable)
100
101 #define VIDDEC_CMD_PP_INFO_0_DM_DMA_LS_EXCHANGE_FLAG_DM         0x0000
102 #define VIDDEC_CMD_PP_INFO_0_DM_DMA_LS_EXCHANGE_FLAG_DMA        0x0001
103
104 typedef struct {
105         unsigned short  cmd_id;
106         unsigned short  packet_seq_num;
107         unsigned short  codec_instance_id;
108         unsigned short  postproc_info_0;
109         unsigned short  codec_selection_word;
110         unsigned short  pp_output_addr_high;
111         unsigned short  pp_output_addr_low;
112         unsigned short  postproc_info_1;
113         unsigned short  load_sharing_packet_size_high;
114         unsigned short  load_sharing_packet_size_low;
115         unsigned short  load_sharing_packet_high;
116         unsigned short  load_sharing_packet_low;
117         unsigned short  load_sharing_partition;
118         unsigned short  pp_param_0;
119         unsigned short  pp_param_1;
120         unsigned short  pp_param_2;
121         unsigned short  pp_param_3;
122 } __attribute__((packed)) viddec_cmd_pp_enable;
123
124
125 /*
126  * FRAME Header Packet : It is at the start of new frame
127  */
128
129 #define VIDDEC_CMD_FRAME_HEADER_PACKET  0x0002
130 #define VIDDEC_CMD_FRAME_HEADER_PACKET_LEN      \
131         sizeof(viddec_cmd_frame_header_packet)
132
133 #define VIDDEC_CMD_FRAME_INFO_0_ERROR_SKIP      0x0000
134 #define VIDDEC_CMD_FRAME_INFO_0_ERROR_BLACK     0x0800
135
136 typedef struct {
137         unsigned short  packet_id;
138         unsigned short  x_dimension;
139         unsigned short  y_dimension;
140         unsigned short  line_width;
141         unsigned short  frame_info_0;
142         unsigned short  frame_buffer_0_high;
143         unsigned short  frame_buffer_0_low;
144         unsigned short  frame_buffer_1_high;
145         unsigned short  frame_buffer_1_low;
146         unsigned short  frame_buffer_2_high;
147         unsigned short  frame_buffer_2_low;
148         unsigned short  frame_buffer_3_high;
149         unsigned short  frame_buffer_3_low;
150         unsigned short  frame_buffer_4_high;
151         unsigned short  frame_buffer_4_low;
152         unsigned short  frame_buffer_5_high;
153         unsigned short  frame_buffer_5_low;
154         unsigned short  frame_buffer_6_high;
155         unsigned short  frame_buffer_6_low;
156         unsigned short  frame_buffer_7_high;
157         unsigned short  frame_buffer_7_low;
158         unsigned short  frame_buffer_8_high;
159         unsigned short  frame_buffer_8_low;
160         unsigned short  frame_buffer_9_high;
161         unsigned short  frame_buffer_9_low;
162         unsigned short  frame_buffer_10_high;
163         unsigned short  frame_buffer_10_low;
164         unsigned short  frame_buffer_11_high;
165         unsigned short  frame_buffer_11_low;
166         unsigned short  frame_buffer_12_high;
167         unsigned short  frame_buffer_12_low;
168         unsigned short  frame_buffer_13_high;
169         unsigned short  frame_buffer_13_low;
170         unsigned short  frame_buffer_14_high;
171         unsigned short  frame_buffer_14_low;
172         unsigned short  frame_buffer_15_high;
173         unsigned short  frame_buffer_15_low;
174         unsigned short  output_frame_buffer_high;
175         unsigned short  output_frame_buffer_low;
176         unsigned short  end_of_packet_marker;
177 } __attribute__((packed)) viddec_cmd_frame_header_packet;
178
179
180 /*
181  * SLICE HEADER PACKET
182  * I-Slice and P-Slice
183  */
184
185 #define VIDDEC_CMD_SLICE_HEADER_PKT_ISLICE              0x0003
186 #define VIDDEC_CMD_SLICE_HEADER_PKT_ISLICE_LEN  \
187         sizeof(viddec_cmd_slice_header_pkt_islice)
188
189 #define VIDDEC_CMD_ISLICE_INFO_1_MOD_SLICE_TYPE_PSLICE  0x0000
190 #define VIDDEC_CMD_ISLICE_INFO_1_MOD_SLICE_TYPE_BSLICE  0x0100
191 #define VIDDEC_CMD_ISLICE_INFO_1_MOD_SLICE_TYPE_ISLICE  0x0200
192 #define VIDDEC_CMD_ISLICE_INFO_1_MOD_SLICE_TYPE_SPSLICE 0x0300
193 #define VIDDEC_CMD_ISLICE_INFO_1_MOD_SLICE_TYPE_SISLICE 0x0400
194 #define VIDDEC_CMD_ISLICE_INFO_1_NOPADDING      0x0000
195 #define VIDDEC_CMD_ISLICE_INFO_1_PADDING        0x0800
196
197 #define VIDDEC_CMD_ISLICE_EOP_MARKER            0x7FFF
198
199 typedef struct {
200         unsigned short  cmd_id;
201         unsigned short  packet_id;
202         unsigned short  slice_info_0;
203         unsigned short  slice_info_1;
204         unsigned short  slice_info_2;
205         unsigned short  num_bytes_in_rbsp_high;
206         unsigned short  num_bytes_in_rbsp_low;
207         unsigned short  num_bytes_in_rbsp_consumed;
208         unsigned short  end_of_packet_marker;
209 } __attribute__((packed)) viddec_cmd_slice_header_pkt_islice;
210
211
212 #define VIDDEC_CMD_SLICE_HEADER_PKT_PSLICE              0x0003
213 #define VIDDEC_CMD_SLICE_HEADER_PKT_PSLICE_LEN  \
214         sizeof(viddec_cmd_slice_header_pkt_pslice)
215
216
217 typedef struct {
218         unsigned short  cmd_id;
219         unsigned short  packet_id;
220         unsigned short  slice_info_0;
221         unsigned short  slice_info_1;
222         unsigned short  slice_info_2;
223         unsigned short  slice_info_3;
224         unsigned short  refidx_l0_map_tab_info_0;
225         unsigned short  refidx_l0_map_tab_info_1;
226         unsigned short  refidx_l0_map_tab_info_2;
227         unsigned short  refidx_l0_map_tab_info_3;
228         unsigned short  num_bytes_in_rbsp_high;
229         unsigned short  num_bytes_in_rbsp_low;
230         unsigned short  num_bytes_in_rbsp_consumed;
231         unsigned short  end_of_packet_marker;
232 } __attribute__((packed)) viddec_cmd_slice_header_pkt_pslice;
233
234
235 #endif