linux/drivers/media/dvb-frontends/dib0070.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * Linux-DVB Driver for DiBcom's DiB0070 base-band RF Tuner.
   4 *
   5 * Copyright (C) 2005-7 DiBcom (http://www.dibcom.fr/)
   6 */
   7#ifndef DIB0070_H
   8#define DIB0070_H
   9
  10struct dvb_frontend;
  11struct i2c_adapter;
  12
  13#define DEFAULT_DIB0070_I2C_ADDRESS 0x60
  14
  15struct dib0070_wbd_gain_cfg {
  16        u16 freq;
  17        u16 wbd_gain_val;
  18};
  19
  20struct dib0070_config {
  21        u8 i2c_address;
  22
  23        /* tuner pins controlled externally */
  24        int (*reset) (struct dvb_frontend *, int);
  25        int (*sleep) (struct dvb_frontend *, int);
  26
  27        /*  offset in kHz */
  28        int freq_offset_khz_uhf;
  29        int freq_offset_khz_vhf;
  30
  31        u8 osc_buffer_state;    /* 0= normal, 1= tri-state */
  32        u32 clock_khz;
  33        u8 clock_pad_drive;     /* (Drive + 1) * 2mA */
  34
  35        u8 invert_iq;           /* invert Q - in case I or Q is inverted on the board */
  36
  37        u8 force_crystal_mode;  /* if == 0 -> decision is made in the driver default: <24 -> 2, >=24 -> 1 */
  38
  39        u8 flip_chip;
  40        u8 enable_third_order_filter;
  41        u8 charge_pump;
  42
  43        const struct dib0070_wbd_gain_cfg *wbd_gain;
  44
  45        u8 vga_filter;
  46};
  47
  48#if IS_REACHABLE(CONFIG_DVB_TUNER_DIB0070)
  49extern struct dvb_frontend *dib0070_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct dib0070_config *cfg);
  50extern u16 dib0070_wbd_offset(struct dvb_frontend *);
  51extern void dib0070_ctrl_agc_filter(struct dvb_frontend *, u8 open);
  52extern u8 dib0070_get_rf_output(struct dvb_frontend *fe);
  53extern int dib0070_set_rf_output(struct dvb_frontend *fe, u8 no);
  54#else
  55static inline struct dvb_frontend *dib0070_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct dib0070_config *cfg)
  56{
  57        printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
  58        return NULL;
  59}
  60
  61static inline u16 dib0070_wbd_offset(struct dvb_frontend *fe)
  62{
  63        printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
  64        return 0;
  65}
  66
  67static inline void dib0070_ctrl_agc_filter(struct dvb_frontend *fe, u8 open)
  68{
  69        printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
  70}
  71#endif
  72
  73#endif
  74