aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/saa7164/saa7164.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/saa7164/saa7164.h')
-rw-r--r--drivers/media/video/saa7164/saa7164.h127
1 files changed, 121 insertions, 6 deletions
diff --git a/drivers/media/video/saa7164/saa7164.h b/drivers/media/video/saa7164/saa7164.h
index 1ca9bf2e342..ad390724402 100644
--- a/drivers/media/video/saa7164/saa7164.h
+++ b/drivers/media/video/saa7164/saa7164.h
@@ -48,18 +48,26 @@
48#include <linux/i2c.h> 48#include <linux/i2c.h>
49#include <linux/i2c-algo-bit.h> 49#include <linux/i2c-algo-bit.h>
50#include <linux/kdev_t.h> 50#include <linux/kdev_t.h>
51#include <linux/version.h>
52#include <linux/mutex.h>
51 53
52#include <media/tuner.h> 54#include <media/tuner.h>
53#include <media/tveeprom.h> 55#include <media/tveeprom.h>
54#include <media/videobuf-dma-sg.h> 56#include <media/videobuf-dma-sg.h>
55#include <media/videobuf-dvb.h> 57#include <media/videobuf-dvb.h>
58#include <linux/smp_lock.h>
59#include <dvb_demux.h>
60#include <dvb_frontend.h>
61#include <dvb_net.h>
62#include <dvbdev.h>
63#include <dmxdev.h>
64#include <media/v4l2-common.h>
65#include <media/v4l2-ioctl.h>
66#include <media/v4l2-chip-ident.h>
56 67
57#include "saa7164-reg.h" 68#include "saa7164-reg.h"
58#include "saa7164-types.h" 69#include "saa7164-types.h"
59 70
60#include <linux/version.h>
61#include <linux/mutex.h>
62
63#define SAA7164_MAXBOARDS 8 71#define SAA7164_MAXBOARDS 8
64 72
65#define UNSET (-1U) 73#define UNSET (-1U)
@@ -77,6 +85,14 @@
77#define SAA7164_MAX_UNITS 8 85#define SAA7164_MAX_UNITS 8
78#define SAA7164_TS_NUMBER_OF_LINES 312 86#define SAA7164_TS_NUMBER_OF_LINES 312
79#define SAA7164_PT_ENTRIES 16 /* (312 * 188) / 4096 */ 87#define SAA7164_PT_ENTRIES 16 /* (312 * 188) / 4096 */
88#define SAA7164_MAX_ENCODER_BUFFERS 16
89
90/* Port related defines */
91#define SAA7164_PORT_TS1 (0)
92#define SAA7164_PORT_TS2 (SAA7164_PORT_TS1 + 1)
93#define SAA7164_PORT_ENC1 (SAA7164_PORT_TS2 + 1)
94#define SAA7164_PORT_ENC2 (SAA7164_PORT_ENC1 + 1)
95#define SAA7164_MAX_PORTS (SAA7164_PORT_ENC2 + 1)
80 96
81#define DBGLVL_FW 4 97#define DBGLVL_FW 4
82#define DBGLVL_DVB 8 98#define DBGLVL_DVB 8
@@ -88,6 +104,8 @@
88#define DBGLVL_BUF 512 104#define DBGLVL_BUF 512
89#define DBGLVL_ENC 1024 105#define DBGLVL_ENC 1024
90 106
107#define SAA7164_NORMS ( V4L2_STD_NTSC_M | V4L2_STD_NTSC_M_JP | V4L2_STD_NTSC_443 )
108
91enum port_t { 109enum port_t {
92 SAA7164_MPEG_UNDEFINED = 0, 110 SAA7164_MPEG_UNDEFINED = 0,
93 SAA7164_MPEG_DVB, 111 SAA7164_MPEG_DVB,
@@ -136,7 +154,7 @@ struct saa7164_unit {
136 154
137struct saa7164_board { 155struct saa7164_board {
138 char *name; 156 char *name;
139 enum port_t porta, portb; 157 enum port_t porta, portb, portc, portd;
140 enum { 158 enum {
141 SAA7164_CHIP_UNDEFINED = 0, 159 SAA7164_CHIP_UNDEFINED = 0,
142 SAA7164_CHIP_REV2, 160 SAA7164_CHIP_REV2,
@@ -151,6 +169,22 @@ struct saa7164_subid {
151 u32 card; 169 u32 card;
152}; 170};
153 171
172struct saa7164_fh {
173 struct saa7164_port *port;
174 u32 freq;
175 u32 tuner_type;
176 atomic_t v4l_reading;
177};
178
179struct saa7164_user_buffer {
180 struct list_head list;
181
182 /* Attributes */
183 u8 *data;
184 u32 pos;
185 u32 actual_size;
186};
187
154struct saa7164_fw_status { 188struct saa7164_fw_status {
155 189
156 /* RISC Core details */ 190 /* RISC Core details */
@@ -193,6 +227,30 @@ struct saa7164_i2c {
193 u32 i2c_rc; 227 u32 i2c_rc;
194}; 228};
195 229
230struct saa7164_ctrl {
231 struct v4l2_queryctrl v;
232};
233
234struct saa7164_tvnorm {
235 char *name;
236 v4l2_std_id id;
237// u32 cxiformat;
238// u32 cxoformat;
239};
240
241struct saa7164_encoder_params {
242 struct saa7164_tvnorm encodernorm;
243 u32 height;
244 u32 width;
245 u32 is_50hz;
246 u32 bitrate; /* bps */
247 u32 stream_type; /* V4L2_MPEG_STREAM_TYPE_MPEG2_TS */
248
249 u32 audio_sampling_freq;
250 u32 ctl_mute;
251 u32 ctl_aspect;
252};
253
196struct saa7164_port; 254struct saa7164_port;
197 255
198struct saa7164_buffer { 256struct saa7164_buffer {
@@ -254,7 +312,42 @@ struct saa7164_port {
254 struct saa7164_dvb dvb; 312 struct saa7164_dvb dvb;
255 313
256 /* --- Encoder/V4L related attributes --- */ 314 /* --- Encoder/V4L related attributes --- */
257 315 /* Encoder */
316 /* Defaults established in saa7164-encoder.c */
317 struct saa7164_tvnorm encodernorm;
318 u32 height;
319 u32 width;
320 u32 freq;
321 u32 ts_packet_size;
322 u32 ts_packet_count;
323 u8 mux_input;
324 u8 encoder_profile;
325 u8 video_format;
326 u8 audio_format;
327 u8 video_resolution;
328 u16 ctl_brightness;
329 u16 ctl_contrast;
330 u16 ctl_hue;
331 u16 ctl_saturation;
332 u16 ctl_sharpness;
333 s8 ctl_volume;
334
335 tmComResAFeatureDescrHeader_t audfeat;
336 tmComResEncoderDescrHeader_t encunit;
337 tmComResProcDescrHeader_t vidproc;
338 tmComResExtDevDescrHeader_t ifunit;
339 tmComResTunerDescrHeader_t tunerunit;
340
341 /* V4L */
342 struct saa7164_encoder_params encoder_params;
343 struct video_device *v4l_device;
344 atomic_t v4l_reader_count;
345// spinlock_t slock;
346// struct mutex fops_lock;
347
348 struct saa7164_buffer list_buf_used;
349 struct saa7164_buffer list_buf_free;
350 wait_queue_head_t wait_read;
258}; 351};
259 352
260struct saa7164_dev { 353struct saa7164_dev {
@@ -297,7 +390,7 @@ struct saa7164_dev {
297 struct saa7164_i2c i2c_bus[3]; 390 struct saa7164_i2c i2c_bus[3];
298 391
299 /* Transport related */ 392 /* Transport related */
300 struct saa7164_port ts1, ts2; 393 struct saa7164_port ports[ SAA7164_MAX_PORTS ];
301 394
302 /* Deferred command/api interrupts handling */ 395 /* Deferred command/api interrupts handling */
303 struct work_struct workcmd; 396 struct work_struct workcmd;
@@ -355,6 +448,19 @@ int saa7164_api_read_eeprom(struct saa7164_dev *dev, u8 *buf, int buflen);
355int saa7164_api_set_gpiobit(struct saa7164_dev *dev, u8 unitid, u8 pin); 448int saa7164_api_set_gpiobit(struct saa7164_dev *dev, u8 unitid, u8 pin);
356int saa7164_api_clear_gpiobit(struct saa7164_dev *dev, u8 unitid, u8 pin); 449int saa7164_api_clear_gpiobit(struct saa7164_dev *dev, u8 unitid, u8 pin);
357int saa7164_api_transition_port(struct saa7164_port *port, u8 mode); 450int saa7164_api_transition_port(struct saa7164_port *port, u8 mode);
451int saa7164_api_initialize_dif(struct saa7164_port *port);
452int saa7164_api_configure_dif(struct saa7164_port *port, u32 std);
453int saa7164_api_set_encoder(struct saa7164_port *port);
454int saa7164_api_get_encoder(struct saa7164_port *port);
455int saa7164_api_set_aspect_ratio(struct saa7164_port *port);
456int saa7164_api_set_usercontrol(struct saa7164_port *port, u8 ctl);
457int saa7164_api_get_usercontrol(struct saa7164_port *port, u8 ctl);
458int saa7164_api_set_videomux(struct saa7164_port *port);
459int saa7164_api_audio_mute(struct saa7164_port *port, int mute);
460int saa7164_api_set_audio_volume(struct saa7164_port *port, s8 level);
461int saa7164_api_set_audio_std(struct saa7164_port *port);
462int saa7164_api_set_audio_detection(struct saa7164_port *port, int autodetect);
463int saa7164_api_get_videomux(struct saa7164_port *port);
358 464
359/* ----------------------------------------------------------- */ 465/* ----------------------------------------------------------- */
360/* saa7164-cards.c */ 466/* saa7164-cards.c */
@@ -385,6 +491,15 @@ extern int saa7164_buffer_dealloc(struct saa7164_buffer *buf);
385extern void saa7164_buffer_display(struct saa7164_buffer *buf); 491extern void saa7164_buffer_display(struct saa7164_buffer *buf);
386extern int saa7164_buffer_activate(struct saa7164_buffer *buf, int i); 492extern int saa7164_buffer_activate(struct saa7164_buffer *buf, int i);
387extern int saa7164_buffer_cfg_port(struct saa7164_port *port); 493extern int saa7164_buffer_cfg_port(struct saa7164_port *port);
494extern struct saa7164_user_buffer *saa7164_buffer_alloc_user(
495 struct saa7164_dev *dev, u32 len);
496extern void saa7164_buffer_dealloc_user(struct saa7164_user_buffer *buf);
497
498
499/* ----------------------------------------------------------- */
500/* saa7164-encoder.c */
501int saa7164_encoder_register(struct saa7164_port *port);
502void saa7164_encoder_unregister(struct saa7164_port *port);
388 503
389/* ----------------------------------------------------------- */ 504/* ----------------------------------------------------------- */
390 505