blob: 5209f46f089395bc4f8293dd3b5f7dfee91bc0ea [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
Johannes Stezenbach776338e2005-06-23 22:02:35 -07002 * descriptions + helper functions for simple dvb plls.
Linus Torvalds1da177e2005-04-16 15:20:36 -07003 */
4
Johannes Stezenbach5e9e7222005-05-16 21:54:37 -07005#ifndef __DVB_PLL_H__
6#define __DVB_PLL_H__
7
Andrew de Quincey272bc4d2006-04-18 17:47:12 -03008#include <linux/i2c.h>
9#include "dvb_frontend.h"
10
Linus Torvalds1da177e2005-04-16 15:20:36 -070011struct dvb_pll_desc {
12 char *name;
13 u32 min;
14 u32 max;
Trent Piephodf78cb02007-03-19 02:24:04 -030015 u32 iffreq;
Patrick Boettcher49dc82f2005-07-07 17:58:09 -070016 void (*setbw)(u8 *buf, u32 freq, int bandwidth);
Trent Piepho26aed922007-04-27 12:31:29 -030017 u8 *initdata;
Trent Piephod519dcf2007-03-19 02:24:09 -030018 u8 *sleepdata;
Linus Torvalds1da177e2005-04-16 15:20:36 -070019 int count;
20 struct {
21 u32 limit;
Linus Torvalds1da177e2005-04-16 15:20:36 -070022 u32 stepsize;
Michael Krufkyab66b222006-01-23 17:11:11 -020023 u8 config;
24 u8 cb;
Johannes Stezenbach776338e2005-06-23 22:02:35 -070025 } entries[12];
Linus Torvalds1da177e2005-04-16 15:20:36 -070026};
27
28extern struct dvb_pll_desc dvb_pll_thomson_dtt7579;
29extern struct dvb_pll_desc dvb_pll_thomson_dtt759x;
30extern struct dvb_pll_desc dvb_pll_thomson_dtt7610;
31extern struct dvb_pll_desc dvb_pll_lg_z201;
Mac Michaelsd8667cb2005-07-07 17:58:29 -070032extern struct dvb_pll_desc dvb_pll_microtune_4042;
Michael Krufky83ac87222006-01-09 15:25:29 -020033extern struct dvb_pll_desc dvb_pll_thomson_dtt761x;
Linus Torvalds1da177e2005-04-16 15:20:36 -070034extern struct dvb_pll_desc dvb_pll_unknown_1;
35
Johannes Stezenbach776338e2005-06-23 22:02:35 -070036extern struct dvb_pll_desc dvb_pll_tua6010xs;
37extern struct dvb_pll_desc dvb_pll_env57h1xd5;
38extern struct dvb_pll_desc dvb_pll_tua6034;
Michael Krufky30fa61a2006-04-27 01:31:26 -030039extern struct dvb_pll_desc dvb_pll_lg_tdvs_h06xf;
Johannes Stezenbach776338e2005-06-23 22:02:35 -070040extern struct dvb_pll_desc dvb_pll_tda665x;
Patrick Boettcher49dc82f2005-07-07 17:58:09 -070041extern struct dvb_pll_desc dvb_pll_fmd1216me;
Patrick Boettcher0589b8e2005-07-07 17:58:12 -070042extern struct dvb_pll_desc dvb_pll_tded4;
Johannes Stezenbach776338e2005-06-23 22:02:35 -070043
Kirk Lapray147418c2005-11-08 21:35:39 -080044extern struct dvb_pll_desc dvb_pll_tuv1236d;
45extern struct dvb_pll_desc dvb_pll_tdhu2;
Michael Krufky28f3d4b2006-01-23 17:11:07 -020046extern struct dvb_pll_desc dvb_pll_samsung_tbmv;
Regis Prevotf8bf1342006-01-11 23:31:53 -020047extern struct dvb_pll_desc dvb_pll_philips_sd1878_tda8261;
Jose Alberto Regueroa78d0bf2006-02-07 06:25:14 -020048extern struct dvb_pll_desc dvb_pll_philips_td1316;
Kirk Lapray147418c2005-11-08 21:35:39 -080049
Michael Krufky91ae3292006-03-01 00:04:42 -030050extern struct dvb_pll_desc dvb_pll_thomson_fe6600;
Marco Gittler941491f2007-04-19 11:26:47 -030051extern struct dvb_pll_desc dvb_pll_opera1;
Chris Pascoe780dfef2006-02-28 08:34:59 -030052
Andrew de Quincey272bc4d2006-04-18 17:47:12 -030053extern int dvb_pll_configure(struct dvb_pll_desc *desc, u8 *buf,
Michael Krufky47ae9ae2006-11-20 16:38:42 -030054 u32 freq, int bandwidth);
Linus Torvalds1da177e2005-04-16 15:20:36 -070055
Andrew de Quincey272bc4d2006-04-18 17:47:12 -030056/**
57 * Attach a dvb-pll to the supplied frontend structure.
58 *
59 * @param fe Frontend to attach to.
60 * @param pll_addr i2c address of the PLL (if used).
61 * @param i2c i2c adapter to use (set to NULL if not used).
62 * @param desc dvb_pll_desc to use.
Andrew de Quincey2bfe0312006-08-08 09:10:08 -030063 * @return Frontend pointer on success, NULL on failure
Andrew de Quincey272bc4d2006-04-18 17:47:12 -030064 */
Trent Piepho9ab1ba32007-04-27 12:31:28 -030065#if defined(CONFIG_DVB_PLL) || (defined(CONFIG_DVB_PLL_MODULE) && defined(MODULE))
Michael Krufky47ae9ae2006-11-20 16:38:42 -030066extern struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe,
67 int pll_addr,
68 struct i2c_adapter *i2c,
69 struct dvb_pll_desc *desc);
Trent Piepho9ab1ba32007-04-27 12:31:28 -030070#else
71static inline struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe,
72 int pll_addr,
73 struct i2c_adapter *i2c,
74 struct dvb_pll_desc *desc)
75{
76 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
77 return NULL;
78}
79#endif
Andrew de Quincey272bc4d2006-04-18 17:47:12 -030080
Johannes Stezenbach5e9e7222005-05-16 21:54:37 -070081#endif