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