linux/drivers/media/dvb-frontends/tc90522.c

// SPDX-License-Identifier: GPL-2.0
/*
 * Toshiba TC90522 Demodulator
 *
 * Copyright (C) 2014 Akihiro Tsukada <[email protected]>
 */

/*
 * NOTICE:
 * This driver is incomplete and lacks init/config of the chips,
 * as the necessary info is not disclosed.
 * It assumes that users of this driver (such as a PCI bridge of
 * DTV receiver cards) properly init and configure the chip
 * via I2C *before* calling this driver's init() function.
 *
 * Currently, PT3 driver is the only one that uses this driver,
 * and contains init/config code in its firmware.
 * Thus some part of the code might be dependent on PT3 specific config.
 */

#include <linux/kernel.h>
#include <linux/math64.h>
#include <linux/dvb/frontend.h>
#include <linux/int_log.h>
#include "tc90522.h"

#define TC90522_I2C_THRU_REG

#define TC90522_MODULE_IDX(addr)

struct tc90522_state {};

struct reg_val {};

static int
reg_write(struct tc90522_state *state, const struct reg_val *regs, int num)
{}

static int reg_read(struct tc90522_state *state, u8 reg, u8 *val, u8 len)
{}

static struct tc90522_state *cfg_to_state(struct tc90522_config *c)
{}


static int tc90522s_set_tsid(struct dvb_frontend *fe)
{}

static int tc90522t_set_layers(struct dvb_frontend *fe)
{}

/* frontend ops */

static int tc90522s_read_status(struct dvb_frontend *fe, enum fe_status *status)
{}

static int tc90522t_read_status(struct dvb_frontend *fe, enum fe_status *status)
{}

static const enum fe_code_rate fec_conv_sat[] =;

static int tc90522s_get_frontend(struct dvb_frontend *fe,
				 struct dtv_frontend_properties *c)
{}


static const enum fe_transmit_mode tm_conv[] =;

static const enum fe_code_rate fec_conv_ter[] =;

static const enum fe_modulation mod_conv[] =;

static int tc90522t_get_frontend(struct dvb_frontend *fe,
				 struct dtv_frontend_properties *c)
{}

static const struct reg_val reset_sat =;
static const struct reg_val reset_ter =;

static int tc90522_set_frontend(struct dvb_frontend *fe)
{}

static int tc90522_get_tune_settings(struct dvb_frontend *fe,
	struct dvb_frontend_tune_settings *settings)
{}

static int tc90522_set_if_agc(struct dvb_frontend *fe, bool on)
{}

static const struct reg_val sleep_sat =;
static const struct reg_val sleep_ter =;

static int tc90522_sleep(struct dvb_frontend *fe)
{}

static const struct reg_val wakeup_sat =;
static const struct reg_val wakeup_ter =;

static int tc90522_init(struct dvb_frontend *fe)
{}


/*
 * tuner I2C adapter functions
 */

static int
tc90522_master_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num)
{}

static u32 tc90522_functionality(struct i2c_adapter *adap)
{}

static const struct i2c_algorithm tc90522_tuner_i2c_algo =;


/*
 * I2C driver functions
 */

static const struct dvb_frontend_ops tc90522_ops_sat =;

static const struct dvb_frontend_ops tc90522_ops_ter =;


static int tc90522_probe(struct i2c_client *client)
{}

static void tc90522_remove(struct i2c_client *client)
{}


static const struct i2c_device_id tc90522_id[] =;
MODULE_DEVICE_TABLE(i2c, tc90522_id);

static struct i2c_driver tc90522_driver =;

module_i2c_driver();

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