Blame view

include/media/cx2341x.h 7.03 KB
ebfbc305b   Mauro Carvalho Chehab   V4L/DVB (3809c): ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  /*
      cx23415/6 header containing common defines.
  
      This program is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published by
      the Free Software Foundation; either version 2 of the License, or
      (at your option) any later version.
  
      This program is distributed in the hope that it will be useful,
      but WITHOUT ANY WARRANTY; without even the implied warranty of
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      GNU General Public License for more details.
  
      You should have received a copy of the GNU General Public License
      along with this program; if not, write to the Free Software
      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
   */
  
  #ifndef CX2341X_H
  #define CX2341X_H
45ad9f8b4   Hans Verkuil   V4L/DVB (4202): a...
21
  enum cx2341x_port {
0ccac4af1   Hans Verkuil   V4L/DVB (4203): E...
22
23
24
  	CX2341X_PORT_MEMORY    = 0,
  	CX2341X_PORT_STREAMING = 1,
  	CX2341X_PORT_SERIAL    = 2
45ad9f8b4   Hans Verkuil   V4L/DVB (4202): a...
25
  };
8cbde94be   Hans Verkuil   V4L/DVB (4223): A...
26
27
28
  enum cx2341x_cap {
  	CX2341X_CAP_HAS_SLICED_VBI = 1 << 0,
  };
5d1a9ae6d   Hans Verkuil   V4L/DVB (4191): A...
29
30
  struct cx2341x_mpeg_params {
  	/* misc */
8cbde94be   Hans Verkuil   V4L/DVB (4223): A...
31
  	u32 capabilities;
45ad9f8b4   Hans Verkuil   V4L/DVB (4202): a...
32
  	enum cx2341x_port port;
5d1a9ae6d   Hans Verkuil   V4L/DVB (4191): A...
33
34
35
36
37
38
  	u16 width;
  	u16 height;
  	u16 is_50hz;
  
  	/* stream */
  	enum v4l2_mpeg_stream_type stream_type;
8cbde94be   Hans Verkuil   V4L/DVB (4223): A...
39
  	enum v4l2_mpeg_stream_vbi_fmt stream_vbi_fmt;
5eee72e88   Hans Verkuil   V4L/DVB (5268): A...
40
  	u16 stream_insert_nav_packets;
5d1a9ae6d   Hans Verkuil   V4L/DVB (4191): A...
41
42
43
44
45
46
47
48
49
  
  	/* audio */
  	enum v4l2_mpeg_audio_sampling_freq audio_sampling_freq;
  	enum v4l2_mpeg_audio_encoding audio_encoding;
  	enum v4l2_mpeg_audio_l2_bitrate audio_l2_bitrate;
  	enum v4l2_mpeg_audio_mode audio_mode;
  	enum v4l2_mpeg_audio_mode_extension audio_mode_extension;
  	enum v4l2_mpeg_audio_emphasis audio_emphasis;
  	enum v4l2_mpeg_audio_crc audio_crc;
cb2c7b492   Hans Verkuil   V4L/DVB (4988): C...
50
  	u16 audio_properties;
5eee72e88   Hans Verkuil   V4L/DVB (5268): A...
51
  	u16 audio_mute;
5d1a9ae6d   Hans Verkuil   V4L/DVB (4191): A...
52
53
54
55
56
57
58
  
  	/* video */
  	enum v4l2_mpeg_video_encoding video_encoding;
  	enum v4l2_mpeg_video_aspect video_aspect;
  	u16 video_b_frames;
  	u16 video_gop_size;
  	u16 video_gop_closure;
5d1a9ae6d   Hans Verkuil   V4L/DVB (4191): A...
59
60
61
62
  	enum v4l2_mpeg_video_bitrate_mode video_bitrate_mode;
  	u32 video_bitrate;
  	u32 video_bitrate_peak;
  	u16 video_temporal_decimation;
5eee72e88   Hans Verkuil   V4L/DVB (5268): A...
63
64
  	u16 video_mute;
  	u32 video_mute_yuv;
5d1a9ae6d   Hans Verkuil   V4L/DVB (4191): A...
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
  
  	/* encoding filters */
  	enum v4l2_mpeg_cx2341x_video_spatial_filter_mode video_spatial_filter_mode;
  	u16 video_spatial_filter;
  	enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type video_luma_spatial_filter_type;
  	enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type video_chroma_spatial_filter_type;
  	enum v4l2_mpeg_cx2341x_video_temporal_filter_mode video_temporal_filter_mode;
  	u16 video_temporal_filter;
  	enum v4l2_mpeg_cx2341x_video_median_filter_type video_median_filter_type;
  	u16 video_luma_median_filter_top;
  	u16 video_luma_median_filter_bottom;
  	u16 video_chroma_median_filter_top;
  	u16 video_chroma_median_filter_bottom;
  };
  
  #define CX2341X_MBOX_MAX_DATA 16
