9.2.2. Frontend drivers¶
9.2.2.1. Frontend attach headers¶
-
struct a8293_platform_data¶
Platform data for the a8293 driver
Definition
struct a8293_platform_data {
struct dvb_frontend *dvb_frontend;
};
Members
dvb_frontend
DVB frontend.
-
struct af9013_platform_data¶
Platform data for the af9013 driver
Definition
struct af9013_platform_data {
u32 clk;
#define AF9013_TUNER_MXL5003D 3 ;
#define AF9013_TUNER_MXL5005D 13 ;
#define AF9013_TUNER_MXL5005R 30 ;
#define AF9013_TUNER_ENV77H11D5 129 ;
#define AF9013_TUNER_MT2060 130 ;
#define AF9013_TUNER_MC44S803 133 ;
#define AF9013_TUNER_QT1010 134 ;
#define AF9013_TUNER_UNKNOWN 140 ;
#define AF9013_TUNER_MT2060_2 147 ;
#define AF9013_TUNER_TDA18271 156 ;
#define AF9013_TUNER_QT1010A 162 ;
#define AF9013_TUNER_MXL5007T 177 ;
#define AF9013_TUNER_TDA18218 179 ;
u8 tuner;
u32 if_frequency;
#define AF9013_TS_MODE_USB 0;
#define AF9013_TS_MODE_PARALLEL 1;
#define AF9013_TS_MODE_SERIAL 2;
u8 ts_mode;
u8 ts_output_pin;
bool spec_inv;
u8 api_version[4];
#define AF9013_GPIO_ON (1 << 0);
#define AF9013_GPIO_EN (1 << 1);
#define AF9013_GPIO_O (1 << 2);
#define AF9013_GPIO_I (1 << 3);
#define AF9013_GPIO_LO (AF9013_GPIO_ON|AF9013_GPIO_EN);
#define AF9013_GPIO_HI (AF9013_GPIO_ON|AF9013_GPIO_EN|AF9013_GPIO_O);
#define AF9013_GPIO_TUNER_ON (AF9013_GPIO_ON|AF9013_GPIO_EN);
#define AF9013_GPIO_TUNER_OFF (AF9013_GPIO_ON|AF9013_GPIO_EN|AF9013_GPIO_O);
u8 gpio[4];
struct dvb_frontend* (*get_dvb_frontend)(struct i2c_client *);
struct i2c_adapter* (*get_i2c_adapter)(struct i2c_client *);
int (*pid_filter_ctrl)(struct dvb_frontend *, int);
int (*pid_filter)(struct dvb_frontend *, u8, u16, int);
};
Members
clk
Clock frequency.
tuner
Used tuner model.
if_frequency
IF frequency.
ts_mode
TS mode.
ts_output_pin
TS output pin.
spec_inv
Input spectrum inverted.
api_version
Firmware API version.
gpio
GPIOs.
get_dvb_frontend
Get DVB frontend callback.
get_i2c_adapter
Get I2C adapter.
pid_filter_ctrl
Control PID filter.
pid_filter
Set PID to PID filter.
-
struct ascot2e_config¶
the configuration of Ascot2E tuner driver
Definition
struct ascot2e_config {
u8 i2c_address;
u8 xtal_freq_mhz;
void *set_tuner_priv;
int (*set_tuner_callback)(void *, int);
};
Members
i2c_address
I2C address of the tuner
xtal_freq_mhz
Oscillator frequency, MHz
set_tuner_priv
Callback function private context
set_tuner_callback
Callback function that notifies the parent driver which tuner is active now
-
struct dvb_frontend *ascot2e_attach(struct dvb_frontend *fe, const struct ascot2e_config *config, struct i2c_adapter *i2c)¶
Attach an ascot2e tuner
Parameters
struct dvb_frontend *fe
frontend to be attached
const struct ascot2e_config *config
pointer to
struct ascot2e_config
with tuner configuration.struct i2c_adapter *i2c
i2c adapter to use.
Return
FE pointer on success, NULL on failure.
-
struct cxd2820r_platform_data¶
Platform data for the cxd2820r driver
Definition
struct cxd2820r_platform_data {
u8 ts_mode;
bool ts_clk_inv;
bool if_agc_polarity;
bool spec_inv;
int **gpio_chip_base;
struct dvb_frontend* (*get_dvb_frontend)(struct i2c_client *);
};
Members
ts_mode
TS mode.
ts_clk_inv
TS clock inverted.
if_agc_polarity
IF AGC polarity.
spec_inv
Input spectrum inverted.
gpio_chip_base
GPIO.
get_dvb_frontend
Get DVB frontend.
-
struct cxd2820r_config¶
configuration for cxd2020r demod
Definition
struct cxd2820r_config {
u8 i2c_address;
u8 ts_mode;
bool ts_clock_inv;
bool if_agc_polarity;
bool spec_inv;
};
Members
i2c_address
Demodulator I2C address. Driver determines DVB-C slave I2C address automatically from master address. Default: none, must set. Values: 0x6c, 0x6d.
ts_mode
TS output mode. Default: none, must set. Values: FIXME?
ts_clock_inv
TS clock inverted. Default: 0. Values: 0, 1.
if_agc_polarity
Default: 0. Values: 0, 1
spec_inv
Spectrum inversion. Default: 0. Values: 0, 1.
-
struct dvb_frontend *cxd2820r_attach(const struct cxd2820r_config *config, struct i2c_adapter *i2c, int *gpio_chip_base)¶
Attach a cxd2820r demod
Parameters
const struct cxd2820r_config *config
pointer to
struct cxd2820r_config
with demod configuration.struct i2c_adapter *i2c
i2c adapter to use.
int *gpio_chip_base
if zero, disables GPIO setting. Otherwise, if CONFIG_GPIOLIB is set dynamically allocate gpio base; if is not set, use its value to setup the GPIO pins.
Return
FE pointer on success, NULL on failure.
-
struct drxk_config¶
Configure the initial parameters for DRX-K
Definition
struct drxk_config {
u8 adr;
bool single_master;
bool no_i2c_bridge;
bool parallel_ts;
bool dynamic_clk;
bool enable_merr_cfg;
bool antenna_dvbt;
u16 antenna_gpio;
u8 mpeg_out_clk_strength;
int chunk_size;
const char *microcode_name;
int qam_demod_parameter_count;
};
Members
adr
I2C address of the DRX-K
single_master
Device is on the single master mode
no_i2c_bridge
Don’t switch the I2C bridge to talk with tuner
parallel_ts
True means that the device uses parallel TS, Serial otherwise.
dynamic_clk
True means that the clock will be dynamically adjusted. Static clock otherwise.
enable_merr_cfg
Enable SIO_PDR_PERR_CFG/SIO_PDR_MVAL_CFG.
antenna_dvbt
GPIO bit for changing antenna to DVB-C. A value of 1 means that 1=DVBC, 0 = DVBT. Zero means the opposite.
antenna_gpio
GPIO bit used to control the antenna
mpeg_out_clk_strength
DRXK Mpeg output clock drive strength.
chunk_size
maximum size for I2C messages
microcode_name
Name of the firmware file with the microcode
qam_demod_parameter_count
The number of parameters used for the command to set the demodulator parameters. All firmwares are using the 2-parameter command. An exception is the
drxk_a3.mc
firmware, which uses the 4-parameter command. A value of 0 (default) or lower indicates that the correct number of parameters will be automatically detected.
Description
On the *_gpio
vars, bit 0 is UIO-1, bit 1 is UIO-2 and bit 2 is
UIO-3.
-
struct dvb_frontend *drxk_attach(const struct drxk_config *config, struct i2c_adapter *i2c)¶
Attach a drxk demod
Parameters
const struct drxk_config *config
pointer to
struct drxk_config
with demod configuration.struct i2c_adapter *i2c
i2c adapter to use.
Return
FE pointer on success, NULL on failure.
-
struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe, int pll_addr, struct i2c_adapter *i2c, unsigned int pll_desc_id)¶
Attach a dvb-pll to the supplied frontend structure.
Parameters
struct dvb_frontend *fe
Frontend to attach to.
int pll_addr
i2c address of the PLL (if used).
struct i2c_adapter *i2c
i2c adapter to use (set to NULL if not used).
unsigned int pll_desc_id
dvb_pll_desc to use.
Return
Frontend pointer on success, NULL on failure
-
struct helene_config¶
the configuration of ‘Helene’ tuner driver
Definition
struct helene_config {
u8 i2c_address;
u8 xtal_freq_mhz;
void *set_tuner_priv;
int (*set_tuner_callback)(void *, int);
enum helene_xtal xtal;
struct dvb_frontend *fe;
};
Members
i2c_address
I2C address of the tuner
xtal_freq_mhz
Oscillator frequency, MHz
set_tuner_priv
Callback function private context
set_tuner_callback
Callback function that notifies the parent driver which tuner is active now
xtal
Cristal frequency as described by
enum helene_xtal
fe
Frontend for which connects this tuner
-
struct dvb_frontend *helene_attach(struct dvb_frontend *fe, const struct helene_config *config, struct i2c_adapter *i2c)¶
Attach a helene tuner (terrestrial and cable standards)
Parameters
struct dvb_frontend *fe
frontend to be attached
const struct helene_config *config
pointer to
struct helene_config
with tuner configuration.struct i2c_adapter *i2c
i2c adapter to use.
Return
FE pointer on success, NULL on failure.
-
struct dvb_frontend *helene_attach_s(struct dvb_frontend *fe, const struct helene_config *config, struct i2c_adapter *i2c)¶
Attach a helene tuner (satellite standards)
Parameters
struct dvb_frontend *fe
frontend to be attached
const struct helene_config *config
pointer to
struct helene_config
with tuner configuration.struct i2c_adapter *i2c
i2c adapter to use.
Return
FE pointer on success, NULL on failure.
-
struct horus3a_config¶
the configuration of Horus3A tuner driver
Definition
struct horus3a_config {
u8 i2c_address;
u8 xtal_freq_mhz;
void *set_tuner_priv;
int (*set_tuner_callback)(void *, int);
};
Members
i2c_address
I2C address of the tuner
xtal_freq_mhz
Oscillator frequency, MHz
set_tuner_priv
Callback function private context
set_tuner_callback
Callback function that notifies the parent driver which tuner is active now
-
struct dvb_frontend *horus3a_attach(struct dvb_frontend *fe, const struct horus3a_config *config, struct i2c_adapter *i2c)¶
Attach a horus3a tuner
Parameters
struct dvb_frontend *fe
frontend to be attached
const struct horus3a_config *config
pointer to
struct helene_config
with tuner configuration.struct i2c_adapter *i2c
i2c adapter to use.
Return
FE pointer on success, NULL on failure.
-
struct ix2505v_config¶
ix2505 attachment configuration
Definition
struct ix2505v_config {
u8 tuner_address;
u8 tuner_gain;
u8 tuner_chargepump;
int min_delay_ms;
u8 tuner_write_only;
};
Members
tuner_address
tuner address
tuner_gain
Baseband AMP gain control 0/1=0dB(default) 2=-2bB 3=-4dB
tuner_chargepump
Charge pump output +/- 0=120 1=260 2=555 3=1200(default)
min_delay_ms
delay after tune
tuner_write_only
disables reads
-
struct dvb_frontend *ix2505v_attach(struct dvb_frontend *fe, const struct ix2505v_config *config, struct i2c_adapter *i2c)¶
Attach a ix2505v tuner to the supplied frontend structure.
Parameters
struct dvb_frontend *fe
Frontend to attach to.
const struct ix2505v_config *config
pointer to
struct ix2505v_config
struct i2c_adapter *i2c
pointer to
struct i2c_adapter
.
Return
FE pointer on success, NULL on failure.
-
enum m88ds3103_ts_mode¶
TS connection mode
Constants
M88DS3103_TS_SERIAL
TS output pin D0, normal
M88DS3103_TS_SERIAL_D7
TS output pin D7
M88DS3103_TS_PARALLEL
TS Parallel mode
M88DS3103_TS_CI
TS CI Mode
-
enum m88ds3103_clock_out¶
Constants
M88DS3103_CLOCK_OUT_DISABLED
Clock output is disabled
M88DS3103_CLOCK_OUT_ENABLED
Clock output is enabled with crystal clock.
M88DS3103_CLOCK_OUT_ENABLED_DIV2
Clock output is enabled with half crystal clock.
-
struct m88ds3103_platform_data¶
Platform data for the m88ds3103 driver
Definition
struct m88ds3103_platform_data {
u32 clk;
u16 i2c_wr_max;
enum m88ds3103_ts_mode ts_mode;
u32 ts_clk;
enum m88ds3103_clock_out clk_out;
u8 ts_clk_pol:1;
u8 spec_inv:1;
u8 agc;
u8 agc_inv:1;
u8 envelope_mode:1;
u8 lnb_hv_pol:1;
u8 lnb_en_pol:1;
struct dvb_frontend* (*get_dvb_frontend)(struct i2c_client *);
struct i2c_adapter* (*get_i2c_adapter)(struct i2c_client *);
};
Members
clk
Clock frequency.
i2c_wr_max
Max bytes I2C adapter can write at once.
ts_mode
TS mode.
ts_clk
TS clock (KHz).
clk_out
Clock output.
ts_clk_pol
TS clk polarity. 1-active at falling edge; 0-active at rising edge.
spec_inv
Input spectrum inversion.
agc
AGC configuration.
agc_inv
AGC polarity.
envelope_mode
DiSEqC envelope mode.
lnb_hv_pol
LNB H/V pin polarity. 0: pin high set to VOLTAGE_18, pin low to set VOLTAGE_13. 1: pin high set to VOLTAGE_13, pin low to set VOLTAGE_18.
lnb_en_pol
LNB enable pin polarity. 0: pin high to disable, pin low to enable. 1: pin high to enable, pin low to disable.
get_dvb_frontend
Get DVB frontend.
get_i2c_adapter
Get I2C adapter.
-
struct m88ds3103_config¶
m88ds3102 configuration
Definition
struct m88ds3103_config {
u8 i2c_addr;
u32 clock;
u16 i2c_wr_max;
u8 ts_mode;
u32 ts_clk;
u8 ts_clk_pol:1;
u8 spec_inv:1;
u8 agc_inv:1;
u8 clock_out;
u8 envelope_mode:1;
u8 agc;
u8 lnb_hv_pol:1;
u8 lnb_en_pol:1;
};
Members
i2c_addr
I2C address. Default: none, must set. Example: 0x68, …
clock
Device’s clock. Default: none, must set. Example: 27000000
i2c_wr_max
Max bytes I2C provider is asked to write at once. Default: none, must set. Example: 33, 65, …
ts_mode
TS output mode, as defined by
enum m88ds3103_ts_mode
. Default: M88DS3103_TS_SERIAL.ts_clk
TS clk in KHz. Default: 0.
ts_clk_pol
TS clk polarity.Default: 0. 1-active at falling edge; 0-active at rising edge.
spec_inv
Spectrum inversion. Default: 0.
agc_inv
AGC polarity. Default: 0.
clock_out
Clock output, as defined by
enum m88ds3103_clock_out
. Default: M88DS3103_CLOCK_OUT_DISABLED.envelope_mode
DiSEqC envelope mode. Default: 0.
agc
AGC configuration. Default: none, must set.
lnb_hv_pol
LNB H/V pin polarity. Default: 0. Values: 1: pin high set to VOLTAGE_13, pin low to set VOLTAGE_18; 0: pin high set to VOLTAGE_18, pin low to set VOLTAGE_13.
lnb_en_pol
LNB enable pin polarity. Default: 0. Values: 1: pin high to enable, pin low to disable; 0: pin high to disable, pin low to enable.
-
struct dvb_frontend *m88ds3103_attach(const struct m88ds3103_config *config, struct i2c_adapter *i2c, struct i2c_adapter **tuner_i2c)¶
Attach a m88ds3103 demod
Parameters
const struct m88ds3103_config *config
pointer to
struct m88ds3103_config
with demod configuration.struct i2c_adapter *i2c
i2c adapter to use.
struct i2c_adapter **tuner_i2c
on success, returns the I2C adapter associated with m88ds3103 tuner.
Return
FE pointer on success, NULL on failure.
Note
Do not add new m88ds3103_attach()
users! Use I2C bindings instead.
-
struct mb86a20s_config¶
Define the per-device attributes of the frontend
Definition
struct mb86a20s_config {
u32 fclk;
u8 demod_address;
bool is_serial;
};
Members
fclk
Clock frequency. If zero, assumes the default (32.57142 Mhz)
demod_address
the demodulator’s i2c address
is_serial
if true, TS is serial. Otherwise, TS is parallel
-
struct dvb_frontend *mb86a20s_attach(const struct mb86a20s_config *config, struct i2c_adapter *i2c)¶
Attach a mb86a20s demod
Parameters
const struct mb86a20s_config *config
pointer to
struct mb86a20s_config
with demod configuration.struct i2c_adapter *i2c
i2c adapter to use.
Return
FE pointer on success, NULL on failure.
-
struct mn88472_config¶
Platform data for the mn88472 driver
Definition
struct mn88472_config {
unsigned int xtal;
#define MN88472_TS_MODE_SERIAL 0;
#define MN88472_TS_MODE_PARALLEL 1;
int ts_mode;
#define MN88472_TS_CLK_FIXED 0;
#define MN88472_TS_CLK_VARIABLE 1;
int ts_clock;
u16 i2c_wr_max;
struct dvb_frontend **fe;
struct dvb_frontend* (*get_dvb_frontend)(struct i2c_client *);
};
Members
xtal
Clock frequency.
ts_mode
TS mode.
ts_clock
TS clock config.
i2c_wr_max
Max number of bytes driver writes to I2C at once.
fe
pointer to a frontend pointer
get_dvb_frontend
Get DVB frontend callback.
-
struct rtl2830_platform_data¶
Platform data for the rtl2830 driver
Definition
struct rtl2830_platform_data {
u32 clk;
bool spec_inv;
u8 vtop;
u8 krf;
u8 agc_targ_val;
struct dvb_frontend* (*get_dvb_frontend)(struct i2c_client *);
struct i2c_adapter* (*get_i2c_adapter)(struct i2c_client *);
int (*pid_filter)(struct dvb_frontend *, u8, u16, int);
int (*pid_filter_ctrl)(struct dvb_frontend *, int);
};
Members
clk
Clock frequency (4000000, 16000000, 25000000, 28800000).
spec_inv
Spectrum inversion.
vtop
AGC take-over point.
krf
AGC ratio.
agc_targ_val
AGC.
get_dvb_frontend
Get DVB frontend.
get_i2c_adapter
Get I2C adapter.
pid_filter
Set PID to PID filter.
pid_filter_ctrl
Control PID filter.
-
struct rtl2832_platform_data¶
Platform data for the rtl2832 driver
Definition
struct rtl2832_platform_data {
u32 clk;
#define RTL2832_TUNER_FC2580 0x21;
#define RTL2832_TUNER_TUA9001 0x24;
#define RTL2832_TUNER_FC0012 0x26;
#define RTL2832_TUNER_E4000 0x27;
#define RTL2832_TUNER_FC0013 0x29;
#define RTL2832_TUNER_R820T 0x2a;
#define RTL2832_TUNER_R828D 0x2b;
#define RTL2832_TUNER_SI2157 0x2c;
u8 tuner;
struct dvb_frontend* (*get_dvb_frontend)(struct i2c_client *);
struct i2c_adapter* (*get_i2c_adapter)(struct i2c_client *);
int (*slave_ts_ctrl)(struct i2c_client *, bool);
int (*pid_filter)(struct dvb_frontend *, u8, u16, int);
int (*pid_filter_ctrl)(struct dvb_frontend *, int);
};
Members
clk
Clock frequency (4000000, 16000000, 25000000, 28800000).
tuner
Used tuner model.
get_dvb_frontend
Get DVB frontend.
get_i2c_adapter
Get I2C adapter.
slave_ts_ctrl
Control slave TS interface.
pid_filter
Set PID to PID filter.
pid_filter_ctrl
Control PID filter.
-
struct rtl2832_sdr_platform_data¶
Platform data for the rtl2832_sdr driver
Definition
struct rtl2832_sdr_platform_data {
u32 clk;
#define RTL2832_SDR_TUNER_FC2580 0x21;
#define RTL2832_SDR_TUNER_TUA9001 0x24;
#define RTL2832_SDR_TUNER_FC0012 0x26;
#define RTL2832_SDR_TUNER_E4000 0x27;
#define RTL2832_SDR_TUNER_FC0013 0x29;
#define RTL2832_SDR_TUNER_R820T 0x2a;
#define RTL2832_SDR_TUNER_R828D 0x2b;
u8 tuner;
struct regmap *regmap;
struct dvb_frontend *dvb_frontend;
struct v4l2_subdev *v4l2_subdev;
struct dvb_usb_device *dvb_usb_device;
};
Members
clk
Clock frequency (4000000, 16000000, 25000000, 28800000).
tuner
Used tuner model.
regmap
pointer to
struct regmap
.dvb_frontend
rtl2832 DVB frontend.
v4l2_subdev
Tuner v4l2 controls.
dvb_usb_device
DVB USB interface for USB streaming.
-
struct dvb_frontend *stb6000_attach(struct dvb_frontend *fe, int addr, struct i2c_adapter *i2c)¶
Attach a stb6000 tuner to the supplied frontend structure.
Parameters
struct dvb_frontend *fe
Frontend to attach to.
int addr
i2c address of the tuner.
struct i2c_adapter *i2c
i2c adapter to use.
Return
FE pointer on success, NULL on failure.
-
struct tda10071_platform_data¶
Platform data for the tda10071 driver
Definition
struct tda10071_platform_data {
u32 clk;
u16 i2c_wr_max;
#define TDA10071_TS_SERIAL 0;
#define TDA10071_TS_PARALLEL 1;
u8 ts_mode;
bool spec_inv;
u8 pll_multiplier;
u8 tuner_i2c_addr;
struct dvb_frontend* (*get_dvb_frontend)(struct i2c_client *);
};
Members
clk
Clock frequency.
i2c_wr_max
Max bytes I2C adapter can write at once.
ts_mode
TS mode.
spec_inv
Input spectrum inversion.
pll_multiplier
PLL multiplier.
tuner_i2c_addr
CX24118A tuner I2C address (0x14, 0x54, …).
get_dvb_frontend
Get DVB frontend.
-
struct dvb_frontend *tda826x_attach(struct dvb_frontend *fe, int addr, struct i2c_adapter *i2c, int has_loopthrough)¶
Attach a tda826x tuner to the supplied frontend structure.
Parameters
struct dvb_frontend *fe
Frontend to attach to.
int addr
i2c address of the tuner.
struct i2c_adapter *i2c
i2c adapter to use.
int has_loopthrough
Set to 1 if the card has a loopthrough RF connector.
Return
FE pointer on success, NULL on failure.
-
struct zd1301_demod_platform_data¶
Platform data for the zd1301_demod driver
Definition
struct zd1301_demod_platform_data {
void *reg_priv;
int (*reg_read)(void *, u16, u8 *);
int (*reg_write)(void *, u16, u8);
};
Members
reg_priv
First argument of reg_read and reg_write callbacks.
reg_read
Register read callback.
reg_write
Register write callback.
-
struct dvb_frontend *zd1301_demod_get_dvb_frontend(struct platform_device *pdev)¶
Get pointer to DVB frontend
Parameters
struct platform_device *pdev
Pointer to platform device
Return
Pointer to DVB frontend which given platform device owns.
-
struct i2c_adapter *zd1301_demod_get_i2c_adapter(struct platform_device *pdev)¶
Get pointer to I2C adapter
Parameters
struct platform_device *pdev
Pointer to platform device
Return
Pointer to I2C adapter which given platform device owns.
-
struct dvb_frontend *zl10036_attach(struct dvb_frontend *fe, const struct zl10036_config *config, struct i2c_adapter *i2c)¶
Attach a zl10036 tuner to the supplied frontend structure.
Parameters
struct dvb_frontend *fe
Frontend to attach to.
const struct zl10036_config *config
zl10036_config structure.
struct i2c_adapter *i2c
pointer to struct i2c_adapter.
Return
FE pointer on success, NULL on failure.