0001
0002
0003 #ifndef __BUDGET_DVB__
0004 #define __BUDGET_DVB__
0005
0006 #include <media/dvb_frontend.h>
0007 #include <media/dvbdev.h>
0008 #include <media/demux.h>
0009 #include <media/dvb_demux.h>
0010 #include <media/dmxdev.h>
0011 #include <media/dvb_net.h>
0012
0013 #include <linux/module.h>
0014 #include <linux/mutex.h>
0015
0016 #include <media/drv-intf/saa7146.h>
0017
0018 extern int budget_debug;
0019
0020 #ifdef dprintk
0021 #undef dprintk
0022 #endif
0023
0024 #define dprintk(level, fmt, arg...) do { \
0025 if (level & budget_debug) \
0026 printk(KERN_DEBUG KBUILD_MODNAME ": %s(): " fmt, \
0027 __func__, ##arg); \
0028 } while (0)
0029
0030 #define TS_SIZE 188
0031
0032 struct budget_info {
0033 char *name;
0034 int type;
0035 };
0036
0037
0038 struct budget {
0039
0040
0041 struct dvb_device dvb_dev;
0042 struct dvb_net dvb_net;
0043
0044 struct saa7146_dev *dev;
0045
0046 struct i2c_adapter i2c_adap;
0047 struct budget_info *card;
0048
0049 unsigned char *grabbing;
0050 struct saa7146_pgtable pt;
0051
0052 struct tasklet_struct fidb_tasklet;
0053 struct tasklet_struct vpe_tasklet;
0054
0055 struct dmxdev dmxdev;
0056 struct dvb_demux demux;
0057
0058 struct dmx_frontend hw_frontend;
0059 struct dmx_frontend mem_frontend;
0060
0061 int ci_present;
0062 int video_port;
0063
0064 u32 buffer_width;
0065 u32 buffer_height;
0066 u32 buffer_size;
0067 u32 buffer_warning_threshold;
0068 u32 buffer_warnings;
0069 unsigned long buffer_warning_time;
0070
0071 u32 ttbp;
0072 int feeding;
0073
0074 spinlock_t feedlock;
0075
0076 spinlock_t debilock;
0077
0078 struct dvb_adapter dvb_adapter;
0079 struct dvb_frontend *dvb_frontend;
0080 int (*read_fe_status)(struct dvb_frontend *fe, enum fe_status *status);
0081 int fe_synced;
0082
0083 void *priv;
0084 };
0085
0086 #define MAKE_BUDGET_INFO(x_var,x_name,x_type) \
0087 static struct budget_info x_var ## _info = { \
0088 .name=x_name, \
0089 .type=x_type }; \
0090 static struct saa7146_pci_extension_data x_var = { \
0091 .ext_priv = &x_var ## _info, \
0092 .ext = &budget_extension };
0093
0094 #define BUDGET_TT 0
0095 #define BUDGET_TT_HW_DISEQC 1
0096 #define BUDGET_PATCH 3
0097 #define BUDGET_FS_ACTIVY 4
0098 #define BUDGET_CIN1200S 5
0099 #define BUDGET_CIN1200C 6
0100 #define BUDGET_CIN1200T 7
0101 #define BUDGET_KNC1S 8
0102 #define BUDGET_KNC1C 9
0103 #define BUDGET_KNC1T 10
0104 #define BUDGET_KNC1SP 11
0105 #define BUDGET_KNC1CP 12
0106 #define BUDGET_KNC1TP 13
0107 #define BUDGET_TVSTAR 14
0108 #define BUDGET_CIN1200C_MK3 15
0109 #define BUDGET_KNC1C_MK3 16
0110 #define BUDGET_KNC1CP_MK3 17
0111 #define BUDGET_KNC1S2 18
0112 #define BUDGET_KNC1C_TDA10024 19
0113
0114 #define BUDGET_VIDEO_PORTA 0
0115 #define BUDGET_VIDEO_PORTB 1
0116
0117 extern int ttpci_budget_init(struct budget *budget, struct saa7146_dev *dev,
0118 struct saa7146_pci_extension_data *info,
0119 struct module *owner, short *adapter_nums);
0120 extern void ttpci_budget_init_hooks(struct budget *budget);
0121 extern int ttpci_budget_deinit(struct budget *budget);
0122 extern void ttpci_budget_irq10_handler(struct saa7146_dev *dev, u32 * isr);
0123 extern void ttpci_budget_set_video_port(struct saa7146_dev *dev, int video_port);
0124 extern int ttpci_budget_debiread(struct budget *budget, u32 config, int addr, int count,
0125 int uselocks, int nobusyloop);
0126 extern int ttpci_budget_debiwrite(struct budget *budget, u32 config, int addr, int count, u32 value,
0127 int uselocks, int nobusyloop);
0128
0129 #endif