linux/drivers/media/dvb/frontends/cxd2820r.h
<<
>>
Prefs
   1/*
   2 * Sony CXD2820R demodulator driver
   3 *
   4 * Copyright (C) 2010 Antti Palosaari <crope@iki.fi>
   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
  22#ifndef CXD2820R_H
  23#define CXD2820R_H
  24
  25#include <linux/dvb/frontend.h>
  26
  27#define CXD2820R_GPIO_D (0 << 0) /* disable */
  28#define CXD2820R_GPIO_E (1 << 0) /* enable */
  29#define CXD2820R_GPIO_O (0 << 1) /* output */
  30#define CXD2820R_GPIO_I (1 << 1) /* input */
  31#define CXD2820R_GPIO_L (0 << 2) /* output low */
  32#define CXD2820R_GPIO_H (1 << 2) /* output high */
  33
  34#define CXD2820R_TS_SERIAL        0x08
  35#define CXD2820R_TS_SERIAL_MSB    0x28
  36#define CXD2820R_TS_PARALLEL      0x30
  37#define CXD2820R_TS_PARALLEL_MSB  0x70
  38
  39struct cxd2820r_config {
  40        /* Demodulator I2C address.
  41         * Driver determines DVB-C slave I2C address automatically from master
  42         * address.
  43         * Default: none, must set
  44         * Values: 0x6c, 0x6d
  45         */
  46        u8 i2c_address;
  47
  48        /* TS output mode.
  49         * Default: none, must set.
  50         * Values:
  51         */
  52        u8 ts_mode;
  53
  54        /* IF AGC polarity.
  55         * Default: 0
  56         * Values: 0, 1
  57         */
  58        int if_agc_polarity:1;
  59
  60        /* Spectrum inversion.
  61         * Default: 0
  62         * Values: 0, 1
  63         */
  64        int spec_inv:1;
  65
  66        /* IFs for all used modes.
  67         * Default: none, must set
  68         * Values: <kHz>
  69         */
  70        u16 if_dvbt_6;
  71        u16 if_dvbt_7;
  72        u16 if_dvbt_8;
  73        u16 if_dvbt2_5;
  74        u16 if_dvbt2_6;
  75        u16 if_dvbt2_7;
  76        u16 if_dvbt2_8;
  77        u16 if_dvbc;
  78
  79        /* GPIOs for all used modes.
  80         * Default: none, disabled
  81         * Values: <see above>
  82         */
  83        u8 gpio_dvbt[3];
  84        u8 gpio_dvbt2[3];
  85        u8 gpio_dvbc[3];
  86};
  87
  88
  89#if defined(CONFIG_DVB_CXD2820R) || \
  90        (defined(CONFIG_DVB_CXD2820R_MODULE) && defined(MODULE))
  91extern struct dvb_frontend *cxd2820r_attach(
  92        const struct cxd2820r_config *config,
  93        struct i2c_adapter *i2c,
  94        struct dvb_frontend *fe
  95);
  96extern struct i2c_adapter *cxd2820r_get_tuner_i2c_adapter(
  97        struct dvb_frontend *fe
  98);
  99#else
 100static inline struct dvb_frontend *cxd2820r_attach(
 101        const struct cxd2820r_config *config,
 102        struct i2c_adapter *i2c,
 103        struct dvb_frontend *fe
 104)
 105{
 106        printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
 107        return NULL;
 108}
 109static inline struct i2c_adapter *cxd2820r_get_tuner_i2c_adapter(
 110        struct dvb_frontend *fe
 111)
 112{
 113        return NULL;
 114}
 115
 116#endif
 117
 118#endif /* CXD2820R_H */
 119