16ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky/* 26ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky tda18271-priv.h - private header for the NXP TDA18271 silicon tuner 36ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky 459067f7ed491ec95e6e9033e35e1ae726cff3ceeMichael Krufky Copyright (C) 2007, 2008 Michael Krufky <mkrufky@linuxtv.org> 56ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky 66ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky This program is free software; you can redistribute it and/or modify 76ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky it under the terms of the GNU General Public License as published by 86ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky the Free Software Foundation; either version 2 of the License, or 96ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky (at your option) any later version. 106ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky 116ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky This program is distributed in the hope that it will be useful, 126ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky but WITHOUT ANY WARRANTY; without even the implied warranty of 136ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 146ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky GNU General Public License for more details. 156ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky 166ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky You should have received a copy of the GNU General Public License 176ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky along with this program; if not, write to the Free Software 186ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 196ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky*/ 206ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky 216ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#ifndef __TDA18271_PRIV_H__ 226ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define __TDA18271_PRIV_H__ 236ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky 24b5f3e1e153b60f7bc338cdd6eefacd59c2dfb375Michael Krufky#include <linux/kernel.h> 256ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#include <linux/types.h> 268d316bf54b2a1965f9460d0ad9d80850d2c7afb3Michael Krufky#include <linux/mutex.h> 27f9e315a16a5536120bac09a6d4217b8381c73c5cMichael Krufky#include "tuner-i2c.h" 28d37142102a2adaa3391a384ea6a780afb5804789Michael Krufky#include "tda18271.h" 296ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky 306ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_ID 0x00 /* ID byte */ 316ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_TM 0x01 /* Thermo byte */ 326ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_PL 0x02 /* Power level byte */ 336ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EP1 0x03 /* Easy Prog byte 1 */ 346ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EP2 0x04 /* Easy Prog byte 2 */ 356ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EP3 0x05 /* Easy Prog byte 3 */ 366ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EP4 0x06 /* Easy Prog byte 4 */ 376ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EP5 0x07 /* Easy Prog byte 5 */ 386ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_CPD 0x08 /* Cal Post-Divider byte */ 396ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_CD1 0x09 /* Cal Divider byte 1 */ 406ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_CD2 0x0a /* Cal Divider byte 2 */ 416ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_CD3 0x0b /* Cal Divider byte 3 */ 426ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_MPD 0x0c /* Main Post-Divider byte */ 436ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_MD1 0x0d /* Main Divider byte 1 */ 446ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_MD2 0x0e /* Main Divider byte 2 */ 456ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_MD3 0x0f /* Main Divider byte 3 */ 466ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB1 0x10 /* Extended byte 1 */ 476ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB2 0x11 /* Extended byte 2 */ 486ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB3 0x12 /* Extended byte 3 */ 496ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB4 0x13 /* Extended byte 4 */ 506ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB5 0x14 /* Extended byte 5 */ 516ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB6 0x15 /* Extended byte 6 */ 526ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB7 0x16 /* Extended byte 7 */ 536ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB8 0x17 /* Extended byte 8 */ 546ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB9 0x18 /* Extended byte 9 */ 556ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB10 0x19 /* Extended byte 10 */ 566ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB11 0x1a /* Extended byte 11 */ 576ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB12 0x1b /* Extended byte 12 */ 586ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB13 0x1c /* Extended byte 13 */ 596ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB14 0x1d /* Extended byte 14 */ 606ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB15 0x1e /* Extended byte 15 */ 616ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB16 0x1f /* Extended byte 16 */ 626ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB17 0x20 /* Extended byte 17 */ 636ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB18 0x21 /* Extended byte 18 */ 646ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB19 0x22 /* Extended byte 19 */ 656ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB20 0x23 /* Extended byte 20 */ 666ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB21 0x24 /* Extended byte 21 */ 676ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB22 0x25 /* Extended byte 22 */ 686ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define R_EB23 0x26 /* Extended byte 23 */ 696ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky 706ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#define TDA18271_NUM_REGS 39 716ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky 72d37142102a2adaa3391a384ea6a780afb5804789Michael Krufky/*---------------------------------------------------------------------*/ 73d37142102a2adaa3391a384ea6a780afb5804789Michael Krufky 74255b5113b4ed683898a24e381155c081f03411f7Michael Krufkystruct tda18271_rf_tracking_filter_cal { 75255b5113b4ed683898a24e381155c081f03411f7Michael Krufky u32 rfmax; 76255b5113b4ed683898a24e381155c081f03411f7Michael Krufky u8 rfband; 77255b5113b4ed683898a24e381155c081f03411f7Michael Krufky u32 rf1_def; 78255b5113b4ed683898a24e381155c081f03411f7Michael Krufky u32 rf2_def; 79255b5113b4ed683898a24e381155c081f03411f7Michael Krufky u32 rf3_def; 80255b5113b4ed683898a24e381155c081f03411f7Michael Krufky u32 rf1; 81255b5113b4ed683898a24e381155c081f03411f7Michael Krufky u32 rf2; 82255b5113b4ed683898a24e381155c081f03411f7Michael Krufky u32 rf3; 833a6b49fef6cd18ce3de9de3db12bfbeacf39f9e9Michael Krufky s32 rf_a1; 843a6b49fef6cd18ce3de9de3db12bfbeacf39f9e9Michael Krufky s32 rf_b1; 853a6b49fef6cd18ce3de9de3db12bfbeacf39f9e9Michael Krufky s32 rf_a2; 863a6b49fef6cd18ce3de9de3db12bfbeacf39f9e9Michael Krufky s32 rf_b2; 87255b5113b4ed683898a24e381155c081f03411f7Michael Krufky}; 88255b5113b4ed683898a24e381155c081f03411f7Michael Krufky 894efb0ca5d00f2c7a8bf9632556a4b4330cf409c5Michael Krufkyenum tda18271_pll { 904efb0ca5d00f2c7a8bf9632556a4b4330cf409c5Michael Krufky TDA18271_MAIN_PLL, 914efb0ca5d00f2c7a8bf9632556a4b4330cf409c5Michael Krufky TDA18271_CAL_PLL, 924efb0ca5d00f2c7a8bf9632556a4b4330cf409c5Michael Krufky}; 934efb0ca5d00f2c7a8bf9632556a4b4330cf409c5Michael Krufky 94255b5113b4ed683898a24e381155c081f03411f7Michael Krufkystruct tda18271_map_layout; 95255b5113b4ed683898a24e381155c081f03411f7Michael Krufky 96255b5113b4ed683898a24e381155c081f03411f7Michael Krufkyenum tda18271_ver { 97255b5113b4ed683898a24e381155c081f03411f7Michael Krufky TDA18271HDC1, 98255b5113b4ed683898a24e381155c081f03411f7Michael Krufky TDA18271HDC2, 99255b5113b4ed683898a24e381155c081f03411f7Michael Krufky}; 100255b5113b4ed683898a24e381155c081f03411f7Michael Krufky 101d37142102a2adaa3391a384ea6a780afb5804789Michael Krufkystruct tda18271_priv { 102d37142102a2adaa3391a384ea6a780afb5804789Michael Krufky unsigned char tda18271_regs[TDA18271_NUM_REGS]; 103d37142102a2adaa3391a384ea6a780afb5804789Michael Krufky 104f9e315a16a5536120bac09a6d4217b8381c73c5cMichael Krufky struct list_head hybrid_tuner_instance_list; 105f9e315a16a5536120bac09a6d4217b8381c73c5cMichael Krufky struct tuner_i2c_props i2c_props; 106a4f263b587573f47cc6bc7ad85e5f650169d48f6Michael Krufky 107d37142102a2adaa3391a384ea6a780afb5804789Michael Krufky enum tda18271_mode mode; 108868f5ccd64113d070f09ecf2827a69b81c95ed9dMichael Krufky enum tda18271_role role; 109d37142102a2adaa3391a384ea6a780afb5804789Michael Krufky enum tda18271_i2c_gate gate; 110255b5113b4ed683898a24e381155c081f03411f7Michael Krufky enum tda18271_ver id; 1114240b460f0dbb4bf4e3f64e6abd423f476012756Michael Krufky enum tda18271_output_options output_opt; 1121724c8fa7eb33d68898e060a08a8e6a88348b62fMichael Krufky enum tda18271_small_i2c small_i2c; 113255b5113b4ed683898a24e381155c081f03411f7Michael Krufky 114adcc4b3e75c5f0293806766bcc5ed0bb62d5cda0Michael Krufky unsigned int config; /* interface to saa713x / tda829x */ 115255b5113b4ed683898a24e381155c081f03411f7Michael Krufky unsigned int cal_initialized:1; 116255b5113b4ed683898a24e381155c081f03411f7Michael Krufky 1173a6b49fef6cd18ce3de9de3db12bfbeacf39f9e9Michael Krufky u8 tm_rfcal; 1183a6b49fef6cd18ce3de9de3db12bfbeacf39f9e9Michael Krufky 119255b5113b4ed683898a24e381155c081f03411f7Michael Krufky struct tda18271_map_layout *maps; 120f21e0d7f0513e743b14df3197fdeeb9a9b7edbb2Michael Krufky struct tda18271_std_map std; 121255b5113b4ed683898a24e381155c081f03411f7Michael Krufky struct tda18271_rf_tracking_filter_cal rf_cal_state[8]; 122255b5113b4ed683898a24e381155c081f03411f7Michael Krufky 1238d316bf54b2a1965f9460d0ad9d80850d2c7afb3Michael Krufky struct mutex lock; 1248d316bf54b2a1965f9460d0ad9d80850d2c7afb3Michael Krufky 1258c8ee11345fa26e46cbc9ec88581736e38915b16Michael Krufky u16 if_freq; 1268c8ee11345fa26e46cbc9ec88581736e38915b16Michael Krufky 127d37142102a2adaa3391a384ea6a780afb5804789Michael Krufky u32 frequency; 128d37142102a2adaa3391a384ea6a780afb5804789Michael Krufky u32 bandwidth; 129d37142102a2adaa3391a384ea6a780afb5804789Michael Krufky}; 130d37142102a2adaa3391a384ea6a780afb5804789Michael Krufky 131d37142102a2adaa3391a384ea6a780afb5804789Michael Krufky/*---------------------------------------------------------------------*/ 132d37142102a2adaa3391a384ea6a780afb5804789Michael Krufky 133b5f3e1e153b60f7bc338cdd6eefacd59c2dfb375Michael Krufkyextern int tda18271_debug; 134b5f3e1e153b60f7bc338cdd6eefacd59c2dfb375Michael Krufky 135b5f3e1e153b60f7bc338cdd6eefacd59c2dfb375Michael Krufky#define DBG_INFO 1 136b5f3e1e153b60f7bc338cdd6eefacd59c2dfb375Michael Krufky#define DBG_MAP 2 137b5f3e1e153b60f7bc338cdd6eefacd59c2dfb375Michael Krufky#define DBG_REG 4 138255b5113b4ed683898a24e381155c081f03411f7Michael Krufky#define DBG_ADV 8 139cf04d29c4868a783b3e994e4a19f78ce22ba2d93Michael Krufky#define DBG_CAL 16 140b5f3e1e153b60f7bc338cdd6eefacd59c2dfb375Michael Krufky 141be85fefecb20b533a2c3f668a345f03f492aeea3Joe Perches__attribute__((format(printf, 4, 5))) 1420f531e735651555568816b6cf7631816003dc1d2Joe Perchesvoid _tda_printk(struct tda18271_priv *state, const char *level, 1430f531e735651555568816b6cf7631816003dc1d2Joe Perches const char *func, const char *fmt, ...); 144be85fefecb20b533a2c3f668a345f03f492aeea3Joe Perches 145be85fefecb20b533a2c3f668a345f03f492aeea3Joe Perches#define tda_printk(st, lvl, fmt, arg...) \ 146be85fefecb20b533a2c3f668a345f03f492aeea3Joe Perches _tda_printk(st, lvl, __func__, fmt, ##arg) 147be85fefecb20b533a2c3f668a345f03f492aeea3Joe Perches 148be85fefecb20b533a2c3f668a345f03f492aeea3Joe Perches#define tda_dprintk(st, lvl, fmt, arg...) \ 149be85fefecb20b533a2c3f668a345f03f492aeea3Joe Perchesdo { \ 150be85fefecb20b533a2c3f668a345f03f492aeea3Joe Perches if (tda18271_debug & lvl) \ 151be85fefecb20b533a2c3f668a345f03f492aeea3Joe Perches tda_printk(st, KERN_DEBUG, fmt, ##arg); \ 152c0faeee5a3b70c894a27fa81a0d98a3ab223aff0Michael Krufky} while (0) 153c0faeee5a3b70c894a27fa81a0d98a3ab223aff0Michael Krufky 154be85fefecb20b533a2c3f668a345f03f492aeea3Joe Perches#define tda_info(fmt, arg...) pr_info(fmt, ##arg) 155be85fefecb20b533a2c3f668a345f03f492aeea3Joe Perches#define tda_warn(fmt, arg...) tda_printk(priv, KERN_WARNING, fmt, ##arg) 156be85fefecb20b533a2c3f668a345f03f492aeea3Joe Perches#define tda_err(fmt, arg...) tda_printk(priv, KERN_ERR, fmt, ##arg) 157be85fefecb20b533a2c3f668a345f03f492aeea3Joe Perches#define tda_dbg(fmt, arg...) tda_dprintk(priv, DBG_INFO, fmt, ##arg) 158be85fefecb20b533a2c3f668a345f03f492aeea3Joe Perches#define tda_map(fmt, arg...) tda_dprintk(priv, DBG_MAP, fmt, ##arg) 159be85fefecb20b533a2c3f668a345f03f492aeea3Joe Perches#define tda_reg(fmt, arg...) tda_dprintk(priv, DBG_REG, fmt, ##arg) 160be85fefecb20b533a2c3f668a345f03f492aeea3Joe Perches#define tda_cal(fmt, arg...) tda_dprintk(priv, DBG_CAL, fmt, ##arg) 161b5f3e1e153b60f7bc338cdd6eefacd59c2dfb375Michael Krufky 1624bd5d1071ddbb35ae545c7738e6411e50ce28b17Michael Krufky#define tda_fail(ret) \ 1634bd5d1071ddbb35ae545c7738e6411e50ce28b17Michael Krufky({ \ 1644bd5d1071ddbb35ae545c7738e6411e50ce28b17Michael Krufky int __ret; \ 1654bd5d1071ddbb35ae545c7738e6411e50ce28b17Michael Krufky __ret = (ret < 0); \ 1664bd5d1071ddbb35ae545c7738e6411e50ce28b17Michael Krufky if (__ret) \ 167c0faeee5a3b70c894a27fa81a0d98a3ab223aff0Michael Krufky tda_printk(priv, KERN_ERR, \ 168c0faeee5a3b70c894a27fa81a0d98a3ab223aff0Michael Krufky "error %d on line %d\n", ret, __LINE__); \ 1694bd5d1071ddbb35ae545c7738e6411e50ce28b17Michael Krufky __ret; \ 1704bd5d1071ddbb35ae545c7738e6411e50ce28b17Michael Krufky}) 1714bd5d1071ddbb35ae545c7738e6411e50ce28b17Michael Krufky 172b5f3e1e153b60f7bc338cdd6eefacd59c2dfb375Michael Krufky/*---------------------------------------------------------------------*/ 173b5f3e1e153b60f7bc338cdd6eefacd59c2dfb375Michael Krufky 1742f27dfc98cc0a183be9e3c2fc0da0450b85e5fdeMichael Krufkyenum tda18271_map_type { 1752f27dfc98cc0a183be9e3c2fc0da0450b85e5fdeMichael Krufky /* tda18271_pll_map */ 1762f27dfc98cc0a183be9e3c2fc0da0450b85e5fdeMichael Krufky MAIN_PLL, 1772f27dfc98cc0a183be9e3c2fc0da0450b85e5fdeMichael Krufky CAL_PLL, 1782f27dfc98cc0a183be9e3c2fc0da0450b85e5fdeMichael Krufky /* tda18271_map */ 1792f27dfc98cc0a183be9e3c2fc0da0450b85e5fdeMichael Krufky RF_CAL, 1802f27dfc98cc0a183be9e3c2fc0da0450b85e5fdeMichael Krufky RF_CAL_KMCO, 181255b5113b4ed683898a24e381155c081f03411f7Michael Krufky RF_CAL_DC_OVER_DT, 1822f27dfc98cc0a183be9e3c2fc0da0450b85e5fdeMichael Krufky BP_FILTER, 1832f27dfc98cc0a183be9e3c2fc0da0450b85e5fdeMichael Krufky RF_BAND, 1842f27dfc98cc0a183be9e3c2fc0da0450b85e5fdeMichael Krufky GAIN_TAPER, 1852f27dfc98cc0a183be9e3c2fc0da0450b85e5fdeMichael Krufky IR_MEASURE, 1862f27dfc98cc0a183be9e3c2fc0da0450b85e5fdeMichael Krufky}; 1872f27dfc98cc0a183be9e3c2fc0da0450b85e5fdeMichael Krufky 188255b5113b4ed683898a24e381155c081f03411f7Michael Krufkyextern int tda18271_lookup_pll_map(struct dvb_frontend *fe, 189255b5113b4ed683898a24e381155c081f03411f7Michael Krufky enum tda18271_map_type map_type, 1902f27dfc98cc0a183be9e3c2fc0da0450b85e5fdeMichael Krufky u32 *freq, u8 *post_div, u8 *div); 191255b5113b4ed683898a24e381155c081f03411f7Michael Krufkyextern int tda18271_lookup_map(struct dvb_frontend *fe, 192255b5113b4ed683898a24e381155c081f03411f7Michael Krufky enum tda18271_map_type map_type, 1932f27dfc98cc0a183be9e3c2fc0da0450b85e5fdeMichael Krufky u32 *freq, u8 *val); 1946ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky 195255b5113b4ed683898a24e381155c081f03411f7Michael Krufkyextern int tda18271_lookup_thermometer(struct dvb_frontend *fe); 196255b5113b4ed683898a24e381155c081f03411f7Michael Krufky 197255b5113b4ed683898a24e381155c081f03411f7Michael Krufkyextern int tda18271_lookup_rf_band(struct dvb_frontend *fe, 198255b5113b4ed683898a24e381155c081f03411f7Michael Krufky u32 *freq, u8 *rf_band); 199255b5113b4ed683898a24e381155c081f03411f7Michael Krufky 200255b5113b4ed683898a24e381155c081f03411f7Michael Krufkyextern int tda18271_lookup_cid_target(struct dvb_frontend *fe, 201255b5113b4ed683898a24e381155c081f03411f7Michael Krufky u32 *freq, u8 *cid_target, 202255b5113b4ed683898a24e381155c081f03411f7Michael Krufky u16 *count_limit); 203255b5113b4ed683898a24e381155c081f03411f7Michael Krufky 204255b5113b4ed683898a24e381155c081f03411f7Michael Krufkyextern int tda18271_assign_map_layout(struct dvb_frontend *fe); 205255b5113b4ed683898a24e381155c081f03411f7Michael Krufky 20659067f7ed491ec95e6e9033e35e1ae726cff3ceeMichael Krufky/*---------------------------------------------------------------------*/ 20759067f7ed491ec95e6e9033e35e1ae726cff3ceeMichael Krufky 20859067f7ed491ec95e6e9033e35e1ae726cff3ceeMichael Krufkyextern int tda18271_read_regs(struct dvb_frontend *fe); 20959067f7ed491ec95e6e9033e35e1ae726cff3ceeMichael Krufkyextern int tda18271_read_extended(struct dvb_frontend *fe); 21059067f7ed491ec95e6e9033e35e1ae726cff3ceeMichael Krufkyextern int tda18271_write_regs(struct dvb_frontend *fe, int idx, int len); 21159067f7ed491ec95e6e9033e35e1ae726cff3ceeMichael Krufkyextern int tda18271_init_regs(struct dvb_frontend *fe); 21259067f7ed491ec95e6e9033e35e1ae726cff3ceeMichael Krufky 2134efb0ca5d00f2c7a8bf9632556a4b4330cf409c5Michael Krufkyextern int tda18271_charge_pump_source(struct dvb_frontend *fe, 2144efb0ca5d00f2c7a8bf9632556a4b4330cf409c5Michael Krufky enum tda18271_pll pll, int force); 215518d87399baee908b0353bc0ef7d41c3c46295ecMichael Krufkyextern int tda18271_set_standby_mode(struct dvb_frontend *fe, 216518d87399baee908b0353bc0ef7d41c3c46295ecMichael Krufky int sm, int sm_lt, int sm_xt); 217518d87399baee908b0353bc0ef7d41c3c46295ecMichael Krufky 21859067f7ed491ec95e6e9033e35e1ae726cff3ceeMichael Krufkyextern int tda18271_calc_main_pll(struct dvb_frontend *fe, u32 freq); 21959067f7ed491ec95e6e9033e35e1ae726cff3ceeMichael Krufkyextern int tda18271_calc_cal_pll(struct dvb_frontend *fe, u32 freq); 22059067f7ed491ec95e6e9033e35e1ae726cff3ceeMichael Krufky 22159067f7ed491ec95e6e9033e35e1ae726cff3ceeMichael Krufkyextern int tda18271_calc_bp_filter(struct dvb_frontend *fe, u32 *freq); 22259067f7ed491ec95e6e9033e35e1ae726cff3ceeMichael Krufkyextern int tda18271_calc_km(struct dvb_frontend *fe, u32 *freq); 22359067f7ed491ec95e6e9033e35e1ae726cff3ceeMichael Krufkyextern int tda18271_calc_rf_band(struct dvb_frontend *fe, u32 *freq); 22459067f7ed491ec95e6e9033e35e1ae726cff3ceeMichael Krufkyextern int tda18271_calc_gain_taper(struct dvb_frontend *fe, u32 *freq); 22559067f7ed491ec95e6e9033e35e1ae726cff3ceeMichael Krufkyextern int tda18271_calc_ir_measure(struct dvb_frontend *fe, u32 *freq); 22659067f7ed491ec95e6e9033e35e1ae726cff3ceeMichael Krufkyextern int tda18271_calc_rf_cal(struct dvb_frontend *fe, u32 *freq); 22759067f7ed491ec95e6e9033e35e1ae726cff3ceeMichael Krufky 2286ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky#endif /* __TDA18271_PRIV_H__ */ 2296ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky 2306ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky/* 2316ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky * Overrides for Emacs so that we follow Linus's tabbing style. 2326ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky * --------------------------------------------------------------------------- 2336ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky * Local variables: 2346ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky * c-basic-offset: 8 2356ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky * End: 2366ca04de36b05aaf2f8122d0e566940969c6df801Michael Krufky */ 237