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

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Montage Technology M88DS3103/M88RS6000 demodulator driver
 *
 * Copyright (C) 2013 Antti Palosaari <[email protected]>
 */

#include "m88ds3103_priv.h"

static const struct dvb_frontend_ops m88ds3103_ops;

/* write single register with mask */
static int m88ds3103_update_bits(struct m88ds3103_dev *dev,
				u8 reg, u8 mask, u8 val)
{}

/* write reg val table using reg addr auto increment */
static int m88ds3103_wr_reg_val_tab(struct m88ds3103_dev *dev,
		const struct m88ds3103_reg_val *tab, int tab_len)
{}

/*
 * m88ds3103b demod has an internal device related to clocking. First the i2c
 * gate must be opened, for one transaction, then writes will be allowed.
 */
static int m88ds3103b_dt_write(struct m88ds3103_dev *dev, int reg, int data)
{}

/*
 * m88ds3103b demod has an internal device related to clocking. First the i2c
 * gate must be opened, for two transactions, then reads will be allowed.
 */
static int m88ds3103b_dt_read(struct m88ds3103_dev *dev, u8 reg)
{}

/*
 * Get the demodulator AGC PWM voltage setting supplied to the tuner.
 */
int m88ds3103_get_agc_pwm(struct dvb_frontend *fe, u8 *_agc_pwm)
{}
EXPORT_SYMBOL();

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

static int m88ds3103b_select_mclk(struct m88ds3103_dev *dev)
{}

static int m88ds3103b_set_mclk(struct m88ds3103_dev *dev, u32 mclk_khz)
{}

static int m88ds3103_set_frontend(struct dvb_frontend *fe)
{}

static int m88ds3103_init(struct dvb_frontend *fe)
{}

static int m88ds3103_sleep(struct dvb_frontend *fe)
{}

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

static int m88ds3103_read_snr(struct dvb_frontend *fe, u16 *snr)
{}

static int m88ds3103_read_ber(struct dvb_frontend *fe, u32 *ber)
{}

static int m88ds3103_set_tone(struct dvb_frontend *fe,
	enum fe_sec_tone_mode fe_sec_tone_mode)
{}

static int m88ds3103_set_voltage(struct dvb_frontend *fe,
	enum fe_sec_voltage fe_sec_voltage)
{}

static int m88ds3103_diseqc_send_master_cmd(struct dvb_frontend *fe,
		struct dvb_diseqc_master_cmd *diseqc_cmd)
{}

static int m88ds3103_diseqc_send_burst(struct dvb_frontend *fe,
	enum fe_sec_mini_cmd fe_sec_mini_cmd)
{}

static int m88ds3103_get_tune_settings(struct dvb_frontend *fe,
	struct dvb_frontend_tune_settings *s)
{}

static void m88ds3103_release(struct dvb_frontend *fe)
{}

static int m88ds3103_select(struct i2c_mux_core *muxc, u32 chan)
{}

/*
 * XXX: That is wrapper to m88ds3103_probe() via driver core in order to provide
 * proper I2C client for legacy media attach binding.
 * New users must use I2C client binding directly!
 */
struct dvb_frontend *m88ds3103_attach(const struct m88ds3103_config *cfg,
				      struct i2c_adapter *i2c,
				      struct i2c_adapter **tuner_i2c_adapter)
{}
EXPORT_SYMBOL_GPL();

static const struct dvb_frontend_ops m88ds3103_ops =;

static struct dvb_frontend *m88ds3103_get_dvb_frontend(struct i2c_client *client)
{}

static struct i2c_adapter *m88ds3103_get_i2c_adapter(struct i2c_client *client)
{}

static int m88ds3103_probe(struct i2c_client *client)
{}

static void m88ds3103_remove(struct i2c_client *client)
{}

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

static struct i2c_driver m88ds3103_driver =;

module_i2c_driver();

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