Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
staging
crystalhd
crystalhd_fw_if.h
Go to the documentation of this file.
1
/***************************************************************************
2
* Copyright (c) 2005-2009, Broadcom Corporation.
3
*
4
* Name: crystalhd_fw_if . h
5
*
6
* Description:
7
* BCM70012 Firmware interface definitions.
8
*
9
* HISTORY:
10
*
11
**********************************************************************
12
* This file is part of the crystalhd device driver.
13
*
14
* This driver is free software; you can redistribute it and/or modify
15
* it under the terms of the GNU General Public License as published by
16
* the Free Software Foundation, version 2 of the License.
17
*
18
* This driver is distributed in the hope that it will be useful,
19
* but WITHOUT ANY WARRANTY; without even the implied warranty of
20
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21
* GNU General Public License for more details.
22
*
23
* You should have received a copy of the GNU General Public License
24
* along with this driver. If not, see <http://www.gnu.org/licenses/>.
25
**********************************************************************/
26
27
#ifndef _CRYSTALHD_FW_IF_H_
28
#define _CRYSTALHD_FW_IF_H_
29
30
/* TBD: Pull in only required defs into this file.. */
31
32
/* User Data Header */
33
struct
user_data
{
34
struct
user_data
*
next
;
35
uint32_t
type
;
36
uint32_t
size
;
37
};
38
39
/*------------------------------------------------------*
40
* MPEG Extension to the PPB *
41
*------------------------------------------------------*/
42
struct
ppb_mpeg
{
43
uint32_t
to_be_defined
;
44
uint32_t
valid
;
45
46
/* Always valid, defaults to picture size if no
47
sequence display extension in the stream. */
48
uint32_t
display_horizontal_size
;
49
uint32_t
display_vertical_size
;
50
51
/* MPEG_VALID_PANSCAN
52
Offsets are a copy values from the MPEG stream. */
53
uint32_t
offset_count
;
54
int32_t
horizontal_offset
[3];
55
int32_t
vertical_offset
[3];
56
57
/* MPEG_VALID_USERDATA
58
User data is in the form of a linked list. */
59
int32_t
userDataSize
;
60
struct
user_data
*
userData
;
61
62
};
63
64
65
/*------------------------------------------------------*
66
* VC1 Extension to the PPB *
67
*------------------------------------------------------*/
68
struct
ppb_vc1
{
69
uint32_t
to_be_defined
;
70
uint32_t
valid
;
71
72
/* Always valid, defaults to picture size if no
73
sequence display extension in the stream. */
74
uint32_t
display_horizontal_size
;
75
uint32_t
display_vertical_size
;
76
77
/* VC1 pan scan windows */
78
uint32_t
num_panscan_windows
;
79
int32_t
ps_horiz_offset
[4];
80
int32_t
ps_vert_offset
[4];
81
int32_t
ps_width
[4];
82
int32_t
ps_height
[4];
83
84
/* VC1_VALID_USERDATA
85
User data is in the form of a linked list. */
86
int32_t
userDataSize
;
87
struct
user_data
*
userData
;
88
89
};
90
91
/*------------------------------------------------------*
92
* H.264 Extension to the PPB *
93
*------------------------------------------------------*/
94
101
/* maximum number of model-values as for Thomson spec(standard says 5) */
102
#define MAX_FGT_MODEL_VALUE (3)
103
104
/* maximum number of intervals(as many as 256 intervals?) */
105
#define MAX_FGT_VALUE_INTERVAL (256)
106
107
struct
fgt_sei
{
108
struct
fgt_sei
*
next
;
109
unsigned
char
model_values
[3][
MAX_FGT_VALUE_INTERVAL
][
MAX_FGT_MODEL_VALUE
];
110
unsigned
char
upper_bound
[3][
MAX_FGT_VALUE_INTERVAL
];
111
unsigned
char
lower_bound
[3][
MAX_FGT_VALUE_INTERVAL
];
112
113
unsigned
char
cancel_flag
;
/* Cancel flag: 1 no film grain. */
114
unsigned
char
model_id
;
/* Model id. */
115
116
/* +unused SE based on Thomson spec */
117
unsigned
char
color_desc_flag
;
/* Separate color descrition flag. */
118
unsigned
char
bit_depth_luma
;
/* Bit depth luma minus 8. */
119
unsigned
char
bit_depth_chroma
;
/* Bit depth chroma minus 8. */
120
unsigned
char
full_range_flag
;
/* Full range flag. */
121
unsigned
char
color_primaries
;
/* Color primaries. */
122
unsigned
char
transfer_charact
;
/* Transfer characteristics. */
123
unsigned
char
matrix_coeff
;
/*< Matrix coefficients. */
124
/* -unused SE based on Thomson spec */
125
126
unsigned
char
blending_mode_id
;
/* Blending mode. */
127
unsigned
char
log2_scale_factor
;
/* Log2 scale factor (2-7). */
128
unsigned
char
comp_flag
[3];
/* Components [0,2] parameters present flag. */
129
unsigned
char
num_intervals_minus1
[3];
/* Number of intensity level intervals. */
130
unsigned
char
num_model_values
[3];
/* Number of model values. */
131
uint16_t
repetition_period
;
/* Repetition period (0-16384) */
132
133
};
134
135
struct
ppb_h264
{
136
/* 'valid' specifies which fields (or sets of
137
* fields) below are valid. If the corresponding
138
* bit in 'valid' is NOT set then that field(s)
139
* is (are) not initialized. */
140
uint32_t
valid
;
141
142
int32_t
poc_top
;
/* POC for Top Field/Frame */
143
int32_t
poc_bottom
;
/* POC for Bottom Field */
144
uint32_t
idr_pic_id
;
145
146
/* H264_VALID_PANSCAN */
147
uint32_t
pan_scan_count
;
148
int32_t
pan_scan_left
[3];
149
int32_t
pan_scan_right
[3];
150
int32_t
pan_scan_top
[3];
151
int32_t
pan_scan_bottom
[3];
152
153
/* H264_VALID_CT_TYPE */
154
uint32_t
ct_type_count
;
155
uint32_t
ct_type
[3];
156
157
/* H264_VALID_SPS_CROP */
158
int32_t
sps_crop_left
;
159
int32_t
sps_crop_right
;
160
int32_t
sps_crop_top
;
161
int32_t
sps_crop_bottom
;
162
163
/* H264_VALID_VUI */
164
uint32_t
chroma_top
;
165
uint32_t
chroma_bottom
;
166
167
/* H264_VALID_USER */
168
uint32_t
user_data_size
;
169
struct
user_data
*
user_data
;
170
171
/* H264 VALID FGT */
172
struct
fgt_sei
*
pfgt
;
173
174
};
175
176
struct
ppb
{
177
/* Common fields. */
178
uint32_t
picture_number
;
/* Ordinal display number */
179
uint32_t
video_buffer
;
/* Video (picbuf) number */
180
uint32_t
video_address
;
/* Address of picbuf Y */
181
uint32_t
video_address_uv
;
/* Address of picbuf UV */
182
uint32_t
video_stripe
;
/* Picbuf stripe */
183
uint32_t
video_width
;
/* Picbuf width */
184
uint32_t
video_height
;
/* Picbuf height */
185
186
uint32_t
channel_id
;
/* Decoder channel ID */
187
uint32_t
status
;
/* reserved */
188
uint32_t
width
;
/* pixels */
189
uint32_t
height
;
/* pixels */
190
uint32_t
chroma_format
;
/* see above */
191
uint32_t
pulldown
;
/* see above */
192
uint32_t
flags
;
/* see above */
193
uint32_t
pts
;
/* 32 LSBs of PTS */
194
uint32_t
protocol
;
/* protocolXXX (above) */
195
196
uint32_t
frame_rate
;
/* see above */
197
uint32_t
matrix_coeff
;
/* see above */
198
uint32_t
aspect_ratio
;
/* see above */
199
uint32_t
colour_primaries
;
/* see above */
200
uint32_t
transfer_char
;
/* see above */
201
uint32_t
pcr_offset
;
/* 45kHz if PCR type; else 27MHz */
202
uint32_t
n_drop
;
/* Number of pictures to be dropped */
203
204
uint32_t
custom_aspect_ratio_width_height
;
205
/* upper 16-bits is Y and lower 16-bits is X */
206
207
uint32_t
picture_tag
;
/* Indexing tag from BUD packets */
208
uint32_t
picture_done_payload
;
209
uint32_t
picture_meta_payload
;
210
uint32_t
reserved
[1];
211
212
/* Protocol-specific extensions. */
213
union
{
214
struct
ppb_h264
h264
;
215
struct
ppb_mpeg
mpeg
;
216
struct
ppb_vc1
vc1
;
217
}
other
;
218
219
};
220
221
struct
c011_pib
{
222
uint32_t
bFormatChange
;
223
uint32_t
resolution
;
224
uint32_t
channelId
;
225
uint32_t
ppbPtr
;
226
int32_t
ptsStcOffset
;
227
uint32_t
zeroPanscanValid
;
228
uint32_t
dramOutBufAddr
;
229
uint32_t
yComponent
;
230
struct
ppb
ppb
;
231
232
};
233
234
struct
dec_rsp_channel_start_video
{
235
uint32_t
command
;
236
uint32_t
sequence
;
237
uint32_t
status
;
238
uint32_t
picBuf
;
239
uint32_t
picRelBuf
;
240
uint32_t
picInfoDeliveryQ
;
241
uint32_t
picInfoReleaseQ
;
242
uint32_t
channelStatus
;
243
uint32_t
userDataDeliveryQ
;
244
uint32_t
userDataReleaseQ
;
245
uint32_t
transportStreamCaptureAddr
;
246
uint32_t
asyncEventQ
;
247
248
};
249
250
#define eCMD_C011_CMD_BASE (0x73763000)
251
252
/* host commands */
253
enum
c011_ts_cmd
{
254
eCMD_TS_GET_NEXT_PIC
= 0x7376F100,
/* debug get next picture */
255
eCMD_TS_GET_LAST_PIC
= 0x7376F102,
/* debug get last pic status */
256
eCMD_TS_READ_WRITE_MEM
= 0x7376F104,
/* debug read write memory */
257
258
/* New API commands */
259
/* General commands */
260
eCMD_C011_INIT
=
eCMD_C011_CMD_BASE
+ 0x01,
261
eCMD_C011_RESET
=
eCMD_C011_CMD_BASE
+ 0x02,
262
eCMD_C011_SELF_TEST
=
eCMD_C011_CMD_BASE
+ 0x03,
263
eCMD_C011_GET_VERSION
=
eCMD_C011_CMD_BASE
+ 0x04,
264
eCMD_C011_GPIO
=
eCMD_C011_CMD_BASE
+ 0x05,
265
eCMD_C011_DEBUG_SETUP
=
eCMD_C011_CMD_BASE
+ 0x06,
266
267
/* Decoding commands */
268
eCMD_C011_DEC_CHAN_OPEN
=
eCMD_C011_CMD_BASE
+ 0x100,
269
eCMD_C011_DEC_CHAN_CLOSE
=
eCMD_C011_CMD_BASE
+ 0x101,
270
eCMD_C011_DEC_CHAN_ACTIVATE
=
eCMD_C011_CMD_BASE
+ 0x102,
271
eCMD_C011_DEC_CHAN_STATUS
=
eCMD_C011_CMD_BASE
+ 0x103,
272
eCMD_C011_DEC_CHAN_FLUSH
=
eCMD_C011_CMD_BASE
+ 0x104,
273
eCMD_C011_DEC_CHAN_TRICK_PLAY
=
eCMD_C011_CMD_BASE
+ 0x105,
274
eCMD_C011_DEC_CHAN_TS_PIDS
=
eCMD_C011_CMD_BASE
+ 0x106,
275
eCMD_C011_DEC_CHAN_PS_STREAM_ID
=
eCMD_C011_CMD_BASE
+ 0x107,
276
eCMD_C011_DEC_CHAN_INPUT_PARAMS
=
eCMD_C011_CMD_BASE
+ 0x108,
277
eCMD_C011_DEC_CHAN_VIDEO_OUTPUT
=
eCMD_C011_CMD_BASE
+ 0x109,
278
eCMD_C011_DEC_CHAN_OUTPUT_FORMAT
=
eCMD_C011_CMD_BASE
+ 0x10A,
279
eCMD_C011_DEC_CHAN_SCALING_FILTERS
=
eCMD_C011_CMD_BASE
+ 0x10B,
280
eCMD_C011_DEC_CHAN_OSD_MODE
=
eCMD_C011_CMD_BASE
+ 0x10D,
281
eCMD_C011_DEC_CHAN_DROP
=
eCMD_C011_CMD_BASE
+ 0x10E,
282
eCMD_C011_DEC_CHAN_RELEASE
=
eCMD_C011_CMD_BASE
+ 0x10F,
283
eCMD_C011_DEC_CHAN_STREAM_SETTINGS
=
eCMD_C011_CMD_BASE
+ 0x110,
284
eCMD_C011_DEC_CHAN_PAUSE_OUTPUT
=
eCMD_C011_CMD_BASE
+ 0x111,
285
eCMD_C011_DEC_CHAN_CHANGE
=
eCMD_C011_CMD_BASE
+ 0x112,
286
eCMD_C011_DEC_CHAN_SET_STC
=
eCMD_C011_CMD_BASE
+ 0x113,
287
eCMD_C011_DEC_CHAN_SET_PTS
=
eCMD_C011_CMD_BASE
+ 0x114,
288
eCMD_C011_DEC_CHAN_CC_MODE
=
eCMD_C011_CMD_BASE
+ 0x115,
289
eCMD_C011_DEC_CREATE_AUDIO_CONTEXT
=
eCMD_C011_CMD_BASE
+ 0x116,
290
eCMD_C011_DEC_COPY_AUDIO_CONTEXT
=
eCMD_C011_CMD_BASE
+ 0x117,
291
eCMD_C011_DEC_DELETE_AUDIO_CONTEXT
=
eCMD_C011_CMD_BASE
+ 0x118,
292
eCMD_C011_DEC_CHAN_SET_DECYPTION
=
eCMD_C011_CMD_BASE
+ 0x119,
293
eCMD_C011_DEC_CHAN_START_VIDEO
=
eCMD_C011_CMD_BASE
+ 0x11A,
294
eCMD_C011_DEC_CHAN_STOP_VIDEO
=
eCMD_C011_CMD_BASE
+ 0x11B,
295
eCMD_C011_DEC_CHAN_PIC_CAPTURE
=
eCMD_C011_CMD_BASE
+ 0x11C,
296
eCMD_C011_DEC_CHAN_PAUSE
=
eCMD_C011_CMD_BASE
+ 0x11D,
297
eCMD_C011_DEC_CHAN_PAUSE_STATE
=
eCMD_C011_CMD_BASE
+ 0x11E,
298
eCMD_C011_DEC_CHAN_SET_SLOWM_RATE
=
eCMD_C011_CMD_BASE
+ 0x11F,
299
eCMD_C011_DEC_CHAN_GET_SLOWM_RATE
=
eCMD_C011_CMD_BASE
+ 0x120,
300
eCMD_C011_DEC_CHAN_SET_FF_RATE
=
eCMD_C011_CMD_BASE
+ 0x121,
301
eCMD_C011_DEC_CHAN_GET_FF_RATE
=
eCMD_C011_CMD_BASE
+ 0x122,
302
eCMD_C011_DEC_CHAN_FRAME_ADVANCE
=
eCMD_C011_CMD_BASE
+ 0x123,
303
eCMD_C011_DEC_CHAN_SET_SKIP_PIC_MODE
=
eCMD_C011_CMD_BASE
+ 0x124,
304
eCMD_C011_DEC_CHAN_GET_SKIP_PIC_MODE
=
eCMD_C011_CMD_BASE
+ 0x125,
305
eCMD_C011_DEC_CHAN_FILL_PIC_BUF
=
eCMD_C011_CMD_BASE
+ 0x126,
306
eCMD_C011_DEC_CHAN_SET_CONTINUITY_CHECK
=
eCMD_C011_CMD_BASE
+ 0x127,
307
eCMD_C011_DEC_CHAN_GET_CONTINUITY_CHECK
=
eCMD_C011_CMD_BASE
+ 0x128,
308
eCMD_C011_DEC_CHAN_SET_BRCM_TRICK_MODE
=
eCMD_C011_CMD_BASE
+ 0x129,
309
eCMD_C011_DEC_CHAN_GET_BRCM_TRICK_MODE
=
eCMD_C011_CMD_BASE
+ 0x12A,
310
eCMD_C011_DEC_CHAN_REVERSE_FIELD_STATUS
=
eCMD_C011_CMD_BASE
+ 0x12B,
311
eCMD_C011_DEC_CHAN_I_PICTURE_FOUND
=
eCMD_C011_CMD_BASE
+ 0x12C,
312
eCMD_C011_DEC_CHAN_SET_PARAMETER
=
eCMD_C011_CMD_BASE
+ 0x12D,
313
eCMD_C011_DEC_CHAN_SET_USER_DATA_MODE
=
eCMD_C011_CMD_BASE
+ 0x12E,
314
eCMD_C011_DEC_CHAN_SET_PAUSE_DISPLAY_MODE
=
eCMD_C011_CMD_BASE
+ 0x12F,
315
eCMD_C011_DEC_CHAN_SET_SLOW_DISPLAY_MODE
=
eCMD_C011_CMD_BASE
+ 0x130,
316
eCMD_C011_DEC_CHAN_SET_FF_DISPLAY_MODE
=
eCMD_C011_CMD_BASE
+ 0x131,
317
eCMD_C011_DEC_CHAN_SET_DISPLAY_TIMING_MODE
=
eCMD_C011_CMD_BASE
+ 0x132,
318
eCMD_C011_DEC_CHAN_SET_DISPLAY_MODE
=
eCMD_C011_CMD_BASE
+ 0x133,
319
eCMD_C011_DEC_CHAN_GET_DISPLAY_MODE
=
eCMD_C011_CMD_BASE
+ 0x134,
320
eCMD_C011_DEC_CHAN_SET_REVERSE_FIELD
=
eCMD_C011_CMD_BASE
+ 0x135,
321
eCMD_C011_DEC_CHAN_STREAM_OPEN
=
eCMD_C011_CMD_BASE
+ 0x136,
322
eCMD_C011_DEC_CHAN_SET_PCR_PID
=
eCMD_C011_CMD_BASE
+ 0x137,
323
eCMD_C011_DEC_CHAN_SET_VID_PID
=
eCMD_C011_CMD_BASE
+ 0x138,
324
eCMD_C011_DEC_CHAN_SET_PAN_SCAN_MODE
=
eCMD_C011_CMD_BASE
+ 0x139,
325
eCMD_C011_DEC_CHAN_START_DISPLAY_AT_PTS
=
eCMD_C011_CMD_BASE
+ 0x140,
326
eCMD_C011_DEC_CHAN_STOP_DISPLAY_AT_PTS
=
eCMD_C011_CMD_BASE
+ 0x141,
327
eCMD_C011_DEC_CHAN_SET_DISPLAY_ORDER
=
eCMD_C011_CMD_BASE
+ 0x142,
328
eCMD_C011_DEC_CHAN_GET_DISPLAY_ORDER
=
eCMD_C011_CMD_BASE
+ 0x143,
329
eCMD_C011_DEC_CHAN_SET_HOST_TRICK_MODE
=
eCMD_C011_CMD_BASE
+ 0x144,
330
eCMD_C011_DEC_CHAN_SET_OPERATION_MODE
=
eCMD_C011_CMD_BASE
+ 0x145,
331
eCMD_C011_DEC_CHAN_DISPLAY_PAUSE_UNTO_PTS
=
eCMD_C011_CMD_BASE
+ 0x146,
332
eCMD_C011_DEC_CHAN_SET_PTS_STC_DIFF_THRESHOLD
=
eCMD_C011_CMD_BASE
+ 0x147,
333
eCMD_C011_DEC_CHAN_SEND_COMPRESSED_BUF
=
eCMD_C011_CMD_BASE
+ 0x148,
334
eCMD_C011_DEC_CHAN_SET_CLIPPING
=
eCMD_C011_CMD_BASE
+ 0x149,
335
eCMD_C011_DEC_CHAN_SET_PARAMETERS_FOR_HARD_RESET_INTERRUPT_TO_HOST
336
=
eCMD_C011_CMD_BASE
+ 0x150,
337
338
/* Decoder RevD commands */
339
eCMD_C011_DEC_CHAN_SET_CSC
=
eCMD_C011_CMD_BASE
+ 0x180,
/* color space conversion */
340
eCMD_C011_DEC_CHAN_SET_RANGE_REMAP
=
eCMD_C011_CMD_BASE
+ 0x181,
341
eCMD_C011_DEC_CHAN_SET_FGT
=
eCMD_C011_CMD_BASE
+ 0x182,
342
/* Note: 0x183 not implemented yet in Rev D main */
343
eCMD_C011_DEC_CHAN_SET_LASTPICTURE_PADDING
=
eCMD_C011_CMD_BASE
+ 0x183,
344
345
/* Decoder 7412 commands (7412-only) */
346
eCMD_C011_DEC_CHAN_SET_CONTENT_KEY
=
eCMD_C011_CMD_BASE
+ 0x190,
347
eCMD_C011_DEC_CHAN_SET_SESSION_KEY
=
eCMD_C011_CMD_BASE
+ 0x191,
348
eCMD_C011_DEC_CHAN_FMT_CHANGE_ACK
=
eCMD_C011_CMD_BASE
+ 0x192,
349
350
eCMD_C011_DEC_CHAN_CUSTOM_VIDOUT
=
eCMD_C011_CMD_BASE
+ 0x1FF,
351
352
/* Encoding commands */
353
eCMD_C011_ENC_CHAN_OPEN
=
eCMD_C011_CMD_BASE
+ 0x200,
354
eCMD_C011_ENC_CHAN_CLOSE
=
eCMD_C011_CMD_BASE
+ 0x201,
355
eCMD_C011_ENC_CHAN_ACTIVATE
=
eCMD_C011_CMD_BASE
+ 0x202,
356
eCMD_C011_ENC_CHAN_CONTROL
=
eCMD_C011_CMD_BASE
+ 0x203,
357
eCMD_C011_ENC_CHAN_STATISTICS
=
eCMD_C011_CMD_BASE
+ 0x204,
358
359
eNOTIFY_C011_ENC_CHAN_EVENT
=
eCMD_C011_CMD_BASE
+ 0x210,
360
361
};
362
363
#endif
Generated on Thu Jan 10 2013 14:27:32 for Linux Kernel by
1.8.2