diff options
author | Devin Heitmueller <devin.heitmueller@gmail.com> | 2008-07-26 10:04:33 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-07-26 12:18:17 -0400 |
commit | e14b3658a7651ffd9b1f407eaf07f4dde17ef1e7 (patch) | |
tree | 8c23ad5b0592b210bbdd2736b2c4067d95caae4f /drivers/media | |
parent | b18559076a31ab0be2d980ce2beff8e32504e080 (diff) |
V4L/DVB (8492): Add support for the ATI TV Wonder HD 600
em28xx-cards.c
em28xx-dvb.c
em28xx.h
- Add support for the ATI TV Wonder HD 600, based on a 94 email exchange and
USB traces provided by Ronnie Bailey
Thanks to Ronnie Bailey <purevw@wtxs.net> for testing the changes
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/video/em28xx/em28xx-cards.c | 50 | ||||
-rw-r--r-- | drivers/media/video/em28xx/em28xx-dvb.c | 2 | ||||
-rw-r--r-- | drivers/media/video/em28xx/em28xx.h | 1 |
3 files changed, 53 insertions, 0 deletions
diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c index edf6f77862cc..81f9ff55588d 100644 --- a/drivers/media/video/em28xx/em28xx-cards.c +++ b/drivers/media/video/em28xx/em28xx-cards.c | |||
@@ -240,6 +240,52 @@ struct em28xx_board em28xx_boards[] = { | |||
240 | .amux = 1, | 240 | .amux = 1, |
241 | } }, | 241 | } }, |
242 | }, | 242 | }, |
243 | [EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600] = { | ||
244 | .name = "AMD ATI TV Wonder HD 600", | ||
245 | .vchannels = 3, | ||
246 | .tda9887_conf = TDA9887_PRESENT, | ||
247 | .tuner_type = TUNER_XC2028, | ||
248 | .mts_firmware = 1, | ||
249 | .has_12mhz_i2s = 1, | ||
250 | .has_dvb = 1, | ||
251 | .decoder = EM28XX_TVP5150, | ||
252 | .input = { { | ||
253 | .type = EM28XX_VMUX_TELEVISION, | ||
254 | .vmux = TVP5150_COMPOSITE0, | ||
255 | .amux = 0, | ||
256 | }, { | ||
257 | .type = EM28XX_VMUX_COMPOSITE1, | ||
258 | .vmux = TVP5150_COMPOSITE1, | ||
259 | .amux = 1, | ||
260 | }, { | ||
261 | .type = EM28XX_VMUX_SVIDEO, | ||
262 | .vmux = TVP5150_SVIDEO, | ||
263 | .amux = 1, | ||
264 | } }, | ||
265 | }, | ||
266 | [EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600] = { | ||
267 | .name = "AMD ATI TV Wonder HD 600", | ||
268 | .vchannels = 3, | ||
269 | .tda9887_conf = TDA9887_PRESENT, | ||
270 | .tuner_type = TUNER_XC2028, | ||
271 | .mts_firmware = 1, | ||
272 | .has_12mhz_i2s = 1, | ||
273 | .has_dvb = 1, | ||
274 | .decoder = EM28XX_TVP5150, | ||
275 | .input = { { | ||
276 | .type = EM28XX_VMUX_TELEVISION, | ||
277 | .vmux = TVP5150_COMPOSITE0, | ||
278 | .amux = 0, | ||
279 | }, { | ||
280 | .type = EM28XX_VMUX_COMPOSITE1, | ||
281 | .vmux = TVP5150_COMPOSITE1, | ||
282 | .amux = 1, | ||
283 | }, { | ||
284 | .type = EM28XX_VMUX_SVIDEO, | ||
285 | .vmux = TVP5150_SVIDEO, | ||
286 | .amux = 1, | ||
287 | } }, | ||
288 | }, | ||
243 | [EM2880_BOARD_TERRATEC_HYBRID_XS] = { | 289 | [EM2880_BOARD_TERRATEC_HYBRID_XS] = { |
244 | .name = "Terratec Hybrid XS", | 290 | .name = "Terratec Hybrid XS", |
245 | .vchannels = 3, | 291 | .vchannels = 3, |
@@ -493,6 +539,8 @@ struct usb_device_id em28xx_id_table [] = { | |||
493 | .driver_info = EM2880_BOARD_TERRATEC_HYBRID_XS }, | 539 | .driver_info = EM2880_BOARD_TERRATEC_HYBRID_XS }, |
494 | { USB_DEVICE(0x0ccd, 0x0047), | 540 | { USB_DEVICE(0x0ccd, 0x0047), |
495 | .driver_info = EM2880_BOARD_TERRATEC_PRODIGY_XS }, | 541 | .driver_info = EM2880_BOARD_TERRATEC_PRODIGY_XS }, |
542 | { USB_DEVICE(0x0438, 0xb002), | ||
543 | .driver_info = EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600 }, | ||
496 | { }, | 544 | { }, |
497 | }; | 545 | }; |
498 | MODULE_DEVICE_TABLE(usb, em28xx_id_table); | 546 | MODULE_DEVICE_TABLE(usb, em28xx_id_table); |
@@ -608,6 +656,7 @@ void em28xx_pre_card_setup(struct em28xx *dev) | |||
608 | case EM2880_BOARD_TERRATEC_HYBRID_XS: | 656 | case EM2880_BOARD_TERRATEC_HYBRID_XS: |
609 | case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950: | 657 | case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950: |
610 | case EM2880_BOARD_PINNACLE_PCTV_HD_PRO: | 658 | case EM2880_BOARD_PINNACLE_PCTV_HD_PRO: |
659 | case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600: | ||
611 | em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x27", 1); | 660 | em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x27", 1); |
612 | em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x40", 1); | 661 | em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x40", 1); |
613 | msleep(50); | 662 | msleep(50); |
@@ -649,6 +698,7 @@ static void em28xx_setup_xc3028(struct em28xx *dev, struct xc2028_ctrl *ctl) | |||
649 | break; | 698 | break; |
650 | case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950: | 699 | case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950: |
651 | case EM2880_BOARD_PINNACLE_PCTV_HD_PRO: | 700 | case EM2880_BOARD_PINNACLE_PCTV_HD_PRO: |
701 | case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600: | ||
652 | /* FIXME: Better to specify the needed IF */ | 702 | /* FIXME: Better to specify the needed IF */ |
653 | ctl->demod = XC3028_FE_DEFAULT; | 703 | ctl->demod = XC3028_FE_DEFAULT; |
654 | break; | 704 | break; |
diff --git a/drivers/media/video/em28xx/em28xx-dvb.c b/drivers/media/video/em28xx/em28xx-dvb.c index 9727653b76ff..31475a245716 100644 --- a/drivers/media/video/em28xx/em28xx-dvb.c +++ b/drivers/media/video/em28xx/em28xx-dvb.c | |||
@@ -6,6 +6,7 @@ | |||
6 | (c) 2008 Devin Heitmueller <devin.heitmueller@gmail.com> | 6 | (c) 2008 Devin Heitmueller <devin.heitmueller@gmail.com> |
7 | - Fixes for the driver to properly work with HVR-950 | 7 | - Fixes for the driver to properly work with HVR-950 |
8 | - Fixes for the driver to properly work with Pinnacle PCTV HD Pro Stick | 8 | - Fixes for the driver to properly work with Pinnacle PCTV HD Pro Stick |
9 | - Fixes for the driver to properly work with AMD ATI TV Wonder HD 600 | ||
9 | 10 | ||
10 | (c) 2008 Aidan Thornton <makosoft@googlemail.com> | 11 | (c) 2008 Aidan Thornton <makosoft@googlemail.com> |
11 | 12 | ||
@@ -411,6 +412,7 @@ static int dvb_init(struct em28xx *dev) | |||
411 | switch (dev->model) { | 412 | switch (dev->model) { |
412 | case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950: | 413 | case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950: |
413 | case EM2880_BOARD_PINNACLE_PCTV_HD_PRO: | 414 | case EM2880_BOARD_PINNACLE_PCTV_HD_PRO: |
415 | case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600: | ||
414 | dvb->frontend = dvb_attach(lgdt330x_attach, | 416 | dvb->frontend = dvb_attach(lgdt330x_attach, |
415 | &em2880_lgdt3303_dev, | 417 | &em2880_lgdt3303_dev, |
416 | &dev->i2c_adap); | 418 | &dev->i2c_adap); |
diff --git a/drivers/media/video/em28xx/em28xx.h b/drivers/media/video/em28xx/em28xx.h index 89842c5d64a1..9da877375cfb 100644 --- a/drivers/media/video/em28xx/em28xx.h +++ b/drivers/media/video/em28xx/em28xx.h | |||
@@ -58,6 +58,7 @@ | |||
58 | #define EM2880_BOARD_PINNACLE_PCTV_HD_PRO 17 | 58 | #define EM2880_BOARD_PINNACLE_PCTV_HD_PRO 17 |
59 | #define EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2 18 | 59 | #define EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2 18 |
60 | #define EM2860_BOARD_POINTNIX_INTRAORAL_CAMERA 19 | 60 | #define EM2860_BOARD_POINTNIX_INTRAORAL_CAMERA 19 |
61 | #define EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600 20 | ||
61 | 62 | ||
62 | /* Limits minimum and default number of buffers */ | 63 | /* Limits minimum and default number of buffers */ |
63 | #define EM28XX_MIN_BUF 4 | 64 | #define EM28XX_MIN_BUF 4 |