📄 cx88.h
字号:
};struct cx8800_dev;struct cx8802_dev;/* ----------------------------------------------------------- *//* function 0: video stuff */struct cx8800_fh { struct cx8800_dev *dev; enum v4l2_buf_type type; int radio; unsigned int resources; /* video overlay */ struct v4l2_window win; struct v4l2_clip *clips; unsigned int nclips; /* video capture */ struct cx8800_fmt *fmt; unsigned int width,height; struct videobuf_queue vidq; /* vbi capture */ struct videobuf_queue vbiq;};struct cx8800_suspend_state { int disabled;};struct cx8800_dev { struct cx88_core *core; struct list_head devlist; struct semaphore lock; spinlock_t slock; /* various device info */ unsigned int resources; struct video_device *video_dev; struct video_device *vbi_dev; struct video_device *radio_dev; /* pci i/o */ struct pci_dev *pci; unsigned char pci_rev,pci_lat;#if 0 /* video overlay */ struct v4l2_framebuffer fbuf; struct cx88_buffer *screen;#endif /* capture queues */ struct cx88_dmaqueue vidq; struct cx88_dmaqueue vbiq; /* various v4l controls */ u32 freq; /* other global state info */ struct cx8800_suspend_state state;};/* ----------------------------------------------------------- *//* function 1: audio/alsa stuff */struct cx8801_dev { struct cx88_core *core; /* pci i/o */ struct pci_dev *pci; unsigned char pci_rev,pci_lat;};/* ----------------------------------------------------------- *//* function 2: mpeg stuff */struct cx8802_fh { struct cx8802_dev *dev; struct videobuf_queue mpegq;};struct cx8802_suspend_state { int disabled;};struct cx8802_dev { struct cx88_core *core; struct semaphore lock; spinlock_t slock; /* pci i/o */ struct pci_dev *pci; unsigned char pci_rev,pci_lat; /* dma queues */ struct cx88_dmaqueue mpegq; u32 ts_packet_size; u32 ts_packet_count; /* other global state info */ struct cx8802_suspend_state state; /* for blackbird only */ struct list_head devlist; struct video_device *mpeg_dev; u32 mailbox; /* for dvb only */ struct videobuf_dvb dvb; void* fe_handle; int (*fe_release)(void *handle);};/* ----------------------------------------------------------- */#define cx_read(reg) readl(core->lmmio + ((reg)>>2))#define cx_write(reg,value) writel((value), core->lmmio + ((reg)>>2))#define cx_writeb(reg,value) writeb((value), core->bmmio + (reg))#define cx_andor(reg,mask,value) \ writel((readl(core->lmmio+((reg)>>2)) & ~(mask)) |\ ((value) & (mask)), core->lmmio+((reg)>>2))#define cx_set(reg,bit) cx_andor((reg),(bit),(bit))#define cx_clear(reg,bit) cx_andor((reg),(bit),0)#define cx_wait(d) { if (need_resched()) schedule(); else udelay(d); }/* shadow registers */#define cx_sread(sreg) (core->shadow[sreg])#define cx_swrite(sreg,reg,value) \ (core->shadow[sreg] = value, \ writel(core->shadow[sreg], core->lmmio + ((reg)>>2)))#define cx_sandor(sreg,reg,mask,value) \ (core->shadow[sreg] = (core->shadow[sreg] & ~(mask)) | ((value) & (mask)), \ writel(core->shadow[sreg], core->lmmio + ((reg)>>2)))/* ----------------------------------------------------------- *//* cx88-core.c */extern char *cx88_pci_irqs[32];extern char *cx88_vid_irqs[32];extern char *cx88_mpeg_irqs[32];extern void cx88_print_irqbits(char *name, char *tag, char **strings, u32 bits, u32 mask);extern void cx88_print_ioctl(char *name, unsigned int cmd);extern void cx88_irq(struct cx88_core *core, u32 status, u32 mask);extern void cx88_wakeup(struct cx88_core *core, struct cx88_dmaqueue *q, u32 count);extern void cx88_shutdown(struct cx88_core *core);extern int cx88_reset(struct cx88_core *core);extern intcx88_risc_buffer(struct pci_dev *pci, struct btcx_riscmem *risc, struct scatterlist *sglist, unsigned int top_offset, unsigned int bottom_offset, unsigned int bpl, unsigned int padding, unsigned int lines);extern intcx88_risc_databuffer(struct pci_dev *pci, struct btcx_riscmem *risc, struct scatterlist *sglist, unsigned int bpl, unsigned int lines);extern intcx88_risc_stopper(struct pci_dev *pci, struct btcx_riscmem *risc, u32 reg, u32 mask, u32 value);extern voidcx88_free_buffer(struct pci_dev *pci, struct cx88_buffer *buf);extern void cx88_risc_disasm(struct cx88_core *core, struct btcx_riscmem *risc);extern int cx88_sram_channel_setup(struct cx88_core *core, struct sram_channel *ch, unsigned int bpl, u32 risc);extern void cx88_sram_channel_dump(struct cx88_core *core, struct sram_channel *ch);extern int cx88_set_scale(struct cx88_core *core, unsigned int width, unsigned int height, enum v4l2_field field);extern int cx88_set_tvnorm(struct cx88_core *core, struct cx88_tvnorm *norm);extern struct video_device *cx88_vdev_init(struct cx88_core *core, struct pci_dev *pci, struct video_device *template, char *type);extern struct cx88_core* cx88_core_get(struct pci_dev *pci);extern void cx88_core_put(struct cx88_core *core, struct pci_dev *pci);/* ----------------------------------------------------------- *//* cx88-vbi.c */void cx8800_vbi_fmt(struct cx8800_dev *dev, struct v4l2_format *f);int cx8800_start_vbi_dma(struct cx8800_dev *dev, struct cx88_dmaqueue *q, struct cx88_buffer *buf);int cx8800_stop_vbi_dma(struct cx8800_dev *dev);int cx8800_restart_vbi_queue(struct cx8800_dev *dev, struct cx88_dmaqueue *q);void cx8800_vbi_timeout(unsigned long data);extern struct videobuf_queue_ops cx8800_vbi_qops;/* ----------------------------------------------------------- *//* cx88-i2c.c */extern int cx88_i2c_init(struct cx88_core *core, struct pci_dev *pci);extern void cx88_call_i2c_clients(struct cx88_core *core, unsigned int cmd, void *arg);/* ----------------------------------------------------------- *//* cx88-cards.c */extern struct cx88_board cx88_boards[];extern const unsigned int cx88_bcount;extern struct cx88_subid cx88_subids[];extern const unsigned int cx88_idcount;extern void cx88_card_list(struct cx88_core *core, struct pci_dev *pci);extern void cx88_card_setup(struct cx88_core *core);/* ----------------------------------------------------------- *//* cx88-tvaudio.c */#define WW_NONE 1#define WW_BTSC 2#define WW_NICAM_I 3#define WW_NICAM_BGDKL 4#define WW_A1 5#define WW_A2_BG 6#define WW_A2_DK 7#define WW_A2_M 8#define WW_EIAJ 9#define WW_SYSTEM_L_AM 10#define WW_I2SPT 11#define WW_FM 12void cx88_set_tvaudio(struct cx88_core *core);void cx88_get_stereo(struct cx88_core *core, struct v4l2_tuner *t);void cx88_set_stereo(struct cx88_core *core, u32 mode);int cx88_audio_thread(void *data);/* ----------------------------------------------------------- *//* cx88-mpeg.c */int cx8802_buf_prepare(struct cx8802_dev *dev, struct cx88_buffer *buf);void cx8802_buf_queue(struct cx8802_dev *dev, struct cx88_buffer *buf);void cx8802_cancel_buffers(struct cx8802_dev *dev);int cx8802_init_common(struct cx8802_dev *dev);void cx8802_fini_common(struct cx8802_dev *dev);int cx8802_suspend_common(struct pci_dev *pci_dev, u32 state);int cx8802_resume_common(struct pci_dev *pci_dev);/* * Local variables: * c-basic-offset: 8 * End: */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -