2019-05-19 15:51:31 +02:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
2011-04-07 16:27:43 -03:00
/*
* Sony CXD2820R demodulator driver
*
* Copyright ( C ) 2010 Antti Palosaari < crope @ iki . fi >
*/
# ifndef CXD2820R_PRIV_H
# define CXD2820R_PRIV_H
2011-05-02 18:19:13 -03:00
# include <linux/dvb/version.h>
2017-12-28 13:03:51 -05:00
# include <media/dvb_frontend.h>
# include <media/dvb_math.h>
2011-04-07 16:27:43 -03:00
# include "cxd2820r.h"
2012-07-19 21:10:36 -03:00
# include <linux/gpio.h>
2016-08-08 20:13:45 -03:00
# include <linux/math64.h>
2016-08-13 13:19:05 -03:00
# include <linux/regmap.h>
2011-04-07 16:27:43 -03:00
struct reg_val_mask {
u32 reg ;
u8 val ;
u8 mask ;
} ;
2016-08-08 15:54:10 -03:00
# define CXD2820R_CLK 41000000
2011-04-07 16:27:43 -03:00
struct cxd2820r_priv {
2016-08-09 20:49:09 -03:00
struct i2c_client * client [ 2 ] ;
2016-08-13 13:19:05 -03:00
struct regmap * regmap [ 2 ] ;
2011-04-07 16:27:43 -03:00
struct i2c_adapter * i2c ;
2011-11-24 11:59:53 -03:00
struct dvb_frontend fe ;
2016-08-09 20:49:09 -03:00
u8 ts_mode ;
bool ts_clk_inv ;
bool if_agc_polarity ;
bool spec_inv ;
2016-08-09 14:58:21 -03:00
u64 post_bit_error_prev_dvbv3 ;
2016-08-08 20:13:45 -03:00
u64 post_bit_error ;
2011-04-07 16:27:43 -03:00
2011-05-25 12:42:52 -03:00
bool ber_running ;
2011-04-07 16:27:43 -03:00
2012-07-19 21:10:36 -03:00
# define GPIO_COUNT 3
u8 gpio [ GPIO_COUNT ] ;
# ifdef CONFIG_GPIOLIB
struct gpio_chip gpio_chip ;
# endif
2011-05-03 20:21:59 -03:00
2015-06-07 14:53:52 -03:00
enum fe_delivery_system delivery_system ;
2011-05-25 12:42:52 -03:00
bool last_tune_failed ; /* for switch between T and T2 tune */
2011-04-07 16:27:43 -03:00
} ;
2011-05-02 18:19:13 -03:00
/* cxd2820r_core.c */
extern int cxd2820r_debug ;
2012-07-19 21:10:36 -03:00
int cxd2820r_gpio ( struct dvb_frontend * fe , u8 * gpio ) ;
2011-05-02 18:19:13 -03:00
2016-08-13 13:19:05 -03:00
int cxd2820r_wr_reg_val_mask_tab ( struct cxd2820r_priv * priv ,
const struct reg_val_mask * tab , int tab_len ) ;
2011-05-02 18:19:13 -03:00
int cxd2820r_wr_reg_mask ( struct cxd2820r_priv * priv , u32 reg , u8 val ,
u8 mask ) ;
2011-05-03 20:21:59 -03:00
2011-05-02 18:19:13 -03:00
int cxd2820r_wr_regs ( struct cxd2820r_priv * priv , u32 reginfo , u8 * val ,
int len ) ;
2011-05-03 20:21:59 -03:00
2011-05-02 18:19:13 -03:00
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 */
2016-02-04 12:58:30 -02:00
int cxd2820r_get_frontend_c ( struct dvb_frontend * fe ,
struct dtv_frontend_properties * p ) ;
2011-05-02 18:19:13 -03:00
2011-12-30 22:22:10 -03:00
int cxd2820r_set_frontend_c ( struct dvb_frontend * fe ) ;
2011-05-03 20:21:59 -03:00
2015-06-07 14:53:52 -03:00
int cxd2820r_read_status_c ( struct dvb_frontend * fe , enum fe_status * status ) ;
2011-05-02 18:19:13 -03:00
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 */
2016-02-04 12:58:30 -02:00
int cxd2820r_get_frontend_t ( struct dvb_frontend * fe ,
struct dtv_frontend_properties * p ) ;
2011-05-02 18:19:13 -03:00
2011-12-30 22:22:10 -03:00
int cxd2820r_set_frontend_t ( struct dvb_frontend * fe ) ;
2011-05-03 20:21:59 -03:00
2015-06-07 14:53:52 -03:00
int cxd2820r_read_status_t ( struct dvb_frontend * fe , enum fe_status * status ) ;
2011-05-02 18:19:13 -03:00
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 */
2016-02-04 12:58:30 -02:00
int cxd2820r_get_frontend_t2 ( struct dvb_frontend * fe ,
struct dtv_frontend_properties * p ) ;
2011-05-02 18:19:13 -03:00
2011-12-30 22:22:10 -03:00
int cxd2820r_set_frontend_t2 ( struct dvb_frontend * fe ) ;
2011-05-03 20:21:59 -03:00
2015-06-07 14:53:52 -03:00
int cxd2820r_read_status_t2 ( struct dvb_frontend * fe , enum fe_status * status ) ;
2011-05-02 18:19:13 -03:00
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-03 20:21:59 -03:00
2011-04-07 16:27:43 -03:00
# endif /* CXD2820R_PRIV_H */