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

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Realtek RTL2830 DVB-T demodulator driver
 *
 * Copyright (C) 2011 Antti Palosaari <[email protected]>
 */

#include "rtl2830_priv.h"

/* Our regmap is bypassing I2C adapter lock, thus we do it! */
static int rtl2830_bulk_write(struct i2c_client *client, unsigned int reg,
			      const void *val, size_t val_count)
{}

static int rtl2830_update_bits(struct i2c_client *client, unsigned int reg,
			       unsigned int mask, unsigned int val)
{}

static int rtl2830_bulk_read(struct i2c_client *client, unsigned int reg,
			     void *val, size_t val_count)
{}

static int rtl2830_init(struct dvb_frontend *fe)
{}

static int rtl2830_sleep(struct dvb_frontend *fe)
{}

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

static int rtl2830_set_frontend(struct dvb_frontend *fe)
{}

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

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

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

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

static int rtl2830_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
{}

static int rtl2830_read_signal_strength(struct dvb_frontend *fe, u16 *strength)
{}

static const struct dvb_frontend_ops rtl2830_ops =;

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

static int rtl2830_pid_filter(struct dvb_frontend *fe, u8 index, u16 pid, int onoff)
{}

/*
 * I2C gate/mux/repeater logic
 * We must use unlocked __i2c_transfer() here (through regmap) because of I2C
 * adapter lock is already taken by tuner driver.
 * Gate is closed automatically after single I2C transfer.
 */
static int rtl2830_select(struct i2c_mux_core *muxc, u32 chan_id)
{}

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

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

/*
 * We implement own I2C access routines for regmap in order to get manual access
 * to I2C adapter lock, which is needed for I2C mux adapter.
 */
static int rtl2830_regmap_read(void *context, const void *reg_buf,
			       size_t reg_size, void *val_buf, size_t val_size)
{}

static int rtl2830_regmap_write(void *context, const void *data, size_t count)
{}

static int rtl2830_regmap_gather_write(void *context, const void *reg,
				       size_t reg_len, const void *val,
				       size_t val_len)
{}

static int rtl2830_probe(struct i2c_client *client)
{}

static void rtl2830_remove(struct i2c_client *client)
{}

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

static struct i2c_driver rtl2830_driver =;

module_i2c_driver();

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