123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /*
- Mantis VP-2033 driver
- Copyright (C) 2005, 2006 Manu Abraham (abraham.manu@gmail.com)
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
- #include "mantis_common.h"
- #include "mantis_vp2033.h"
- struct tda10021_state {
- struct i2c_adapter *i2c;
- struct dvb_frontend_ops ops;
- /* configuration settings */
- const struct tda10021_config *config;
- struct dvb_frontend frontend;
- u8 pwm;
- u8 reg0;
- };
- #define MANTIS_MODEL_NAME "VP-2033"
- #define MANTIS_DEV_TYPE "DVB-C"
- struct mantis_hwconfig vp2033_mantis_config = {
- .model_name = MANTIS_MODEL_NAME,
- .dev_type = MANTIS_DEV_TYPE,
- };
- struct cu1216_config philips_cu1216_config = {
- .demod_address = 0x18 >> 1,
- .pll_set = philips_cu1216_tuner_set,
- // .fe_reset = mantis_fe_reset,
- };
- int philips_cu1216_tuner_set(struct dvb_frontend *fe,
- struct dvb_frontend_parameters *params)
- {
- // struct tda10021_state *state = fe->demodulator_priv;
- struct mantis_pci *mantis = fe->dvb->priv;
- u8 buf[4];
- struct i2c_msg msg = {
- .addr = 0xc0 >> 1,
- .flags = 0,
- .buf = buf,
- .len = sizeof (buf)
- };
- #define TUNER_MUL 62500
- u32 div = (params->frequency + 36125000 + TUNER_MUL / 2) / TUNER_MUL;
- buf[0] = (div >> 8) & 0x7f;
- buf[1] = div & 0xff;
- buf[2] = 0x86;
- buf[3] = (params->frequency < 150000000 ? 0xA1 :
- params->frequency < 445000000 ? 0x92 : 0x34);
- // if (i2c_transfer(state->i2c, &msg, 1) < 0) {
- if (i2c_transfer(&mantis->adapter, &msg, 1) < 0) {
- printk("%s tuner not ack!\n", __FUNCTION__);
- return -EIO;
- }
- msleep(100);
- return 0;
- }
|