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
  30#define LOG_PREFIX "cxd2820r"
  31
  32#undef dbg
  33#define dbg(f, arg...) \
  34        if (cxd2820r_debug) \
  35                printk(KERN_INFO   LOG_PREFIX": " f "\n" , ## arg)
  36#undef err
  37#define err(f, arg...)  printk(KERN_ERR     LOG_PREFIX": " f "\n" , ## arg)
  38#undef info
  39#define info(f, arg...) printk(KERN_INFO    LOG_PREFIX": " f "\n" , ## arg)
  40#undef warn
  41#define warn(f, arg...) printk(KERN_WARNING LOG_PREFIX": " f "\n" , ## arg)
  42
  43struct reg_val_mask {
  44        u32 reg;
  45        u8  val;
  46        u8  mask;
  47};
  48
  49struct cxd2820r_priv {
  50        struct i2c_adapter *i2c;
  51        struct dvb_frontend fe;
  52        struct cxd2820r_config cfg;
  53
  54        bool ber_running;
  55
  56        u8 bank[2];
  57        u8 gpio[3];
  58
  59        fe_delivery_system_t delivery_system;
  60        bool last_tune_failed; /* for switch between T and T2 tune */
  61};
  62
  63/* cxd2820r_core.c */
  64
  65extern int cxd2820r_debug;
  66
  67int cxd2820r_gpio(struct dvb_frontend *fe);
  68
  69int cxd2820r_wr_reg_mask(struct cxd2820r_priv *priv, u32 reg, u8 val,
  70        u8 mask);
  71
  72int cxd2820r_wr_regs(struct cxd2820r_priv *priv, u32 reginfo, u8 *val,
  73        int len);
  74
  75u32 cxd2820r_div_u64_round_closest(u64 dividend, u32 divisor);
  76
  77int cxd2820r_wr_regs(struct cxd2820r_priv *priv, u32 reginfo, u8 *val,
  78        int len);
  79
  80int cxd2820r_rd_regs(struct cxd2820r_priv *priv, u32 reginfo, u8 *val,
  81        int len);
  82
  83int cxd2820r_wr_reg(struct cxd2820r_priv *priv, u32 reg, u8 val);
  84
  85int cxd2820r_rd_reg(struct cxd2820r_priv *priv, u32 reg, u8 *val);
  86
  87/* cxd2820r_c.c */
  88
  89int cxd2820r_get_frontend_c(struct dvb_frontend *fe);
  90
  91int cxd2820r_set_frontend_c(struct dvb_frontend *fe);
  92
  93int cxd2820r_read_status_c(struct dvb_frontend *fe, fe_status_t *status);
  94
  95int cxd2820r_read_ber_c(struct dvb_frontend *fe, u32 *ber);
  96
  97int cxd2820r_read_signal_strength_c(struct dvb_frontend *fe, u16 *strength);
  98
  99int cxd2820r_read_snr_c(struct dvb_frontend *fe, u16 *snr);
 100
 101int cxd2820r_read_ucblocks_c(struct dvb_frontend *fe, u32 *ucblocks);
 102
 103int cxd2820r_init_c(struct dvb_frontend *fe);
 104
 105int cxd2820r_sleep_c(struct dvb_frontend *fe);
 106
 107int cxd2820r_get_tune_settings_c(struct dvb_frontend *fe,
 108        struct dvb_frontend_tune_settings *s);
 109
 110/* cxd2820r_t.c */
 111
 112int cxd2820r_get_frontend_t(struct dvb_frontend *fe);
 113
 114int cxd2820r_set_frontend_t(struct dvb_frontend *fe);
 115
 116int cxd2820r_read_status_t(struct dvb_frontend *fe, fe_status_t *status);
 117
 118int cxd2820r_read_ber_t(struct dvb_frontend *fe, u32 *ber);
 119
 120int cxd2820r_read_signal_strength_t(struct dvb_frontend *fe, u16 *strength);
 121
 122int cxd2820r_read_snr_t(struct dvb_frontend *fe, u16 *snr);
 123
 124int cxd2820r_read_ucblocks_t(struct dvb_frontend *fe, u32 *ucblocks);
 125
 126int cxd2820r_init_t(struct dvb_frontend *fe);
 127
 128int cxd2820r_sleep_t(struct dvb_frontend *fe);
 129
 130int cxd2820r_get_tune_settings_t(struct dvb_frontend *fe,
 131        struct dvb_frontend_tune_settings *s);
 132
 133/* cxd2820r_t2.c */
 134
 135int cxd2820r_get_frontend_t2(struct dvb_frontend *fe);
 136
 137int cxd2820r_set_frontend_t2(struct dvb_frontend *fe);
 138
 139int cxd2820r_read_status_t2(struct dvb_frontend *fe, fe_status_t *status);
 140
 141int cxd2820r_read_ber_t2(struct dvb_frontend *fe, u32 *ber);
 142
 143int cxd2820r_read_signal_strength_t2(struct dvb_frontend *fe, u16 *strength);
 144
 145int cxd2820r_read_snr_t2(struct dvb_frontend *fe, u16 *snr);
 146
 147int cxd2820r_read_ucblocks_t2(struct dvb_frontend *fe, u32 *ucblocks);
 148
 149int cxd2820r_init_t2(struct dvb_frontend *fe);
 150
 151int cxd2820r_sleep_t2(struct dvb_frontend *fe);
 152
 153int cxd2820r_get_tune_settings_t2(struct dvb_frontend *fe,
 154        struct dvb_frontend_tune_settings *s);
 155
 156#endif /* CXD2820R_PRIV_H */
 157