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

// SPDX-License-Identifier: GPL-2.0-only
/*
 *   Fujitu mb86a20s ISDB-T/ISDB-Tsb Module driver
 *
 *   Copyright (C) 2010-2013 Mauro Carvalho Chehab
 *   Copyright (C) 2009-2010 Douglas Landgraf <[email protected]>
 */

#include <linux/kernel.h>
#include <asm/div64.h>

#include <media/dvb_frontend.h>
#include "mb86a20s.h"

#define NUM_LAYERS

enum mb86a20s_bandwidth {};

static u8 mb86a20s_subchannel[] =;

struct mb86a20s_state {};

struct regdata {};

#define BER_SAMPLING_RATE

/*
 * Initialization sequence: Use whatevere default values that PV SBTVD
 * does on its initialisation, obtained via USB snoop
 */
static struct regdata mb86a20s_init1[] =;

static struct regdata mb86a20s_init2[] =;

static struct regdata mb86a20s_reset_reception[] =;

static struct regdata mb86a20s_per_ber_reset[] =;

/*
 * I2C read/write functions and macros
 */

static int mb86a20s_i2c_writereg(struct mb86a20s_state *state,
			     u8 i2c_addr, u8 reg, u8 data)
{}

static int mb86a20s_i2c_writeregdata(struct mb86a20s_state *state,
				     u8 i2c_addr, struct regdata *rd, int size)
{}

static int mb86a20s_i2c_readreg(struct mb86a20s_state *state,
				u8 i2c_addr, u8 reg)
{}

#define mb86a20s_readreg(state, reg)
#define mb86a20s_writereg(state, reg, val)
#define mb86a20s_writeregdata(state, regdata)

/*
 * Ancillary internal routines (likely compiled inlined)
 *
 * The functions below assume that gateway lock has already obtained
 */

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

static int mb86a20s_read_signal_strength(struct dvb_frontend *fe)
{}

static int mb86a20s_get_modulation(struct mb86a20s_state *state,
				   unsigned layer)
{}

static int mb86a20s_get_fec(struct mb86a20s_state *state,
			    unsigned layer)
{}

static int mb86a20s_get_interleaving(struct mb86a20s_state *state,
				     unsigned layer)
{}

static int mb86a20s_get_segment_count(struct mb86a20s_state *state,
				      unsigned layer)
{}

static void mb86a20s_reset_frontend_cache(struct dvb_frontend *fe)
{}

/*
 * Estimates the bit rate using the per-segment bit rate given by
 * ABNT/NBR 15601 spec (table 4).
 */
static const u32 isdbt_rate[3][5][4] =;

static u32 isdbt_layer_min_bitrate(struct dtv_frontend_properties *c,
				   u32 layer)
{}

static int mb86a20s_get_frontend(struct dvb_frontend *fe)
{}

static int mb86a20s_reset_counters(struct dvb_frontend *fe)
{}

static int mb86a20s_get_pre_ber(struct dvb_frontend *fe,
				unsigned layer,
				u32 *error, u32 *count)
{}

static int mb86a20s_get_post_ber(struct dvb_frontend *fe,
				 unsigned layer,
				  u32 *error, u32 *count)
{}

static int mb86a20s_get_blk_error(struct dvb_frontend *fe,
			    unsigned layer,
			    u32 *error, u32 *count)
{}

struct linear_segments {};

/*
 * All tables below return a dB/1000 measurement
 */

static const struct linear_segments cnr_to_db_table[] =;

static const struct linear_segments cnr_64qam_table[] =;

static const struct linear_segments cnr_16qam_table[] =;

static const struct linear_segments cnr_qpsk_table[] =;

static u32 interpolate_value(u32 value, const struct linear_segments *segments,
			     unsigned len)
{}

static int mb86a20s_get_main_CNR(struct dvb_frontend *fe)
{}

static int mb86a20s_get_blk_error_layer_CNR(struct dvb_frontend *fe)
{}

static void mb86a20s_stats_not_ready(struct dvb_frontend *fe)
{}

static int mb86a20s_get_stats(struct dvb_frontend *fe, int status_nr)
{}

/*
 * The functions below are called via DVB callbacks, so they need to
 * properly use the I2C gate control
 */

static int mb86a20s_initfe(struct dvb_frontend *fe)
{}

static int mb86a20s_set_frontend(struct dvb_frontend *fe)
{}

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

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

static int mb86a20s_tune(struct dvb_frontend *fe,
			bool re_tune,
			unsigned int mode_flags,
			unsigned int *delay,
			enum fe_status *status)
{}

static void mb86a20s_release(struct dvb_frontend *fe)
{}

static enum dvbfe_algo mb86a20s_get_frontend_algo(struct dvb_frontend *fe)
{}

static const struct dvb_frontend_ops mb86a20s_ops;

struct dvb_frontend *mb86a20s_attach(const struct mb86a20s_config *config,
				    struct i2c_adapter *i2c)
{}
EXPORT_SYMBOL_GPL();

static const struct dvb_frontend_ops mb86a20s_ops =;

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