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 commmand. 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

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License Version 2, as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

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**>

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License Version 2, as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

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.