linux/drivers/media/dvb-frontends/dib3000mc.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-only */
   2/*
   3 * Driver for DiBcom DiB3000MC/P-demodulator.
   4 *
   5 * Copyright (C) 2004-6 DiBcom (http://www.dibcom.fr/)
   6 * Copyright (C) 2004-5 Patrick Boettcher (patrick.boettcher@posteo.de)
   7 *
   8 * This code is partially based on the previous dib3000mc.c .
   9 */
  10#ifndef DIB3000MC_H
  11#define DIB3000MC_H
  12
  13#include "dibx000_common.h"
  14
  15struct dib3000mc_config {
  16        struct dibx000_agc_config *agc;
  17
  18        u8 phase_noise_mode;
  19        u8 impulse_noise_mode;
  20
  21        u8  pwm3_inversion;
  22        u8  use_pwm3;
  23        u16 pwm3_value;
  24
  25        u16 max_time;
  26        u16 ln_adc_level;
  27
  28        u8 agc_command1 :1;
  29        u8 agc_command2 :1;
  30
  31        u8 mobile_mode;
  32
  33        u8 output_mpeg2_in_188_bytes;
  34};
  35
  36#define DEFAULT_DIB3000MC_I2C_ADDRESS 16
  37#define DEFAULT_DIB3000P_I2C_ADDRESS  24
  38
  39#if IS_REACHABLE(CONFIG_DVB_DIB3000MC)
  40extern struct dvb_frontend *dib3000mc_attach(struct i2c_adapter *i2c_adap,
  41                                             u8 i2c_addr,
  42                                             struct dib3000mc_config *cfg);
  43extern int dib3000mc_i2c_enumeration(struct i2c_adapter *i2c,
  44                                     int no_of_demods, u8 default_addr,
  45                                     struct dib3000mc_config cfg[]);
  46extern
  47struct i2c_adapter *dib3000mc_get_tuner_i2c_master(struct dvb_frontend *demod,
  48                                                   int gating);
  49#else
  50static inline
  51struct dvb_frontend *dib3000mc_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr,
  52                                      struct dib3000mc_config *cfg)
  53{
  54        printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
  55        return NULL;
  56}
  57
  58static inline
  59int dib3000mc_i2c_enumeration(struct i2c_adapter *i2c,
  60                              int no_of_demods, u8 default_addr,
  61                              struct dib3000mc_config cfg[])
  62{
  63        printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
  64        return -ENODEV;
  65}
  66
  67static inline
  68struct i2c_adapter *dib3000mc_get_tuner_i2c_master(struct dvb_frontend *demod,
  69                                                   int gating)
  70{
  71        printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
  72        return NULL;
  73}
  74#endif // CONFIG_DVB_DIB3000MC
  75
  76extern int dib3000mc_pid_control(struct dvb_frontend *fe, int index, int pid,int onoff);
  77extern int dib3000mc_pid_parse(struct dvb_frontend *fe, int onoff);
  78
  79extern void dib3000mc_set_config(struct dvb_frontend *, struct dib3000mc_config *);
  80
  81#endif
  82