Commit | Line | Data |
---|---|---|
0c44bf36 DH |
1 | /* |
2 | Auvitek AU8522 QAM/8VSB demodulator driver | |
3 | ||
4 | Copyright (C) 2008 Steven Toth <stoth@linuxtv.org> | |
5 | Copyright (C) 2008 Devin Heitmueller <dheitmueller@linuxtv.org> | |
6 | Copyright (C) 2005-2008 Auvitek International, Ltd. | |
7 | ||
8 | This program is free software; you can redistribute it and/or modify | |
9 | it under the terms of the GNU General Public License as published by | |
10 | the Free Software Foundation; either version 2 of the License, or | |
11 | (at your option) any later version. | |
12 | ||
13 | This program is distributed in the hope that it will be useful, | |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 | GNU General Public License for more details. | |
17 | ||
18 | You should have received a copy of the GNU General Public License | |
19 | along with this program; if not, write to the Free Software | |
20 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |
21 | ||
22 | */ | |
23 | ||
24 | #include <linux/kernel.h> | |
25 | #include <linux/init.h> | |
26 | #include <linux/module.h> | |
27 | #include <linux/string.h> | |
28 | #include <linux/slab.h> | |
29 | #include <linux/delay.h> | |
30 | #include <linux/videodev2.h> | |
31 | #include <media/v4l2-device.h> | |
32 | #include <linux/i2c.h> | |
33 | #include "dvb_frontend.h" | |
34 | #include "au8522.h" | |
35 | #include "tuner-i2c.h" | |
36 | ||
37 | struct au8522_state { | |
38 | struct i2c_adapter *i2c; | |
39 | ||
209fdf66 DH |
40 | /* Used for sharing of the state between analog and digital mode */ |
41 | struct tuner_i2c_props i2c_props; | |
42 | struct list_head hybrid_tuner_instance_list; | |
43 | ||
0c44bf36 DH |
44 | /* configuration settings */ |
45 | const struct au8522_config *config; | |
46 | ||
47 | struct dvb_frontend frontend; | |
48 | ||
49 | u32 current_frequency; | |
50 | fe_modulation_t current_modulation; | |
51 | ||
52 | u32 fe_status; | |
53 | unsigned int led_state; | |
54 | }; | |
55 | ||
56 | /* These are routines shared by both the VSB/QAM demodulator and the analog | |
57 | decoder */ | |
58 | int au8522_writereg(struct au8522_state *state, u16 reg, u8 data); | |
59 | u8 au8522_readreg(struct au8522_state *state, u16 reg); | |
60 | int au8522_init(struct dvb_frontend *fe); | |
61 | int au8522_sleep(struct dvb_frontend *fe); | |
209fdf66 DH |
62 | |
63 | int au8522_get_state(struct au8522_state **state, struct i2c_adapter *i2c, | |
64 | u8 client_address); | |
65 | void au8522_release_state(struct au8522_state *state); |