aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Rechberger <mrechberger@gmail.com>2006-02-26 22:07:27 -0500
committerMauro Carvalho Chehab <mchehab@infradead.org>2006-02-26 22:07:27 -0500
commit0004fd59d57a5875db8897966c414a88b5dad481 (patch)
treee0f28025301fb87125c38ed51a51f6f29456d1fa
parent1d519605f13dd2c51024060465a16ddd1abfb649 (diff)
V4L/DVB (3291): Added support for xc3028 analogue tuner (Hauppauge HVR900, Terratec Hybrid XS)
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>
-rw-r--r--Documentation/video4linux/CARDLIST.tuner1
-rw-r--r--drivers/media/video/Makefile2
-rw-r--r--drivers/media/video/em28xx/em28xx-cards.c4
-rw-r--r--drivers/media/video/tuner-core.c3
-rw-r--r--drivers/media/video/tuner-types.c21
-rw-r--r--include/media/tuner.h3
6 files changed, 31 insertions, 3 deletions
diff --git a/Documentation/video4linux/CARDLIST.tuner b/Documentation/video4linux/CARDLIST.tuner
index f6d0cf7b7922..de48438d5115 100644
--- a/Documentation/video4linux/CARDLIST.tuner
+++ b/Documentation/video4linux/CARDLIST.tuner
@@ -69,3 +69,4 @@ tuner=67 - Philips TD1316 Hybrid Tuner
69tuner=68 - Philips TUV1236D ATSC/NTSC dual in 69tuner=68 - Philips TUV1236D ATSC/NTSC dual in
70tuner=69 - Tena TNF 5335 MF 70tuner=69 - Tena TNF 5335 MF
71tuner=70 - Samsung TCPN 2121P30A 71tuner=70 - Samsung TCPN 2121P30A
72tuner=71 - Xceive xc3028
diff --git a/drivers/media/video/Makefile b/drivers/media/video/Makefile
index faf728366c4e..60e9c6e3f2b7 100644
--- a/drivers/media/video/Makefile
+++ b/drivers/media/video/Makefile
@@ -9,7 +9,7 @@ zoran-objs := zr36120.o zr36120_i2c.o zr36120_mem.o
9zr36067-objs := zoran_procfs.o zoran_device.o \ 9zr36067-objs := zoran_procfs.o zoran_device.o \
10 zoran_driver.o zoran_card.o 10 zoran_driver.o zoran_card.o
11tuner-objs := tuner-core.o tuner-types.o tuner-simple.o \ 11tuner-objs := tuner-core.o tuner-types.o tuner-simple.o \
12 mt20xx.o tda8290.o tea5767.o 12 mt20xx.o tda8290.o tea5767.o xc3028.o
13 13
14msp3400-objs := msp3400-driver.o msp3400-kthreads.o 14msp3400-objs := msp3400-driver.o msp3400-kthreads.o
15 15
diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c
index 703927e8da13..e9834c159aec 100644
--- a/drivers/media/video/em28xx/em28xx-cards.c
+++ b/drivers/media/video/em28xx/em28xx-cards.c
@@ -158,8 +158,8 @@ struct em28xx_board em28xx_boards[] = {
158 .name = "Hauppauge WinTV HVR 900", 158 .name = "Hauppauge WinTV HVR 900",
159 .vchannels = 3, 159 .vchannels = 3,
160 .norm = VIDEO_MODE_PAL, 160 .norm = VIDEO_MODE_PAL,
161 .has_tuner = 0,
162 .tda9887_conf = TDA9887_PRESENT, 161 .tda9887_conf = TDA9887_PRESENT,
162 .tuner_type = TUNER_XCEIVE_XC3028,
163 .has_tuner = 1, 163 .has_tuner = 1,
164 .decoder = EM28XX_TVP5150, 164 .decoder = EM28XX_TVP5150,
165 .input = {{ 165 .input = {{
@@ -180,8 +180,8 @@ struct em28xx_board em28xx_boards[] = {
180 .name = "Terratec Hybrid XS", 180 .name = "Terratec Hybrid XS",
181 .vchannels = 3, 181 .vchannels = 3,
182 .norm = VIDEO_MODE_PAL, 182 .norm = VIDEO_MODE_PAL,
183 .has_tuner = 0,
184 .tda9887_conf = TDA9887_PRESENT, 183 .tda9887_conf = TDA9887_PRESENT,
184 .tuner_type = TUNER_XCEIVE_XC3028,
185 .has_tuner = 1, 185 .has_tuner = 1,
186 .decoder = EM28XX_TVP5150, 186 .decoder = EM28XX_TVP5150,
187 .input = {{ 187 .input = {{
diff --git a/drivers/media/video/tuner-core.c b/drivers/media/video/tuner-core.c
index e34f801c9a10..520f274c89e5 100644
--- a/drivers/media/video/tuner-core.c
+++ b/drivers/media/video/tuner-core.c
@@ -217,6 +217,9 @@ static void set_type(struct i2c_client *c, unsigned int type,
217 i2c_master_send(c,buffer,4); 217 i2c_master_send(c,buffer,4);
218 default_tuner_init(c); 218 default_tuner_init(c);
219 break; 219 break;
220 case TUNER_XCEIVE_XC3028:
221 xc3028_init(c);
222 break;
220 default: 223 default:
221 default_tuner_init(c); 224 default_tuner_init(c);
222 break; 225 break;
diff --git a/drivers/media/video/tuner-types.c b/drivers/media/video/tuner-types.c
index a90bc04cf807..a4384e6e5318 100644
--- a/drivers/media/video/tuner-types.c
+++ b/drivers/media/video/tuner-types.c
@@ -983,6 +983,23 @@ static struct tuner_params tuner_samsung_tcpn_2121p30a_params[] = {
983 }, 983 },
984}; 984};
985 985
986/* ------------ TUNER_XCEIVE_XC3028 - Xceive xc3028 ------------ */
987
988static struct tuner_range tuner_xceive_xc3028_ranges[] = {
989 { 16 * 140.25 /*MHz*/, 0x02, },
990 { 16 * 463.25 /*MHz*/, 0x04, },
991 { 16 * 999.99 , 0x01, },
992};
993
994static struct tuner_params tuner_xceive_xc3028_params[] = {
995 {
996 .type = TUNER_XCEIVE_XC3028,
997 .ranges = tuner_xceive_xc3028_ranges,
998 .count = ARRAY_SIZE(tuner_xceive_xc3028_ranges),
999 },
1000};
1001
1002
986/* --------------------------------------------------------------------- */ 1003/* --------------------------------------------------------------------- */
987 1004
988struct tunertype tuners[] = { 1005struct tunertype tuners[] = {
@@ -1350,6 +1367,10 @@ struct tunertype tuners[] = {
1350 .params = tuner_samsung_tcpn_2121p30a_params, 1367 .params = tuner_samsung_tcpn_2121p30a_params,
1351 .count = ARRAY_SIZE(tuner_samsung_tcpn_2121p30a_params), 1368 .count = ARRAY_SIZE(tuner_samsung_tcpn_2121p30a_params),
1352 }, 1369 },
1370 [TUNER_XCEIVE_XC3028] = { /* Xceive 3028 */
1371 .name = "Xceive xc3028",
1372 .params = tuner_xceive_xc3028_params,
1373 },
1353}; 1374};
1354 1375
1355unsigned const int tuner_count = ARRAY_SIZE(tuners); 1376unsigned const int tuner_count = ARRAY_SIZE(tuners);
diff --git a/include/media/tuner.h b/include/media/tuner.h
index a5beeac495c7..f51759c0d180 100644
--- a/include/media/tuner.h
+++ b/include/media/tuner.h
@@ -117,6 +117,8 @@
117#define TUNER_TNF_5335MF 69 /* Sabrent Bt848 */ 117#define TUNER_TNF_5335MF 69 /* Sabrent Bt848 */
118#define TUNER_SAMSUNG_TCPN_2121P30A 70 /* Hauppauge PVR-500MCE NTSC */ 118#define TUNER_SAMSUNG_TCPN_2121P30A 70 /* Hauppauge PVR-500MCE NTSC */
119 119
120#define TUNER_XCEIVE_XC3028 71
121
120/* tv card specific */ 122/* tv card specific */
121#define TDA9887_PRESENT (1<<0) 123#define TDA9887_PRESENT (1<<0)
122#define TDA9887_PORT1_INACTIVE (1<<1) 124#define TDA9887_PORT1_INACTIVE (1<<1)
@@ -209,6 +211,7 @@ struct tuner {
209extern unsigned const int tuner_count; 211extern unsigned const int tuner_count;
210 212
211extern int microtune_init(struct i2c_client *c); 213extern int microtune_init(struct i2c_client *c);
214extern int xc3028_init(struct i2c_client *c);
212extern int tda8290_init(struct i2c_client *c); 215extern int tda8290_init(struct i2c_client *c);
213extern int tda8290_probe(struct i2c_client *c); 216extern int tda8290_probe(struct i2c_client *c);
214extern int tea5767_tuner_init(struct i2c_client *c); 217extern int tea5767_tuner_init(struct i2c_client *c);