#define pr_fmt(fmt) …
#include <linux/kernel.h>
#include <linux/i2c.h>
#include <linux/mutex.h>
#include <linux/int_log.h>
#include <media/dvb_frontend.h>
#include "dib9000.h"
#include "dibx000_common.h"
static int debug;
module_param(debug, int, 0644);
MODULE_PARM_DESC(…) …;
#define dprintk(fmt, arg...) …
#define MAX_NUMBER_OF_FRONTENDS …
struct i2c_device { … };
struct dib9000_pid_ctrl { … };
struct dib9000_state { … };
static const u32 fe_info[44] = …;
enum dib9000_power_mode { … };
enum dib9000_out_messages { … };
enum dib9000_in_messages { … };
#define FE_MM_W_CHANNEL …
#define FE_MM_W_FE_INFO …
#define FE_MM_RW_SYNC …
#define FE_SYNC_CHANNEL …
#define FE_SYNC_W_GENERIC_MONIT …
#define FE_SYNC_COMPONENT_ACCESS …
#define FE_MM_R_CHANNEL_SEARCH_STATE …
#define FE_MM_R_CHANNEL_UNION_CONTEXT …
#define FE_MM_R_FE_INFO …
#define FE_MM_R_FE_MONITOR …
#define FE_MM_W_CHANNEL_HEAD …
#define FE_MM_W_CHANNEL_UNION …
#define FE_MM_W_CHANNEL_CONTEXT …
#define FE_MM_R_CHANNEL_UNION …
#define FE_MM_R_CHANNEL_CONTEXT …
#define FE_MM_R_CHANNEL_TUNE_STATE …
#define FE_MM_R_GENERIC_MONITORING_SIZE …
#define FE_MM_W_GENERIC_MONITORING …
#define FE_MM_R_GENERIC_MONITORING …
#define FE_MM_W_COMPONENT_ACCESS …
#define FE_MM_RW_COMPONENT_ACCESS_BUFFER …
static int dib9000_risc_apb_access_read(struct dib9000_state *state, u32 address, u16 attribute, const u8 * tx, u32 txlen, u8 * b, u32 len);
static int dib9000_risc_apb_access_write(struct dib9000_state *state, u32 address, u16 attribute, const u8 * b, u32 len);
static u16 to_fw_output_mode(u16 mode)
{ … }
static int dib9000_read16_attr(struct dib9000_state *state, u16 reg, u8 *b, u32 len, u16 attribute)
{ … }
static u16 dib9000_i2c_read16(struct i2c_device *i2c, u16 reg)
{ … }
static inline u16 dib9000_read_word(struct dib9000_state *state, u16 reg)
{ … }
static inline u16 dib9000_read_word_attr(struct dib9000_state *state, u16 reg, u16 attribute)
{ … }
#define dib9000_read16_noinc_attr(state, reg, b, len, attribute) …
static int dib9000_write16_attr(struct dib9000_state *state, u16 reg, const u8 *buf, u32 len, u16 attribute)
{ … }
static int dib9000_i2c_write16(struct i2c_device *i2c, u16 reg, u16 val)
{ … }
static inline int dib9000_write_word(struct dib9000_state *state, u16 reg, u16 val)
{ … }
static inline int dib9000_write_word_attr(struct dib9000_state *state, u16 reg, u16 val, u16 attribute)
{ … }
#define dib9000_write(state, reg, buf, len) …
#define dib9000_write16_noinc(state, reg, buf, len) …
#define dib9000_write16_noinc_attr(state, reg, buf, len, attribute) …
#define dib9000_mbx_send(state, id, data, len) …
#define dib9000_mbx_get_message(state, id, msg, len) …
#define MAC_IRQ …
#define IRQ_POL_MSK …
#define dib9000_risc_mem_read_chunks(state, b, len) …
#define dib9000_risc_mem_write_chunks(state, buf, len) …
static void dib9000_risc_mem_setup_cmd(struct dib9000_state *state, u32 addr, u32 len, u8 reading)
{ … }
static void dib9000_risc_mem_setup(struct dib9000_state *state, u8 cmd)
{ … }
static int dib9000_risc_mem_read(struct dib9000_state *state, u8 cmd, u8 * b, u16 len)
{ … }
static int dib9000_risc_mem_write(struct dib9000_state *state, u8 cmd, const u8 * b)
{ … }
static int dib9000_firmware_download(struct dib9000_state *state, u8 risc_id, u16 key, const u8 * code, u32 len)
{ … }
static int dib9000_mbx_host_init(struct dib9000_state *state, u8 risc_id)
{ … }
#define MAX_MAILBOX_TRY …
static int dib9000_mbx_send_attr(struct dib9000_state *state, u8 id, u16 * data, u8 len, u16 attr)
{ … }
static u8 dib9000_mbx_read(struct dib9000_state *state, u16 * data, u8 risc_id, u16 attr)
{ … }
static int dib9000_risc_debug_buf(struct dib9000_state *state, u16 * data, u8 size)
{ … }
static int dib9000_mbx_fetch_to_cache(struct dib9000_state *state, u16 attr)
{ … }
static u8 dib9000_mbx_count(struct dib9000_state *state, u8 risc_id, u16 attr)
{ … }
static int dib9000_mbx_process(struct dib9000_state *state, u16 attr)
{ … }
static int dib9000_mbx_get_message_attr(struct dib9000_state *state, u16 id, u16 * msg, u8 * size, u16 attr)
{ … }
static int dib9000_risc_check_version(struct dib9000_state *state)
{ … }
static int dib9000_fw_boot(struct dib9000_state *state, const u8 * codeA, u32 lenA, const u8 * codeB, u32 lenB)
{ … }
static u16 dib9000_identify(struct i2c_device *client)
{ … }
static void dib9000_set_power_mode(struct dib9000_state *state, enum dib9000_power_mode mode)
{ … }
static int dib9000_fw_reset(struct dvb_frontend *fe)
{ … }
static int dib9000_risc_apb_access_read(struct dib9000_state *state, u32 address, u16 attribute, const u8 * tx, u32 txlen, u8 * b, u32 len)
{ … }
static int dib9000_risc_apb_access_write(struct dib9000_state *state, u32 address, u16 attribute, const u8 * b, u32 len)
{ … }
static int dib9000_fw_memmbx_sync(struct dib9000_state *state, u8 i)
{ … }
static int dib9000_fw_init(struct dib9000_state *state)
{ … }
static void dib9000_fw_set_channel_head(struct dib9000_state *state)
{ … }
static int dib9000_fw_get_channel(struct dvb_frontend *fe)
{ … }
static int dib9000_fw_set_channel_union(struct dvb_frontend *fe)
{ … }
static int dib9000_fw_tune(struct dvb_frontend *fe)
{ … }
static int dib9000_fw_set_diversity_in(struct dvb_frontend *fe, int onoff)
{ … }
static int dib9000_fw_set_output_mode(struct dvb_frontend *fe, int mode)
{ … }
static int dib9000_tuner_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg msg[], int num)
{ … }
int dib9000_fw_set_component_bus_speed(struct dvb_frontend *fe, u16 speed)
{ … }
EXPORT_SYMBOL(…);
static int dib9000_fw_component_bus_xfer(struct i2c_adapter *i2c_adap, struct i2c_msg msg[], int num)
{ … }
static u32 dib9000_i2c_func(struct i2c_adapter *adapter)
{ … }
static const struct i2c_algorithm dib9000_tuner_algo = …;
static const struct i2c_algorithm dib9000_component_bus_algo = …;
struct i2c_adapter *dib9000_get_tuner_interface(struct dvb_frontend *fe)
{ … }
EXPORT_SYMBOL(…);
struct i2c_adapter *dib9000_get_component_bus_interface(struct dvb_frontend *fe)
{ … }
EXPORT_SYMBOL(…);
struct i2c_adapter *dib9000_get_i2c_master(struct dvb_frontend *fe, enum dibx000_i2c_interface intf, int gating)
{ … }
EXPORT_SYMBOL(…);
int dib9000_set_i2c_adapter(struct dvb_frontend *fe, struct i2c_adapter *i2c)
{ … }
EXPORT_SYMBOL(…);
static int dib9000_cfg_gpio(struct dib9000_state *st, u8 num, u8 dir, u8 val)
{ … }
int dib9000_set_gpio(struct dvb_frontend *fe, u8 num, u8 dir, u8 val)
{ … }
EXPORT_SYMBOL(…);
int dib9000_fw_pid_filter_ctrl(struct dvb_frontend *fe, u8 onoff)
{ … }
EXPORT_SYMBOL(…);
int dib9000_fw_pid_filter(struct dvb_frontend *fe, u8 id, u16 pid, u8 onoff)
{ … }
EXPORT_SYMBOL(…);
int dib9000_firmware_post_pll_init(struct dvb_frontend *fe)
{ … }
EXPORT_SYMBOL(…);
static void dib9000_release(struct dvb_frontend *demod)
{ … }
static int dib9000_wakeup(struct dvb_frontend *fe)
{ … }
static int dib9000_sleep(struct dvb_frontend *fe)
{ … }
static int dib9000_fe_get_tune_settings(struct dvb_frontend *fe, struct dvb_frontend_tune_settings *tune)
{ … }
static int dib9000_get_frontend(struct dvb_frontend *fe,
struct dtv_frontend_properties *c)
{ … }
static int dib9000_set_tune_state(struct dvb_frontend *fe, enum frontend_tune_state tune_state)
{ … }
static u32 dib9000_get_status(struct dvb_frontend *fe)
{ … }
static int dib9000_set_channel_status(struct dvb_frontend *fe, struct dvb_frontend_parametersContext *channel_status)
{ … }
static int dib9000_set_frontend(struct dvb_frontend *fe)
{ … }
static u16 dib9000_read_lock(struct dvb_frontend *fe)
{ … }
static int dib9000_read_status(struct dvb_frontend *fe, enum fe_status *stat)
{ … }
static int dib9000_read_ber(struct dvb_frontend *fe, u32 * ber)
{ … }
static int dib9000_read_signal_strength(struct dvb_frontend *fe, u16 * strength)
{ … }
static u32 dib9000_get_snr(struct dvb_frontend *fe)
{ … }
static int dib9000_read_snr(struct dvb_frontend *fe, u16 * snr)
{ … }
static int dib9000_read_unc_blocks(struct dvb_frontend *fe, u32 * unc)
{ … }
int dib9000_i2c_enumeration(struct i2c_adapter *i2c, int no_of_demods, u8 default_addr, u8 first_addr)
{ … }
EXPORT_SYMBOL(…);
int dib9000_set_slave_frontend(struct dvb_frontend *fe, struct dvb_frontend *fe_slave)
{ … }
EXPORT_SYMBOL(…);
struct dvb_frontend *dib9000_get_slave_frontend(struct dvb_frontend *fe, int slave_index)
{ … }
EXPORT_SYMBOL(…);
static const struct dvb_frontend_ops dib9000_ops;
struct dvb_frontend *dib9000_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, const struct dib9000_config *cfg)
{ … }
EXPORT_SYMBOL_GPL(…);
static const struct dvb_frontend_ops dib9000_ops = …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;