1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* |
3 | * Linux-DVB Driver for DiBcom's DiB0070 base-band RF Tuner. |
4 | * |
5 | * Copyright (C) 2005-7 DiBcom (http://www.dibcom.fr/) |
6 | */ |
7 | #ifndef DIB0070_H |
8 | #define DIB0070_H |
9 | |
10 | struct dvb_frontend; |
11 | struct i2c_adapter; |
12 | |
13 | #define DEFAULT_DIB0070_I2C_ADDRESS 0x60 |
14 | |
15 | struct dib0070_wbd_gain_cfg { |
16 | u16 freq; |
17 | u16 wbd_gain_val; |
18 | }; |
19 | |
20 | struct dib0070_config { |
21 | u8 i2c_address; |
22 | |
23 | /* tuner pins controlled externally */ |
24 | int (*reset) (struct dvb_frontend *, int); |
25 | int (*sleep) (struct dvb_frontend *, int); |
26 | |
27 | /* offset in kHz */ |
28 | int freq_offset_khz_uhf; |
29 | int freq_offset_khz_vhf; |
30 | |
31 | u8 osc_buffer_state; /* 0= normal, 1= tri-state */ |
32 | u32 clock_khz; |
33 | u8 clock_pad_drive; /* (Drive + 1) * 2mA */ |
34 | |
35 | u8 invert_iq; /* invert Q - in case I or Q is inverted on the board */ |
36 | |
37 | u8 force_crystal_mode; /* if == 0 -> decision is made in the driver default: <24 -> 2, >=24 -> 1 */ |
38 | |
39 | u8 flip_chip; |
40 | u8 enable_third_order_filter; |
41 | u8 charge_pump; |
42 | |
43 | const struct dib0070_wbd_gain_cfg *wbd_gain; |
44 | |
45 | u8 vga_filter; |
46 | }; |
47 | |
48 | #if IS_REACHABLE(CONFIG_DVB_TUNER_DIB0070) |
49 | extern struct dvb_frontend *dib0070_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct dib0070_config *cfg); |
50 | extern u16 dib0070_wbd_offset(struct dvb_frontend *); |
51 | extern void dib0070_ctrl_agc_filter(struct dvb_frontend *, u8 open); |
52 | extern u8 dib0070_get_rf_output(struct dvb_frontend *fe); |
53 | extern int dib0070_set_rf_output(struct dvb_frontend *fe, u8 no); |
54 | #else |
55 | static inline struct dvb_frontend *dib0070_attach(struct dvb_frontend *fe, struct i2c_adapter *i2c, struct dib0070_config *cfg) |
56 | { |
57 | printk(KERN_WARNING "%s: driver disabled by Kconfig\n" , __func__); |
58 | return NULL; |
59 | } |
60 | |
61 | static inline u16 dib0070_wbd_offset(struct dvb_frontend *fe) |
62 | { |
63 | printk(KERN_WARNING "%s: driver disabled by Kconfig\n" , __func__); |
64 | return 0; |
65 | } |
66 | |
67 | static inline void dib0070_ctrl_agc_filter(struct dvb_frontend *fe, u8 open) |
68 | { |
69 | printk(KERN_WARNING "%s: driver disabled by Kconfig\n" , __func__); |
70 | } |
71 | #endif |
72 | |
73 | #endif |
74 | |