diff options
author | Markus Rechberger <mrechberger@gmail.com> | 2006-02-26 22:07:27 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-02-26 22:07:27 -0500 |
commit | 0004fd59d57a5875db8897966c414a88b5dad481 (patch) | |
tree | e0f28025301fb87125c38ed51a51f6f29456d1fa | |
parent | 1d519605f13dd2c51024060465a16ddd1abfb649 (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.tuner | 1 | ||||
-rw-r--r-- | drivers/media/video/Makefile | 2 | ||||
-rw-r--r-- | drivers/media/video/em28xx/em28xx-cards.c | 4 | ||||
-rw-r--r-- | drivers/media/video/tuner-core.c | 3 | ||||
-rw-r--r-- | drivers/media/video/tuner-types.c | 21 | ||||
-rw-r--r-- | include/media/tuner.h | 3 |
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 | |||
69 | tuner=68 - Philips TUV1236D ATSC/NTSC dual in | 69 | tuner=68 - Philips TUV1236D ATSC/NTSC dual in |
70 | tuner=69 - Tena TNF 5335 MF | 70 | tuner=69 - Tena TNF 5335 MF |
71 | tuner=70 - Samsung TCPN 2121P30A | 71 | tuner=70 - Samsung TCPN 2121P30A |
72 | tuner=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 | |||
9 | zr36067-objs := zoran_procfs.o zoran_device.o \ | 9 | zr36067-objs := zoran_procfs.o zoran_device.o \ |
10 | zoran_driver.o zoran_card.o | 10 | zoran_driver.o zoran_card.o |
11 | tuner-objs := tuner-core.o tuner-types.o tuner-simple.o \ | 11 | tuner-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 | ||
14 | msp3400-objs := msp3400-driver.o msp3400-kthreads.o | 14 | msp3400-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 | |||
988 | static 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 | |||
994 | static 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 | ||
988 | struct tunertype tuners[] = { | 1005 | struct 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 | ||
1355 | unsigned const int tuner_count = ARRAY_SIZE(tuners); | 1376 | unsigned 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 { | |||
209 | extern unsigned const int tuner_count; | 211 | extern unsigned const int tuner_count; |
210 | 212 | ||
211 | extern int microtune_init(struct i2c_client *c); | 213 | extern int microtune_init(struct i2c_client *c); |
214 | extern int xc3028_init(struct i2c_client *c); | ||
212 | extern int tda8290_init(struct i2c_client *c); | 215 | extern int tda8290_init(struct i2c_client *c); |
213 | extern int tda8290_probe(struct i2c_client *c); | 216 | extern int tda8290_probe(struct i2c_client *c); |
214 | extern int tea5767_tuner_init(struct i2c_client *c); | 217 | extern int tea5767_tuner_init(struct i2c_client *c); |