1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* |
3 | * Driver for DiBcom DiB3000MC/P-demodulator. |
4 | * |
5 | * Copyright (C) 2004-6 DiBcom (http://www.dibcom.fr/) |
6 | * Copyright (C) 2004-5 Patrick Boettcher (patrick.boettcher@posteo.de) |
7 | * |
8 | * This code is partially based on the previous dib3000mc.c . |
9 | */ |
10 | #ifndef DIB3000MC_H |
11 | #define DIB3000MC_H |
12 | |
13 | #include "dibx000_common.h" |
14 | |
15 | struct dib3000mc_config { |
16 | struct dibx000_agc_config *agc; |
17 | |
18 | u8 phase_noise_mode; |
19 | u8 impulse_noise_mode; |
20 | |
21 | u8 pwm3_inversion; |
22 | u8 use_pwm3; |
23 | u16 pwm3_value; |
24 | |
25 | u16 max_time; |
26 | u16 ln_adc_level; |
27 | |
28 | u8 agc_command1 :1; |
29 | u8 agc_command2 :1; |
30 | |
31 | u8 mobile_mode; |
32 | |
33 | u8 output_mpeg2_in_188_bytes; |
34 | }; |
35 | |
36 | #define DEFAULT_DIB3000MC_I2C_ADDRESS 16 |
37 | #define DEFAULT_DIB3000P_I2C_ADDRESS 24 |
38 | |
39 | #if IS_REACHABLE(CONFIG_DVB_DIB3000MC) |
40 | extern struct dvb_frontend *dib3000mc_attach(struct i2c_adapter *i2c_adap, |
41 | u8 i2c_addr, |
42 | struct dib3000mc_config *cfg); |
43 | extern int dib3000mc_i2c_enumeration(struct i2c_adapter *i2c, |
44 | int no_of_demods, u8 default_addr, |
45 | struct dib3000mc_config cfg[]); |
46 | extern |
47 | struct i2c_adapter *dib3000mc_get_tuner_i2c_master(struct dvb_frontend *demod, |
48 | int gating); |
49 | #else |
50 | static inline |
51 | struct dvb_frontend *dib3000mc_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, |
52 | struct dib3000mc_config *cfg) |
53 | { |
54 | printk(KERN_WARNING "%s: driver disabled by Kconfig\n" , __func__); |
55 | return NULL; |
56 | } |
57 | |
58 | static inline |
59 | int dib3000mc_i2c_enumeration(struct i2c_adapter *i2c, |
60 | int no_of_demods, u8 default_addr, |
61 | struct dib3000mc_config cfg[]) |
62 | { |
63 | printk(KERN_WARNING "%s: driver disabled by Kconfig\n" , __func__); |
64 | return -ENODEV; |
65 | } |
66 | |
67 | static inline |
68 | struct i2c_adapter *dib3000mc_get_tuner_i2c_master(struct dvb_frontend *demod, |
69 | int gating) |
70 | { |
71 | printk(KERN_WARNING "%s: driver disabled by Kconfig\n" , __func__); |
72 | return NULL; |
73 | } |
74 | #endif // CONFIG_DVB_DIB3000MC |
75 | |
76 | extern int dib3000mc_pid_control(struct dvb_frontend *fe, int index, int pid,int onoff); |
77 | extern int dib3000mc_pid_parse(struct dvb_frontend *fe, int onoff); |
78 | |
79 | extern void dib3000mc_set_config(struct dvb_frontend *, struct dib3000mc_config *); |
80 | |
81 | #endif |
82 | |