13e54a169SMatthias Schwarzott /* 23e54a169SMatthias Schwarzott Driver for Silicon Labs SI2165 DVB-C/-T Demodulator 33e54a169SMatthias Schwarzott 43e54a169SMatthias Schwarzott Copyright (C) 2013-2014 Matthias Schwarzott <zzam@gentoo.org> 53e54a169SMatthias Schwarzott 63e54a169SMatthias Schwarzott This program is free software; you can redistribute it and/or modify 73e54a169SMatthias Schwarzott it under the terms of the GNU General Public License as published by 83e54a169SMatthias Schwarzott the Free Software Foundation; either version 2 of the License, or 93e54a169SMatthias Schwarzott (at your option) any later version. 103e54a169SMatthias Schwarzott 113e54a169SMatthias Schwarzott This program is distributed in the hope that it will be useful, 123e54a169SMatthias Schwarzott but WITHOUT ANY WARRANTY; without even the implied warranty of 133e54a169SMatthias Schwarzott MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 143e54a169SMatthias Schwarzott GNU General Public License for more details. 153e54a169SMatthias Schwarzott 163e54a169SMatthias Schwarzott References: 173e54a169SMatthias Schwarzott http://www.silabs.com/Support%20Documents/TechnicalDocs/Si2165-short.pdf 183e54a169SMatthias Schwarzott */ 193e54a169SMatthias Schwarzott 203e54a169SMatthias Schwarzott #ifndef _DVB_SI2165_H 213e54a169SMatthias Schwarzott #define _DVB_SI2165_H 223e54a169SMatthias Schwarzott 233e54a169SMatthias Schwarzott #include <linux/dvb/frontend.h> 243e54a169SMatthias Schwarzott 253e54a169SMatthias Schwarzott enum { 263e54a169SMatthias Schwarzott SI2165_MODE_OFF = 0x00, 273e54a169SMatthias Schwarzott SI2165_MODE_PLL_EXT = 0x20, 283e54a169SMatthias Schwarzott SI2165_MODE_PLL_XTAL = 0x21 293e54a169SMatthias Schwarzott }; 303e54a169SMatthias Schwarzott 317cd785adSMatthias Schwarzott /* I2C addresses 327cd785adSMatthias Schwarzott * possible values: 0x64,0x65,0x66,0x67 337cd785adSMatthias Schwarzott */ 347cd785adSMatthias Schwarzott struct si2165_platform_data { 357cd785adSMatthias Schwarzott /* 367cd785adSMatthias Schwarzott * frontend 377cd785adSMatthias Schwarzott * returned by driver 387cd785adSMatthias Schwarzott */ 397cd785adSMatthias Schwarzott struct dvb_frontend **fe; 407cd785adSMatthias Schwarzott 417cd785adSMatthias Schwarzott /* external clock or XTAL */ 427cd785adSMatthias Schwarzott u8 chip_mode; 437cd785adSMatthias Schwarzott 447cd785adSMatthias Schwarzott /* frequency of external clock or xtal in Hz 457cd785adSMatthias Schwarzott * possible values: 4000000, 16000000, 20000000, 240000000, 27000000 467cd785adSMatthias Schwarzott */ 477cd785adSMatthias Schwarzott u32 ref_freq_Hz; 487cd785adSMatthias Schwarzott 497cd785adSMatthias Schwarzott /* invert the spectrum */ 507cd785adSMatthias Schwarzott bool inversion; 517cd785adSMatthias Schwarzott }; 527cd785adSMatthias Schwarzott 533e54a169SMatthias Schwarzott struct si2165_config { 543e54a169SMatthias Schwarzott /* i2c addr 553e54a169SMatthias Schwarzott * possible values: 0x64,0x65,0x66,0x67 */ 563e54a169SMatthias Schwarzott u8 i2c_addr; 573e54a169SMatthias Schwarzott 583e54a169SMatthias Schwarzott /* external clock or XTAL */ 593e54a169SMatthias Schwarzott u8 chip_mode; 603e54a169SMatthias Schwarzott 613e54a169SMatthias Schwarzott /* frequency of external clock or xtal in Hz 623e54a169SMatthias Schwarzott * possible values: 4000000, 16000000, 20000000, 240000000, 27000000 633e54a169SMatthias Schwarzott */ 643e54a169SMatthias Schwarzott u32 ref_freq_Hz; 653e54a169SMatthias Schwarzott 663e54a169SMatthias Schwarzott /* invert the spectrum */ 673e54a169SMatthias Schwarzott bool inversion; 683e54a169SMatthias Schwarzott }; 693e54a169SMatthias Schwarzott 7000c78a37SMauro Carvalho Chehab #if IS_REACHABLE(CONFIG_DVB_SI2165) 713e54a169SMatthias Schwarzott struct dvb_frontend *si2165_attach( 723e54a169SMatthias Schwarzott const struct si2165_config *config, 733e54a169SMatthias Schwarzott struct i2c_adapter *i2c); 743e54a169SMatthias Schwarzott #else 753e54a169SMatthias Schwarzott static inline struct dvb_frontend *si2165_attach( 763e54a169SMatthias Schwarzott const struct si2165_config *config, 773e54a169SMatthias Schwarzott struct i2c_adapter *i2c) 783e54a169SMatthias Schwarzott { 793e54a169SMatthias Schwarzott pr_warn("%s: driver disabled by Kconfig\n", __func__); 803e54a169SMatthias Schwarzott return NULL; 813e54a169SMatthias Schwarzott } 823e54a169SMatthias Schwarzott #endif /* CONFIG_DVB_SI2165 */ 833e54a169SMatthias Schwarzott 843e54a169SMatthias Schwarzott #endif /* _DVB_SI2165_H */ 85