linux/drivers/media/tuners/tuner-xc2028.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * tuner-xc2028
   4 *
   5 * Copyright (c) 2007-2008 Mauro Carvalho Chehab <mchehab@kernel.org>
   6 */
   7
   8#ifndef __TUNER_XC2028_H__
   9#define __TUNER_XC2028_H__
  10
  11#include <media/dvb_frontend.h>
  12
  13#define XC2028_DEFAULT_FIRMWARE "xc3028-v27.fw"
  14#define XC3028L_DEFAULT_FIRMWARE "xc3028L-v36.fw"
  15
  16/*      Dmoduler                IF (kHz) */
  17#define XC3028_FE_DEFAULT       0               /* Don't load SCODE */
  18#define XC3028_FE_LG60          6000
  19#define XC3028_FE_ATI638        6380
  20#define XC3028_FE_OREN538       5380
  21#define XC3028_FE_OREN36        3600
  22#define XC3028_FE_TOYOTA388     3880
  23#define XC3028_FE_TOYOTA794     7940
  24#define XC3028_FE_DIBCOM52      5200
  25#define XC3028_FE_ZARLINK456    4560
  26#define XC3028_FE_CHINA         5200
  27
  28enum firmware_type {
  29        XC2028_AUTO = 0,        /* By default, auto-detects */
  30        XC2028_D2633,
  31        XC2028_D2620,
  32};
  33
  34struct xc2028_ctrl {
  35        char                    *fname;
  36        int                     max_len;
  37        int                     msleep;
  38        unsigned int            scode_table;
  39        unsigned int            mts   :1;
  40        unsigned int            input1:1;
  41        unsigned int            vhfbw7:1;
  42        unsigned int            uhfbw8:1;
  43        unsigned int            disable_power_mgmt:1;
  44        unsigned int            read_not_reliable:1;
  45        unsigned int            demod;
  46        enum firmware_type      type:2;
  47};
  48
  49struct xc2028_config {
  50        struct i2c_adapter *i2c_adap;
  51        u8                 i2c_addr;
  52        struct xc2028_ctrl *ctrl;
  53};
  54
  55/* xc2028 commands for callback */
  56#define XC2028_TUNER_RESET      0
  57#define XC2028_RESET_CLK        1
  58#define XC2028_I2C_FLUSH        2
  59
  60#if IS_REACHABLE(CONFIG_MEDIA_TUNER_XC2028)
  61extern struct dvb_frontend *xc2028_attach(struct dvb_frontend *fe,
  62                                          struct xc2028_config *cfg);
  63#else
  64static inline struct dvb_frontend *xc2028_attach(struct dvb_frontend *fe,
  65                                                 struct xc2028_config *cfg)
  66{
  67        printk(KERN_INFO "%s: not probed - driver disabled by Kconfig\n",
  68               __func__);
  69        return NULL;
  70}
  71#endif
  72
  73#endif /* __TUNER_XC2028_H__ */
  74