2011-04-07 16:27:43 -03: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_H
# define CXD2820R_H
# include <linux/dvb/frontend.h>
# define CXD2820R_GPIO_D (0 << 0) /* disable */
# define CXD2820R_GPIO_E (1 << 0) /* enable */
# define CXD2820R_GPIO_O (0 << 1) /* output */
# define CXD2820R_GPIO_I (1 << 1) /* input */
# define CXD2820R_GPIO_L (0 << 2) /* output low */
# define CXD2820R_GPIO_H (1 << 2) /* output high */
# define CXD2820R_TS_SERIAL 0x08
# define CXD2820R_TS_SERIAL_MSB 0x28
# define CXD2820R_TS_PARALLEL 0x30
# define CXD2820R_TS_PARALLEL_MSB 0x70
2016-08-09 20:49:09 -03:00
/*
* I2C address : 0x6c , 0x6d
*/
/**
* struct cxd2820r_platform_data - Platform data for the cxd2820r driver
* @ ts_mode : TS mode .
* @ ts_clk_inv : TS clock inverted .
* @ if_agc_polarity : IF AGC polarity .
* @ spec_inv : Input spectrum inverted .
* @ gpio_chip_base : GPIO .
* @ get_dvb_frontend : Get DVB frontend .
*/
struct cxd2820r_platform_data {
u8 ts_mode ;
bool ts_clk_inv ;
bool if_agc_polarity ;
bool spec_inv ;
int * * gpio_chip_base ;
struct dvb_frontend * ( * get_dvb_frontend ) ( struct i2c_client * ) ;
/* private: For legacy media attach wrapper. Do not set value. */
bool attach_in_use ;
} ;
2017-11-29 14:02:22 -05:00
/**
* struct cxd2820r_config - configuration for cxd2020r demod
*
* @ i2c_address : Demodulator I2C address . Driver determines DVB - C slave I2C
* address automatically from master address .
* Default : none , must set . Values : 0x6c , 0x6d .
* @ ts_mode : TS output mode . Default : none , must set . Values : FIXME ?
* @ ts_clock_inv : TS clock inverted . Default : 0. Values : 0 , 1.
* @ if_agc_polarity : Default : 0. Values : 0 , 1
* @ spec_inv : Spectrum inversion . Default : 0. Values : 0 , 1.
*/
2011-04-07 16:27:43 -03:00
struct cxd2820r_config {
/* Demodulator I2C address.
* Driver determines DVB - C slave I2C address automatically from master
* address .
* Default : none , must set
* Values : 0x6c , 0x6d
*/
u8 i2c_address ;
/* TS output mode.
* Default : none , must set .
* Values :
*/
u8 ts_mode ;
2014-06-03 14:19:07 -03:00
/* TS clock inverted.
* Default : 0
* Values : 0 , 1
*/
bool ts_clock_inv ;
2011-04-07 16:27:43 -03:00
/* IF AGC polarity.
* Default : 0
* Values : 0 , 1
*/
2011-05-25 12:42:52 -03:00
bool if_agc_polarity ;
2011-04-07 16:27:43 -03:00
/* Spectrum inversion.
* Default : 0
* Values : 0 , 1
*/
2011-05-25 12:42:52 -03:00
bool spec_inv ;
2011-04-07 16:27:43 -03:00
} ;
2015-02-18 14:12:42 -03:00
# if IS_REACHABLE(CONFIG_DVB_CXD2820R)
2017-11-29 14:02:22 -05:00
/**
* Attach a cxd2820r demod
*
* @ config : pointer to & struct cxd2820r_config with demod configuration .
* @ i2c : i2c adapter to use .
* @ gpio_chip_base : if zero , disables GPIO setting . Otherwise , if
* CONFIG_GPIOLIB is set dynamically allocate
* gpio base ; if is not set , use its value to
* setup the GPIO pins .
*
* return : FE pointer on success , NULL on failure .
*/
2011-04-07 16:27:43 -03:00
extern struct dvb_frontend * cxd2820r_attach (
const struct cxd2820r_config * config ,
2012-07-19 21:10:36 -03:00
struct i2c_adapter * i2c ,
int * gpio_chip_base
2011-04-07 16:27:43 -03:00
) ;
# else
static inline struct dvb_frontend * cxd2820r_attach (
const struct cxd2820r_config * config ,
2012-07-19 21:10:36 -03:00
struct i2c_adapter * i2c ,
int * gpio_chip_base
2011-04-07 16:27:43 -03:00
)
{
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
return NULL ;
}
# endif
# endif /* CXD2820R_H */