aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/dvb/frontends/dvb-pll.c47
-rw-r--r--drivers/media/dvb/frontends/dvb-pll.h1
2 files changed, 48 insertions, 0 deletions
diff --git a/drivers/media/dvb/frontends/dvb-pll.c b/drivers/media/dvb/frontends/dvb-pll.c
index a054894ff481..ea058153ebfa 100644
--- a/drivers/media/dvb/frontends/dvb-pll.c
+++ b/drivers/media/dvb/frontends/dvb-pll.c
@@ -343,6 +343,52 @@ static struct dvb_pll_desc dvb_pll_opera1 = {
343 } 343 }
344}; 344};
345 345
346static void samsung_dtos403ih102a_set(struct dvb_frontend *fe, u8 *buf,
347 const struct dvb_frontend_parameters *params)
348{
349 struct dvb_pll_priv *priv = fe->tuner_priv;
350 struct i2c_msg msg = {
351 .addr = priv->pll_i2c_address,
352 .flags = 0,
353 .buf = buf,
354 .len = 4
355 };
356 int result;
357
358 if (fe->ops.i2c_gate_ctrl)
359 fe->ops.i2c_gate_ctrl(fe, 1);
360
361 result = i2c_transfer(priv->i2c, &msg, 1);
362 if (result != 1)
363 printk(KERN_ERR "%s: i2c_transfer failed:%d",
364 __func__, result);
365
366 buf[2] = 0x9e;
367 buf[3] = 0x90;
368
369 return;
370}
371
372/* unknown pll used in Samsung DTOS403IH102A DVB-C tuner */
373static struct dvb_pll_desc dvb_pll_samsung_dtos403ih102a = {
374 .name = "Samsung DTOS403IH102A",
375 .min = 44250000,
376 .max = 858000000,
377 .iffreq = 36125000,
378 .count = 8,
379 .set = samsung_dtos403ih102a_set,
380 .entries = {
381 { 135000000, 62500, 0xbe, 0x01 },
382 { 177000000, 62500, 0xf6, 0x01 },
383 { 370000000, 62500, 0xbe, 0x02 },
384 { 450000000, 62500, 0xf6, 0x02 },
385 { 466000000, 62500, 0xfe, 0x02 },
386 { 538000000, 62500, 0xbe, 0x08 },
387 { 826000000, 62500, 0xf6, 0x08 },
388 { 999999999, 62500, 0xfe, 0x08 },
389 }
390};
391
346/* ----------------------------------------------------------- */ 392/* ----------------------------------------------------------- */
347 393
348static struct dvb_pll_desc *pll_list[] = { 394static struct dvb_pll_desc *pll_list[] = {
@@ -360,6 +406,7 @@ static struct dvb_pll_desc *pll_list[] = {
360 [DVB_PLL_SAMSUNG_TBMV] = &dvb_pll_samsung_tbmv, 406 [DVB_PLL_SAMSUNG_TBMV] = &dvb_pll_samsung_tbmv,
361 [DVB_PLL_PHILIPS_SD1878_TDA8261] = &dvb_pll_philips_sd1878_tda8261, 407 [DVB_PLL_PHILIPS_SD1878_TDA8261] = &dvb_pll_philips_sd1878_tda8261,
362 [DVB_PLL_OPERA1] = &dvb_pll_opera1, 408 [DVB_PLL_OPERA1] = &dvb_pll_opera1,
409 [DVB_PLL_SAMSUNG_DTOS403IH102A] = &dvb_pll_samsung_dtos403ih102a,
363}; 410};
364 411
365/* ----------------------------------------------------------- */ 412/* ----------------------------------------------------------- */
diff --git a/drivers/media/dvb/frontends/dvb-pll.h b/drivers/media/dvb/frontends/dvb-pll.h
index 872ca29e7cf3..05239f579ccf 100644
--- a/drivers/media/dvb/frontends/dvb-pll.h
+++ b/drivers/media/dvb/frontends/dvb-pll.h
@@ -22,6 +22,7 @@
22#define DVB_PLL_SAMSUNG_TBMV 11 22#define DVB_PLL_SAMSUNG_TBMV 11
23#define DVB_PLL_PHILIPS_SD1878_TDA8261 12 23#define DVB_PLL_PHILIPS_SD1878_TDA8261 12
24#define DVB_PLL_OPERA1 13 24#define DVB_PLL_OPERA1 13
25#define DVB_PLL_SAMSUNG_DTOS403IH102A 14
25 26
26/** 27/**
27 * Attach a dvb-pll to the supplied frontend structure. 28 * Attach a dvb-pll to the supplied frontend structure.