diff options
author | Patrick Boettcher <pb@linuxtv.org> | 2005-07-07 20:58:09 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-07-07 21:23:59 -0400 |
commit | 49dc82fdac3866e6ce9c978df80cedfb735d740c (patch) | |
tree | 9dd4c78e9b616577ff99a475a2f50af392f8b923 /drivers/media/dvb | |
parent | 7f5fee57812c99c95edf6794a50413c75e99fd4d (diff) |
[PATCH] dvb: frontend: add FMD1216ME PLL
o change dvb-pll desc to take the frequency as parameter for setbw-callback
into consideration
o added dvb-pll desc for Philips FMD1216ME (needed for cxusb)
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/media/dvb')
-rw-r--r-- | drivers/media/dvb/frontends/dvb-pll.c | 35 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/dvb-pll.h | 3 |
2 files changed, 33 insertions, 5 deletions
diff --git a/drivers/media/dvb/frontends/dvb-pll.c b/drivers/media/dvb/frontends/dvb-pll.c index f73b5f48e235..818526869804 100644 --- a/drivers/media/dvb/frontends/dvb-pll.c +++ b/drivers/media/dvb/frontends/dvb-pll.c | |||
@@ -55,7 +55,7 @@ struct dvb_pll_desc dvb_pll_thomson_dtt7610 = { | |||
55 | }; | 55 | }; |
56 | EXPORT_SYMBOL(dvb_pll_thomson_dtt7610); | 56 | EXPORT_SYMBOL(dvb_pll_thomson_dtt7610); |
57 | 57 | ||
58 | static void thomson_dtt759x_bw(u8 *buf, int bandwidth) | 58 | static void thomson_dtt759x_bw(u8 *buf, u32 freq, int bandwidth) |
59 | { | 59 | { |
60 | if (BANDWIDTH_7_MHZ == bandwidth) | 60 | if (BANDWIDTH_7_MHZ == bandwidth) |
61 | buf[3] |= 0x10; | 61 | buf[3] |= 0x10; |
@@ -146,7 +146,7 @@ EXPORT_SYMBOL(dvb_pll_env57h1xd5); | |||
146 | /* Philips TDA6650/TDA6651 | 146 | /* Philips TDA6650/TDA6651 |
147 | * used in Panasonic ENV77H11D5 | 147 | * used in Panasonic ENV77H11D5 |
148 | */ | 148 | */ |
149 | static void tda665x_bw(u8 *buf, int bandwidth) | 149 | static void tda665x_bw(u8 *buf, u32 freq, int bandwidth) |
150 | { | 150 | { |
151 | if (bandwidth == BANDWIDTH_8_MHZ) | 151 | if (bandwidth == BANDWIDTH_8_MHZ) |
152 | buf[3] |= 0x08; | 152 | buf[3] |= 0x08; |
@@ -178,7 +178,7 @@ EXPORT_SYMBOL(dvb_pll_tda665x); | |||
178 | /* Infineon TUA6034 | 178 | /* Infineon TUA6034 |
179 | * used in LG TDTP E102P | 179 | * used in LG TDTP E102P |
180 | */ | 180 | */ |
181 | static void tua6034_bw(u8 *buf, int bandwidth) | 181 | static void tua6034_bw(u8 *buf, u32 freq, int bandwidth) |
182 | { | 182 | { |
183 | if (BANDWIDTH_7_MHZ != bandwidth) | 183 | if (BANDWIDTH_7_MHZ != bandwidth) |
184 | buf[3] |= 0x08; | 184 | buf[3] |= 0x08; |
@@ -198,6 +198,33 @@ struct dvb_pll_desc dvb_pll_tua6034 = { | |||
198 | }; | 198 | }; |
199 | EXPORT_SYMBOL(dvb_pll_tua6034); | 199 | EXPORT_SYMBOL(dvb_pll_tua6034); |
200 | 200 | ||
201 | /* Philips FMD1216ME | ||
202 | * used in Medion Hybrid PCMCIA card and USB Box | ||
203 | */ | ||
204 | static void fmd1216me_bw(u8 *buf, u32 freq, int bandwidth) | ||
205 | { | ||
206 | if (bandwidth == BANDWIDTH_8_MHZ && freq >= 158870000) | ||
207 | buf[3] |= 0x08; | ||
208 | } | ||
209 | |||
210 | struct dvb_pll_desc dvb_pll_fmd1216me = { | ||
211 | .name = "placeholder", | ||
212 | .min = 50870000, | ||
213 | .max = 858000000, | ||
214 | .setbw = fmd1216me_bw, | ||
215 | .count = 7, | ||
216 | .entries = { | ||
217 | { 143870000, 36213333, 166667, 0xbc, 0x41 }, | ||
218 | { 158870000, 36213333, 166667, 0xf4, 0x41 }, | ||
219 | { 329870000, 36213333, 166667, 0xbc, 0x42 }, | ||
220 | { 441870000, 36213333, 166667, 0xf4, 0x42 }, | ||
221 | { 625870000, 36213333, 166667, 0xbc, 0x44 }, | ||
222 | { 803870000, 36213333, 166667, 0xf4, 0x44 }, | ||
223 | { 999999999, 36213333, 166667, 0xfc, 0x44 }, | ||
224 | } | ||
225 | }; | ||
226 | EXPORT_SYMBOL(dvb_pll_fmd1216me); | ||
227 | |||
201 | /* ----------------------------------------------------------- */ | 228 | /* ----------------------------------------------------------- */ |
202 | /* code */ | 229 | /* code */ |
203 | 230 | ||
@@ -231,7 +258,7 @@ int dvb_pll_configure(struct dvb_pll_desc *desc, u8 *buf, | |||
231 | buf[3] = desc->entries[i].cb2; | 258 | buf[3] = desc->entries[i].cb2; |
232 | 259 | ||
233 | if (desc->setbw) | 260 | if (desc->setbw) |
234 | desc->setbw(buf, bandwidth); | 261 | desc->setbw(buf, freq, bandwidth); |
235 | 262 | ||
236 | if (debug) | 263 | if (debug) |
237 | printk("pll: %s: div=%d | buf=0x%02x,0x%02x,0x%02x,0x%02x\n", | 264 | printk("pll: %s: div=%d | buf=0x%02x,0x%02x,0x%02x,0x%02x\n", |
diff --git a/drivers/media/dvb/frontends/dvb-pll.h b/drivers/media/dvb/frontends/dvb-pll.h index b796778624b6..dc4e1d49ef83 100644 --- a/drivers/media/dvb/frontends/dvb-pll.h +++ b/drivers/media/dvb/frontends/dvb-pll.h | |||
@@ -9,7 +9,7 @@ struct dvb_pll_desc { | |||
9 | char *name; | 9 | char *name; |
10 | u32 min; | 10 | u32 min; |
11 | u32 max; | 11 | u32 max; |
12 | void (*setbw)(u8 *buf, int bandwidth); | 12 | void (*setbw)(u8 *buf, u32 freq, int bandwidth); |
13 | int count; | 13 | int count; |
14 | struct { | 14 | struct { |
15 | u32 limit; | 15 | u32 limit; |
@@ -30,6 +30,7 @@ extern struct dvb_pll_desc dvb_pll_tua6010xs; | |||
30 | extern struct dvb_pll_desc dvb_pll_env57h1xd5; | 30 | extern struct dvb_pll_desc dvb_pll_env57h1xd5; |
31 | extern struct dvb_pll_desc dvb_pll_tua6034; | 31 | extern struct dvb_pll_desc dvb_pll_tua6034; |
32 | extern struct dvb_pll_desc dvb_pll_tda665x; | 32 | extern struct dvb_pll_desc dvb_pll_tda665x; |
33 | extern struct dvb_pll_desc dvb_pll_fmd1216me; | ||
33 | 34 | ||
34 | int dvb_pll_configure(struct dvb_pll_desc *desc, u8 *buf, | 35 | int dvb_pll_configure(struct dvb_pll_desc *desc, u8 *buf, |
35 | u32 freq, int bandwidth); | 36 | u32 freq, int bandwidth); |