2009-08-17 14:01:10 +04:00
# ifndef DIB8000_H
# define DIB8000_H
# include "dibx000_common.h"
struct dib8000_config {
u8 output_mpeg2_in_188_bytes ;
u8 hostbus_diversity ;
u8 tuner_is_baseband ;
int ( * update_lna ) ( struct dvb_frontend * , u16 agc_global ) ;
u8 agc_config_count ;
struct dibx000_agc_config * agc ;
struct dibx000_bandwidth_config * pll ;
# define DIB8000_GPIO_DEFAULT_DIRECTIONS 0xffff
u16 gpio_dir ;
# define DIB8000_GPIO_DEFAULT_VALUES 0x0000
u16 gpio_val ;
# define DIB8000_GPIO_PWM_POS0(v) ((v & 0xf) << 12)
# define DIB8000_GPIO_PWM_POS1(v) ((v & 0xf) << 8 )
# define DIB8000_GPIO_PWM_POS2(v) ((v & 0xf) << 4 )
# define DIB8000_GPIO_PWM_POS3(v) (v & 0xf)
# define DIB8000_GPIO_DEFAULT_PWM_POS 0xffff
u16 gpio_pwm_pos ;
u16 pwm_freq_div ;
void ( * agc_control ) ( struct dvb_frontend * , u8 before ) ;
u16 drives ;
u16 diversity_delay ;
u8 div_cfg ;
u8 output_mode ;
u8 refclksel ;
2011-08-10 12:17:18 +04:00
u8 enMpegOutput : 1 ;
2013-04-22 19:45:52 +04:00
struct dibx000_bandwidth_config * plltable ;
2009-08-17 14:01:10 +04:00
} ;
# define DEFAULT_DIB8000_I2C_ADDRESS 18
2014-05-29 16:20:17 +04:00
struct dib8000_ops {
int ( * set_wbd_ref ) ( struct dvb_frontend * fe , u16 value ) ;
int ( * update_pll ) ( struct dvb_frontend * fe ,
struct dibx000_bandwidth_config * pll , u32 bw , u8 ratio ) ;
int ( * set_gpio ) ( struct dvb_frontend * fe , u8 num , u8 dir , u8 val ) ;
void ( * pwm_agc_reset ) ( struct dvb_frontend * fe ) ;
struct i2c_adapter * ( * get_i2c_tuner ) ( struct dvb_frontend * fe ) ;
int ( * tuner_sleep ) ( struct dvb_frontend * fe , int onoff ) ;
s32 ( * get_adc_power ) ( struct dvb_frontend * fe , u8 mode ) ;
int ( * get_dc_power ) ( struct dvb_frontend * fe , u8 IQ ) ;
u32 ( * ctrl_timf ) ( struct dvb_frontend * fe , uint8_t op , uint32_t timf ) ;
enum frontend_tune_state ( * get_tune_state ) ( struct dvb_frontend * fe ) ;
int ( * set_tune_state ) ( struct dvb_frontend * fe , enum frontend_tune_state tune_state ) ;
int ( * set_slave_frontend ) ( struct dvb_frontend * fe , struct dvb_frontend * fe_slave ) ;
int ( * remove_slave_frontend ) ( struct dvb_frontend * fe ) ;
struct dvb_frontend * ( * get_slave_frontend ) ( struct dvb_frontend * fe , int slave_index ) ;
int ( * i2c_enumeration ) ( struct i2c_adapter * host , int no_of_demods ,
2011-08-10 12:17:18 +04:00
u8 default_addr , u8 first_addr , u8 is_dib8096p ) ;
2014-05-29 16:20:17 +04:00
struct i2c_adapter * ( * get_i2c_master ) ( struct dvb_frontend * fe , enum dibx000_i2c_interface intf , int gating ) ;
int ( * pid_filter_ctrl ) ( struct dvb_frontend * fe , u8 onoff ) ;
int ( * pid_filter ) ( struct dvb_frontend * fe , u8 id , u16 pid , u8 onoff ) ;
struct dvb_frontend * ( * init ) ( struct i2c_adapter * i2c_adap , u8 i2c_addr , struct dib8000_config * cfg ) ;
} ;
2009-08-17 14:01:10 +04:00
2015-02-18 20:12:42 +03:00
# if IS_REACHABLE(CONFIG_DVB_DIB8000)
2014-05-29 16:20:17 +04:00
void * dib8000_attach ( struct dib8000_ops * ops ) ;
2009-08-17 14:01:10 +04:00
# else
[media] dib8000: fix compiler warning
In file included from include/uapi/linux/posix_types.h:4:0,
from include/uapi/linux/types.h:13,
from include/linux/types.h:5,
from include/uapi/linux/sysinfo.h:4,
from include/uapi/linux/kernel.h:4,
from include/linux/cache.h:4,
from include/linux/time.h:4,
from include/linux/input.h:11,
from drivers/media/usb/dvb-usb/dvb-usb.h:13,
from drivers/media/usb/dvb-usb/dib0700.h:13,
from drivers/media/usb/dvb-usb/dib0700_devices.c:9:
drivers/media/dvb-frontends/dib8000.h: In function 'dib8000_attach':
include/linux/stddef.h:8:14: warning: return makes integer from pointer without a cast [-Wint-conversion]
#define NULL ((void *)0)
^
drivers/media/dvb-frontends/dib8000.h:72:9: note: in expansion of macro 'NULL'
return NULL;
^
Reported-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
2015-04-28 15:28:45 +03:00
static inline void * dib8000_attach ( struct dib8000_ops * ops )
2011-01-04 19:08:14 +03:00
{
2011-01-03 21:33:37 +03:00
printk ( KERN_WARNING " %s: driver disabled by Kconfig \n " , __func__ ) ;
2011-01-04 19:08:14 +03:00
return NULL ;
2011-01-03 21:33:37 +03:00
}
2009-08-17 14:01:10 +04:00
# endif
# endif