blob: a14ac7711c925adc93ae504f666e312622bf53ca [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001/* SPDX-License-Identifier: GPL-2.0 */
Linus Torvalds1da177e2005-04-16 15:20:36 -07002#include <dvbdev.h>
3#include <dmxdev.h>
4#include <dvb_demux.h>
5#include <dvb_net.h>
6#include <dvb_frontend.h>
7
Hans Petter Selasky5d8f2902011-05-23 12:10:40 -03008#ifndef _VIDEOBUF_DVB_H_
9#define _VIDEOBUF_DVB_H_
10
Linus Torvalds1da177e2005-04-16 15:20:36 -070011struct videobuf_dvb {
12 /* filling that the job of the driver */
13 char *name;
14 struct dvb_frontend *frontend;
15 struct videobuf_queue dvbq;
16
17 /* video-buf-dvb state info */
Ingo Molnar3593cab2006-02-07 06:49:14 -020018 struct mutex lock;
Linus Torvalds1da177e2005-04-16 15:20:36 -070019 struct task_struct *thread;
20 int nfeeds;
21
22 /* videobuf_dvb_(un)register manges this */
Linus Torvalds1da177e2005-04-16 15:20:36 -070023 struct dvb_demux demux;
24 struct dmxdev dmxdev;
25 struct dmx_frontend fe_hw;
26 struct dmx_frontend fe_mem;
27 struct dvb_net net;
28};
29
Steven Toth363c35f2008-10-11 11:05:50 -030030struct videobuf_dvb_frontend {
Steven Toth363c35f2008-10-11 11:05:50 -030031 struct list_head felist;
32 int id;
33 struct videobuf_dvb dvb;
34};
35
36struct videobuf_dvb_frontends {
Darron Broad7bdf84f2008-10-15 13:43:41 -030037 struct list_head felist;
Steven Toth363c35f2008-10-11 11:05:50 -030038 struct mutex lock;
39 struct dvb_adapter adapter;
40 int active_fe_id; /* Indicates which frontend in the felist is in use */
Darron Broad8e739092008-10-11 11:31:41 -030041 int gate; /* Frontend with gate control 0=!MFE,1=fe0,2=fe1 etc */
Steven Toth363c35f2008-10-11 11:05:50 -030042};
43
44int videobuf_dvb_register_bus(struct videobuf_dvb_frontends *f,
Linus Torvalds1da177e2005-04-16 15:20:36 -070045 struct module *module,
Andrew de Quinceyd09dbf92006-04-10 09:27:37 -030046 void *adapter_priv,
Janne Grunau78e920062008-04-09 19:13:13 -030047 struct device *device,
Darron Broad59b18422008-10-11 11:44:05 -030048 short *adapter_nr,
Mauro Carvalho Chehab9adf6132012-08-05 14:16:30 -030049 int mfe_shared);
Steven Toth363c35f2008-10-11 11:05:50 -030050
51void videobuf_dvb_unregister_bus(struct videobuf_dvb_frontends *f);
52
Darron Broad96b7a1a2008-10-15 20:26:34 -030053struct videobuf_dvb_frontend * videobuf_dvb_alloc_frontend(struct videobuf_dvb_frontends *f, int id);
Darron Broad878595f2008-10-21 11:28:46 -030054void videobuf_dvb_dealloc_frontends(struct videobuf_dvb_frontends *f);
Steven Toth363c35f2008-10-11 11:05:50 -030055
56struct videobuf_dvb_frontend * videobuf_dvb_get_frontend(struct videobuf_dvb_frontends *f, int id);
57int videobuf_dvb_find_frontend(struct videobuf_dvb_frontends *f, struct dvb_frontend *p);
58
Hans Petter Selasky5d8f2902011-05-23 12:10:40 -030059#endif /* _VIDEOBUF_DVB_H_ */