diff options
-rw-r--r-- | drivers/media/dvb/frontends/dvb-pll.c | 47 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/dvb-pll.h | 1 |
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 | ||
346 | static 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 */ | ||
373 | static 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 | ||
348 | static struct dvb_pll_desc *pll_list[] = { | 394 | static 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. |