X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fmedia%2Fvideo%2Fsaa7134%2Fsaa7134.h;h=a4e68b3fc182dfc84171a103ad79158d17864887;hb=6a77f38946aaee1cd85eeec6cf4229b204c15071;hp=2eccffc67b570ad5a0b9315ec1721ebe5b827207;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/drivers/media/video/saa7134/saa7134.h b/drivers/media/video/saa7134/saa7134.h index 2eccffc67..a4e68b3fc 100644 --- a/drivers/media/video/saa7134/saa7134.h +++ b/drivers/media/video/saa7134/saa7134.h @@ -1,4 +1,6 @@ /* + * $Id: saa7134.h,v 1.27 2004/11/04 11:03:52 kraxel Exp $ + * * v4l2 device driver for philips saa7134 based TV cards * * (c) 2001,02 Gerd Knorr @@ -19,7 +21,7 @@ */ #include -#define SAA7134_VERSION_CODE KERNEL_VERSION(0,2,11) +#define SAA7134_VERSION_CODE KERNEL_VERSION(0,2,12) #include #include @@ -29,11 +31,12 @@ #include -#include #include #include #include #include +#include +#include #ifndef TRUE # define TRUE (1==1) @@ -152,7 +155,22 @@ struct saa7134_format { #define SAA7134_BOARD_ECS_TVP3XP_4CB5 31 #define SAA7134_BOARD_AVACSSMARTTV 32 #define SAA7134_BOARD_AVERMEDIA_DVD_EZMAKER 33 - +#define SAA7134_BOARD_NOVAC_PRIMETV7133 34 +#define SAA7134_BOARD_AVERMEDIA_305 35 +#define SAA7133_BOARD_UPMOST_PURPLE_TV 36 +#define SAA7134_BOARD_ITEMS_MTV005 37 +#define SAA7134_BOARD_CINERGY200 38 +#define SAA7134_BOARD_FLYTVPLATINUM 39 +#define SAA7134_BOARD_VIDEOMATE_TV_PVR 40 +#define SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUS 41 +#define SAA7134_BOARD_SABRENT_SBTTVFM 42 +#define SAA7134_BOARD_ZOLID_XPERT_TV7134 43 +#define SAA7134_BOARD_EMPIRE_PCI_TV_RADIO_LE 44 +#define SAA7134_BOARD_AVERMEDIA_307 45 +#define SAA7134_BOARD_AVERMEDIA_CARDBUS 46 +#define SAA7134_BOARD_CINERGY400_CARDBUS 47 + +#define SAA7134_MAXBOARDS 8 #define SAA7134_INPUT_MAX 8 struct saa7134_input { @@ -163,6 +181,12 @@ struct saa7134_input { unsigned int tv:1; }; +enum saa7134_mpeg_type { + SAA7134_MPEG_UNUSED, + SAA7134_MPEG_EMPRESS, + SAA7134_MPEG_DVB, +}; + struct saa7134_board { char *name; unsigned int audio_clock; @@ -172,19 +196,20 @@ struct saa7134_board { struct saa7134_input inputs[SAA7134_INPUT_MAX]; struct saa7134_input radio; struct saa7134_input mute; - - /* peripheral I/O */ - unsigned int i2s_rate; - unsigned int has_ts; - enum saa7134_video_out video_out; /* i2c chip info */ unsigned int tuner_type; - unsigned int need_tda9887:1; + unsigned int tda9887_conf; + + /* peripheral I/O */ + enum saa7134_video_out video_out; + enum saa7134_mpeg_type mpeg; }; #define card_has_radio(dev) (NULL != saa7134_boards[dev->board].radio.name) -#define card_has_ts(dev) (saa7134_boards[dev->board].has_ts) +#define card_is_empress(dev) (SAA7134_MPEG_EMPRESS == saa7134_boards[dev->board].mpeg) +#define card_is_dvb(dev) (SAA7134_MPEG_DVB == saa7134_boards[dev->board].mpeg) +#define card_has_mpeg(dev) (SAA7134_MPEG_UNUSED != saa7134_boards[dev->board].mpeg) #define card(dev) (saa7134_boards[dev->board]) #define card_in(dev,n) (saa7134_boards[dev->board].inputs[n]) @@ -252,7 +277,7 @@ struct saa7134_fh { unsigned int radio; enum v4l2_buf_type type; unsigned int resources; -#ifdef VIDIOC_G_PRIORITY +#ifdef VIDIOC_G_PRIORITY enum v4l2_priority prio; #endif @@ -272,16 +297,6 @@ struct saa7134_fh { struct saa7134_pgtable pt_vbi; }; -/* TS status */ -struct saa7134_ts { - unsigned int users; - - /* TS capture */ - struct videobuf_queue ts; - struct saa7134_pgtable pt_ts; - int started; -}; - /* oss dsp status */ struct saa7134_oss { struct semaphore lock; @@ -326,23 +341,37 @@ struct saa7134_ir { struct timer_list timer; }; +/* ts/mpeg status */ +struct saa7134_ts { + /* TS capture */ + struct saa7134_pgtable pt_ts; + int nr_packets; + int nr_bufs; +}; + +/* ts/mpeg ops */ +struct saa7134_mpeg_ops { + enum saa7134_mpeg_type type; + struct list_head next; + int (*init)(struct saa7134_dev *dev); + int (*fini)(struct saa7134_dev *dev); +}; + /* global device status */ struct saa7134_dev { struct list_head devlist; struct semaphore lock; spinlock_t slock; -#ifdef VIDIOC_G_PRIORITY +#ifdef VIDIOC_G_PRIORITY struct v4l2_prio_state prio; #endif /* various device info */ unsigned int resources; struct video_device *video_dev; - struct video_device *ts_dev; struct video_device *radio_dev; struct video_device *vbi_dev; struct saa7134_oss oss; - struct saa7134_ts ts; /* infrared remote */ int has_remote; @@ -350,14 +379,16 @@ struct saa7134_dev { /* pci i/o */ char name[32]; + int nr; struct pci_dev *pci; unsigned char pci_rev,pci_lat; - __u32 *lmmio; - __u8 *bmmio; + __u32 __iomem *lmmio; + __u8 __iomem *bmmio; /* config info */ unsigned int board; unsigned int tuner_type; + unsigned int tda9887_conf; unsigned int gpio_value; /* i2c i/o */ @@ -373,7 +404,6 @@ struct saa7134_dev { /* video+ts+vbi capture */ struct saa7134_dmaqueue video_q; - struct saa7134_dmaqueue ts_q; struct saa7134_dmaqueue vbi_q; unsigned int video_fieldcount; unsigned int vbi_fieldcount; @@ -393,6 +423,7 @@ struct saa7134_dev { int ctl_mirror; int ctl_y_odd; int ctl_y_even; + int ctl_automute; /* crop */ struct v4l2_rect crop_bounds; @@ -406,6 +437,19 @@ struct saa7134_dev { struct saa7134_input *hw_input; unsigned int hw_mute; int last_carrier; + + /* SAA7134_MPEG_* */ + struct saa7134_ts ts; + struct saa7134_dmaqueue ts_q; + struct saa7134_mpeg_ops *mops; + + /* SAA7134_MPEG_EMPRESS only */ + struct video_device *empress_dev; + struct videobuf_queue empress_tsq; + unsigned int empress_users; + + /* SAA7134_MPEG_DVB only */ + struct videobuf_dvb dvb; }; /* ----------------------------------------------------------- */ @@ -426,7 +470,7 @@ struct saa7134_dev { #define saa_setb(reg,bit) saa_andorb((reg),(bit),(bit)) #define saa_clearb(reg,bit) saa_andorb((reg),(bit),0) -#define saa_wait(d) { udelay(d); } +#define saa_wait(us) { udelay(us); } /* ----------------------------------------------------------- */ /* saa7134-core.c */ @@ -466,7 +510,8 @@ extern struct saa7134_board saa7134_boards[]; extern const unsigned int saa7134_bcount; extern struct pci_device_id __devinitdata saa7134_pci_tbl[]; -extern int saa7134_board_init(struct saa7134_dev *dev); +extern int saa7134_board_init1(struct saa7134_dev *dev); +extern int saa7134_board_init2(struct saa7134_dev *dev); /* ----------------------------------------------------------- */ @@ -497,11 +542,16 @@ void saa7134_irq_video_done(struct saa7134_dev *dev, unsigned long status); /* ----------------------------------------------------------- */ /* saa7134-ts.c */ -extern struct video_device saa7134_ts_template; +#define TS_PACKET_SIZE 188 /* TS packets 188 bytes */ + +extern struct videobuf_queue_ops saa7134_ts_qops; + int saa7134_ts_init1(struct saa7134_dev *dev); int saa7134_ts_fini(struct saa7134_dev *dev); void saa7134_irq_ts_done(struct saa7134_dev *dev, unsigned long status); +int saa7134_ts_register(struct saa7134_mpeg_ops *ops); +void saa7134_ts_unregister(struct saa7134_mpeg_ops *ops); /* ----------------------------------------------------------- */ /* saa7134-vbi.c */