2011-04-07 23:27:43 +04:00
/*
* Sony CXD2820R demodulator driver
*
* Copyright ( C ) 2010 Antti Palosaari < crope @ iki . fi >
*
* 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 . ,
* 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA .
*/
# ifndef CXD2820R_PRIV_H
# define CXD2820R_PRIV_H
2011-05-03 01:19:13 +04:00
# include <linux/dvb/version.h>
2011-04-07 23:27:43 +04:00
# include "dvb_frontend.h"
# include "dvb_math.h"
# include "cxd2820r.h"
2012-07-20 04:10:36 +04:00
# include <linux/gpio.h>
2011-04-07 23:27:43 +04:00
struct reg_val_mask {
u32 reg ;
u8 val ;
u8 mask ;
} ;
struct cxd2820r_priv {
struct i2c_adapter * i2c ;
2011-11-24 18:59:53 +04:00
struct dvb_frontend fe ;
2011-04-07 23:27:43 +04:00
struct cxd2820r_config cfg ;
2011-05-25 19:42:52 +04:00
bool ber_running ;
2011-04-07 23:27:43 +04:00
u8 bank [ 2 ] ;
2012-07-20 04:10:36 +04:00
# define GPIO_COUNT 3
u8 gpio [ GPIO_COUNT ] ;
# ifdef CONFIG_GPIOLIB
struct gpio_chip gpio_chip ;
# endif
2011-05-04 03:21:59 +04:00
2011-04-07 23:27:43 +04:00
fe_delivery_system_t delivery_system ;
2011-05-25 19:42:52 +04:00
bool last_tune_failed ; /* for switch between T and T2 tune */
2011-04-07 23:27:43 +04:00
} ;
2011-05-03 01:19:13 +04:00
/* cxd2820r_core.c */
extern int cxd2820r_debug ;
2012-07-20 04:10:36 +04:00
int cxd2820r_gpio ( struct dvb_frontend * fe , u8 * gpio ) ;
2011-05-03 01:19:13 +04:00
int cxd2820r_wr_reg_mask ( struct cxd2820r_priv * priv , u32 reg , u8 val ,
u8 mask ) ;
2011-05-04 03:21:59 +04:00
2011-05-03 01:19:13 +04:00
int cxd2820r_wr_regs ( struct cxd2820r_priv * priv , u32 reginfo , u8 * val ,
int len ) ;
2011-05-04 03:21:59 +04:00
2011-05-03 01:19:13 +04:00
u32 cxd2820r_div_u64_round_closest ( u64 dividend , u32 divisor ) ;
int cxd2820r_wr_regs ( struct cxd2820r_priv * priv , u32 reginfo , u8 * val ,
int len ) ;
int cxd2820r_rd_regs ( struct cxd2820r_priv * priv , u32 reginfo , u8 * val ,
int len ) ;
int cxd2820r_wr_reg ( struct cxd2820r_priv * priv , u32 reg , u8 val ) ;
int cxd2820r_rd_reg ( struct cxd2820r_priv * priv , u32 reg , u8 * val ) ;
/* cxd2820r_c.c */
2011-12-31 05:22:10 +04:00
int cxd2820r_get_frontend_c ( struct dvb_frontend * fe ) ;
2011-05-03 01:19:13 +04:00
2011-12-31 05:22:10 +04:00
int cxd2820r_set_frontend_c ( struct dvb_frontend * fe ) ;
2011-05-04 03:21:59 +04:00
2011-05-03 01:19:13 +04:00
int cxd2820r_read_status_c ( struct dvb_frontend * fe , fe_status_t * status ) ;
int cxd2820r_read_ber_c ( struct dvb_frontend * fe , u32 * ber ) ;
int cxd2820r_read_signal_strength_c ( struct dvb_frontend * fe , u16 * strength ) ;
int cxd2820r_read_snr_c ( struct dvb_frontend * fe , u16 * snr ) ;
int cxd2820r_read_ucblocks_c ( struct dvb_frontend * fe , u32 * ucblocks ) ;
int cxd2820r_init_c ( struct dvb_frontend * fe ) ;
int cxd2820r_sleep_c ( struct dvb_frontend * fe ) ;
int cxd2820r_get_tune_settings_c ( struct dvb_frontend * fe ,
struct dvb_frontend_tune_settings * s ) ;
/* cxd2820r_t.c */
2011-12-31 05:22:10 +04:00
int cxd2820r_get_frontend_t ( struct dvb_frontend * fe ) ;
2011-05-03 01:19:13 +04:00
2011-12-31 05:22:10 +04:00
int cxd2820r_set_frontend_t ( struct dvb_frontend * fe ) ;
2011-05-04 03:21:59 +04:00
2011-05-03 01:19:13 +04:00
int cxd2820r_read_status_t ( struct dvb_frontend * fe , fe_status_t * status ) ;
int cxd2820r_read_ber_t ( struct dvb_frontend * fe , u32 * ber ) ;
int cxd2820r_read_signal_strength_t ( struct dvb_frontend * fe , u16 * strength ) ;
int cxd2820r_read_snr_t ( struct dvb_frontend * fe , u16 * snr ) ;
int cxd2820r_read_ucblocks_t ( struct dvb_frontend * fe , u32 * ucblocks ) ;
int cxd2820r_init_t ( struct dvb_frontend * fe ) ;
int cxd2820r_sleep_t ( struct dvb_frontend * fe ) ;
int cxd2820r_get_tune_settings_t ( struct dvb_frontend * fe ,
struct dvb_frontend_tune_settings * s ) ;
/* cxd2820r_t2.c */
2011-12-31 05:22:10 +04:00
int cxd2820r_get_frontend_t2 ( struct dvb_frontend * fe ) ;
2011-05-03 01:19:13 +04:00
2011-12-31 05:22:10 +04:00
int cxd2820r_set_frontend_t2 ( struct dvb_frontend * fe ) ;
2011-05-04 03:21:59 +04:00
2011-05-03 01:19:13 +04:00
int cxd2820r_read_status_t2 ( struct dvb_frontend * fe , fe_status_t * status ) ;
int cxd2820r_read_ber_t2 ( struct dvb_frontend * fe , u32 * ber ) ;
int cxd2820r_read_signal_strength_t2 ( struct dvb_frontend * fe , u16 * strength ) ;
int cxd2820r_read_snr_t2 ( struct dvb_frontend * fe , u16 * snr ) ;
int cxd2820r_read_ucblocks_t2 ( struct dvb_frontend * fe , u32 * ucblocks ) ;
int cxd2820r_init_t2 ( struct dvb_frontend * fe ) ;
int cxd2820r_sleep_t2 ( struct dvb_frontend * fe ) ;
int cxd2820r_get_tune_settings_t2 ( struct dvb_frontend * fe ,
struct dvb_frontend_tune_settings * s ) ;
2011-05-04 03:21:59 +04:00
2011-04-07 23:27:43 +04:00
# endif /* CXD2820R_PRIV_H */