#include "tda8083.h"
#include "sp8870.h"
#include "stv0297.h"
+#include "l64781.h"
#include <media/saa7146_vv.h>
enum {AV_PES_STREAM, PS_STREAM, TS_STREAM, PES_STREAM};
struct av7110_p2t {
- u8 pes[TS_SIZE];
- u8 counter;
- long int pos;
- int frags;
- struct dvb_demux_feed *feed;
+ u8 pes[TS_SIZE];
+ u8 counter;
+ long int pos;
+ int frags;
+ struct dvb_demux_feed *feed;
};
/* video MPEG decoder events: */
/* (code copied from dvb_frontend.c, should maybe be factored out...) */
#define MAX_VIDEO_EVENT 8
struct dvb_video_events {
- struct video_event events[MAX_VIDEO_EVENT];
- int eventw;
- int eventr;
- int overflow;
- wait_queue_head_t wait_queue;
- spinlock_t lock;
+ struct video_event events[MAX_VIDEO_EVENT];
+ int eventw;
+ int eventr;
+ int overflow;
+ wait_queue_head_t wait_queue;
+ spinlock_t lock;
};
/* place to store all the necessary device information */
struct av7110 {
- /* devices */
+ /* devices */
- struct dvb_device dvb_dev;
- struct dvb_net dvb_net;
+ struct dvb_device dvb_dev;
+ struct dvb_net dvb_net;
struct video_device *v4l_dev;
struct video_device *vbi_dev;
- struct saa7146_dev *dev;
+ struct saa7146_dev *dev;
struct i2c_adapter i2c_adap;
int analog_tuner_flags;
int current_input;
u32 current_freq;
-
- struct tasklet_struct debi_tasklet;
- struct tasklet_struct gpio_tasklet;
- int adac_type; /* audio DAC type */
-#define DVB_ADAC_TI 0
+ struct tasklet_struct debi_tasklet;
+ struct tasklet_struct gpio_tasklet;
+
+ int adac_type; /* audio DAC type */
+#define DVB_ADAC_TI 0
#define DVB_ADAC_CRYSTAL 1
-#define DVB_ADAC_MSP 2
-#define DVB_ADAC_NONE -1
+#define DVB_ADAC_MSP 2
+#define DVB_ADAC_NONE -1
- /* buffers */
+ /* buffers */
- void *iobuf; /* memory for all buffers */
- struct dvb_ringbuffer avout; /* buffer for video or A/V mux */
+ void *iobuf; /* memory for all buffers */
+ struct dvb_ringbuffer avout; /* buffer for video or A/V mux */
#define AVOUTLEN (128*1024)
- struct dvb_ringbuffer aout; /* buffer for audio */
+ struct dvb_ringbuffer aout; /* buffer for audio */
#define AOUTLEN (64*1024)
- void *bmpbuf;
+ void *bmpbuf;
#define BMPLEN (8*32768+1024)
- /* bitmap buffers and states */
+ /* bitmap buffers and states */
- int bmpp;
- int bmplen;
+ int bmpp;
+ int bmplen;
volatile int bmp_state;
#define BMP_NONE 0
#define BMP_LOADING 1
wait_queue_head_t bmpq;
- /* DEBI and polled command interface */
+ /* DEBI and polled command interface */
- spinlock_t debilock;
- struct semaphore dcomlock;
+ spinlock_t debilock;
+ struct semaphore dcomlock;
volatile int debitype;
volatile int debilen;
- /* Recording and playback flags */
+ /* Recording and playback flags */
- int rec_mode;
- int playing;
+ int rec_mode;
+ int playing;
#define RP_NONE 0
#define RP_VIDEO 1
#define RP_AUDIO 2
-#define RP_AV 3
+#define RP_AV 3
- /* OSD */
+ /* OSD */
- int osdwin; /* currently active window */
- u16 osdbpp[8];
+ int osdwin; /* currently active window */
+ u16 osdbpp[8];
struct semaphore osd_sema;
- /* CA */
+ /* CA */
- ca_slot_info_t ci_slot[2];
+ ca_slot_info_t ci_slot[2];
- int vidmode;
- struct dmxdev dmxdev;
- struct dvb_demux demux;
+ int vidmode;
+ struct dmxdev dmxdev;
+ struct dvb_demux demux;
- struct dmx_frontend hw_frontend;
- struct dmx_frontend mem_frontend;
+ struct dmx_frontend hw_frontend;
+ struct dmx_frontend mem_frontend;
/* for budget mode demux1 */
struct dmxdev dmxdev1;
struct saa7146_pgtable pt;
struct tasklet_struct vpe_tasklet;
- int fe_synced;
- struct semaphore pid_mutex;
+ int fe_synced;
+ struct semaphore pid_mutex;
- int video_blank;
- struct video_status videostate;
- int display_ar;
- int trickmode;
+ int video_blank;
+ struct video_status videostate;
+ int display_ar;
+ int trickmode;
#define TRICK_NONE 0
#define TRICK_FAST 1
#define TRICK_SLOW 2
#define TRICK_FREEZE 3
- struct audio_status audiostate;
+ struct audio_status audiostate;
- struct dvb_demux_filter *handle2filter[32];
- struct av7110_p2t p2t_filter[MAXFILT];
- struct dvb_filter_pes2ts p2t[2];
- struct ipack ipack[2];
- u8 *kbuf[2];
+ struct dvb_demux_filter *handle2filter[32];
+ struct av7110_p2t p2t_filter[MAXFILT];
+ struct dvb_filter_pes2ts p2t[2];
+ struct ipack ipack[2];
+ u8 *kbuf[2];
- int sinfo;
- int feeding;
+ int sinfo;
+ int feeding;
- int arm_errors;
- int registered;
+ int arm_errors;
+ int registered;
/* AV711X */
- u32 arm_fw;
- u32 arm_rtsl;
- u32 arm_vid;
- u32 arm_app;
- u32 avtype;
- int arm_ready;
- struct task_struct *arm_thread;
+ u32 arm_fw;
+ u32 arm_rtsl;
+ u32 arm_vid;
+ u32 arm_app;
+ u32 avtype;
+ int arm_ready;
+ struct task_struct *arm_thread;
wait_queue_head_t arm_wait;
- u16 arm_loops;
- int arm_rmmod;
+ u16 arm_loops;
+ int arm_rmmod;
+
+ void *debi_virt;
+ dma_addr_t debi_bus;
- void *debi_virt;
- dma_addr_t debi_bus;
+ u16 pids[DMX_PES_OTHER];
- u16 pids[DMX_PES_OTHER];
-
- struct dvb_ringbuffer ci_rbuffer;
- struct dvb_ringbuffer ci_wbuffer;
+ struct dvb_ringbuffer ci_rbuffer;
+ struct dvb_ringbuffer ci_wbuffer;
struct audio_mixer mixer;
- struct dvb_adapter *dvb_adapter;
- struct dvb_device *video_dev;
- struct dvb_device *audio_dev;
- struct dvb_device *ca_dev;
- struct dvb_device *osd_dev;
+ struct dvb_adapter dvb_adapter;
+ struct dvb_device *video_dev;
+ struct dvb_device *audio_dev;
+ struct dvb_device *ca_dev;
+ struct dvb_device *osd_dev;
struct dvb_video_events video_events;
- video_size_t video_size;
+ video_size_t video_size;
- u32 ir_config;
-
- /* firmware stuff */
- unsigned int device_initialized;
+ u32 ir_config;
+ /* firmware stuff */
unsigned char *bin_fw;
unsigned long size_fw;
u16 subpid, u16 pcrpid);
extern void av7110_register_irc_handler(void (*func)(u32));
-extern void av7110_unregister_irc_handler(void (*func)(u32));
+extern void av7110_unregister_irc_handler(void (*func)(u32));
extern void av7110_setup_irc_config (struct av7110 *av7110, u32 ir_config);
extern int av7110_ir_init (void);
extern int i2c_writereg(struct av7110 *av7110, u8 id, u8 reg, u8 val);
extern u8 i2c_readreg(struct av7110 *av7110, u8 id, u8 reg);
extern int msp_writereg(struct av7110 *av7110, u8 dev, u16 reg, u16 val);
-extern int msp_readreg(struct av7110 *av7110, u8 dev, u16 reg, u16 *val);
extern int av7110_init_analog_module(struct av7110 *av7110);
extern int av7110_exit_v4l(struct av7110 *av7110);
#endif /* _AV7110_H_ */
-