13. Frontend drivers

13.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)

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)

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)

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)

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)

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)

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)

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.

DVB_IX2505V_H()

S silicon tuner

Parameters

Description

Copyright (C) 2010 Malcolm Priestley

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)

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)

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)

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)

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)

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 * zd1301_demod_get_dvb_frontend(struct platform_device * dev)

Attach a zd1301 frontend

Parameters

struct platform_device * dev
Pointer to platform device

Return

Pointer to struct dvb_frontend or NULL if attach fails.

DVB_ZL10036_H()

S silicon tuner

Parameters

Description

Copyright (C) 2006 Tino Reichardt Copyright (C) 2007-2009 Matthias Schwarzott <zzam**gentoo.de**>

struct dvb_frontend * zl10036_attach(struct dvb_frontend * fe, const struct zl10036_config * config, struct i2c_adapter * i2c)

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.