cc7bc6486   Hans Verkuil   V4L/DVB (4199): A...
81
  extern const u32 cx2341x_mpeg_ctrls[];
5d1a9ae6d   Hans Verkuil   V4L/DVB (4191): A...
82
83
84
85
86
87
88
89
90
  typedef int (*cx2341x_mbox_func)(void *priv, int cmd, int in, int out,
  		u32 data[CX2341X_MBOX_MAX_DATA]);
  int cx2341x_update(void *priv, cx2341x_mbox_func func,
  		const struct cx2341x_mpeg_params *old,
  		const struct cx2341x_mpeg_params *new);
  int cx2341x_ctrl_query(struct cx2341x_mpeg_params *params,
  		struct v4l2_queryctrl *qctrl);
  const char **cx2341x_ctrl_get_menu(u32 id);
  int cx2341x_ext_ctrls(struct cx2341x_mpeg_params *params,
4d6b5aee9   Hans Verkuil   V4L/DVB (4257): F...
91
  		struct v4l2_ext_controls *ctrls, unsigned int cmd);
5d1a9ae6d   Hans Verkuil   V4L/DVB (4191): A...
92
  void cx2341x_fill_defaults(struct cx2341x_mpeg_params *p);
99eb44fe9   Hans Verkuil   V4L/DVB (4259): P...
93
  void cx2341x_log_status(struct cx2341x_mpeg_params *p, const char *prefix);
5d1a9ae6d   Hans Verkuil   V4L/DVB (4191): A...
94

ebfbc305b   Mauro Carvalho Chehab   V4L/DVB (3809c): ...
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
  /* Firmware names */
  #define CX2341X_FIRM_ENC_FILENAME "v4l-cx2341x-enc.fw"
  /* Decoder firmware for the cx23415 only */
  #define CX2341X_FIRM_DEC_FILENAME "v4l-cx2341x-dec.fw"
  
  /* Firmware API commands */
  
  /* MPEG decoder API, specific to the cx23415 */
  #define CX2341X_DEC_PING_FW 			0x00
  #define CX2341X_DEC_START_PLAYBACK 		0x01
  #define CX2341X_DEC_STOP_PLAYBACK 		0x02
  #define CX2341X_DEC_SET_PLAYBACK_SPEED 		0x03
  #define CX2341X_DEC_STEP_VIDEO 			0x05
  #define CX2341X_DEC_SET_DMA_BLOCK_SIZE 		0x08
  #define CX2341X_DEC_GET_XFER_INFO		0x09
  #define CX2341X_DEC_GET_DMA_STATUS		0x0a
  #define CX2341X_DEC_SCHED_DMA_FROM_HOST		0x0b
  #define CX2341X_DEC_PAUSE_PLAYBACK 		0x0d
  #define CX2341X_DEC_HALT_FW 			0x0e
  #define CX2341X_DEC_SET_STANDARD 		0x10
  #define CX2341X_DEC_GET_VERSION			0x11
  #define CX2341X_DEC_SET_STREAM_INPUT 		0x14
  #define CX2341X_DEC_GET_TIMING_INFO 		0x15
  #define CX2341X_DEC_SET_AUDIO_MODE 		0x16
  #define CX2341X_DEC_SET_EVENT_NOTIFICATION	0x17
  #define CX2341X_DEC_SET_DISPLAY_BUFFERS		0x18
  #define CX2341X_DEC_EXTRACT_VBI 		0x19
  #define CX2341X_DEC_SET_DECODER_SOURCE 		0x1a
ebfbc305b   Mauro Carvalho Chehab   V4L/DVB (3809c): ...
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
  #define CX2341X_DEC_SET_PREBUFFERING		0x1e
  
  /* MPEG encoder API */
  #define CX2341X_ENC_PING_FW 			0x80
  #define CX2341X_ENC_START_CAPTURE 		0x81
  #define CX2341X_ENC_STOP_CAPTURE 		0x82
  #define CX2341X_ENC_SET_AUDIO_ID 		0x89
  #define CX2341X_ENC_SET_VIDEO_ID 		0x8b
  #define CX2341X_ENC_SET_PCR_ID 			0x8d
  #define CX2341X_ENC_SET_FRAME_RATE 		0x8f
  #define CX2341X_ENC_SET_FRAME_SIZE 		0x91
  #define CX2341X_ENC_SET_BIT_RATE 		0x95
  #define CX2341X_ENC_SET_GOP_PROPERTIES 		0x97
  #define CX2341X_ENC_SET_ASPECT_RATIO 		0x99
  #define CX2341X_ENC_SET_DNR_FILTER_MODE 	0x9b
  #define CX2341X_ENC_SET_DNR_FILTER_PROPS 	0x9d
  #define CX2341X_ENC_SET_CORING_LEVELS 		0x9f
  #define CX2341X_ENC_SET_SPATIAL_FILTER_TYPE 	0xa1
