brintos

brintos / linux-shallow public Read only

0
0
Text · 5.3 KiB · e5cb311 Raw
185 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Linux-DVB Driver for DiBcom's DiB0090 base-band RF Tuner.4 *5 * Copyright (C) 2005-7 DiBcom (http://www.dibcom.fr/)6 */7#ifndef DIB0090_H8#define DIB0090_H9 10struct dvb_frontend;11struct i2c_adapter;12 13#define DEFAULT_DIB0090_I2C_ADDRESS 0x6014 15struct dib0090_io_config {16	u32 clock_khz;17 18	u8 pll_bypass:1;19	u8 pll_range:1;20	u8 pll_prediv:6;21	u8 pll_loopdiv:6;22 23	u8 adc_clock_ratio;	/* valid is 8, 7 ,6 */24	u16 pll_int_loop_filt;25};26 27struct dib0090_wbd_slope {28	u16 max_freq;		/* for every frequency less than or equal to that field: this information is correct */29	u16 slope_cold;30	u16 offset_cold;31	u16 slope_hot;32	u16 offset_hot;33	u8 wbd_gain;34};35 36struct dib0090_low_if_offset_table {37	int std;38	u32 RF_freq;39	s32 offset_khz;40};41 42struct dib0090_config {43	struct dib0090_io_config io;44	int (*reset) (struct dvb_frontend *, int);45	int (*sleep) (struct dvb_frontend *, int);46 47	/*  offset in kHz */48	int freq_offset_khz_uhf;49	int freq_offset_khz_vhf;50 51	int (*get_adc_power) (struct dvb_frontend *);52 53	u8 clkouttobamse:1;	/* activate or deactivate clock output */54	u8 analog_output;55 56	u8 i2c_address;57	/* add drives and other things if necessary */58	u16 wbd_vhf_offset;59	u16 wbd_cband_offset;60	u8 use_pwm_agc;61	u8 clkoutdrive;62 63	u8 ls_cfg_pad_drv;64	u8 data_tx_drv;65 66	u8 in_soc;67	const struct dib0090_low_if_offset_table *low_if;68	u8 fref_clock_ratio;69	u16 force_cband_input;70	struct dib0090_wbd_slope *wbd;71	u8 is_dib7090e;72	u8 force_crystal_mode;73};74 75#if IS_REACHABLE(CONFIG_DVB_TUNER_DIB0090)76extern struct dvb_frontend *dib0090_register(struct dvb_frontend *fe, struct i2c_adapter *i2c, const struct dib0090_config *config);77extern struct dvb_frontend *dib0090_fw_register(struct dvb_frontend *fe, struct i2c_adapter *i2c, const struct dib0090_config *config);78extern void dib0090_dcc_freq(struct dvb_frontend *fe, u8 fast);79extern void dib0090_pwm_gain_reset(struct dvb_frontend *fe);80extern u16 dib0090_get_wbd_target(struct dvb_frontend *tuner);81extern u16 dib0090_get_wbd_offset(struct dvb_frontend *fe);82extern int dib0090_gain_control(struct dvb_frontend *fe);83extern enum frontend_tune_state dib0090_get_tune_state(struct dvb_frontend *fe);84extern int dib0090_set_tune_state(struct dvb_frontend *fe, enum frontend_tune_state tune_state);85extern void dib0090_get_current_gain(struct dvb_frontend *fe, u16 * rf, u16 * bb, u16 * rf_gain_limit, u16 * rflt);86extern void dib0090_set_dc_servo(struct dvb_frontend *fe, u8 DC_servo_cutoff);87extern int dib0090_set_switch(struct dvb_frontend *fe, u8 sw1, u8 sw2, u8 sw3);88extern int dib0090_set_vga(struct dvb_frontend *fe, u8 onoff);89extern int dib0090_update_rframp_7090(struct dvb_frontend *fe,90		u8 cfg_sensitivity);91extern int dib0090_update_tuning_table_7090(struct dvb_frontend *fe,92		u8 cfg_sensitivity);93#else94static inline struct dvb_frontend *dib0090_register(struct dvb_frontend *fe, struct i2c_adapter *i2c, const struct dib0090_config *config)95{96	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);97	return NULL;98}99 100static inline struct dvb_frontend *dib0090_fw_register(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct dib0090_config *config)101{102	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);103	return NULL;104}105 106static inline void dib0090_dcc_freq(struct dvb_frontend *fe, u8 fast)107{108	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);109}110 111static inline void dib0090_pwm_gain_reset(struct dvb_frontend *fe)112{113	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);114}115 116static inline u16 dib0090_get_wbd_target(struct dvb_frontend *tuner)117{118	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);119	return 0;120}121 122static inline u16 dib0090_get_wbd_offset(struct dvb_frontend *fe)123{124	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);125	return 0;126}127 128static inline int dib0090_gain_control(struct dvb_frontend *fe)129{130	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);131	return -ENODEV;132}133 134static inline enum frontend_tune_state dib0090_get_tune_state(struct dvb_frontend *fe)135{136	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);137	return CT_DONE;138}139 140static inline int dib0090_set_tune_state(struct dvb_frontend *fe, enum frontend_tune_state tune_state)141{142	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);143	return -ENODEV;144}145 146static inline void dib0090_get_current_gain(struct dvb_frontend *fe, u16 * rf, u16 * bb, u16 * rf_gain_limit, u16 * rflt)147{148	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);149}150 151static inline void dib0090_set_dc_servo(struct dvb_frontend *fe, u8 DC_servo_cutoff)152{153	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);154}155 156static inline int dib0090_set_switch(struct dvb_frontend *fe,157		u8 sw1, u8 sw2, u8 sw3)158{159	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);160	return -ENODEV;161}162 163static inline int dib0090_set_vga(struct dvb_frontend *fe, u8 onoff)164{165	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);166	return -ENODEV;167}168 169static inline int dib0090_update_rframp_7090(struct dvb_frontend *fe,170		u8 cfg_sensitivity)171{172	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);173	return -ENODEV;174}175 176static inline int dib0090_update_tuning_table_7090(struct dvb_frontend *fe,177		u8 cfg_sensitivity)178{179	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);180	return -ENODEV;181}182#endif183 184#endif185