V4L/DVB (12288): dvb-pll: Add support for Samsung TBDU18132 DVB-S NIM
authorTrent Piepho <xyzzy@speakeasy.org>
Thu, 11 Jun 2009 22:21:34 +0000 (19:21 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Sat, 12 Sep 2009 15:17:48 +0000 (12:17 -0300)
Tuner parameters taken from flexcop driver.  This PLL has a 17 bit divisor
while the dvb-pll driver is designed for 15 bit divisors.  It's not a
problem as 15 bits is enough for the tuner's entire range.  But if a larger
range was wanted, it could be done by adding additional bands with the
extra divisor bits appearing as band switch bits.

Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/frontends/dvb-pll.c
drivers/media/dvb/frontends/dvb-pll.h

index 7bafe4b..7d2d487 100644 (file)
@@ -403,6 +403,27 @@ static struct dvb_pll_desc dvb_pll_samsung_tdtc9251dh0 = {
        }
 };
 
+/* Samsung TBDU18132 DVB-S NIM with TSA5059 PLL, used in SkyStar2 DVB-S 2.3 */
+static struct dvb_pll_desc dvb_pll_samsung_tbdu18132 = {
+       .name = "Samsung TBDU18132",
+       .min    =  950000,
+       .max    = 2150000, /* guesses */
+       .iffreq = 0,
+       .count = 2,
+       .entries = {
+               { 1550000, 125, 0x84, 0x82 },
+               { 4095937, 125, 0x84, 0x80 },
+       }
+       /* TSA5059 PLL has a 17 bit divisor rather than the 15 bits supported
+        * by this driver.  The two extra bits are 0x60 in the third byte.  15
+        * bits is enough for over 4 GHz, which is enough to cover the range
+        * of this tuner.  We could use the additional divisor bits by adding
+        * more entries, e.g.
+        { 0x0ffff * 125 + 125/2, 125, 0x84 | 0x20, },
+        { 0x17fff * 125 + 125/2, 125, 0x84 | 0x40, },
+        { 0x1ffff * 125 + 125/2, 125, 0x84 | 0x60, }, */
+};
+
 /* ----------------------------------------------------------- */
 
 static struct dvb_pll_desc *pll_list[] = {
@@ -422,6 +443,7 @@ static struct dvb_pll_desc *pll_list[] = {
        [DVB_PLL_OPERA1]                 = &dvb_pll_opera1,
        [DVB_PLL_SAMSUNG_DTOS403IH102A]  = &dvb_pll_samsung_dtos403ih102a,
        [DVB_PLL_SAMSUNG_TDTC9251DH0]    = &dvb_pll_samsung_tdtc9251dh0,
+       [DVB_PLL_SAMSUNG_TBDU18132]      = &dvb_pll_samsung_tbdu18132,
 };
 
 /* ----------------------------------------------------------- */
index dcbb283..7905f34 100644 (file)
@@ -24,6 +24,7 @@
 #define DVB_PLL_OPERA1                 13
 #define DVB_PLL_SAMSUNG_DTOS403IH102A  14
 #define DVB_PLL_SAMSUNG_TDTC9251DH0    15
+#define DVB_PLL_SAMSUNG_TBDU18132      16
 
 /**
  * Attach a dvb-pll to the supplied frontend structure.