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