V4L/DVB (3291): Added support for xc3028 analogue tuner (Hauppauge HVR900, Terratec...
authorMarkus Rechberger <mrechberger@gmail.com>
Mon, 27 Feb 2006 03:07:27 +0000 (00:07 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Mon, 27 Feb 2006 03:07:27 +0000 (00:07 -0300)
Added support for xc3028 to v4l which adds support for:
 * Terratec Hybrid XS (analogue)
 * Hauppauge HVR 900 (analogue)

Signed-off-by: Markus Rechberger <mrechberger@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Documentation/video4linux/CARDLIST.tuner
drivers/media/video/Makefile
drivers/media/video/em28xx/em28xx-cards.c
drivers/media/video/tuner-core.c
drivers/media/video/tuner-types.c
include/media/tuner.h

index f6d0cf7b792239985a4d1e40132c4e56ffbc4775..de48438d511560375486d03c26f52954839860d6 100644 (file)
@@ -69,3 +69,4 @@ tuner=67 - Philips TD1316 Hybrid Tuner
 tuner=68 - Philips TUV1236D ATSC/NTSC dual in
 tuner=69 - Tena TNF 5335 MF
 tuner=70 - Samsung TCPN 2121P30A
+tuner=71 - Xceive xc3028
index faf728366c4e4e57655939d8540b2908b8fd1691..60e9c6e3f2b775c3edba790bef5a4cfcbaa802c0 100644 (file)
@@ -9,7 +9,7 @@ zoran-objs      :=      zr36120.o zr36120_i2c.o zr36120_mem.o
 zr36067-objs   :=      zoran_procfs.o zoran_device.o \
                        zoran_driver.o zoran_card.o
 tuner-objs     :=      tuner-core.o tuner-types.o tuner-simple.o \
-                       mt20xx.o tda8290.o tea5767.o
+                       mt20xx.o tda8290.o tea5767.o xc3028.o
 
 msp3400-objs   :=      msp3400-driver.o msp3400-kthreads.o
 
index 703927e8da134dacd263710732da0d78f9e6b2d6..e9834c159aecd225a2e8cd8f829301f0a3f67778 100644 (file)
@@ -158,8 +158,8 @@ struct em28xx_board em28xx_boards[] = {
                .name         = "Hauppauge WinTV HVR 900",
                .vchannels    = 3,
                .norm         = VIDEO_MODE_PAL,
-               .has_tuner    = 0,
                .tda9887_conf = TDA9887_PRESENT,
+               .tuner_type   = TUNER_XCEIVE_XC3028,
                .has_tuner    = 1,
                .decoder      = EM28XX_TVP5150,
                .input          = {{
@@ -180,8 +180,8 @@ struct em28xx_board em28xx_boards[] = {
                .name         = "Terratec Hybrid XS",
                .vchannels    = 3,
                .norm         = VIDEO_MODE_PAL,
-               .has_tuner    = 0,
                .tda9887_conf = TDA9887_PRESENT,
+               .tuner_type   = TUNER_XCEIVE_XC3028,
                .has_tuner    = 1,
                .decoder      = EM28XX_TVP5150,
                .input          = {{
index e34f801c9a108413f00215c285cdf7347384b229..520f274c89e5b12c3b4a124920ea4662850db3bf 100644 (file)
@@ -217,6 +217,9 @@ static void set_type(struct i2c_client *c, unsigned int type,
                i2c_master_send(c,buffer,4);
                default_tuner_init(c);
                break;
+       case TUNER_XCEIVE_XC3028:
+               xc3028_init(c);
+               break;
        default:
                default_tuner_init(c);
                break;
index a90bc04cf80757b5ab373f5a842e2b7b1705c442..a4384e6e53188e79075695f2d60ba5243f84d547 100644 (file)
@@ -983,6 +983,23 @@ static struct tuner_params tuner_samsung_tcpn_2121p30a_params[] = {
        },
 };
 
+/* ------------ TUNER_XCEIVE_XC3028 - Xceive xc3028 ------------ */
+
+static struct tuner_range tuner_xceive_xc3028_ranges[] = {
+       { 16 * 140.25 /*MHz*/, 0x02, },
+       { 16 * 463.25 /*MHz*/, 0x04, },
+       { 16 * 999.99        , 0x01, },
+};
+
+static struct tuner_params tuner_xceive_xc3028_params[] = {
+       {
+               .type   = TUNER_XCEIVE_XC3028,
+               .ranges = tuner_xceive_xc3028_ranges,
+               .count  = ARRAY_SIZE(tuner_xceive_xc3028_ranges),
+       },
+};
+
+
 /* --------------------------------------------------------------------- */
 
 struct tunertype tuners[] = {
@@ -1350,6 +1367,10 @@ struct tunertype tuners[] = {
                .params = tuner_samsung_tcpn_2121p30a_params,
                .count  = ARRAY_SIZE(tuner_samsung_tcpn_2121p30a_params),
        },
+       [TUNER_XCEIVE_XC3028] = { /* Xceive 3028 */
+               .name   = "Xceive xc3028",
+               .params = tuner_xceive_xc3028_params,
+       },
 };
 
 unsigned const int tuner_count = ARRAY_SIZE(tuners);
index a5beeac495c78bd9a84379126a8da5399a1dec36..f51759c0d1804c405d3e55ec724611e2db83b7f6 100644 (file)
 #define TUNER_TNF_5335MF                69     /* Sabrent Bt848   */
 #define TUNER_SAMSUNG_TCPN_2121P30A     70     /* Hauppauge PVR-500MCE NTSC */
 
+#define TUNER_XCEIVE_XC3028            71
+
 /* tv card specific */
 #define TDA9887_PRESENT                (1<<0)
 #define TDA9887_PORT1_INACTIVE                 (1<<1)
@@ -209,6 +211,7 @@ struct tuner {
 extern unsigned const int tuner_count;
 
 extern int microtune_init(struct i2c_client *c);
+extern int xc3028_init(struct i2c_client *c);
 extern int tda8290_init(struct i2c_client *c);
 extern int tda8290_probe(struct i2c_client *c);
 extern int tea5767_tuner_init(struct i2c_client *c);