| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* | 
| Hartmut Birr | aa323ac | 2007-04-21 19:37:17 -0300 | [diff] [blame] | 2 |     TDA10021/TDA10023  - Single Chip Cable Channel Receiver driver module | 
 | 3 | 			 used on the the Siemens DVB-C cards | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 4 |  | 
 | 5 |     Copyright (C) 1999 Convergence Integrated Media GmbH <ralph@convergence.de> | 
 | 6 |     Copyright (C) 2004 Markus Schulz <msc@antzsystem.de> | 
| Mauro Carvalho Chehab | 9101e62 | 2005-12-12 00:37:24 -0800 | [diff] [blame] | 7 | 		   Support for TDA10021 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 8 |  | 
 | 9 |     This program is free software; you can redistribute it and/or modify | 
 | 10 |     it under the terms of the GNU General Public License as published by | 
 | 11 |     the Free Software Foundation; either version 2 of the License, or | 
 | 12 |     (at your option) any later version. | 
 | 13 |  | 
 | 14 |     This program is distributed in the hope that it will be useful, | 
 | 15 |     but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 | 16 |     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
 | 17 |     GNU General Public License for more details. | 
 | 18 |  | 
 | 19 |     You should have received a copy of the GNU General Public License | 
 | 20 |     along with this program; if not, write to the Free Software | 
 | 21 |     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 
 | 22 | */ | 
 | 23 |  | 
| Hartmut Birr | aa323ac | 2007-04-21 19:37:17 -0300 | [diff] [blame] | 24 | #ifndef TDA1002x_H | 
 | 25 | #define TDA1002x_H | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 26 |  | 
 | 27 | #include <linux/dvb/frontend.h> | 
 | 28 |  | 
| Antti Palosaari | 4388c3b | 2008-05-17 22:58:04 -0300 | [diff] [blame] | 29 | struct tda1002x_config { | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 30 | 	/* the demodulator's i2c address */ | 
 | 31 | 	u8 demod_address; | 
| Hartmut Birr | dc120b0 | 2007-04-21 19:44:10 -0300 | [diff] [blame] | 32 | 	u8 invert; | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 33 | }; | 
 | 34 |  | 
| Antti Palosaari | e758886 | 2008-06-09 22:53:04 -0300 | [diff] [blame] | 35 | enum tda10023_output_mode { | 
 | 36 | 	TDA10023_OUTPUT_MODE_PARALLEL_A = 0xe0, | 
 | 37 | 	TDA10023_OUTPUT_MODE_PARALLEL_B = 0xa1, | 
 | 38 | 	TDA10023_OUTPUT_MODE_PARALLEL_C = 0xa0, | 
 | 39 | 	TDA10023_OUTPUT_MODE_SERIAL, /* TODO: not implemented */ | 
 | 40 | }; | 
 | 41 |  | 
| Antti Palosaari | 4388c3b | 2008-05-17 22:58:04 -0300 | [diff] [blame] | 42 | struct tda10023_config { | 
 | 43 | 	/* the demodulator's i2c address */ | 
 | 44 | 	u8 demod_address; | 
 | 45 | 	u8 invert; | 
 | 46 |  | 
 | 47 | 	/* clock settings */ | 
 | 48 | 	u32 xtal; /* defaults: 28920000 */ | 
 | 49 | 	u8 pll_m; /* defaults: 8 */ | 
 | 50 | 	u8 pll_p; /* defaults: 4 */ | 
 | 51 | 	u8 pll_n; /* defaults: 1 */ | 
 | 52 |  | 
| Antti Palosaari | e758886 | 2008-06-09 22:53:04 -0300 | [diff] [blame] | 53 | 	/* MPEG2 TS output mode */ | 
 | 54 | 	u8 output_mode; | 
 | 55 |  | 
| Antti Palosaari | 4388c3b | 2008-05-17 22:58:04 -0300 | [diff] [blame] | 56 | 	/* input freq offset + baseband conversion type */ | 
 | 57 | 	u16 deltaf; | 
 | 58 | }; | 
 | 59 |  | 
| Trent Piepho | c5dec9f | 2006-10-14 15:44:44 -0300 | [diff] [blame] | 60 | #if defined(CONFIG_DVB_TDA10021) || (defined(CONFIG_DVB_TDA10021_MODULE) && defined(MODULE)) | 
| Hartmut Birr | aa323ac | 2007-04-21 19:37:17 -0300 | [diff] [blame] | 61 | extern struct dvb_frontend* tda10021_attach(const struct tda1002x_config* config, | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 62 | 					    struct i2c_adapter* i2c, u8 pwm); | 
| Andrew de Quincey | 102a342 | 2006-08-08 09:10:08 -0300 | [diff] [blame] | 63 | #else | 
| Hartmut Birr | aa323ac | 2007-04-21 19:37:17 -0300 | [diff] [blame] | 64 | static inline struct dvb_frontend* tda10021_attach(const struct tda1002x_config* config, | 
| Andrew de Quincey | 102a342 | 2006-08-08 09:10:08 -0300 | [diff] [blame] | 65 | 					    struct i2c_adapter* i2c, u8 pwm) | 
 | 66 | { | 
| Harvey Harrison | 271ddbf | 2008-04-08 23:20:00 -0300 | [diff] [blame] | 67 | 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); | 
| Andrew de Quincey | 102a342 | 2006-08-08 09:10:08 -0300 | [diff] [blame] | 68 | 	return NULL; | 
 | 69 | } | 
 | 70 | #endif // CONFIG_DVB_TDA10021 | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 71 |  | 
| Antti Palosaari | 4388c3b | 2008-05-17 22:58:04 -0300 | [diff] [blame] | 72 | #if defined(CONFIG_DVB_TDA10023) || \ | 
 | 73 | 	(defined(CONFIG_DVB_TDA10023_MODULE) && defined(MODULE)) | 
 | 74 | extern struct dvb_frontend *tda10023_attach( | 
 | 75 | 	const struct tda10023_config *config, | 
 | 76 | 	struct i2c_adapter *i2c, u8 pwm); | 
| Hartmut Birr | aa323ac | 2007-04-21 19:37:17 -0300 | [diff] [blame] | 77 | #else | 
| Antti Palosaari | 4388c3b | 2008-05-17 22:58:04 -0300 | [diff] [blame] | 78 | static inline struct dvb_frontend *tda10023_attach( | 
| Oliver Endriss | 4ee48c4 | 2008-07-15 19:36:46 -0300 | [diff] [blame] | 79 | 	const struct tda10023_config *config, | 
| Antti Palosaari | 4388c3b | 2008-05-17 22:58:04 -0300 | [diff] [blame] | 80 | 	struct i2c_adapter *i2c, u8 pwm) | 
| Hartmut Birr | aa323ac | 2007-04-21 19:37:17 -0300 | [diff] [blame] | 81 | { | 
| Harvey Harrison | 271ddbf | 2008-04-08 23:20:00 -0300 | [diff] [blame] | 82 | 	printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); | 
| Hartmut Birr | aa323ac | 2007-04-21 19:37:17 -0300 | [diff] [blame] | 83 | 	return NULL; | 
 | 84 | } | 
 | 85 | #endif // CONFIG_DVB_TDA10023 | 
 | 86 |  | 
 | 87 | #endif // TDA1002x_H |