xref: /OK3568_Linux_fs/kernel/drivers/media/dvb-frontends/stv6110x_priv.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun 	STV6110(A) Silicon tuner driver
4*4882a593Smuzhiyun 
5*4882a593Smuzhiyun 	Copyright (C) Manu Abraham <abraham.manu@gmail.com>
6*4882a593Smuzhiyun 
7*4882a593Smuzhiyun 	Copyright (C) ST Microelectronics
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun */
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun #ifndef __STV6110x_PRIV_H
12*4882a593Smuzhiyun #define __STV6110x_PRIV_H
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun #define FE_ERROR				0
15*4882a593Smuzhiyun #define FE_NOTICE				1
16*4882a593Smuzhiyun #define FE_INFO					2
17*4882a593Smuzhiyun #define FE_DEBUG				3
18*4882a593Smuzhiyun #define FE_DEBUGREG				4
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun #define dprintk(__y, __z, format, arg...) do {						\
21*4882a593Smuzhiyun 	if (__z) {									\
22*4882a593Smuzhiyun 		if	((verbose > FE_ERROR) && (verbose > __y))			\
23*4882a593Smuzhiyun 			printk(KERN_ERR "%s: " format "\n", __func__ , ##arg);		\
24*4882a593Smuzhiyun 		else if	((verbose > FE_NOTICE) && (verbose > __y))			\
25*4882a593Smuzhiyun 			printk(KERN_NOTICE "%s: " format "\n", __func__ , ##arg);	\
26*4882a593Smuzhiyun 		else if ((verbose > FE_INFO) && (verbose > __y))			\
27*4882a593Smuzhiyun 			printk(KERN_INFO "%s: " format "\n", __func__ , ##arg);		\
28*4882a593Smuzhiyun 		else if ((verbose > FE_DEBUG) && (verbose > __y))			\
29*4882a593Smuzhiyun 			printk(KERN_DEBUG "%s: " format "\n", __func__ , ##arg);	\
30*4882a593Smuzhiyun 	} else {									\
31*4882a593Smuzhiyun 		if (verbose > __y)							\
32*4882a593Smuzhiyun 			printk(format, ##arg);						\
33*4882a593Smuzhiyun 	}										\
34*4882a593Smuzhiyun } while (0)
35*4882a593Smuzhiyun 
36*4882a593Smuzhiyun 
37*4882a593Smuzhiyun #define STV6110x_SETFIELD(mask, bitf, val)				\
38*4882a593Smuzhiyun 	(mask = (mask & (~(((1 << STV6110x_WIDTH_##bitf) - 1) <<	\
39*4882a593Smuzhiyun 				  STV6110x_OFFST_##bitf))) |		\
40*4882a593Smuzhiyun 			  (val << STV6110x_OFFST_##bitf))
41*4882a593Smuzhiyun 
42*4882a593Smuzhiyun #define STV6110x_GETFIELD(bitf, val)					\
43*4882a593Smuzhiyun 	((val >> STV6110x_OFFST_##bitf) &				\
44*4882a593Smuzhiyun 	((1 << STV6110x_WIDTH_##bitf) - 1))
45*4882a593Smuzhiyun 
46*4882a593Smuzhiyun #define MAKEWORD16(a, b)			(((a) << 8) | (b))
47*4882a593Smuzhiyun 
48*4882a593Smuzhiyun #define LSB(x)					((x & 0xff))
49*4882a593Smuzhiyun #define MSB(y)					((y >> 8) & 0xff)
50*4882a593Smuzhiyun 
51*4882a593Smuzhiyun #define TRIALS					10
52*4882a593Smuzhiyun #define R_DIV(__div)				(1 << (__div + 1))
53*4882a593Smuzhiyun #define REFCLOCK_kHz				(stv6110x->config->refclk /    1000)
54*4882a593Smuzhiyun #define REFCLOCK_MHz				(stv6110x->config->refclk / 1000000)
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun struct stv6110x_state {
57*4882a593Smuzhiyun 	struct dvb_frontend		*frontend;
58*4882a593Smuzhiyun 	struct i2c_adapter		*i2c;
59*4882a593Smuzhiyun 	const struct stv6110x_config	*config;
60*4882a593Smuzhiyun 	u8				regs[8];
61*4882a593Smuzhiyun 
62*4882a593Smuzhiyun 	struct stv6110x_devctl	*devctl;
63*4882a593Smuzhiyun };
64*4882a593Smuzhiyun 
65*4882a593Smuzhiyun #endif /* __STV6110x_PRIV_H */
66