root/drivers/media/usb/pvrusb2/pvrusb2-dvb.h
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PVRUSB2_DVB_H__
#define __PVRUSB2_DVB_H__

#include <media/dvb_frontend.h>
#include <media/dvb_demux.h>
#include <media/dvb_net.h>
#include <media/dmxdev.h>
#include "pvrusb2-context.h"

#define PVR2_DVB_BUFFER_COUNT 32
#define PVR2_DVB_BUFFER_SIZE PAGE_ALIGN(0x4000)

struct pvr2_dvb_adapter {
        struct pvr2_channel     channel;

        struct dvb_adapter      dvb_adap;
        struct dmxdev           dmxdev;
        struct dvb_demux        demux;
        struct dvb_net          dvb_net;
        struct dvb_frontend     *fe[2];

        struct i2c_client       *i2c_client_demod[2];
        struct i2c_client       *i2c_client_tuner;

        int                     feedcount;
        int                     max_feed_count;

        struct task_struct      *thread;
        struct mutex            lock;

        unsigned int            stream_run:1;

        wait_queue_head_t       buffer_wait_data;
        char                    *buffer_storage[PVR2_DVB_BUFFER_COUNT];
};

struct pvr2_dvb_props {
        int (*frontend_attach) (struct pvr2_dvb_adapter *);
        int (*tuner_attach) (struct pvr2_dvb_adapter *);
};

struct pvr2_dvb_adapter *pvr2_dvb_create(struct pvr2_context *pvr);

#endif /* __PVRUSB2_DVB_H__ */