blob: bb79a78151f568da2c98a6dbfbddeec023b63272 [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;
Patrick Boettcher49dc82f2005-07-07 17:58:09 -070015 void (*setbw)(u8 *buf, u32 freq, int bandwidth);
Trent Piepho26aed922007-04-27 12:31:29 -030016 u8 *initdata;
Linus Torvalds1da177e2005-04-16 15:20:36 -070017 int count;
18 struct {
19 u32 limit;
20 u32 offset;
21 u32 stepsize;
Michael Krufkyab66b222006-01-23 17:11:11 -020022 u8 config;
23 u8 cb;
Johannes Stezenbach776338e2005-06-23 22:02:35 -070024 } entries[12];
Linus Torvalds1da177e2005-04-16 15:20:36 -070025};
26
27extern struct dvb_pll_desc dvb_pll_thomson_dtt7579;
28extern struct dvb_pll_desc dvb_pll_thomson_dtt759x;
29extern struct dvb_pll_desc dvb_pll_thomson_dtt7610;
30extern struct dvb_pll_desc dvb_pll_lg_z201;
Mac Michaelsd8667cb2005-07-07 17:58:29 -070031extern struct dvb_pll_desc dvb_pll_microtune_4042;
Michael Krufky83ac87222006-01-09 15:25:29 -020032extern struct dvb_pll_desc dvb_pll_thomson_dtt761x;
Linus Torvalds1da177e2005-04-16 15:20:36 -070033extern struct dvb_pll_desc dvb_pll_unknown_1;
34
Johannes Stezenbach776338e2005-06-23 22:02:35 -070035extern struct dvb_pll_desc dvb_pll_tua6010xs;
36extern struct dvb_pll_desc dvb_pll_env57h1xd5;
37extern struct dvb_pll_desc dvb_pll_tua6034;
Michael Krufky30fa61a2006-04-27 01:31:26 -030038extern struct dvb_pll_desc dvb_pll_lg_tdvs_h06xf;
Johannes Stezenbach776338e2005-06-23 22:02:35 -070039extern struct dvb_pll_desc dvb_pll_tda665x;
Patrick Boettcher49dc82f2005-07-07 17:58:09 -070040extern struct dvb_pll_desc dvb_pll_fmd1216me;
Patrick Boettcher0589b8e2005-07-07 17:58:12 -070041extern struct dvb_pll_desc dvb_pll_tded4;
Johannes Stezenbach776338e2005-06-23 22:02:35 -070042
Kirk Lapray147418c2005-11-08 21:35:39 -080043extern struct dvb_pll_desc dvb_pll_tuv1236d;
44extern struct dvb_pll_desc dvb_pll_tdhu2;
Michael Krufky28f3d4b2006-01-23 17:11:07 -020045extern struct dvb_pll_desc dvb_pll_samsung_tbmv;
Regis Prevotf8bf1342006-01-11 23:31:53 -020046extern struct dvb_pll_desc dvb_pll_philips_sd1878_tda8261;
Jose Alberto Regueroa78d0bf2006-02-07 06:25:14 -020047extern struct dvb_pll_desc dvb_pll_philips_td1316;
Kirk Lapray147418c2005-11-08 21:35:39 -080048
Michael Krufky91ae3292006-03-01 00:04:42 -030049extern struct dvb_pll_desc dvb_pll_thomson_fe6600;
Chris Pascoe780dfef2006-02-28 08:34:59 -030050
Andrew de Quincey272bc4d2006-04-18 17:47:12 -030051extern int dvb_pll_configure(struct dvb_pll_desc *desc, u8 *buf,
Michael Krufky47ae9ae2006-11-20 16:38:42 -030052 u32 freq, int bandwidth);
Linus Torvalds1da177e2005-04-16 15:20:36 -070053
Andrew de Quincey272bc4d2006-04-18 17:47:12 -030054/**
55 * Attach a dvb-pll to the supplied frontend structure.
56 *
57 * @param fe Frontend to attach to.
58 * @param pll_addr i2c address of the PLL (if used).
59 * @param i2c i2c adapter to use (set to NULL if not used).
60 * @param desc dvb_pll_desc to use.
Andrew de Quincey2bfe0312006-08-08 09:10:08 -030061 * @return Frontend pointer on success, NULL on failure
Andrew de Quincey272bc4d2006-04-18 17:47:12 -030062 */
Trent Piepho9ab1ba32007-04-27 12:31:28 -030063#if defined(CONFIG_DVB_PLL) || (defined(CONFIG_DVB_PLL_MODULE) && defined(MODULE))
Michael Krufky47ae9ae2006-11-20 16:38:42 -030064extern struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe,
65 int pll_addr,
66 struct i2c_adapter *i2c,
67 struct dvb_pll_desc *desc);
Trent Piepho9ab1ba32007-04-27 12:31:28 -030068#else
69static inline struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe,
70 int pll_addr,
71 struct i2c_adapter *i2c,
72 struct dvb_pll_desc *desc)
73{
74 printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __FUNCTION__);
75 return NULL;
76}
77#endif
Andrew de Quincey272bc4d2006-04-18 17:47:12 -030078
Johannes Stezenbach5e9e7222005-05-16 21:54:37 -070079#endif