1/*
2    Montage Technology TS2020 - Silicon Tuner driver
3    Copyright (C) 2009-2012 Konstantin Dimitrov <kosio.dimitrov@gmail.com>
4
5    Copyright (C) 2009-2012 TurboSight.com
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 2 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program; if not, write to the Free Software
19    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 */
21
22#ifndef TS2020_H
23#define TS2020_H
24
25#include <linux/kconfig.h>
26#include <linux/dvb/frontend.h>
27
28struct ts2020_config {
29	u8 tuner_address;
30	u32 frequency_div;
31
32	/*
33	 * RF loop-through
34	 */
35	u8 loop_through:1;
36
37	/*
38	 * clock output
39	 */
40#define TS2020_CLK_OUT_DISABLED        0
41#define TS2020_CLK_OUT_ENABLED         1
42#define TS2020_CLK_OUT_ENABLED_XTALOUT 2
43	u8 clk_out:2;
44
45	/*
46	 * clock output divider
47	 * 1 - 31
48	 */
49	u8 clk_out_div:5;
50
51	/*
52	 * pointer to DVB frontend
53	 */
54	struct dvb_frontend *fe;
55};
56
57#if IS_REACHABLE(CONFIG_DVB_TS2020)
58
59extern struct dvb_frontend *ts2020_attach(
60	struct dvb_frontend *fe,
61	const struct ts2020_config *config,
62	struct i2c_adapter *i2c);
63#else
64static inline struct dvb_frontend *ts2020_attach(
65	struct dvb_frontend *fe,
66	const struct ts2020_config *config,
67	struct i2c_adapter *i2c)
68{
69	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
70	return NULL;
71}
72#endif
73
74#endif /* TS2020_H */
75