#include <linux/slab.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/init.h>
#include <linux/firmware.h>
#include <media/dvb_frontend.h>
#include "cx24120.h"
#define CX24120_SEARCH_RANGE_KHZ …
#define CX24120_FIRMWARE …
#define CX24120_REG_CMD_START …
#define CX24120_REG_CMD_ARGS …
#define CX24120_REG_CMD_END …
#define CX24120_REG_MAILBOX …
#define CX24120_REG_FREQ3 …
#define CX24120_REG_FREQ2 …
#define CX24120_REG_FREQ1 …
#define CX24120_REG_FECMODE …
#define CX24120_REG_STATUS …
#define CX24120_REG_SIGSTR_H …
#define CX24120_REG_SIGSTR_L …
#define CX24120_REG_QUALITY_H …
#define CX24120_REG_QUALITY_L …
#define CX24120_REG_BER_HH …
#define CX24120_REG_BER_HL …
#define CX24120_REG_BER_LH …
#define CX24120_REG_BER_LL …
#define CX24120_REG_UCB_H …
#define CX24120_REG_UCB_L …
#define CX24120_REG_CLKDIV …
#define CX24120_REG_RATEDIV …
#define CX24120_REG_REVISION …
enum command_message_id { … };
#define CX24120_MAX_CMD_LEN …
#define CX24120_PILOT_OFF …
#define CX24120_PILOT_ON …
#define CX24120_PILOT_AUTO …
#define CX24120_HAS_SIGNAL …
#define CX24120_HAS_CARRIER …
#define CX24120_HAS_VITERBI …
#define CX24120_HAS_LOCK …
#define CX24120_HAS_UNK1 …
#define CX24120_HAS_UNK2 …
#define CX24120_STATUS_MASK …
#define CX24120_SIGNAL_MASK …
#define CX24120_BER_WINDOW …
#define CX24120_BER_WSIZE …
#define info(args...) …
#define err(args...) …
struct cx24120_tuning { … };
struct cx24120_state { … };
struct cx24120_cmd { … };
static int cx24120_readreg(struct cx24120_state *state, u8 reg)
{ … }
static int cx24120_writereg(struct cx24120_state *state, u8 reg, u8 data)
{ … }
static int cx24120_writeregs(struct cx24120_state *state,
u8 reg, const u8 *values, u16 len, u8 incr)
{ … }
static const struct dvb_frontend_ops cx24120_ops;
struct dvb_frontend *cx24120_attach(const struct cx24120_config *config,
struct i2c_adapter *i2c)
{ … }
EXPORT_SYMBOL_GPL(…);
static int cx24120_test_rom(struct cx24120_state *state)
{ … }
static int cx24120_read_snr(struct dvb_frontend *fe, u16 *snr)
{ … }
static int cx24120_read_ber(struct dvb_frontend *fe, u32 *ber)
{ … }
static int cx24120_msg_mpeg_output_global_config(struct cx24120_state *state,
u8 flag);
static void cx24120_check_cmd(struct cx24120_state *state, u8 id)
{ … }
static int cx24120_message_send(struct cx24120_state *state,
struct cx24120_cmd *cmd)
{ … }
static int cx24120_message_sendrcv(struct cx24120_state *state,
struct cx24120_cmd *cmd, u8 numreg)
{ … }
static int cx24120_read_signal_strength(struct dvb_frontend *fe,
u16 *signal_strength)
{ … }
static int cx24120_msg_mpeg_output_global_config(struct cx24120_state *state,
u8 enable)
{ … }
static int cx24120_msg_mpeg_output_config(struct cx24120_state *state, u8 seq)
{ … }
static int cx24120_diseqc_send_burst(struct dvb_frontend *fe,
enum fe_sec_mini_cmd burst)
{ … }
static int cx24120_set_tone(struct dvb_frontend *fe, enum fe_sec_tone_mode tone)
{ … }
static int cx24120_set_voltage(struct dvb_frontend *fe,
enum fe_sec_voltage voltage)
{ … }
static int cx24120_send_diseqc_msg(struct dvb_frontend *fe,
struct dvb_diseqc_master_cmd *d)
{ … }
static void cx24120_get_stats(struct cx24120_state *state)
{ … }
static void cx24120_set_clock_ratios(struct dvb_frontend *fe);
static int cx24120_read_status(struct dvb_frontend *fe, enum fe_status *status)
{ … }
struct cx24120_modfec { … };
static const struct cx24120_modfec modfec_lookup_table[] = …;
static int cx24120_get_fec(struct dvb_frontend *fe)
{ … }
static void cx24120_calculate_ber_window(struct cx24120_state *state, u32 rate)
{ … }
struct cx24120_clock_ratios_table { … };
static const struct cx24120_clock_ratios_table clock_ratios_table[] = …;
static void cx24120_set_clock_ratios(struct dvb_frontend *fe)
{ … }
static int cx24120_set_inversion(struct cx24120_state *state,
enum fe_spectral_inversion inversion)
{ … }
struct cx24120_modfec_table { … };
static const struct cx24120_modfec_table modfec_table[] = …;
static int cx24120_set_fec(struct cx24120_state *state, enum fe_modulation mod,
enum fe_code_rate fec)
{ … }
static int cx24120_set_pilot(struct cx24120_state *state, enum fe_pilot pilot)
{ … }
static int cx24120_set_symbolrate(struct cx24120_state *state, u32 rate)
{ … }
static void cx24120_clone_params(struct dvb_frontend *fe)
{ … }
static int cx24120_set_frontend(struct dvb_frontend *fe)
{ … }
static int cx24120_set_vco(struct cx24120_state *state)
{ … }
static int cx24120_init(struct dvb_frontend *fe)
{ … }
static int cx24120_tune(struct dvb_frontend *fe, bool re_tune,
unsigned int mode_flags, unsigned int *delay,
enum fe_status *status)
{ … }
static enum dvbfe_algo cx24120_get_algo(struct dvb_frontend *fe)
{ … }
static int cx24120_sleep(struct dvb_frontend *fe)
{ … }
static int cx24120_get_frontend(struct dvb_frontend *fe,
struct dtv_frontend_properties *c)
{ … }
static void cx24120_release(struct dvb_frontend *fe)
{ … }
static int cx24120_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
{ … }
static const struct dvb_frontend_ops cx24120_ops = …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;