aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/video4linux/CARDLIST.em28xx3
-rw-r--r--drivers/media/video/em28xx/em28xx-cards.c29
-rw-r--r--drivers/media/video/em28xx/em28xx.h2
3 files changed, 31 insertions, 3 deletions
diff --git a/Documentation/video4linux/CARDLIST.em28xx b/Documentation/video4linux/CARDLIST.em28xx
index f809834af12d..94b53bd71301 100644
--- a/Documentation/video4linux/CARDLIST.em28xx
+++ b/Documentation/video4linux/CARDLIST.em28xx
@@ -8,9 +8,10 @@
8 7 -> Leadtek Winfast USB II (em2800) 8 7 -> Leadtek Winfast USB II (em2800)
9 8 -> Kworld USB2800 (em2800) 9 8 -> Kworld USB2800 (em2800)
10 9 -> Pinnacle Dazzle DVC 90 (em2820/em2840) [2304:0207] 10 9 -> Pinnacle Dazzle DVC 90 (em2820/em2840) [2304:0207]
11 10 -> Hauppauge WinTV HVR 900/950 (em2880) 11 10 -> Hauppauge WinTV HVR 900 (em2880)
12 11 -> Terratec Hybrid XS (em2880) 12 11 -> Terratec Hybrid XS (em2880)
13 12 -> Kworld PVR TV 2800 RF (em2820/em2840) 13 12 -> Kworld PVR TV 2800 RF (em2820/em2840)
14 13 -> Terratec Prodigy XS (em2880) 14 13 -> Terratec Prodigy XS (em2880)
15 14 -> Pixelview Prolink PlayTV USB 2.0 (em2820/em2840) 15 14 -> Pixelview Prolink PlayTV USB 2.0 (em2820/em2840)
16 15 -> V-Gear PocketTV (em2800) 16 15 -> V-Gear PocketTV (em2800)
17 16 -> Hauppauge WinTV HVR 950 (em2880)
diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c
index fd64058a04e2..c40b9d9b3070 100644
--- a/drivers/media/video/em28xx/em28xx-cards.c
+++ b/drivers/media/video/em28xx/em28xx-cards.c
@@ -149,7 +149,29 @@ struct em28xx_board em28xx_boards[] = {
149 }}, 149 }},
150 }, 150 },
151 [EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900] = { 151 [EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900] = {
152 .name = "Hauppauge WinTV HVR 900/950", 152 .name = "Hauppauge WinTV HVR 900",
153 .vchannels = 3,
154 .tda9887_conf = TDA9887_PRESENT,
155 .tuner_type = TUNER_XC2028,
156 .has_tuner = 1,
157 .xc2028_type = XC2028_FIRM_MTS,
158 .decoder = EM28XX_TVP5150,
159 .input = {{
160 .type = EM28XX_VMUX_TELEVISION,
161 .vmux = TVP5150_COMPOSITE0,
162 .amux = 0,
163 },{
164 .type = EM28XX_VMUX_COMPOSITE1,
165 .vmux = TVP5150_COMPOSITE1,
166 .amux = 1,
167 },{
168 .type = EM28XX_VMUX_SVIDEO,
169 .vmux = TVP5150_SVIDEO,
170 .amux = 1,
171 }},
172 },
173 [EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950] = {
174 .name = "Hauppauge WinTV HVR 950",
153 .vchannels = 3, 175 .vchannels = 3,
154 .tda9887_conf = TDA9887_PRESENT, 176 .tda9887_conf = TDA9887_PRESENT,
155 .tuner_type = TUNER_XC2028, 177 .tuner_type = TUNER_XC2028,
@@ -376,7 +398,7 @@ struct usb_device_id em28xx_id_table [] = {
376 { USB_DEVICE(0x2040, 0x4200), .driver_info = EM2820_BOARD_HAUPPAUGE_WINTV_USB_2 }, 398 { USB_DEVICE(0x2040, 0x4200), .driver_info = EM2820_BOARD_HAUPPAUGE_WINTV_USB_2 },
377 { USB_DEVICE(0x2304, 0x0207), .driver_info = EM2820_BOARD_PINNACLE_DVC_90 }, 399 { USB_DEVICE(0x2304, 0x0207), .driver_info = EM2820_BOARD_PINNACLE_DVC_90 },
378 { USB_DEVICE(0x2040, 0x6500), .driver_info = EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900 }, 400 { USB_DEVICE(0x2040, 0x6500), .driver_info = EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900 },
379 { USB_DEVICE(0x2040, 0x6513), .driver_info = EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900 }, 401 { USB_DEVICE(0x2040, 0x6513), .driver_info = EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950 },
380 { USB_DEVICE(0x0ccd, 0x0042), .driver_info = EM2880_BOARD_TERRATEC_HYBRID_XS }, 402 { USB_DEVICE(0x0ccd, 0x0042), .driver_info = EM2880_BOARD_TERRATEC_HYBRID_XS },
381 { USB_DEVICE(0x0ccd, 0x0047), .driver_info = EM2880_BOARD_TERRATEC_PRODIGY_XS }, 403 { USB_DEVICE(0x0ccd, 0x0047), .driver_info = EM2880_BOARD_TERRATEC_PRODIGY_XS },
382 { }, 404 { },
@@ -404,6 +426,7 @@ void em28xx_pre_card_setup(struct em28xx *dev)
404 switch(dev->model){ 426 switch(dev->model){
405 case EM2880_BOARD_TERRATEC_PRODIGY_XS: 427 case EM2880_BOARD_TERRATEC_PRODIGY_XS:
406 case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900: 428 case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
429 case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950:
407 case EM2880_BOARD_TERRATEC_HYBRID_XS: 430 case EM2880_BOARD_TERRATEC_HYBRID_XS:
408 /* reset through GPIO? */ 431 /* reset through GPIO? */
409 em28xx_write_regs_req(dev, 0x00, 0x08, "\x7d", 1); 432 em28xx_write_regs_req(dev, 0x00, 0x08, "\x7d", 1);
@@ -453,6 +476,7 @@ static void em28xx_config_tuner (struct em28xx *dev)
453 476
454 ctl.fname = XC2028_DEFAULT_FIRMWARE; 477 ctl.fname = XC2028_DEFAULT_FIRMWARE;
455 ctl.max_len = 64; 478 ctl.max_len = 64;
479 ctl.type = em28xx_boards[dev->model].xc2028_type;
456 480
457 xc2028_cfg.tuner = TUNER_XC2028; 481 xc2028_cfg.tuner = TUNER_XC2028;
458 xc2028_cfg.priv = &ctl; 482 xc2028_cfg.priv = &ctl;
@@ -574,6 +598,7 @@ void em28xx_card_setup(struct em28xx *dev)
574 switch (dev->model) { 598 switch (dev->model) {
575 case EM2820_BOARD_HAUPPAUGE_WINTV_USB_2: 599 case EM2820_BOARD_HAUPPAUGE_WINTV_USB_2:
576 case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900: 600 case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
601 case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950:
577 { 602 {
578 struct tveeprom tv; 603 struct tveeprom tv;
579#ifdef CONFIG_MODULES 604#ifdef CONFIG_MODULES
diff --git a/drivers/media/video/em28xx/em28xx.h b/drivers/media/video/em28xx/em28xx.h
index 8d045867dac7..db82b51c85ff 100644
--- a/drivers/media/video/em28xx/em28xx.h
+++ b/drivers/media/video/em28xx/em28xx.h
@@ -48,6 +48,7 @@
48#define EM2880_BOARD_TERRATEC_PRODIGY_XS 13 48#define EM2880_BOARD_TERRATEC_PRODIGY_XS 13
49#define EM2820_BOARD_PROLINK_PLAYTV_USB2 14 49#define EM2820_BOARD_PROLINK_PLAYTV_USB2 14
50#define EM2800_BOARD_VGEAR_POCKETTV 15 50#define EM2800_BOARD_VGEAR_POCKETTV 15
51#define EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950 16
51 52
52#define UNSET -1 53#define UNSET -1
53 54
@@ -177,6 +178,7 @@ struct em28xx_board {
177 unsigned int has_msp34xx:1; 178 unsigned int has_msp34xx:1;
178 179
179 enum em28xx_decoder decoder; 180 enum em28xx_decoder decoder;
181 int xc2028_type;
180 182
181 struct em28xx_input input[MAX_EM28XX_INPUT]; 183 struct em28xx_input input[MAX_EM28XX_INPUT];
182}; 184};