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.