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