linux/drivers/media/usb/dvb-usb-v2/gl861.c

// SPDX-License-Identifier: GPL-2.0-only
/* DVB USB compliant linux driver for GL861 USB2.0 devices.
 *
 * see Documentation/driver-api/media/drivers/dvb-usb.rst for more information
 */
#include <linux/string.h>

#include "dvb_usb.h"

#include "zl10353.h"
#include "qt1010.h"
#include "tc90522.h"
#include "dvb-pll.h"

DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);

struct gl861 {};

#define CMD_WRITE_SHORT
#define CMD_READ
#define CMD_WRITE

static int gl861_ctrl_msg(struct dvb_usb_device *d, u8 request, u16 value,
			  u16 index, void *data, u16 size)
{}

static int gl861_short_write(struct dvb_usb_device *d, u8 addr, u8 reg, u8 val)
{}

static int gl861_i2c_master_xfer(struct i2c_adapter *adap, struct i2c_msg msg[],
				 int num)
{}

static u32 gl861_i2c_functionality(struct i2c_adapter *adapter)
{}

static struct i2c_algorithm gl861_i2c_algo =;

/* Callbacks for DVB USB */
static struct zl10353_config gl861_zl10353_config =;

static int gl861_frontend_attach(struct dvb_usb_adapter *adap)
{}

static struct qt1010_config gl861_qt1010_config =;

static int gl861_tuner_attach(struct dvb_usb_adapter *adap)
{}

static int gl861_init(struct dvb_usb_device *d)
{}

/* DVB USB Driver stuff */
static struct dvb_usb_device_properties gl861_props =;


/*
 * For Friio
 */
struct friio_config {};

static const struct friio_config friio_config =;


/* GPIO control in Friio */

#define FRIIO_CTL_LNB
#define FRIIO_CTL_STROBE
#define FRIIO_CTL_CLK
#define FRIIO_CTL_LED

#define FRIIO_LED_RUNNING
#define FRIIO_LED_STOPPED

/* control PIC16F676 attached to Friio */
static int friio_ext_ctl(struct dvb_usb_device *d,
			    u32 sat_color, int power_on)
{}

/* init/config of gl861 for Friio */
/* NOTE:
 * This function cannot be moved to friio_init()/dvb_usbv2_init(),
 * because the init defined here includes a whole device reset,
 * it must be run early before any activities like I2C,
 * but friio_init() is called by dvb-usbv2 after {_frontend, _tuner}_attach(),
 * where I2C communication is used.
 * In addition, this reset is required in reset_resume() as well.
 * Thus this function is set to be called from _power_ctl().
 *
 * Since it will be called on the early init stage
 * where the i2c adapter is not initialized yet,
 * we cannot use i2c_transfer() here.
 */
static int friio_reset(struct dvb_usb_device *d)
{}

/*
 * DVB callbacks for Friio
 */

static int friio_power_ctrl(struct dvb_usb_device *d, int onoff)
{}

static int friio_frontend_attach(struct dvb_usb_adapter *adap)
{}

static int friio_frontend_detach(struct dvb_usb_adapter *adap)
{}

static int friio_tuner_attach(struct dvb_usb_adapter *adap)
{}

static int friio_tuner_detach(struct dvb_usb_adapter *adap)
{}

static int friio_init(struct dvb_usb_device *d)
{}

static void friio_exit(struct dvb_usb_device *d)
{}

static int friio_streaming_ctrl(struct dvb_frontend *fe, int onoff)
{}


static struct dvb_usb_device_properties friio_props =;

static const struct usb_device_id gl861_id_table[] =;
MODULE_DEVICE_TABLE(usb, gl861_id_table);

static struct usb_driver gl861_usb_driver =;

module_usb_driver();

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_VERSION();
MODULE_LICENSE();