/* SPDX-License-Identifier: GPL-2.0 */
/*
 * The Virtual DTV test driver serves as a reference DVB driver and helps
 * validate the existing APIs in the media subsystem. It can also aid
 * developers working on userspace applications.
 *
 * When this module is loaded, it will attempt to modprobe 'dvb_vidtv_tuner' and 'dvb_vidtv_demod'.
 *
 * Copyright (C) 2020 Daniel W. S. Almeida
 */

#ifndef VIDTV_BRIDGE_H
#define VIDTV_BRIDGE_H

/*
 * For now, only one frontend is supported. See vidtv_start_streaming()
 */
#define NUM_FE 1

#include <linux/i2c.h>
#include <linux/platform_device.h>
#include <linux/types.h>

#include <media/dmxdev.h>
#include <media/dvb_demux.h>
#include <media/dvb_frontend.h>

#include "vidtv_mux.h"

/**
 * struct vidtv_dvb - Vidtv bridge state
 * @pdev: The platform device. Obtained when the bridge is probed.
 * @fe: The frontends. Obtained when probing the demodulator modules.
 * @adapter: Represents a DTV adapter. See 'dvb_register_adapter'.
 * @demux: The demux used by the dvb_dmx_swfilter_packets() call.
 * @dmx_dev: Represents a demux device.
 * @dmx_fe: The frontends associated with the demux.
 * @i2c_adapter: The i2c_adapter associated with the bridge driver.
 * @i2c_client_demod: The i2c_clients associated with the demodulator modules.
 * @i2c_client_tuner: The i2c_clients associated with the tuner modules.
 * @nfeeds: The number of feeds active.
 * @feed_lock: Protects access to the start/stop stream logic/data.
 * @streaming: Whether we are streaming now.
 * @mux: The abstraction responsible for delivering MPEG TS packets to the bridge.
 */
struct vidtv_dvb {
	struct platform_device *pdev;
	struct dvb_frontend *fe[NUM_FE];
	struct dvb_adapter adapter;
	struct dvb_demux demux;
	struct dmxdev dmx_dev;
	struct dmx_frontend dmx_fe[NUM_FE];
	struct i2c_adapter i2c_adapter;
	struct i2c_client *i2c_client_demod[NUM_FE];
	struct i2c_client *i2c_client_tuner[NUM_FE];

	u32 nfeeds;
	struct mutex feed_lock; /* Protects access to the start/stop stream logic/data. */

	bool streaming;

	struct vidtv_mux *mux;
};

#endif // VIDTV_BRIDG_H
