xref: /openbmc/linux/drivers/media/dvb-frontends/tda8261_cfg.h (revision 8f73b481b959dc5fcc04b6ceca6739494ab148dc)
19a0bf528SMauro Carvalho Chehab /*
29a0bf528SMauro Carvalho Chehab 	TDA8261 8PSK/QPSK tuner driver
39a0bf528SMauro Carvalho Chehab 	Copyright (C) Manu Abraham (abraham.manu@gmail.com)
49a0bf528SMauro Carvalho Chehab 
59a0bf528SMauro Carvalho Chehab 	This program is free software; you can redistribute it and/or modify
69a0bf528SMauro Carvalho Chehab 	it under the terms of the GNU General Public License as published by
79a0bf528SMauro Carvalho Chehab 	the Free Software Foundation; either version 2 of the License, or
89a0bf528SMauro Carvalho Chehab 	(at your option) any later version.
99a0bf528SMauro Carvalho Chehab 
109a0bf528SMauro Carvalho Chehab 	This program is distributed in the hope that it will be useful,
119a0bf528SMauro Carvalho Chehab 	but WITHOUT ANY WARRANTY; without even the implied warranty of
129a0bf528SMauro Carvalho Chehab 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
139a0bf528SMauro Carvalho Chehab 	GNU General Public License for more details.
149a0bf528SMauro Carvalho Chehab 
159a0bf528SMauro Carvalho Chehab 	You should have received a copy of the GNU General Public License
169a0bf528SMauro Carvalho Chehab 	along with this program; if not, write to the Free Software
179a0bf528SMauro Carvalho Chehab 	Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
189a0bf528SMauro Carvalho Chehab */
199a0bf528SMauro Carvalho Chehab 
209a0bf528SMauro Carvalho Chehab static int tda8261_get_frequency(struct dvb_frontend *fe, u32 *frequency)
219a0bf528SMauro Carvalho Chehab {
2220721185SEmil Goode 	struct dvb_frontend_ops	*frontend_ops = &fe->ops;
2320721185SEmil Goode 	struct dvb_tuner_ops	*tuner_ops = &frontend_ops->tuner_ops;
249a0bf528SMauro Carvalho Chehab 	struct tuner_state	t_state;
259a0bf528SMauro Carvalho Chehab 	int err = 0;
269a0bf528SMauro Carvalho Chehab 
279a0bf528SMauro Carvalho Chehab 	if (tuner_ops->get_state) {
28*8f73b481SEmil Goode 		err = tuner_ops->get_state(fe, DVBFE_TUNER_FREQUENCY, &t_state);
29*8f73b481SEmil Goode 		if (err < 0) {
309a0bf528SMauro Carvalho Chehab 			printk("%s: Invalid parameter\n", __func__);
319a0bf528SMauro Carvalho Chehab 			return err;
329a0bf528SMauro Carvalho Chehab 		}
339a0bf528SMauro Carvalho Chehab 		*frequency = t_state.frequency;
349a0bf528SMauro Carvalho Chehab 		printk("%s: Frequency=%d\n", __func__, t_state.frequency);
359a0bf528SMauro Carvalho Chehab 	}
369a0bf528SMauro Carvalho Chehab 	return 0;
379a0bf528SMauro Carvalho Chehab }
389a0bf528SMauro Carvalho Chehab 
399a0bf528SMauro Carvalho Chehab static int tda8261_set_frequency(struct dvb_frontend *fe, u32 frequency)
409a0bf528SMauro Carvalho Chehab {
4120721185SEmil Goode 	struct dvb_frontend_ops	*frontend_ops = &fe->ops;
4220721185SEmil Goode 	struct dvb_tuner_ops	*tuner_ops = &frontend_ops->tuner_ops;
439a0bf528SMauro Carvalho Chehab 	struct tuner_state	t_state;
449a0bf528SMauro Carvalho Chehab 	int err = 0;
459a0bf528SMauro Carvalho Chehab 
469a0bf528SMauro Carvalho Chehab 	t_state.frequency = frequency;
4720721185SEmil Goode 
489a0bf528SMauro Carvalho Chehab 	if (tuner_ops->set_state) {
49*8f73b481SEmil Goode 		err = tuner_ops->set_state(fe, DVBFE_TUNER_FREQUENCY, &t_state);
50*8f73b481SEmil Goode 		if (err < 0) {
519a0bf528SMauro Carvalho Chehab 			printk("%s: Invalid parameter\n", __func__);
529a0bf528SMauro Carvalho Chehab 			return err;
539a0bf528SMauro Carvalho Chehab 		}
549a0bf528SMauro Carvalho Chehab 	}
559a0bf528SMauro Carvalho Chehab 	printk("%s: Frequency=%d\n", __func__, t_state.frequency);
569a0bf528SMauro Carvalho Chehab 	return 0;
579a0bf528SMauro Carvalho Chehab }
589a0bf528SMauro Carvalho Chehab 
599a0bf528SMauro Carvalho Chehab static int tda8261_get_bandwidth(struct dvb_frontend *fe, u32 *bandwidth)
609a0bf528SMauro Carvalho Chehab {
619a0bf528SMauro Carvalho Chehab 	struct dvb_frontend_ops	*frontend_ops = &fe->ops;
629a0bf528SMauro Carvalho Chehab 	struct dvb_tuner_ops	*tuner_ops = &frontend_ops->tuner_ops;
639a0bf528SMauro Carvalho Chehab 	struct tuner_state	t_state;
649a0bf528SMauro Carvalho Chehab 	int err = 0;
659a0bf528SMauro Carvalho Chehab 
669a0bf528SMauro Carvalho Chehab 	if (tuner_ops->get_state) {
67*8f73b481SEmil Goode 		err = tuner_ops->get_state(fe, DVBFE_TUNER_BANDWIDTH, &t_state);
68*8f73b481SEmil Goode 		if (err < 0) {
699a0bf528SMauro Carvalho Chehab 			printk("%s: Invalid parameter\n", __func__);
709a0bf528SMauro Carvalho Chehab 			return err;
719a0bf528SMauro Carvalho Chehab 		}
729a0bf528SMauro Carvalho Chehab 		*bandwidth = t_state.bandwidth;
739a0bf528SMauro Carvalho Chehab 		printk("%s: Bandwidth=%d\n", __func__, t_state.bandwidth);
74cb31c748SPaul Bolle 	}
759a0bf528SMauro Carvalho Chehab 	return 0;
769a0bf528SMauro Carvalho Chehab }
77