diff options
author | Aidan Thornton <makosoft@googlemail.com> | 2007-11-20 13:25:08 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-01-25 16:02:16 -0500 |
commit | 122d15888a8aa95fb6ca32eb1307c3e3337f1a38 (patch) | |
tree | 866d0524266bc3dbd6b6568656a949ae2a19270a /drivers | |
parent | 11645cc370c1af0f6bc9ef7440d452def9580790 (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.c | 29 | ||||
-rw-r--r-- | drivers/media/video/em28xx/em28xx.h | 2 |
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 | }; |