📄 saa7134.h
字号:
#endif /* video overlay */ struct v4l2_window win; struct v4l2_clip clips[8]; unsigned int nclips; /* video capture */ struct saa7134_format *fmt; unsigned int width,height; struct videobuf_queue cap; struct saa7134_pgtable pt_cap; /* vbi capture */ struct videobuf_queue vbi; struct saa7134_pgtable pt_vbi;};/* dmasound dsp status */struct saa7134_dmasound { struct semaphore lock; int minor_mixer; int minor_dsp; unsigned int users_dsp; /* mixer */ enum saa7134_audio_in input; unsigned int count; unsigned int line1; unsigned int line2; /* dsp */ unsigned int afmt; unsigned int rate; unsigned int channels; unsigned int recording_on; unsigned int dma_running; unsigned int blocks; unsigned int blksize; unsigned int bufsize; struct saa7134_pgtable pt; struct videobuf_dmabuf dma; wait_queue_head_t wq; unsigned int dma_blk; unsigned int read_offset; unsigned int read_count; void * priv_data; snd_pcm_substream_t *substream;};/* IR input */struct saa7134_ir { struct input_dev *dev; struct ir_input_state ir; char name[32]; char phys[32]; u32 mask_keycode; u32 mask_keydown; u32 mask_keyup; int polling; u32 last_gpio; 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); void (*signal_change)(struct saa7134_dev *dev);};/* global device status */struct saa7134_dev { struct list_head devlist; struct semaphore lock; spinlock_t slock;#ifdef VIDIOC_G_PRIORITY struct v4l2_prio_state prio;#endif /* various device info */ unsigned int resources; struct video_device *video_dev; struct video_device *radio_dev; struct video_device *vbi_dev; struct saa7134_dmasound dmasound; /* infrared remote */ int has_remote; struct saa7134_ir *remote; /* pci i/o */ char name[32]; int nr; struct pci_dev *pci; unsigned char pci_rev,pci_lat; __u32 __iomem *lmmio; __u8 __iomem *bmmio; /* config info */ unsigned int board; unsigned int tuner_type; unsigned int radio_type; unsigned char tuner_addr; unsigned char radio_addr; unsigned int tda9887_conf; unsigned int gpio_value; /* i2c i/o */ struct i2c_adapter i2c_adap; struct i2c_client i2c_client; unsigned char eedata[128]; /* video overlay */ struct v4l2_framebuffer ovbuf; struct saa7134_format *ovfmt; unsigned int ovenable; enum v4l2_field ovfield; /* video+ts+vbi capture */ struct saa7134_dmaqueue video_q; struct saa7134_dmaqueue vbi_q; unsigned int video_fieldcount; unsigned int vbi_fieldcount; /* various v4l controls */ struct saa7134_tvnorm *tvnorm; /* video */ struct saa7134_tvaudio *tvaudio; unsigned int ctl_input; int ctl_bright; int ctl_contrast; int ctl_hue; int ctl_saturation; int ctl_freq; int ctl_mute; /* audio */ int ctl_volume; int ctl_invert; /* private */ int ctl_mirror; int ctl_y_odd; int ctl_y_even; int ctl_automute; /* crop */ struct v4l2_rect crop_bounds; struct v4l2_rect crop_defrect; struct v4l2_rect crop_current; /* other global state info */ unsigned int automute; struct saa7134_thread thread; struct saa7134_input *input; struct saa7134_input *hw_input; unsigned int hw_mute; int last_carrier; int nosignal; /* 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; struct work_struct empress_workqueue; int empress_started; /* SAA7134_MPEG_DVB only */ struct videobuf_dvb dvb;};/* ----------------------------------------------------------- */#define saa_readl(reg) readl(dev->lmmio + (reg))#define saa_writel(reg,value) writel((value), dev->lmmio + (reg));#define saa_andorl(reg,mask,value) \ writel((readl(dev->lmmio+(reg)) & ~(mask)) |\ ((value) & (mask)), dev->lmmio+(reg))#define saa_setl(reg,bit) saa_andorl((reg),(bit),(bit))#define saa_clearl(reg,bit) saa_andorl((reg),(bit),0)#define saa_readb(reg) readb(dev->bmmio + (reg))#define saa_writeb(reg,value) writeb((value), dev->bmmio + (reg));#define saa_andorb(reg,mask,value) \ writeb((readb(dev->bmmio+(reg)) & ~(mask)) |\ ((value) & (mask)), dev->bmmio+(reg))#define saa_setb(reg,bit) saa_andorb((reg),(bit),(bit))#define saa_clearb(reg,bit) saa_andorb((reg),(bit),0)#define saa_wait(us) { udelay(us); }/* ----------------------------------------------------------- *//* saa7134-core.c */extern struct list_head saa7134_devlist;void saa7134_print_ioctl(char *name, unsigned int cmd);void saa7134_track_gpio(struct saa7134_dev *dev, char *msg);#define SAA7134_PGTABLE_SIZE 4096int saa7134_pgtable_alloc(struct pci_dev *pci, struct saa7134_pgtable *pt);int saa7134_pgtable_build(struct pci_dev *pci, struct saa7134_pgtable *pt, struct scatterlist *list, unsigned int length, unsigned int startpage);void saa7134_pgtable_free(struct pci_dev *pci, struct saa7134_pgtable *pt);int saa7134_buffer_count(unsigned int size, unsigned int count);int saa7134_buffer_startpage(struct saa7134_buf *buf);unsigned long saa7134_buffer_base(struct saa7134_buf *buf);int saa7134_buffer_queue(struct saa7134_dev *dev, struct saa7134_dmaqueue *q, struct saa7134_buf *buf);void saa7134_buffer_finish(struct saa7134_dev *dev, struct saa7134_dmaqueue *q, unsigned int state);void saa7134_buffer_next(struct saa7134_dev *dev, struct saa7134_dmaqueue *q);void saa7134_buffer_timeout(unsigned long data);void saa7134_dma_free(struct saa7134_dev *dev,struct saa7134_buf *buf);int saa7134_set_dmabits(struct saa7134_dev *dev);extern int (*dmasound_init)(struct saa7134_dev *dev);extern int (*dmasound_exit)(struct saa7134_dev *dev);/* ----------------------------------------------------------- *//* saa7134-cards.c */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_init1(struct saa7134_dev *dev);extern int saa7134_board_init2(struct saa7134_dev *dev);/* ----------------------------------------------------------- *//* saa7134-i2c.c */int saa7134_i2c_register(struct saa7134_dev *dev);int saa7134_i2c_unregister(struct saa7134_dev *dev);void saa7134_i2c_call_clients(struct saa7134_dev *dev, unsigned int cmd, void *arg);/* ----------------------------------------------------------- *//* saa7134-video.c */extern struct video_device saa7134_video_template;extern struct video_device saa7134_radio_template;int saa7134_common_ioctl(struct saa7134_dev *dev, unsigned int cmd, void *arg);int saa7134_video_init1(struct saa7134_dev *dev);int saa7134_video_init2(struct saa7134_dev *dev);int saa7134_video_fini(struct saa7134_dev *dev);void saa7134_irq_video_intl(struct saa7134_dev *dev);void saa7134_irq_video_done(struct saa7134_dev *dev, unsigned long status);/* ----------------------------------------------------------- *//* saa7134-ts.c */#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 */extern struct videobuf_queue_ops saa7134_vbi_qops;extern struct video_device saa7134_vbi_template;int saa7134_vbi_init1(struct saa7134_dev *dev);int saa7134_vbi_fini(struct saa7134_dev *dev);void saa7134_irq_vbi_done(struct saa7134_dev *dev, unsigned long status);/* ----------------------------------------------------------- *//* saa7134-tvaudio.c */int saa7134_tvaudio_rx2mode(u32 rx);void saa7134_tvaudio_setmute(struct saa7134_dev *dev);void saa7134_tvaudio_setinput(struct saa7134_dev *dev, struct saa7134_input *in);void saa7134_tvaudio_setvolume(struct saa7134_dev *dev, int level);int saa7134_tvaudio_getstereo(struct saa7134_dev *dev);int saa7134_tvaudio_init2(struct saa7134_dev *dev);int saa7134_tvaudio_fini(struct saa7134_dev *dev);int saa7134_tvaudio_do_scan(struct saa7134_dev *dev);int saa_dsp_writel(struct saa7134_dev *dev, int reg, u32 value);/* ----------------------------------------------------------- *//* saa7134-oss.c */extern struct file_operations saa7134_dsp_fops;extern struct file_operations saa7134_mixer_fops;int saa7134_oss_init1(struct saa7134_dev *dev);int saa7134_oss_fini(struct saa7134_dev *dev);void saa7134_irq_oss_done(struct saa7134_dev *dev, unsigned long status);/* ----------------------------------------------------------- *//* saa7134-input.c */int saa7134_input_init1(struct saa7134_dev *dev);void saa7134_input_fini(struct saa7134_dev *dev);void saa7134_input_irq(struct saa7134_dev *dev);void saa7134_set_i2c_ir(struct saa7134_dev *dev, struct IR_i2c *ir);/* * Local variables: * c-basic-offset: 8 * End: */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -