1701b57eeSHans Verkuil #ifndef _VIDEOBUF2_DVB_H_ 2701b57eeSHans Verkuil #define _VIDEOBUF2_DVB_H_ 3701b57eeSHans Verkuil 4701b57eeSHans Verkuil #include <dvbdev.h> 5701b57eeSHans Verkuil #include <dmxdev.h> 6701b57eeSHans Verkuil #include <dvb_demux.h> 7701b57eeSHans Verkuil #include <dvb_net.h> 8701b57eeSHans Verkuil #include <dvb_frontend.h> 9701b57eeSHans Verkuil #include <media/videobuf2-core.h> 10701b57eeSHans Verkuil 11701b57eeSHans Verkuil struct vb2_dvb { 12701b57eeSHans Verkuil /* filling that the job of the driver */ 13701b57eeSHans Verkuil char *name; 14701b57eeSHans Verkuil struct dvb_frontend *frontend; 15701b57eeSHans Verkuil struct vb2_queue dvbq; 16701b57eeSHans Verkuil 17701b57eeSHans Verkuil /* video-buf-dvb state info */ 18701b57eeSHans Verkuil struct mutex lock; 19701b57eeSHans Verkuil int nfeeds; 20701b57eeSHans Verkuil 21701b57eeSHans Verkuil /* vb2_dvb_(un)register manages this */ 22701b57eeSHans Verkuil struct dvb_demux demux; 23701b57eeSHans Verkuil struct dmxdev dmxdev; 24701b57eeSHans Verkuil struct dmx_frontend fe_hw; 25701b57eeSHans Verkuil struct dmx_frontend fe_mem; 26701b57eeSHans Verkuil struct dvb_net net; 27701b57eeSHans Verkuil }; 28701b57eeSHans Verkuil 29701b57eeSHans Verkuil struct vb2_dvb_frontend { 30701b57eeSHans Verkuil struct list_head felist; 31701b57eeSHans Verkuil int id; 32701b57eeSHans Verkuil struct vb2_dvb dvb; 33701b57eeSHans Verkuil }; 34701b57eeSHans Verkuil 35701b57eeSHans Verkuil struct vb2_dvb_frontends { 36701b57eeSHans Verkuil struct list_head felist; 37701b57eeSHans Verkuil struct mutex lock; 38701b57eeSHans Verkuil struct dvb_adapter adapter; 39701b57eeSHans Verkuil int active_fe_id; /* Indicates which frontend in the felist is in use */ 40701b57eeSHans Verkuil int gate; /* Frontend with gate control 0=!MFE,1=fe0,2=fe1 etc */ 41701b57eeSHans Verkuil }; 42701b57eeSHans Verkuil 43701b57eeSHans Verkuil int vb2_dvb_register_bus(struct vb2_dvb_frontends *f, 44701b57eeSHans Verkuil struct module *module, 45701b57eeSHans Verkuil void *adapter_priv, 46701b57eeSHans Verkuil struct device *device, 47701b57eeSHans Verkuil short *adapter_nr, 48701b57eeSHans Verkuil int mfe_shared); 49701b57eeSHans Verkuil 50701b57eeSHans Verkuil void vb2_dvb_unregister_bus(struct vb2_dvb_frontends *f); 51701b57eeSHans Verkuil 52701b57eeSHans Verkuil struct vb2_dvb_frontend *vb2_dvb_alloc_frontend(struct vb2_dvb_frontends *f, int id); 53701b57eeSHans Verkuil void vb2_dvb_dealloc_frontends(struct vb2_dvb_frontends *f); 54701b57eeSHans Verkuil 55701b57eeSHans Verkuil struct vb2_dvb_frontend *vb2_dvb_get_frontend(struct vb2_dvb_frontends *f, int id); 56701b57eeSHans Verkuil int vb2_dvb_find_frontend(struct vb2_dvb_frontends *f, struct dvb_frontend *p); 57701b57eeSHans Verkuil 58701b57eeSHans Verkuil #endif /* _VIDEOBUF2_DVB_H_ */ 59