xref: /openbmc/linux/drivers/media/dvb-frontends/tda8261_cfg.h (revision 9a0bf528b4d66b605f02634236da085595c22101)
1*9a0bf528SMauro Carvalho Chehab /*
2*9a0bf528SMauro Carvalho Chehab 	TDA8261 8PSK/QPSK tuner driver
3*9a0bf528SMauro Carvalho Chehab 	Copyright (C) Manu Abraham (abraham.manu@gmail.com)
4*9a0bf528SMauro Carvalho Chehab 
5*9a0bf528SMauro Carvalho Chehab 	This program is free software; you can redistribute it and/or modify
6*9a0bf528SMauro Carvalho Chehab 	it under the terms of the GNU General Public License as published by
7*9a0bf528SMauro Carvalho Chehab 	the Free Software Foundation; either version 2 of the License, or
8*9a0bf528SMauro Carvalho Chehab 	(at your option) any later version.
9*9a0bf528SMauro Carvalho Chehab 
10*9a0bf528SMauro Carvalho Chehab 	This program is distributed in the hope that it will be useful,
11*9a0bf528SMauro Carvalho Chehab 	but WITHOUT ANY WARRANTY; without even the implied warranty of
12*9a0bf528SMauro Carvalho Chehab 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13*9a0bf528SMauro Carvalho Chehab 	GNU General Public License for more details.
14*9a0bf528SMauro Carvalho Chehab 
15*9a0bf528SMauro Carvalho Chehab 	You should have received a copy of the GNU General Public License
16*9a0bf528SMauro Carvalho Chehab 	along with this program; if not, write to the Free Software
17*9a0bf528SMauro Carvalho Chehab 	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18*9a0bf528SMauro Carvalho Chehab */
19*9a0bf528SMauro Carvalho Chehab 
20*9a0bf528SMauro Carvalho Chehab static int tda8261_get_frequency(struct dvb_frontend *fe, u32 *frequency)
21*9a0bf528SMauro Carvalho Chehab {
22*9a0bf528SMauro Carvalho Chehab 	struct dvb_frontend_ops	*frontend_ops = NULL;
23*9a0bf528SMauro Carvalho Chehab 	struct dvb_tuner_ops	*tuner_ops = NULL;
24*9a0bf528SMauro Carvalho Chehab 	struct tuner_state	t_state;
25*9a0bf528SMauro Carvalho Chehab 	int err = 0;
26*9a0bf528SMauro Carvalho Chehab 
27*9a0bf528SMauro Carvalho Chehab 	if (&fe->ops)
28*9a0bf528SMauro Carvalho Chehab 		frontend_ops = &fe->ops;
29*9a0bf528SMauro Carvalho Chehab 	if (&frontend_ops->tuner_ops)
30*9a0bf528SMauro Carvalho Chehab 		tuner_ops = &frontend_ops->tuner_ops;
31*9a0bf528SMauro Carvalho Chehab 	if (tuner_ops->get_state) {
32*9a0bf528SMauro Carvalho Chehab 		if ((err = tuner_ops->get_state(fe, DVBFE_TUNER_FREQUENCY, &t_state)) < 0) {
33*9a0bf528SMauro Carvalho Chehab 			printk("%s: Invalid parameter\n", __func__);
34*9a0bf528SMauro Carvalho Chehab 			return err;
35*9a0bf528SMauro Carvalho Chehab 		}
36*9a0bf528SMauro Carvalho Chehab 		*frequency = t_state.frequency;
37*9a0bf528SMauro Carvalho Chehab 		printk("%s: Frequency=%d\n", __func__, t_state.frequency);
38*9a0bf528SMauro Carvalho Chehab 	}
39*9a0bf528SMauro Carvalho Chehab 	return 0;
40*9a0bf528SMauro Carvalho Chehab }
41*9a0bf528SMauro Carvalho Chehab 
42*9a0bf528SMauro Carvalho Chehab static int tda8261_set_frequency(struct dvb_frontend *fe, u32 frequency)
43*9a0bf528SMauro Carvalho Chehab {
44*9a0bf528SMauro Carvalho Chehab 	struct dvb_frontend_ops	*frontend_ops = NULL;
45*9a0bf528SMauro Carvalho Chehab 	struct dvb_tuner_ops	*tuner_ops = NULL;
46*9a0bf528SMauro Carvalho Chehab 	struct tuner_state	t_state;
47*9a0bf528SMauro Carvalho Chehab 	int err = 0;
48*9a0bf528SMauro Carvalho Chehab 
49*9a0bf528SMauro Carvalho Chehab 	t_state.frequency = frequency;
50*9a0bf528SMauro Carvalho Chehab 	if (&fe->ops)
51*9a0bf528SMauro Carvalho Chehab 		frontend_ops = &fe->ops;
52*9a0bf528SMauro Carvalho Chehab 	if (&frontend_ops->tuner_ops)
53*9a0bf528SMauro Carvalho Chehab 		tuner_ops = &frontend_ops->tuner_ops;
54*9a0bf528SMauro Carvalho Chehab 	if (tuner_ops->set_state) {
55*9a0bf528SMauro Carvalho Chehab 		if ((err = tuner_ops->set_state(fe, DVBFE_TUNER_FREQUENCY, &t_state)) < 0) {
56*9a0bf528SMauro Carvalho Chehab 			printk("%s: Invalid parameter\n", __func__);
57*9a0bf528SMauro Carvalho Chehab 			return err;
58*9a0bf528SMauro Carvalho Chehab 		}
59*9a0bf528SMauro Carvalho Chehab 	}
60*9a0bf528SMauro Carvalho Chehab 	printk("%s: Frequency=%d\n", __func__, t_state.frequency);
61*9a0bf528SMauro Carvalho Chehab 	return 0;
62*9a0bf528SMauro Carvalho Chehab }
63*9a0bf528SMauro Carvalho Chehab 
64*9a0bf528SMauro Carvalho Chehab static int tda8261_get_bandwidth(struct dvb_frontend *fe, u32 *bandwidth)
65*9a0bf528SMauro Carvalho Chehab {
66*9a0bf528SMauro Carvalho Chehab 	struct dvb_frontend_ops	*frontend_ops = &fe->ops;
67*9a0bf528SMauro Carvalho Chehab 	struct dvb_tuner_ops	*tuner_ops = &frontend_ops->tuner_ops;
68*9a0bf528SMauro Carvalho Chehab 	struct tuner_state	t_state;
69*9a0bf528SMauro Carvalho Chehab 	int err = 0;
70*9a0bf528SMauro Carvalho Chehab 
71*9a0bf528SMauro Carvalho Chehab 	if (&fe->ops)
72*9a0bf528SMauro Carvalho Chehab 		frontend_ops = &fe->ops;
73*9a0bf528SMauro Carvalho Chehab 	if (&frontend_ops->tuner_ops)
74*9a0bf528SMauro Carvalho Chehab 		tuner_ops = &frontend_ops->tuner_ops;
75*9a0bf528SMauro Carvalho Chehab 	if (tuner_ops->get_state) {
76*9a0bf528SMauro Carvalho Chehab 		if ((err = tuner_ops->get_state(fe, DVBFE_TUNER_BANDWIDTH, &t_state)) < 0) {
77*9a0bf528SMauro Carvalho Chehab 			printk("%s: Invalid parameter\n", __func__);
78*9a0bf528SMauro Carvalho Chehab 			return err;
79*9a0bf528SMauro Carvalho Chehab 		}
80*9a0bf528SMauro Carvalho Chehab 		*bandwidth = t_state.bandwidth;
81*9a0bf528SMauro Carvalho Chehab 	}
82*9a0bf528SMauro Carvalho Chehab 	printk("%s: Bandwidth=%d\n", __func__, t_state.bandwidth);
83*9a0bf528SMauro Carvalho Chehab 	return 0;
84*9a0bf528SMauro Carvalho Chehab }
85