2009-12-02 21:57:10 -03:00
/*
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 0213 9 , 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 ;
} ;
2009-12-02 22:07:24 -03:00
# 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 ,
} ;
2009-12-02 21:57:10 -03:00
struct cu1216_config philips_cu1216_config = {
2009-12-02 22:07:24 -03:00
. demod_address = 0x18 > > 1 ,
. pll_set = philips_cu1216_tuner_set ,
2009-12-02 21:57:10 -03:00
// .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 = {
2009-12-02 22:07:24 -03:00
. addr = 0xc0 > > 1 ,
. flags = 0 ,
. buf = buf ,
. len = sizeof ( buf )
2009-12-02 21:57:10 -03:00
} ;
# 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 ;
}