aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAidan Thornton <makosoft@googlemail.com>2007-11-20 13:25:08 -0500
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-01-25 16:02:16 -0500
commit122d15888a8aa95fb6ca32eb1307c3e3337f1a38 (patch)
tree866d0524266bc3dbd6b6568656a949ae2a19270a /drivers
parent11645cc370c1af0f6bc9ef7440d452def9580790 (diff)
V4L/DVB (6619): Use MTS firmware for the HVR-900
The HVR-900 requires the MTS version of the xc3028 firmware in order to get any sound. The below patch selects this firmware variant on HVR-900 cards, as well as splitting the HVR-950 into its own entry (since I don't know if it uses the MTS variant and it will have to be split off eventually anyway). Signed-off-by: Aidan Thornton <makosoft@googlemail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/video/em28xx/em28xx-cards.c29
-rw-r--r--drivers/media/video/em28xx/em28xx.h2
2 files changed, 29 insertions, 2 deletions
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};