linux/drivers/media/dvb-frontends/dib7000m.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef DIB7000M_H
   3#define DIB7000M_H
   4
   5#include "dibx000_common.h"
   6
   7struct dib7000m_config {
   8        u8 dvbt_mode;
   9        u8 output_mpeg2_in_188_bytes;
  10        u8 hostbus_diversity;
  11        u8 tuner_is_baseband;
  12        u8 mobile_mode;
  13        int (*update_lna) (struct dvb_frontend *, u16 agc_global);
  14
  15        u8 agc_config_count;
  16        struct dibx000_agc_config *agc;
  17
  18        struct dibx000_bandwidth_config *bw;
  19
  20#define DIB7000M_GPIO_DEFAULT_DIRECTIONS 0xffff
  21        u16 gpio_dir;
  22#define DIB7000M_GPIO_DEFAULT_VALUES     0x0000
  23        u16 gpio_val;
  24#define DIB7000M_GPIO_PWM_POS0(v)        ((v & 0xf) << 12)
  25#define DIB7000M_GPIO_PWM_POS1(v)        ((v & 0xf) << 8 )
  26#define DIB7000M_GPIO_PWM_POS2(v)        ((v & 0xf) << 4 )
  27#define DIB7000M_GPIO_PWM_POS3(v)         (v & 0xf)
  28#define DIB7000M_GPIO_DEFAULT_PWM_POS    0xffff
  29        u16 gpio_pwm_pos;
  30
  31        u16 pwm_freq_div;
  32
  33        u8 quartz_direct;
  34
  35        u8 input_clk_is_div_2;
  36
  37        int (*agc_control) (struct dvb_frontend *, u8 before);
  38};
  39
  40#define DEFAULT_DIB7000M_I2C_ADDRESS 18
  41
  42#if IS_REACHABLE(CONFIG_DVB_DIB7000M)
  43extern struct dvb_frontend *dib7000m_attach(struct i2c_adapter *i2c_adap,
  44                                            u8 i2c_addr,
  45                                            struct dib7000m_config *cfg);
  46extern struct i2c_adapter *dib7000m_get_i2c_master(struct dvb_frontend *,
  47                                                   enum dibx000_i2c_interface,
  48                                                   int);
  49extern int dib7000m_pid_filter(struct dvb_frontend *, u8 id, u16 pid, u8 onoff);
  50extern int dib7000m_pid_filter_ctrl(struct dvb_frontend *fe, u8 onoff);
  51#else
  52static inline
  53struct dvb_frontend *dib7000m_attach(struct i2c_adapter *i2c_adap,
  54                                     u8 i2c_addr, struct dib7000m_config *cfg)
  55{
  56        printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
  57        return NULL;
  58}
  59
  60static inline
  61struct i2c_adapter *dib7000m_get_i2c_master(struct dvb_frontend *demod,
  62                                            enum dibx000_i2c_interface intf,
  63                                            int gating)
  64{
  65        printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
  66        return NULL;
  67}
  68static inline int dib7000m_pid_filter(struct dvb_frontend *fe, u8 id,
  69                                                u16 pid, u8 onoff)
  70{
  71        printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
  72        return -ENODEV;
  73}
  74
  75static inline int dib7000m_pid_filter_ctrl(struct dvb_frontend *fe,
  76                                                uint8_t onoff)
  77{
  78        printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
  79        return -ENODEV;
  80}
  81#endif
  82
  83/* TODO
  84extern INT dib7000m_set_gpio(struct dibDemod *demod, UCHAR num, UCHAR dir, UCHAR val);
  85extern INT dib7000m_enable_vbg_voltage(struct dibDemod *demod);
  86extern void dib7000m_set_hostbus_diversity(struct dibDemod *demod, UCHAR onoff);
  87extern USHORT dib7000m_get_current_agc_global(struct dibDemod *demod);
  88*/
  89
  90#endif
  91