162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#ifndef __PVRUSB2_DVB_H__
362306a36Sopenharmony_ci#define __PVRUSB2_DVB_H__
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci#include <media/dvb_frontend.h>
662306a36Sopenharmony_ci#include <media/dvb_demux.h>
762306a36Sopenharmony_ci#include <media/dvb_net.h>
862306a36Sopenharmony_ci#include <media/dmxdev.h>
962306a36Sopenharmony_ci#include "pvrusb2-context.h"
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#define PVR2_DVB_BUFFER_COUNT 32
1262306a36Sopenharmony_ci#define PVR2_DVB_BUFFER_SIZE PAGE_ALIGN(0x4000)
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cistruct pvr2_dvb_adapter {
1562306a36Sopenharmony_ci	struct pvr2_channel	channel;
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci	struct dvb_adapter	dvb_adap;
1862306a36Sopenharmony_ci	struct dmxdev		dmxdev;
1962306a36Sopenharmony_ci	struct dvb_demux	demux;
2062306a36Sopenharmony_ci	struct dvb_net		dvb_net;
2162306a36Sopenharmony_ci	struct dvb_frontend	*fe[2];
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci	struct i2c_client	*i2c_client_demod[2];
2462306a36Sopenharmony_ci	struct i2c_client	*i2c_client_tuner;
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci	int			feedcount;
2762306a36Sopenharmony_ci	int			max_feed_count;
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci	struct task_struct	*thread;
3062306a36Sopenharmony_ci	struct mutex		lock;
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci	unsigned int		stream_run:1;
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci	wait_queue_head_t	buffer_wait_data;
3562306a36Sopenharmony_ci	char			*buffer_storage[PVR2_DVB_BUFFER_COUNT];
3662306a36Sopenharmony_ci};
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_cistruct pvr2_dvb_props {
3962306a36Sopenharmony_ci	int (*frontend_attach) (struct pvr2_dvb_adapter *);
4062306a36Sopenharmony_ci	int (*tuner_attach) (struct pvr2_dvb_adapter *);
4162306a36Sopenharmony_ci};
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_cistruct pvr2_dvb_adapter *pvr2_dvb_create(struct pvr2_context *pvr);
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci#endif /* __PVRUSB2_DVB_H__ */
46