linux/drivers/media/dvb-frontends/rtl2832.h
<<
>>
Prefs
   1/*
   2 * Realtek RTL2832 DVB-T demodulator driver
   3 *
   4 * Copyright (C) 2012 Thomas Mair <thomas.mair86@gmail.com>
   5 *
   6 *      This program is free software; you can redistribute it and/or modify
   7 *      it under the terms of the GNU General Public License as published by
   8 *      the Free Software Foundation; either version 2 of the License, or
   9 *      (at your option) any later version.
  10 *
  11 *      This program is distributed in the hope that it will be useful,
  12 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14 *      GNU General Public License for more details.
  15 *
  16 *      You should have received a copy of the GNU General Public License along
  17 *      with this program; if not, write to the Free Software Foundation, Inc.,
  18 *      51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  19 */
  20
  21#ifndef RTL2832_H
  22#define RTL2832_H
  23
  24#include <linux/kconfig.h>
  25#include <linux/dvb/frontend.h>
  26
  27struct rtl2832_config {
  28        /*
  29         * Demodulator I2C address.
  30         */
  31        u8 i2c_addr;
  32
  33        /*
  34         * Xtal frequency.
  35         * Hz
  36         * 4000000, 16000000, 25000000, 28800000
  37         */
  38        u32 xtal;
  39
  40        /*
  41         * tuner
  42         * XXX: This must be keep sync with dvb_usb_rtl28xxu demod driver.
  43         */
  44#define RTL2832_TUNER_TUA9001   0x24
  45#define RTL2832_TUNER_FC0012    0x26
  46#define RTL2832_TUNER_E4000     0x27
  47#define RTL2832_TUNER_FC0013    0x29
  48#define RTL2832_TUNER_R820T     0x2a
  49#define RTL2832_TUNER_R828D     0x2b
  50        u8 tuner;
  51};
  52
  53#if IS_ENABLED(CONFIG_DVB_RTL2832)
  54struct dvb_frontend *rtl2832_attach(
  55        const struct rtl2832_config *cfg,
  56        struct i2c_adapter *i2c
  57);
  58
  59extern struct i2c_adapter *rtl2832_get_i2c_adapter(
  60        struct dvb_frontend *fe
  61);
  62
  63extern struct i2c_adapter *rtl2832_get_private_i2c_adapter(
  64        struct dvb_frontend *fe
  65);
  66
  67#else
  68
  69static inline struct dvb_frontend *rtl2832_attach(
  70        const struct rtl2832_config *config,
  71        struct i2c_adapter *i2c
  72)
  73{
  74        pr_warn("%s: driver disabled by Kconfig\n", __func__);
  75        return NULL;
  76}
  77
  78static inline struct i2c_adapter *rtl2832_get_i2c_adapter(
  79        struct dvb_frontend *fe
  80)
  81{
  82        return NULL;
  83}
  84
  85static inline struct i2c_adapter *rtl2832_get_private_i2c_adapter(
  86        struct dvb_frontend *fe
  87)
  88{
  89        return NULL;
  90}
  91
  92#endif
  93
  94
  95#endif /* RTL2832_H */
  96