#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 "cx24116.h"
static int debug;
module_param(debug, int, 0644);
MODULE_PARM_DESC(…) …;
#define dprintk(args...) …
#define CX24116_DEFAULT_FIRMWARE …
#define CX24116_SEARCH_RANGE_KHZ …
#define CX24116_REG_COMMAND …
#define CX24116_REG_EXECUTE …
#define CX24116_REG_MAILBOX …
#define CX24116_REG_RESET …
#define CX24116_REG_SIGNAL …
#define CX24116_REG_SSTATUS …
#define CX24116_REG_QUALITY8 …
#define CX24116_REG_QSTATUS …
#define CX24116_REG_QUALITY0 …
#define CX24116_REG_BER0 …
#define CX24116_REG_BER8 …
#define CX24116_REG_BER16 …
#define CX24116_REG_BER24 …
#define CX24116_REG_UCB0 …
#define CX24116_REG_UCB8 …
#define CX24116_REG_CLKDIV …
#define CX24116_REG_RATEDIV …
#define CX24116_REG_FECSTATUS …
#define CX24116_FEC_FECMASK …
#define CX24116_FEC_DVBS …
#define CX24116_FEC_UNKNOWN …
#define CX24116_FEC_PILOT …
#define CX24116_ARGLEN …
#define CX24116_ROLLOFF_020 …
#define CX24116_ROLLOFF_025 …
#define CX24116_ROLLOFF_035 …
#define CX24116_PILOT_OFF …
#define CX24116_PILOT_ON …
#define CX24116_HAS_SIGNAL …
#define CX24116_HAS_CARRIER …
#define CX24116_HAS_VITERBI …
#define CX24116_HAS_SYNCLOCK …
#define CX24116_HAS_UNKNOWN1 …
#define CX24116_HAS_UNKNOWN2 …
#define CX24116_STATUS_MASK …
#define CX24116_SIGNAL_MASK …
#define CX24116_DISEQC_TONEOFF …
#define CX24116_DISEQC_TONECACHE …
#define CX24116_DISEQC_MESGCACHE …
#define CX24116_DISEQC_BURST …
#define CX24116_DISEQC_ARG2_2 …
#define CX24116_DISEQC_ARG3_0 …
#define CX24116_DISEQC_ARG4_0 …
#define CX24116_DISEQC_MSGLEN …
#define CX24116_DISEQC_MSGOFS …
#define CX24116_DISEQC_MINI_A …
#define CX24116_DISEQC_MINI_B …
static int toneburst = …;
module_param(toneburst, int, 0644);
MODULE_PARM_DESC(…) …;
static int esno_snr;
module_param(esno_snr, int, 0644);
MODULE_PARM_DESC(…) …;
enum cmds { … };
struct cx24116_tuning { … };
struct cx24116_cmd { … };
struct cx24116_state { … };
static int cx24116_writereg(struct cx24116_state *state, int reg, int data)
{ … }
static int cx24116_writeregN(struct cx24116_state *state, int reg,
const u8 *data, u16 len)
{ … }
static int cx24116_readreg(struct cx24116_state *state, u8 reg)
{ … }
static int cx24116_set_inversion(struct cx24116_state *state,
enum fe_spectral_inversion inversion)
{ … }
static struct cx24116_modfec { … } CX24116_MODFEC_MODES[] = …;
static int cx24116_lookup_fecmod(struct cx24116_state *state,
enum fe_delivery_system d, enum fe_modulation m, enum fe_code_rate f)
{ … }
static int cx24116_set_fec(struct cx24116_state *state,
enum fe_delivery_system delsys,
enum fe_modulation mod,
enum fe_code_rate fec)
{ … }
static int cx24116_set_symbolrate(struct cx24116_state *state, u32 rate)
{ … }
static int cx24116_load_firmware(struct dvb_frontend *fe,
const struct firmware *fw);
static int cx24116_firmware_ondemand(struct dvb_frontend *fe)
{ … }
static int cx24116_cmd_execute(struct dvb_frontend *fe, struct cx24116_cmd *cmd)
{ … }
static int cx24116_load_firmware(struct dvb_frontend *fe,
const struct firmware *fw)
{ … }
static int cx24116_read_status(struct dvb_frontend *fe, enum fe_status *status)
{ … }
static int cx24116_read_ber(struct dvb_frontend *fe, u32 *ber)
{ … }
static int cx24116_read_signal_strength(struct dvb_frontend *fe,
u16 *signal_strength)
{ … }
static int cx24116_read_snr_pct(struct dvb_frontend *fe, u16 *snr)
{ … }
static int cx24116_read_snr_esno(struct dvb_frontend *fe, u16 *snr)
{ … }
static int cx24116_read_snr(struct dvb_frontend *fe, u16 *snr)
{ … }
static int cx24116_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks)
{ … }
static void cx24116_clone_params(struct dvb_frontend *fe)
{ … }
static int cx24116_wait_for_lnb(struct dvb_frontend *fe)
{ … }
static int cx24116_set_voltage(struct dvb_frontend *fe,
enum fe_sec_voltage voltage)
{ … }
static int cx24116_set_tone(struct dvb_frontend *fe,
enum fe_sec_tone_mode tone)
{ … }
static int cx24116_diseqc_init(struct dvb_frontend *fe)
{ … }
static int cx24116_send_diseqc_msg(struct dvb_frontend *fe,
struct dvb_diseqc_master_cmd *d)
{ … }
static int cx24116_diseqc_send_burst(struct dvb_frontend *fe,
enum fe_sec_mini_cmd burst)
{ … }
static void cx24116_release(struct dvb_frontend *fe)
{ … }
static const struct dvb_frontend_ops cx24116_ops;
struct dvb_frontend *cx24116_attach(const struct cx24116_config *config,
struct i2c_adapter *i2c)
{ … }
EXPORT_SYMBOL_GPL(…);
static int cx24116_initfe(struct dvb_frontend *fe)
{ … }
static int cx24116_sleep(struct dvb_frontend *fe)
{ … }
static int cx24116_set_frontend(struct dvb_frontend *fe)
{ … }
static int cx24116_tune(struct dvb_frontend *fe, bool re_tune,
unsigned int mode_flags, unsigned int *delay, enum fe_status *status)
{ … }
static enum dvbfe_algo cx24116_get_algo(struct dvb_frontend *fe)
{ … }
static const struct dvb_frontend_ops cx24116_ops = …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;