Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
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 /* place to store all the necessary device information */
0038 struct budget {
0039 
0040     /* devices */
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