174ba9207SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 29a0bf528SMauro Carvalho Chehab /* 39a0bf528SMauro Carvalho Chehab STV6110(A) Silicon tuner driver 49a0bf528SMauro Carvalho Chehab 59a0bf528SMauro Carvalho Chehab Copyright (C) Manu Abraham <abraham.manu@gmail.com> 69a0bf528SMauro Carvalho Chehab 79a0bf528SMauro Carvalho Chehab Copyright (C) ST Microelectronics 89a0bf528SMauro Carvalho Chehab 99a0bf528SMauro Carvalho Chehab */ 109a0bf528SMauro Carvalho Chehab 119a0bf528SMauro Carvalho Chehab #ifndef __STV6110x_PRIV_H 129a0bf528SMauro Carvalho Chehab #define __STV6110x_PRIV_H 139a0bf528SMauro Carvalho Chehab 149a0bf528SMauro Carvalho Chehab #define FE_ERROR 0 159a0bf528SMauro Carvalho Chehab #define FE_NOTICE 1 169a0bf528SMauro Carvalho Chehab #define FE_INFO 2 179a0bf528SMauro Carvalho Chehab #define FE_DEBUG 3 189a0bf528SMauro Carvalho Chehab #define FE_DEBUGREG 4 199a0bf528SMauro Carvalho Chehab 209a0bf528SMauro Carvalho Chehab #define dprintk(__y, __z, format, arg...) do { \ 219a0bf528SMauro Carvalho Chehab if (__z) { \ 229a0bf528SMauro Carvalho Chehab if ((verbose > FE_ERROR) && (verbose > __y)) \ 239a0bf528SMauro Carvalho Chehab printk(KERN_ERR "%s: " format "\n", __func__ , ##arg); \ 249a0bf528SMauro Carvalho Chehab else if ((verbose > FE_NOTICE) && (verbose > __y)) \ 259a0bf528SMauro Carvalho Chehab printk(KERN_NOTICE "%s: " format "\n", __func__ , ##arg); \ 269a0bf528SMauro Carvalho Chehab else if ((verbose > FE_INFO) && (verbose > __y)) \ 279a0bf528SMauro Carvalho Chehab printk(KERN_INFO "%s: " format "\n", __func__ , ##arg); \ 289a0bf528SMauro Carvalho Chehab else if ((verbose > FE_DEBUG) && (verbose > __y)) \ 299a0bf528SMauro Carvalho Chehab printk(KERN_DEBUG "%s: " format "\n", __func__ , ##arg); \ 309a0bf528SMauro Carvalho Chehab } else { \ 319a0bf528SMauro Carvalho Chehab if (verbose > __y) \ 329a0bf528SMauro Carvalho Chehab printk(format, ##arg); \ 339a0bf528SMauro Carvalho Chehab } \ 349a0bf528SMauro Carvalho Chehab } while (0) 359a0bf528SMauro Carvalho Chehab 369a0bf528SMauro Carvalho Chehab 379a0bf528SMauro Carvalho Chehab #define STV6110x_SETFIELD(mask, bitf, val) \ 389a0bf528SMauro Carvalho Chehab (mask = (mask & (~(((1 << STV6110x_WIDTH_##bitf) - 1) << \ 399a0bf528SMauro Carvalho Chehab STV6110x_OFFST_##bitf))) | \ 409a0bf528SMauro Carvalho Chehab (val << STV6110x_OFFST_##bitf)) 419a0bf528SMauro Carvalho Chehab 429a0bf528SMauro Carvalho Chehab #define STV6110x_GETFIELD(bitf, val) \ 439a0bf528SMauro Carvalho Chehab ((val >> STV6110x_OFFST_##bitf) & \ 449a0bf528SMauro Carvalho Chehab ((1 << STV6110x_WIDTH_##bitf) - 1)) 459a0bf528SMauro Carvalho Chehab 469a0bf528SMauro Carvalho Chehab #define MAKEWORD16(a, b) (((a) << 8) | (b)) 479a0bf528SMauro Carvalho Chehab 489a0bf528SMauro Carvalho Chehab #define LSB(x) ((x & 0xff)) 499a0bf528SMauro Carvalho Chehab #define MSB(y) ((y >> 8) & 0xff) 509a0bf528SMauro Carvalho Chehab 519a0bf528SMauro Carvalho Chehab #define TRIALS 10 529a0bf528SMauro Carvalho Chehab #define R_DIV(__div) (1 << (__div + 1)) 539a0bf528SMauro Carvalho Chehab #define REFCLOCK_kHz (stv6110x->config->refclk / 1000) 549a0bf528SMauro Carvalho Chehab #define REFCLOCK_MHz (stv6110x->config->refclk / 1000000) 559a0bf528SMauro Carvalho Chehab 569a0bf528SMauro Carvalho Chehab struct stv6110x_state { 57*3c8f4cd2STobias Klausmann struct dvb_frontend *frontend; 589a0bf528SMauro Carvalho Chehab struct i2c_adapter *i2c; 599a0bf528SMauro Carvalho Chehab const struct stv6110x_config *config; 609a0bf528SMauro Carvalho Chehab u8 regs[8]; 619a0bf528SMauro Carvalho Chehab 62*3c8f4cd2STobias Klausmann struct stv6110x_devctl *devctl; 639a0bf528SMauro Carvalho Chehab }; 649a0bf528SMauro Carvalho Chehab 659a0bf528SMauro Carvalho Chehab #endif /* __STV6110x_PRIV_H */ 66