ebfbc305b   Mauro Carvalho Chehab   V4L/DVB (3809c): ...
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
  #define CX2341X_ENC_SET_VBI_LINE 		0xb7
  #define CX2341X_ENC_SET_STREAM_TYPE 		0xb9
  #define CX2341X_ENC_SET_OUTPUT_PORT 		0xbb
  #define CX2341X_ENC_SET_AUDIO_PROPERTIES 	0xbd
  #define CX2341X_ENC_HALT_FW 			0xc3
  #define CX2341X_ENC_GET_VERSION			0xc4
  #define CX2341X_ENC_SET_GOP_CLOSURE 		0xc5
  #define CX2341X_ENC_GET_SEQ_END 		0xc6
  #define CX2341X_ENC_SET_PGM_INDEX_INFO 		0xc7
  #define CX2341X_ENC_SET_VBI_CONFIG		0xc8
  #define CX2341X_ENC_SET_DMA_BLOCK_SIZE 		0xc9
  #define CX2341X_ENC_GET_PREV_DMA_INFO_MB_10	0xca
  #define CX2341X_ENC_GET_PREV_DMA_INFO_MB_9	0xcb
  #define CX2341X_ENC_SCHED_DMA_TO_HOST 		0xcc
  #define CX2341X_ENC_INITIALIZE_INPUT 		0xcd
  #define CX2341X_ENC_SET_FRAME_DROP_RATE 	0xd0
  #define CX2341X_ENC_PAUSE_ENCODER 		0xd2
  #define CX2341X_ENC_REFRESH_INPUT 		0xd3
  #define CX2341X_ENC_SET_COPYRIGHT		0xd4
  #define CX2341X_ENC_SET_EVENT_NOTIFICATION 	0xd5
  #define CX2341X_ENC_SET_NUM_VSYNC_LINES 	0xd6
  #define CX2341X_ENC_SET_PLACEHOLDER 		0xd7
  #define CX2341X_ENC_MUTE_VIDEO 			0xd9
  #define CX2341X_ENC_MUTE_AUDIO 			0xda
0b20060f6   Hans Verkuil   V4L/DVB (5336): C...
165
  #define CX2341X_ENC_SET_VERT_CROP_LINE		0xdb
ebfbc305b   Mauro Carvalho Chehab   V4L/DVB (3809c): ...
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
  #define CX2341X_ENC_MISC 			0xdc
  
  /* OSD API, specific to the cx23415 */
  #define CX2341X_OSD_GET_FRAMEBUFFER 		0x41
  #define CX2341X_OSD_GET_PIXEL_FORMAT 		0x42
  #define CX2341X_OSD_SET_PIXEL_FORMAT 		0x43
  #define CX2341X_OSD_GET_STATE 			0x44
  #define CX2341X_OSD_SET_STATE 			0x45
  #define CX2341X_OSD_GET_OSD_COORDS 		0x46
  #define CX2341X_OSD_SET_OSD_COORDS 		0x47
  #define CX2341X_OSD_GET_SCREEN_COORDS 		0x48
  #define CX2341X_OSD_SET_SCREEN_COORDS 		0x49
  #define CX2341X_OSD_GET_GLOBAL_ALPHA 		0x4a
  #define CX2341X_OSD_SET_GLOBAL_ALPHA 		0x4b
  #define CX2341X_OSD_SET_BLEND_COORDS 		0x4c
  #define CX2341X_OSD_GET_FLICKER_STATE 		0x4f
  #define CX2341X_OSD_SET_FLICKER_STATE 		0x50
  #define CX2341X_OSD_BLT_COPY 			0x52
  #define CX2341X_OSD_BLT_FILL 			0x53
  #define CX2341X_OSD_BLT_TEXT 			0x54
  #define CX2341X_OSD_SET_FRAMEBUFFER_WINDOW 	0x56
  #define CX2341X_OSD_SET_CHROMA_KEY 		0x60
  #define CX2341X_OSD_GET_ALPHA_CONTENT_INDEX 	0x61
  #define CX2341X_OSD_SET_ALPHA_CONTENT_INDEX 	0x62
  
  #endif /* CX2341X_H */