1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef __PVRUSB2_DVB_H__
3 #define __PVRUSB2_DVB_H__
4 
5 #include <media/dvb_frontend.h>
6 #include <media/dvb_demux.h>
7 #include <media/dvb_net.h>
8 #include <media/dmxdev.h>
9 #include "pvrusb2-context.h"
10 
11 #define PVR2_DVB_BUFFER_COUNT 32
12 #define PVR2_DVB_BUFFER_SIZE PAGE_ALIGN(0x4000)
13 
14 struct pvr2_dvb_adapter {
15 	struct pvr2_channel	channel;
16 
17 	struct dvb_adapter	dvb_adap;
18 	struct dmxdev		dmxdev;
19 	struct dvb_demux	demux;
20 	struct dvb_net		dvb_net;
21 	struct dvb_frontend	*fe[2];
22 
23 	struct i2c_client	*i2c_client_demod[2];
24 	struct i2c_client	*i2c_client_tuner;
25 
26 	int			feedcount;
27 	int			max_feed_count;
28 
29 	struct task_struct	*thread;
30 	struct mutex		lock;
31 
32 	unsigned int		stream_run:1;
33 
34 	wait_queue_head_t	buffer_wait_data;
35 	char			*buffer_storage[PVR2_DVB_BUFFER_COUNT];
36 };
37 
38 struct pvr2_dvb_props {
39 	int (*frontend_attach) (struct pvr2_dvb_adapter *);
40 	int (*tuner_attach) (struct pvr2_dvb_adapter *);
41 };
42 
43 struct pvr2_dvb_adapter *pvr2_dvb_create(struct pvr2_context *pvr);
44 
45 #endif /* __PVRUSB2_DVB_H__ */
46