Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
media
dvb-frontends
stb6100_proc.h
Go to the documentation of this file.
1
/*
2
STB6100 Silicon Tuner wrapper
3
Copyright (C)2009 Igor M. Liplianin (
[email protected]
)
4
5
This program is free software; you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published by
7
the Free Software Foundation; either version 2 of the License, or
8
(at your option) any later version.
9
10
This program is distributed in the hope that it will be useful,
11
but WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
GNU General Public License for more details.
14
15
You should have received a copy of the GNU General Public License
16
along with this program; if not, write to the Free Software
17
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18
*/
19
20
static
int
stb6100_get_freq(
struct
dvb_frontend
*fe,
u32
*
frequency
)
21
{
22
struct
dvb_frontend_ops
*frontend_ops =
NULL
;
23
struct
dvb_tuner_ops
*tuner_ops =
NULL
;
24
struct
tuner_state
state
;
25
int
err
= 0;
26
27
if
(&fe->
ops
)
28
frontend_ops = &fe->
ops
;
29
if
(&frontend_ops->
tuner_ops
)
30
tuner_ops = &frontend_ops->
tuner_ops
;
31
if
(tuner_ops->
get_state
) {
32
if
(frontend_ops->
i2c_gate_ctrl
)
33
frontend_ops->
i2c_gate_ctrl
(fe, 1);
34
35
err = tuner_ops->
get_state
(fe,
DVBFE_TUNER_FREQUENCY
, &
state
);
36
if
(err < 0) {
37
printk
(
KERN_ERR
"%s: Invalid parameter\n"
, __func__);
38
return
err
;
39
}
40
41
if
(frontend_ops->
i2c_gate_ctrl
)
42
frontend_ops->
i2c_gate_ctrl
(fe, 0);
43
44
*frequency =
state
.frequency;
45
}
46
47
return
0;
48
}
49
50
static
int
stb6100_set_freq(
struct
dvb_frontend
*fe,
u32
frequency)
51
{
52
struct
dvb_frontend_ops
*frontend_ops =
NULL
;
53
struct
dvb_tuner_ops
*tuner_ops =
NULL
;
54
struct
tuner_state
state
;
55
int
err = 0;
56
57
state
.frequency =
frequency
;
58
if
(&fe->
ops
)
59
frontend_ops = &fe->
ops
;
60
if
(&frontend_ops->
tuner_ops
)
61
tuner_ops = &frontend_ops->
tuner_ops
;
62
if
(tuner_ops->
set_state
) {
63
if
(frontend_ops->
i2c_gate_ctrl
)
64
frontend_ops->
i2c_gate_ctrl
(fe, 1);
65
66
err = tuner_ops->
set_state
(fe,
DVBFE_TUNER_FREQUENCY
, &
state
);
67
if
(err < 0) {
68
printk
(
KERN_ERR
"%s: Invalid parameter\n"
, __func__);
69
return
err
;
70
}
71
72
if
(frontend_ops->
i2c_gate_ctrl
)
73
frontend_ops->
i2c_gate_ctrl
(fe, 0);
74
75
}
76
77
return
0;
78
}
79
80
static
int
stb6100_get_bandw(
struct
dvb_frontend
*fe,
u32
*
bandwidth
)
81
{
82
struct
dvb_frontend_ops
*frontend_ops =
NULL
;
83
struct
dvb_tuner_ops
*tuner_ops =
NULL
;
84
struct
tuner_state
state
;
85
int
err = 0;
86
87
if
(&fe->
ops
)
88
frontend_ops = &fe->
ops
;
89
if
(&frontend_ops->
tuner_ops
)
90
tuner_ops = &frontend_ops->
tuner_ops
;
91
if
(tuner_ops->
get_state
) {
92
if
(frontend_ops->
i2c_gate_ctrl
)
93
frontend_ops->
i2c_gate_ctrl
(fe, 1);
94
95
err = tuner_ops->
get_state
(fe,
DVBFE_TUNER_BANDWIDTH
, &
state
);
96
if
(err < 0) {
97
printk
(
KERN_ERR
"%s: Invalid parameter\n"
, __func__);
98
return
err
;
99
}
100
101
if
(frontend_ops->
i2c_gate_ctrl
)
102
frontend_ops->
i2c_gate_ctrl
(fe, 0);
103
104
*bandwidth =
state
.bandwidth;
105
}
106
107
return
0;
108
}
109
110
static
int
stb6100_set_bandw(
struct
dvb_frontend
*fe,
u32
bandwidth)
111
{
112
struct
dvb_frontend_ops
*frontend_ops =
NULL
;
113
struct
dvb_tuner_ops
*tuner_ops =
NULL
;
114
struct
tuner_state
state
;
115
int
err = 0;
116
117
state
.bandwidth =
bandwidth
;
118
if
(&fe->
ops
)
119
frontend_ops = &fe->
ops
;
120
if
(&frontend_ops->
tuner_ops
)
121
tuner_ops = &frontend_ops->
tuner_ops
;
122
if
(tuner_ops->
set_state
) {
123
if
(frontend_ops->
i2c_gate_ctrl
)
124
frontend_ops->
i2c_gate_ctrl
(fe, 1);
125
126
err = tuner_ops->
set_state
(fe,
DVBFE_TUNER_BANDWIDTH
, &
state
);
127
if
(err < 0) {
128
printk
(
KERN_ERR
"%s: Invalid parameter\n"
, __func__);
129
return
err
;
130
}
131
132
if
(frontend_ops->
i2c_gate_ctrl
)
133
frontend_ops->
i2c_gate_ctrl
(fe, 0);
134
135
}
136
137
return
0;
138
}
Generated on Thu Jan 10 2013 13:45:55 for Linux Kernel by
1.8.2