1 #ifndef _VIDEOBUF2_DVB_H_ 2 #define _VIDEOBUF2_DVB_H_ 3 4 #include <dvbdev.h> 5 #include <dmxdev.h> 6 #include <dvb_demux.h> 7 #include <dvb_net.h> 8 #include <dvb_frontend.h> 9 10 #include <media/videobuf2-v4l2.h> 11 /* 12 * TODO: This header file should be replaced with videobuf2-core.h 13 * Currently, vb2_thread is not a stuff of videobuf2-core, 14 * since vb2_thread has many dependencies on videobuf2-v4l2. 15 */ 16 17 struct vb2_dvb { 18 /* filling that the job of the driver */ 19 char *name; 20 struct dvb_frontend *frontend; 21 struct vb2_queue dvbq; 22 23 /* video-buf-dvb state info */ 24 struct mutex lock; 25 int nfeeds; 26 27 /* vb2_dvb_(un)register manages this */ 28 struct dvb_demux demux; 29 struct dmxdev dmxdev; 30 struct dmx_frontend fe_hw; 31 struct dmx_frontend fe_mem; 32 struct dvb_net net; 33 }; 34 35 struct vb2_dvb_frontend { 36 struct list_head felist; 37 int id; 38 struct vb2_dvb dvb; 39 }; 40 41 struct vb2_dvb_frontends { 42 struct list_head felist; 43 struct mutex lock; 44 struct dvb_adapter adapter; 45 int active_fe_id; /* Indicates which frontend in the felist is in use */ 46 int gate; /* Frontend with gate control 0=!MFE,1=fe0,2=fe1 etc */ 47 }; 48 49 int vb2_dvb_register_bus(struct vb2_dvb_frontends *f, 50 struct module *module, 51 void *adapter_priv, 52 struct device *device, 53 short *adapter_nr, 54 int mfe_shared); 55 56 void vb2_dvb_unregister_bus(struct vb2_dvb_frontends *f); 57 58 struct vb2_dvb_frontend *vb2_dvb_alloc_frontend(struct vb2_dvb_frontends *f, int id); 59 void vb2_dvb_dealloc_frontends(struct vb2_dvb_frontends *f); 60 61 struct vb2_dvb_frontend *vb2_dvb_get_frontend(struct vb2_dvb_frontends *f, int id); 62 int vb2_dvb_find_frontend(struct vb2_dvb_frontends *f, struct dvb_frontend *p); 63 64 #endif /* _VIDEOBUF2_DVB_H_ */ 65