Linux Audio

Check our new training course

Loading...
v6.2
 1/* SPDX-License-Identifier: GPL-2.0-or-later */
 2/*
 3    Montage Technology TS2020 - Silicon Tuner driver
 4    Copyright (C) 2009-2012 Konstantin Dimitrov <kosio.dimitrov@gmail.com>
 5
 6    Copyright (C) 2009-2012 TurboSight.com
 7
 
 
 
 
 
 
 
 
 
 
 
 
 
 8 */
 9
10#ifndef TS2020_H
11#define TS2020_H
12
13#include <linux/dvb/frontend.h>
14
15struct ts2020_config {
16	u8 tuner_address;
17	u32 frequency_div;
18
19	/*
20	 * RF loop-through
21	 */
22	bool loop_through:1;
23
24	/*
25	 * clock output
26	 */
27#define TS2020_CLK_OUT_DISABLED        0
28#define TS2020_CLK_OUT_ENABLED         1
29#define TS2020_CLK_OUT_ENABLED_XTALOUT 2
30	u8 clk_out:2;
31
32	/*
33	 * clock output divider
34	 * 1 - 31
35	 */
36	u8 clk_out_div:5;
37
38	/* Set to true to suppress stat polling */
39	bool dont_poll:1;
40
41	/*
42	 * pointer to DVB frontend
43	 */
44	struct dvb_frontend *fe;
45
46	/*
47	 * driver private, do not set value
48	 */
49	u8 attach_in_use:1;
50
51	/* Operation to be called by the ts2020 driver to get the value of the
52	 * AGC PWM tuner input as theoretically output by the demodulator.
53	 */
54	int (*get_agc_pwm)(struct dvb_frontend *fe, u8 *_agc_pwm);
55};
56
57/* Do not add new ts2020_attach() users! Use I2C bindings instead. */
58#if IS_REACHABLE(CONFIG_DVB_TS2020)
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 */
v4.17
 
 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/dvb/frontend.h>
26
27struct ts2020_config {
28	u8 tuner_address;
29	u32 frequency_div;
30
31	/*
32	 * RF loop-through
33	 */
34	bool loop_through:1;
35
36	/*
37	 * clock output
38	 */
39#define TS2020_CLK_OUT_DISABLED        0
40#define TS2020_CLK_OUT_ENABLED         1
41#define TS2020_CLK_OUT_ENABLED_XTALOUT 2
42	u8 clk_out:2;
43
44	/*
45	 * clock output divider
46	 * 1 - 31
47	 */
48	u8 clk_out_div:5;
49
50	/* Set to true to suppress stat polling */
51	bool dont_poll:1;
52
53	/*
54	 * pointer to DVB frontend
55	 */
56	struct dvb_frontend *fe;
57
58	/*
59	 * driver private, do not set value
60	 */
61	u8 attach_in_use:1;
62
63	/* Operation to be called by the ts2020 driver to get the value of the
64	 * AGC PWM tuner input as theoretically output by the demodulator.
65	 */
66	int (*get_agc_pwm)(struct dvb_frontend *fe, u8 *_agc_pwm);
67};
68
69/* Do not add new ts2020_attach() users! Use I2C bindings instead. */
70#if IS_REACHABLE(CONFIG_DVB_TS2020)
71extern struct dvb_frontend *ts2020_attach(
72	struct dvb_frontend *fe,
73	const struct ts2020_config *config,
74	struct i2c_adapter *i2c);
75#else
76static inline struct dvb_frontend *ts2020_attach(
77	struct dvb_frontend *fe,
78	const struct ts2020_config *config,
79	struct i2c_adapter *i2c)
80{
81	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
82	return NULL;
83}
84#endif
85
86#endif /* TS2020_H */