Merge branch 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / media / dvb / ngene / ngene.h
index 8fb4200f83f847e73d0f17b6e70e0a33dd107df1..40fce9e3ae66323435ec36cfb75d1049361a85f7 100644 (file)
 #include "dmxdev.h"
 #include "dvbdev.h"
 #include "dvb_demux.h"
+#include "dvb_ca_en50221.h"
 #include "dvb_frontend.h"
 #include "dvb_ringbuffer.h"
+#include "dvb_net.h"
+#include "cxd2099.h"
 
 #define DEVICE_NAME "ngene"
 
@@ -636,14 +639,18 @@ struct ngene_channel {
        int                   number;
        int                   type;
        int                   mode;
+       bool                  has_adapter;
+       bool                  has_demux;
 
        struct dvb_frontend  *fe;
        struct dmxdev         dmxdev;
        struct dvb_demux      demux;
+       struct dvb_net        dvbnet;
        struct dmx_frontend   hw_frontend;
        struct dmx_frontend   mem_frontend;
        int                   users;
        struct video_device  *v4l_dev;
+       struct dvb_device    *ci_dev;
        struct tasklet_struct demux_tasklet;
 
        struct SBufferHeader *nextBuffer;
@@ -710,6 +717,15 @@ struct ngene_channel {
        int running;
 };
 
+
+struct ngene_ci {
+       struct device         device;
+       struct i2c_adapter    i2c_adapter;
+
+       struct ngene         *dev;
+       struct dvb_ca_en50221 *en;
+};
+
 struct ngene;
 
 typedef void (rx_cb_t)(struct ngene *, u32, u8);
@@ -774,6 +790,10 @@ struct ngene {
 #define TSOUT_BUF_SIZE (512*188*8)
        struct dvb_ringbuffer tsout_rbuf;
 
+       u8                   *tsin_buf;
+#define TSIN_BUF_SIZE (512*188*8)
+       struct dvb_ringbuffer tsin_rbuf;
+
        u8                   *ain_buf;
 #define AIN_BUF_SIZE (128*1024)
        struct dvb_ringbuffer ain_rbuf;
@@ -785,6 +805,8 @@ struct ngene {
 
        unsigned long         exp_val;
        int prev_cmd;
+
+       struct ngene_ci       ci;
 };
 
 struct ngene_info {
@@ -863,6 +885,7 @@ struct ngene_buffer {
 int __devinit ngene_probe(struct pci_dev *pci_dev,
                          const struct pci_device_id *id);
 void __devexit ngene_remove(struct pci_dev *pdev);
+void ngene_shutdown(struct pci_dev *pdev);
 int ngene_command(struct ngene *dev, struct ngene_command *com);
 int ngene_command_gpio_set(struct ngene *dev, u8 select, u8 level);
 void set_transfer(struct ngene_channel *chan, int state);
@@ -872,6 +895,7 @@ void FillTSBuffer(void *Buffer, int Length, u32 Flags);
 int ngene_i2c_init(struct ngene *dev, int dev_nr);
 
 /* Provided by ngene-dvb.c */
+extern struct dvb_device ngene_dvbdev_ci;
 void *tsout_exchange(void *priv, void *buf, u32 len, u32 clock, u32 flags);
 void *tsin_exchange(void *priv, void *buf, u32 len, u32 clock, u32 flags);
 int ngene_start_feed(struct dvb_demux_feed *dvbdmxfeed);