1*74ba9207SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 2e4aab64cSIgor M. Liplianin /* 3e4aab64cSIgor M. Liplianin Driver for ST STV0288 demodulator 4e4aab64cSIgor M. Liplianin 5e4aab64cSIgor M. Liplianin Copyright (C) 2006 Georg Acher, BayCom GmbH, acher (at) baycom (dot) de 6e4aab64cSIgor M. Liplianin for Reel Multimedia 7e4aab64cSIgor M. Liplianin Copyright (C) 2008 TurboSight.com, <bob@turbosight.com> 8e4aab64cSIgor M. Liplianin Copyright (C) 2008 Igor M. Liplianin <liplianin@me.by> 9e4aab64cSIgor M. Liplianin Removed stb6000 specific tuner code and revised some 10e4aab64cSIgor M. Liplianin procedures. 11e4aab64cSIgor M. Liplianin 12e4aab64cSIgor M. Liplianin 13e4aab64cSIgor M. Liplianin */ 14e4aab64cSIgor M. Liplianin 15e4aab64cSIgor M. Liplianin #ifndef STV0288_H 16e4aab64cSIgor M. Liplianin #define STV0288_H 17e4aab64cSIgor M. Liplianin 18e4aab64cSIgor M. Liplianin #include <linux/dvb/frontend.h> 19fada1935SMauro Carvalho Chehab #include <media/dvb_frontend.h> 20e4aab64cSIgor M. Liplianin 21e4aab64cSIgor M. Liplianin struct stv0288_config { 22e4aab64cSIgor M. Liplianin /* the demodulator's i2c address */ 23e4aab64cSIgor M. Liplianin u8 demod_address; 24e4aab64cSIgor M. Liplianin 25de9be0eaSIgor M. Liplianin u8* inittab; 26de9be0eaSIgor M. Liplianin 27e4aab64cSIgor M. Liplianin /* minimum delay before retuning */ 28e4aab64cSIgor M. Liplianin int min_delay_ms; 29e4aab64cSIgor M. Liplianin 30e4aab64cSIgor M. Liplianin int (*set_ts_params)(struct dvb_frontend *fe, int is_punctured); 31e4aab64cSIgor M. Liplianin }; 32e4aab64cSIgor M. Liplianin 339b174527SArnd Bergmann #if IS_REACHABLE(CONFIG_DVB_STV0288) 34e4aab64cSIgor M. Liplianin extern struct dvb_frontend *stv0288_attach(const struct stv0288_config *config, 35e4aab64cSIgor M. Liplianin struct i2c_adapter *i2c); 36e4aab64cSIgor M. Liplianin #else 37e4aab64cSIgor M. Liplianin static inline struct dvb_frontend *stv0288_attach(const struct stv0288_config *config, 38e4aab64cSIgor M. Liplianin struct i2c_adapter *i2c) 39e4aab64cSIgor M. Liplianin { 40e4aab64cSIgor M. Liplianin printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); 41e4aab64cSIgor M. Liplianin return NULL; 42e4aab64cSIgor M. Liplianin } 43e4aab64cSIgor M. Liplianin #endif /* CONFIG_DVB_STV0288 */ 44e4aab64cSIgor M. Liplianin 45e4aab64cSIgor M. Liplianin static inline int stv0288_writereg(struct dvb_frontend *fe, u8 reg, u8 val) 46e4aab64cSIgor M. Liplianin { 47e4aab64cSIgor M. Liplianin int r = 0; 48e4aab64cSIgor M. Liplianin u8 buf[] = { reg, val }; 49e4aab64cSIgor M. Liplianin if (fe->ops.write) 50e4aab64cSIgor M. Liplianin r = fe->ops.write(fe, buf, 2); 51e4aab64cSIgor M. Liplianin return r; 52e4aab64cSIgor M. Liplianin } 53e4aab64cSIgor M. Liplianin 54e4aab64cSIgor M. Liplianin #endif /* STV0288_H */ 55