linux/drivers/media/dvb-frontends/cxd2820r_priv.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_PRIV_H
  23#define CXD2820R_PRIV_H
  24
  25#include <linux/dvb/version.h>
  26#include "dvb_frontend.h"
  27#include "dvb_math.h"
  28#include "cxd2820r.h"
  29#include <linux/gpio.h>
  30#include <linux/math64.h>
  31#include <linux/regmap.h>
  32
  33struct reg_val_mask {
  34        u32 reg;
  35        u8  val;
  36        u8  mask;
  37};
  38
  39#define CXD2820R_CLK 41000000
  40
  41struct cxd2820r_priv {
  42        struct i2c_client *client[2];
  43        struct regmap *regmap[2];
  44        struct i2c_adapter *i2c;
  45        struct dvb_frontend fe;
  46        u8 ts_mode;
  47        bool ts_clk_inv;
  48        bool if_agc_polarity;
  49        bool spec_inv;
  50
  51        u64 post_bit_error_prev_dvbv3;
  52        u64 post_bit_error;
  53
  54        bool ber_running;
  55
  56#define GPIO_COUNT 3
  57        u8 gpio[GPIO_COUNT];
  58#ifdef CONFIG_GPIOLIB
  59        struct gpio_chip gpio_chip;
  60#endif
  61
  62        enum fe_delivery_system delivery_system;
  63        bool last_tune_failed; /* for switch between T and T2 tune */
  64};
  65
  66/* cxd2820r_core.c */
  67
  68extern int cxd2820r_debug;
  69
  70int cxd2820r_gpio(struct dvb_frontend *fe, u8 *gpio);
  71
  72int cxd2820r_wr_reg_val_mask_tab(struct cxd2820r_priv *priv,
  73                                 const struct reg_val_mask *tab, int tab_len);
  74
  75int cxd2820r_wr_reg_mask(struct cxd2820r_priv *priv, u32 reg, u8 val,
  76        u8 mask);
  77
  78int cxd2820r_wr_regs(struct cxd2820r_priv *priv, u32 reginfo, u8 *val,
  79        int len);
  80
  81int cxd2820r_wr_regs(struct cxd2820r_priv *priv, u32 reginfo, u8 *val,
  82        int len);
  83
  84int cxd2820r_rd_regs(struct cxd2820r_priv *priv, u32 reginfo, u8 *val,
  85        int len);
  86
  87int cxd2820r_wr_reg(struct cxd2820r_priv *priv, u32 reg, u8 val);
  88
  89int cxd2820r_rd_reg(struct cxd2820r_priv *priv, u32 reg, u8 *val);
  90
  91/* cxd2820r_c.c */
  92
  93int cxd2820r_get_frontend_c(struct dvb_frontend *fe,
  94                            struct dtv_frontend_properties *p);
  95
  96int cxd2820r_set_frontend_c(struct dvb_frontend *fe);
  97
  98int cxd2820r_read_status_c(struct dvb_frontend *fe, enum fe_status *status);
  99
 100int cxd2820r_init_c(struct dvb_frontend *fe);
 101
 102int cxd2820r_sleep_c(struct dvb_frontend *fe);
 103
 104int cxd2820r_get_tune_settings_c(struct dvb_frontend *fe,
 105        struct dvb_frontend_tune_settings *s);
 106
 107/* cxd2820r_t.c */
 108
 109int cxd2820r_get_frontend_t(struct dvb_frontend *fe,
 110                            struct dtv_frontend_properties *p);
 111
 112int cxd2820r_set_frontend_t(struct dvb_frontend *fe);
 113
 114int cxd2820r_read_status_t(struct dvb_frontend *fe, enum fe_status *status);
 115
 116int cxd2820r_init_t(struct dvb_frontend *fe);
 117
 118int cxd2820r_sleep_t(struct dvb_frontend *fe);
 119
 120int cxd2820r_get_tune_settings_t(struct dvb_frontend *fe,
 121        struct dvb_frontend_tune_settings *s);
 122
 123/* cxd2820r_t2.c */
 124
 125int cxd2820r_get_frontend_t2(struct dvb_frontend *fe,
 126                             struct dtv_frontend_properties *p);
 127
 128int cxd2820r_set_frontend_t2(struct dvb_frontend *fe);
 129
 130int cxd2820r_read_status_t2(struct dvb_frontend *fe, enum fe_status *status);
 131
 132int cxd2820r_init_t2(struct dvb_frontend *fe);
 133
 134int cxd2820r_sleep_t2(struct dvb_frontend *fe);
 135
 136int cxd2820r_get_tune_settings_t2(struct dvb_frontend *fe,
 137        struct dvb_frontend_tune_settings *s);
 138
 139#endif /* CXD2820R_PRIV_H */
 140