2008-09-15 22:01:52 +04:00
/*
2010-06-18 04:19:13 +04:00
* Afatech AF9013 demodulator driver
2008-09-15 22:01:52 +04:00
*
* Copyright ( C ) 2007 Antti Palosaari < crope @ iki . fi >
2011-11-29 03:58:11 +04:00
* Copyright ( C ) 2011 Antti Palosaari < crope @ iki . fi >
2008-09-15 22:01:52 +04:00
*
* Thanks to Afatech who kindly provided information .
*
* 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 .
*
*/
2011-11-29 03:58:11 +04:00
# ifndef AF9013_H
# define AF9013_H
2008-09-15 22:01:52 +04:00
2013-03-21 23:11:54 +04:00
# include <linux/kconfig.h>
2008-09-15 22:01:52 +04:00
# include <linux/dvb/frontend.h>
/* AF9013/5 GPIOs (mostly guessed)
demod # 1 - gpio # 0 - set demod # 2 i2c - addr for dual devices
demod # 1 - gpio # 1 - xtal setting ( ? )
demod # 1 - gpio # 3 - tuner # 1
demod # 2 - gpio # 0 - tuner # 2
demod # 2 - gpio # 1 - xtal setting ( ? )
*/
2011-11-29 03:58:11 +04:00
struct af9013_config {
/*
* I2C address
*/
u8 i2c_addr ;
/*
* clock
* 20480000 , 25000000 , 28000000 , 28800000
*/
u32 clock ;
/*
* tuner
*/
# define AF9013_TUNER_MXL5003D 3 /* MaxLinear */
# define AF9013_TUNER_MXL5005D 13 /* MaxLinear */
# define AF9013_TUNER_MXL5005R 30 /* MaxLinear */
# define AF9013_TUNER_ENV77H11D5 129 /* Panasonic */
# define AF9013_TUNER_MT2060 130 /* Microtune */
# define AF9013_TUNER_MC44S803 133 /* Freescale */
# define AF9013_TUNER_QT1010 134 /* Quantek */
# define AF9013_TUNER_UNKNOWN 140 /* for can tuners ? */
# define AF9013_TUNER_MT2060_2 147 /* Microtune */
# define AF9013_TUNER_TDA18271 156 /* NXP */
# define AF9013_TUNER_QT1010A 162 /* Quantek */
# define AF9013_TUNER_MXL5007T 177 /* MaxLinear */
# define AF9013_TUNER_TDA18218 179 /* NXP */
u8 tuner ;
/*
* IF frequency
*/
u32 if_frequency ;
/*
* TS settings
*/
# define AF9013_TS_USB 0
# define AF9013_TS_PARALLEL 1
# define AF9013_TS_SERIAL 2
u8 ts_mode : 2 ;
/*
* input spectrum inversion
*/
bool spec_inv ;
/*
* firmware API version
*/
u8 api_version [ 4 ] ;
/*
* GPIOs
*/
2008-09-15 22:01:52 +04:00
# define AF9013_GPIO_ON (1 << 0)
# define AF9013_GPIO_EN (1 << 1)
# define AF9013_GPIO_O (1 << 2)
# define AF9013_GPIO_I (1 << 3)
# define AF9013_GPIO_LO (AF9013_GPIO_ON|AF9013_GPIO_EN)
# define AF9013_GPIO_HI (AF9013_GPIO_ON|AF9013_GPIO_EN|AF9013_GPIO_O)
# define AF9013_GPIO_TUNER_ON (AF9013_GPIO_ON|AF9013_GPIO_EN)
# define AF9013_GPIO_TUNER_OFF (AF9013_GPIO_ON|AF9013_GPIO_EN|AF9013_GPIO_O)
u8 gpio [ 4 ] ;
} ;
2013-03-21 23:11:54 +04:00
# if IS_ENABLED(CONFIG_DVB_AF9013)
2008-09-15 22:01:52 +04:00
extern struct dvb_frontend * af9013_attach ( const struct af9013_config * config ,
struct i2c_adapter * i2c ) ;
# else
static inline struct dvb_frontend * af9013_attach (
const struct af9013_config * config , struct i2c_adapter * i2c )
{
2012-09-13 03:23:43 +04:00
pr_warn ( " %s: driver disabled by Kconfig \n " , __func__ ) ;
2008-09-15 22:01:52 +04:00
return NULL ;
}
# endif /* CONFIG_DVB_AF9013 */
2011-11-29 03:58:11 +04:00
# endif /* AF9013_H */