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