linux/drivers/media/dvb-frontends/stb6100_cfg.h
<<
>>
Prefs
   1/*
   2        STB6100 Silicon Tuner
   3        Copyright (C) Manu Abraham (abraham.manu@gmail.com)
   4
   5        Copyright (C) ST Microelectronics
   6
   7        This program is free software; you can redistribute it and/or modify
   8        it under the terms of the GNU General Public License as published by
   9        the Free Software Foundation; either version 2 of the License, or
  10        (at your option) any later version.
  11
  12        This program is distributed in the hope that it will be useful,
  13        but WITHOUT ANY WARRANTY; without even the implied warranty of
  14        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15        GNU General Public License for more details.
  16
  17        You should have received a copy of the GNU General Public License
  18        along with this program; if not, write to the Free Software
  19        Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  20*/
  21
  22#include <linux/dvb/frontend.h>
  23#include <media/dvb_frontend.h>
  24
  25static int stb6100_get_frequency(struct dvb_frontend *fe, u32 *frequency)
  26{
  27        struct dvb_frontend_ops *frontend_ops = &fe->ops;
  28        struct dvb_tuner_ops    *tuner_ops = &frontend_ops->tuner_ops;
  29        int err = 0;
  30
  31        if (tuner_ops->get_frequency) {
  32                err = tuner_ops->get_frequency(fe, frequency);
  33                if (err < 0) {
  34                        printk("%s: Invalid parameter\n", __func__);
  35                        return err;
  36                }
  37        }
  38        return 0;
  39}
  40
  41static int stb6100_set_frequency(struct dvb_frontend *fe, u32 frequency)
  42{
  43        struct dvb_frontend_ops *frontend_ops = &fe->ops;
  44        struct dvb_tuner_ops    *tuner_ops = &frontend_ops->tuner_ops;
  45        struct dtv_frontend_properties *c = &fe->dtv_property_cache;
  46        u32 bw = c->bandwidth_hz;
  47        int err = 0;
  48
  49        c->frequency = frequency;
  50        c->bandwidth_hz = 0;            /* Don't adjust the bandwidth */
  51
  52        if (tuner_ops->set_params) {
  53                err = tuner_ops->set_params(fe);
  54                c->bandwidth_hz = bw;
  55                if (err < 0) {
  56                        printk("%s: Invalid parameter\n", __func__);
  57                        return err;
  58                }
  59        }
  60        return 0;
  61}
  62
  63static int stb6100_get_bandwidth(struct dvb_frontend *fe, u32 *bandwidth)
  64{
  65        struct dvb_frontend_ops *frontend_ops = &fe->ops;
  66        struct dvb_tuner_ops    *tuner_ops = &frontend_ops->tuner_ops;
  67        int err = 0;
  68
  69        if (tuner_ops->get_bandwidth) {
  70                err = tuner_ops->get_bandwidth(fe, bandwidth);
  71                if (err < 0) {
  72                        printk("%s: Invalid parameter\n", __func__);
  73                        return err;
  74                }
  75        }
  76        return 0;
  77}
  78
  79static int stb6100_set_bandwidth(struct dvb_frontend *fe, u32 bandwidth)
  80{
  81        struct dvb_frontend_ops *frontend_ops = &fe->ops;
  82        struct dvb_tuner_ops    *tuner_ops = &frontend_ops->tuner_ops;
  83        struct dtv_frontend_properties *c = &fe->dtv_property_cache;
  84        u32 freq = c->frequency;
  85        int err = 0;
  86
  87        c->bandwidth_hz = bandwidth;
  88        c->frequency = 0;               /* Don't adjust the frequency */
  89
  90        if (tuner_ops->set_params) {
  91                err = tuner_ops->set_params(fe);
  92                c->frequency = freq;
  93                if (err < 0) {
  94                        printk("%s: Invalid parameter\n", __func__);
  95                        return err;
  96                }
  97        }
  98        return 0;
  99}
 100