1de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari/* 2de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * NXP TDA10071 + Conexant CX24118A DVB-S/S2 demodulator + tuner driver 3de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * 4de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * Copyright (C) 2011 Antti Palosaari <crope@iki.fi> 5de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * 6de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * This program is free software; you can redistribute it and/or modify 7de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * it under the terms of the GNU General Public License as published by 8de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * the Free Software Foundation; either version 2 of the License, or 9de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * (at your option) any later version. 10de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * 11de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * This program is distributed in the hope that it will be useful, 12de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * but WITHOUT ANY WARRANTY; without even the implied warranty of 13de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * GNU General Public License for more details. 15de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * 16de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * You should have received a copy of the GNU General Public License along 17de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * with this program; if not, write to the Free Software Foundation, Inc., 18de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari */ 20de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari 21de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari#ifndef TDA10071_H 22de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari#define TDA10071_H 23de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari 24de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari#include <linux/dvb/frontend.h> 25de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari 26de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaaristruct tda10071_config { 27de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari /* Demodulator I2C address. 28de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * Default: none, must set 29de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * Values: 0x55, 30de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari */ 31de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari u8 i2c_address; 32de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari 33de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari /* Max bytes I2C provider can write at once. 34de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * Note: Buffer is taken from the stack currently! 35de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * Default: none, must set 36de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * Values: 37de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari */ 38de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari u16 i2c_wr_max; 39de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari 40de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari /* TS output mode. 41de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * Default: TDA10071_TS_SERIAL 42de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * Values: 43de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari */ 44de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari#define TDA10071_TS_SERIAL 0 45de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari#define TDA10071_TS_PARALLEL 1 46de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari u8 ts_mode; 47de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari 48de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari /* Input spectrum inversion. 49de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * Default: 0 50de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * Values: 0, 1 51de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari */ 52de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari bool spec_inv; 53de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari 54de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari /* Xtal frequency Hz 55de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * Default: none, must set 56de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * Values: 57de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari */ 58de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari u32 xtal; 59de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari 60de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari /* PLL multiplier. 61de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * Default: none, must set 62de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari * Values: 63de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari */ 64de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari u8 pll_multiplier; 65de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari}; 66de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari 67de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari 68de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari#if defined(CONFIG_DVB_TDA10071) || \ 69de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari (defined(CONFIG_DVB_TDA10071_MODULE) && defined(MODULE)) 70de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaariextern struct dvb_frontend *tda10071_attach( 71de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari const struct tda10071_config *config, struct i2c_adapter *i2c); 72de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari#else 73de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaaristatic inline struct dvb_frontend *tda10071_attach( 74de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari const struct tda10071_config *config, struct i2c_adapter *i2c) 75de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari{ 76de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 77de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari return NULL; 78de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari} 79de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari#endif 80de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari 81de8e42035014214708d9e32e12fe6d42a5ae59d1Antti Palosaari#endif /* TDA10071_H */ 82