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 int err = 0; 259a0bf528SMauro Carvalho Chehab 26*e417668dSMauro Carvalho Chehab if (tuner_ops->get_frequency) { 27*e417668dSMauro Carvalho Chehab err = tuner_ops->get_frequency(fe, frequency); 288f73b481SEmil Goode if (err < 0) { 29*e417668dSMauro Carvalho Chehab pr_err("%s: Invalid parameter\n", __func__); 309a0bf528SMauro Carvalho Chehab return err; 319a0bf528SMauro Carvalho Chehab } 32*e417668dSMauro Carvalho Chehab pr_debug("%s: Frequency=%d\n", __func__, *frequency); 339a0bf528SMauro Carvalho Chehab } 349a0bf528SMauro Carvalho Chehab return 0; 359a0bf528SMauro Carvalho Chehab } 369a0bf528SMauro Carvalho Chehab 379a0bf528SMauro Carvalho Chehab static int tda8261_set_frequency(struct dvb_frontend *fe, u32 frequency) 389a0bf528SMauro Carvalho Chehab { 3920721185SEmil Goode struct dvb_frontend_ops *frontend_ops = &fe->ops; 4020721185SEmil Goode struct dvb_tuner_ops *tuner_ops = &frontend_ops->tuner_ops; 41*e417668dSMauro Carvalho Chehab struct dtv_frontend_properties *c = &fe->dtv_property_cache; 429a0bf528SMauro Carvalho Chehab int err = 0; 439a0bf528SMauro Carvalho Chehab 44*e417668dSMauro Carvalho Chehab if (tuner_ops->set_params) { 45*e417668dSMauro Carvalho Chehab err = tuner_ops->set_params(fe); 468f73b481SEmil Goode if (err < 0) { 47*e417668dSMauro Carvalho Chehab pr_err("%s: Invalid parameter\n", __func__); 489a0bf528SMauro Carvalho Chehab return err; 499a0bf528SMauro Carvalho Chehab } 509a0bf528SMauro Carvalho Chehab } 51*e417668dSMauro Carvalho Chehab pr_debug("%s: Frequency=%d\n", __func__, c->frequency); 529a0bf528SMauro Carvalho Chehab return 0; 539a0bf528SMauro Carvalho Chehab } 549a0bf528SMauro Carvalho Chehab 559a0bf528SMauro Carvalho Chehab static int tda8261_get_bandwidth(struct dvb_frontend *fe, u32 *bandwidth) 569a0bf528SMauro Carvalho Chehab { 57*e417668dSMauro Carvalho Chehab /* FIXME! need to calculate Bandwidth */ 58*e417668dSMauro Carvalho Chehab *bandwidth = 40000000; 599a0bf528SMauro Carvalho Chehab 609a0bf528SMauro Carvalho Chehab return 0; 619a0bf528SMauro Carvalho Chehab } 62