blob: b925ea5147e62393d8ba7e9d5bb469c11b49f677 [file] [log] [blame]
Antti Palosaaric0adca72011-07-08 23:34:09 -03001/*
2 * Realtek RTL2830 DVB-T demodulator driver
3 *
4 * Copyright (C) 2011 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#ifndef RTL2830_H
22#define RTL2830_H
23
Mauro Carvalho Chehab782d8b72013-03-21 16:11:54 -030024#include <linux/kconfig.h>
Antti Palosaaric0adca72011-07-08 23:34:09 -030025#include <linux/dvb/frontend.h>
26
Antti Palosaari28c08792014-12-07 04:07:29 -030027struct rtl2830_platform_data {
28 /*
29 * Clock frequency.
30 * Hz
31 * 4000000, 16000000, 25000000, 28800000
32 */
33 u32 clk;
34
35 /*
36 * Spectrum inversion.
37 */
38 bool spec_inv;
39
40 /*
41 */
42 u8 vtop;
43
44 /*
45 */
46 u8 krf;
47
48 /*
49 */
50 u8 agc_targ_val;
51
52 /*
53 */
54 struct dvb_frontend* (*get_dvb_frontend)(struct i2c_client *);
55 struct i2c_adapter* (*get_i2c_adapter)(struct i2c_client *);
56};
57
Antti Palosaaric0adca72011-07-08 23:34:09 -030058struct rtl2830_config {
59 /*
60 * Demodulator I2C address.
61 */
62 u8 i2c_addr;
63
64 /*
65 * Xtal frequency.
66 * Hz
67 * 4000000, 16000000, 25000000, 28800000
68 */
69 u32 xtal;
70
71 /*
72 * TS output mode.
73 */
74 u8 ts_mode;
75
76 /*
77 * Spectrum inversion.
78 */
79 bool spec_inv;
80
81 /*
Antti Palosaaric0adca72011-07-08 23:34:09 -030082 */
83 u8 vtop;
84
85 /*
86 */
87 u8 krf;
88
89 /*
90 */
91 u8 agc_targ_val;
92};
93
Mauro Carvalho Chehab782d8b72013-03-21 16:11:54 -030094#if IS_ENABLED(CONFIG_DVB_RTL2830)
Antti Palosaaric0adca72011-07-08 23:34:09 -030095extern struct dvb_frontend *rtl2830_attach(
96 const struct rtl2830_config *config,
97 struct i2c_adapter *i2c
98);
99
100extern struct i2c_adapter *rtl2830_get_tuner_i2c_adapter(
101 struct dvb_frontend *fe
102);
103#else
104static inline struct dvb_frontend *rtl2830_attach(
105 const struct rtl2830_config *config,
106 struct i2c_adapter *i2c
107)
108{
Antti Palosaari86ad0f12012-09-12 20:23:47 -0300109 pr_warn("%s: driver disabled by Kconfig\n", __func__);
Antti Palosaaric0adca72011-07-08 23:34:09 -0300110 return NULL;
111}
112
113static inline struct i2c_adapter *rtl2830_get_tuner_i2c_adapter(
114 struct dvb_frontend *fe
115)
116{
117 return NULL;
118}
119#endif
120
121#endif /* RTL2830_H */