1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* 3 TDA10021/TDA10023 - Single Chip Cable Channel Receiver driver module 4 used on the Siemens DVB-C cards 5 6 Copyright (C) 1999 Convergence Integrated Media GmbH <ralph@convergence.de> 7 Copyright (C) 2004 Markus Schulz <msc@antzsystem.de> 8 Support for TDA10021 9 10 */ 11 12 #ifndef TDA1002x_H 13 #define TDA1002x_H 14 15 #include <linux/dvb/frontend.h> 16 17 struct tda1002x_config { 18 /* the demodulator's i2c address */ 19 u8 demod_address; 20 u8 invert; 21 }; 22 23 enum tda10023_output_mode { 24 TDA10023_OUTPUT_MODE_PARALLEL_A = 0xe0, 25 TDA10023_OUTPUT_MODE_PARALLEL_B = 0xa1, 26 TDA10023_OUTPUT_MODE_PARALLEL_C = 0xa0, 27 TDA10023_OUTPUT_MODE_SERIAL, /* TODO: not implemented */ 28 }; 29 30 struct tda10023_config { 31 /* the demodulator's i2c address */ 32 u8 demod_address; 33 u8 invert; 34 35 /* clock settings */ 36 u32 xtal; /* defaults: 28920000 */ 37 u8 pll_m; /* defaults: 8 */ 38 u8 pll_p; /* defaults: 4 */ 39 u8 pll_n; /* defaults: 1 */ 40 41 /* MPEG2 TS output mode */ 42 u8 output_mode; 43 44 /* input freq offset + baseband conversion type */ 45 u16 deltaf; 46 }; 47 48 #if IS_REACHABLE(CONFIG_DVB_TDA10021) 49 extern struct dvb_frontend* tda10021_attach(const struct tda1002x_config* config, 50 struct i2c_adapter* i2c, u8 pwm); 51 #else 52 static inline struct dvb_frontend* tda10021_attach(const struct tda1002x_config* config, 53 struct i2c_adapter* i2c, u8 pwm) 54 { 55 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 56 return NULL; 57 } 58 #endif // CONFIG_DVB_TDA10021 59 60 #if IS_REACHABLE(CONFIG_DVB_TDA10023) 61 extern struct dvb_frontend *tda10023_attach( 62 const struct tda10023_config *config, 63 struct i2c_adapter *i2c, u8 pwm); 64 #else 65 static inline struct dvb_frontend *tda10023_attach( 66 const struct tda10023_config *config, 67 struct i2c_adapter *i2c, u8 pwm) 68 { 69 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 70 return NULL; 71 } 72 #endif // CONFIG_DVB_TDA10023 73 74 #endif // TDA1002x_H 75