Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / drivers / media / usb / pvrusb2 / pvrusb2-dvb.h
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__ */