xref: /linux/drivers/media/dvb-frontends/stv0288.h (revision 58e16d792a6a8c6b750f637a4649967fcac853dc)
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