Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
stv0299.h
Go to the documentation of this file.
1 /*
2  Driver for ST STV0299 demodulator
3 
4  Copyright (C) 2001-2002 Convergence Integrated Media GmbH
8 
9 
10  Philips SU1278/SH
11 
12  Copyright (C) 2002 by Peter Schildmann <[email protected]>
13 
14 
15  LG TDQF-S001F
16 
17  Copyright (C) 2002 Felix Domke <[email protected]>
18  & Andreas Oberritter <[email protected]>
19 
20 
21  Support for Samsung TBMU24112IMB used on Technisat SkyStar2 rev. 2.6B
22 
23  Copyright (C) 2003 Vadim Catana <[email protected]>:
24 
25  Support for Philips SU1278 on Technotrend hardware
26 
27  Copyright (C) 2004 Andrew de Quincey <[email protected]>
28 
29  This program is free software; you can redistribute it and/or modify
30  it under the terms of the GNU General Public License as published by
31  the Free Software Foundation; either version 2 of the License, or
32  (at your option) any later version.
33 
34  This program is distributed in the hope that it will be useful,
35  but WITHOUT ANY WARRANTY; without even the implied warranty of
36  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
37  GNU General Public License for more details.
38 
39  You should have received a copy of the GNU General Public License
40  along with this program; if not, write to the Free Software
41  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
42 
43 */
44 
45 #ifndef STV0299_H
46 #define STV0299_H
47 
48 #include <linux/dvb/frontend.h>
49 #include "dvb_frontend.h"
50 
51 #define STV0299_LOCKOUTPUT_0 0
52 #define STV0299_LOCKOUTPUT_1 1
53 #define STV0299_LOCKOUTPUT_CF 2
54 #define STV0299_LOCKOUTPUT_LK 3
55 
56 #define STV0299_VOLT13_OP0 0
57 #define STV0299_VOLT13_OP1 1
58 
60 {
61  /* the demodulator's i2c address */
63 
64  /* inittab - array of pairs of values.
65  * First of each pair is the register, second is the value.
66  * List should be terminated with an 0xff, 0xff pair.
67  */
68  const u8* inittab;
69 
70  /* master clock to use */
72 
73  /* does the inversion require inversion? */
75 
76  /* Skip reinitialisation? */
78 
79  /* LOCK OUTPUT setting */
81 
82  /* Is 13v controlled by OP0 or OP1? */
84 
85  /* Turn-off OP0? */
87 
88  /* minimum delay before retuning */
90 
91  /* Set the symbol rate */
92  int (*set_symbol_rate)(struct dvb_frontend *fe, u32 srate, u32 ratio);
93 
94  /* Set device param to start dma */
95  int (*set_ts_params)(struct dvb_frontend *fe, int is_punctured);
96 };
97 
98 #if defined(CONFIG_DVB_STV0299) || (defined(CONFIG_DVB_STV0299_MODULE) && defined(MODULE))
99 extern struct dvb_frontend *stv0299_attach(const struct stv0299_config *config,
100  struct i2c_adapter *i2c);
101 #else
102 static inline struct dvb_frontend *stv0299_attach(const struct stv0299_config *config,
103  struct i2c_adapter *i2c)
104 {
105  printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
106  return NULL;
107 }
108 #endif // CONFIG_DVB_STV0299
109 
110 static inline int stv0299_writereg(struct dvb_frontend *fe, u8 reg, u8 val) {
111  int r = 0;
112  u8 buf[] = {reg, val};
113  if (fe->ops.write)
114  r = fe->ops.write(fe, buf, 2);
115  return r;
116 }
117 
118 #endif // STV0299_H