#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 …
static struct regdata mb86a20s_init1[] = …;
static struct regdata mb86a20s_init2[] = …;
static struct regdata mb86a20s_reset_reception[] = …;
static struct regdata mb86a20s_per_ber_reset[] = …;
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) …
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)
{ … }
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 { … };
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)
{ … }
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(…) …;