提交 e14b3658 编写于 作者: D Devin Heitmueller 提交者: Mauro Carvalho Chehab

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: NMauro Carvalho Chehab <mchehab@infradead.org>
上级 b1855907
...@@ -18,3 +18,4 @@ ...@@ -18,3 +18,4 @@
17 -> Pinnacle PCTV HD Pro Stick (em2880) [2304:0227] 17 -> Pinnacle PCTV HD Pro Stick (em2880) [2304:0227]
18 -> Hauppauge WinTV HVR 900 (R2) (em2880) [2040:6502] 18 -> Hauppauge WinTV HVR 900 (R2) (em2880) [2040:6502]
19 -> PointNix Intra-Oral Camera (em2860) 19 -> PointNix Intra-Oral Camera (em2860)
20 -> AMD ATI TV Wonder HD 600 (em2880) [0438:b002]
...@@ -240,6 +240,52 @@ struct em28xx_board em28xx_boards[] = { ...@@ -240,6 +240,52 @@ struct em28xx_board em28xx_boards[] = {
.amux = 1, .amux = 1,
} }, } },
}, },
[EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600] = {
.name = "AMD ATI TV Wonder HD 600",
.vchannels = 3,
.tda9887_conf = TDA9887_PRESENT,
.tuner_type = TUNER_XC2028,
.mts_firmware = 1,
.has_12mhz_i2s = 1,
.has_dvb = 1,
.decoder = EM28XX_TVP5150,
.input = { {
.type = EM28XX_VMUX_TELEVISION,
.vmux = TVP5150_COMPOSITE0,
.amux = 0,
}, {
.type = EM28XX_VMUX_COMPOSITE1,
.vmux = TVP5150_COMPOSITE1,
.amux = 1,
}, {
.type = EM28XX_VMUX_SVIDEO,
.vmux = TVP5150_SVIDEO,
.amux = 1,
} },
},
[EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600] = {
.name = "AMD ATI TV Wonder HD 600",
.vchannels = 3,
.tda9887_conf = TDA9887_PRESENT,
.tuner_type = TUNER_XC2028,
.mts_firmware = 1,
.has_12mhz_i2s = 1,
.has_dvb = 1,
.decoder = EM28XX_TVP5150,
.input = { {
.type = EM28XX_VMUX_TELEVISION,
.vmux = TVP5150_COMPOSITE0,
.amux = 0,
}, {
.type = EM28XX_VMUX_COMPOSITE1,
.vmux = TVP5150_COMPOSITE1,
.amux = 1,
}, {
.type = EM28XX_VMUX_SVIDEO,
.vmux = TVP5150_SVIDEO,
.amux = 1,
} },
},
[EM2880_BOARD_TERRATEC_HYBRID_XS] = { [EM2880_BOARD_TERRATEC_HYBRID_XS] = {
.name = "Terratec Hybrid XS", .name = "Terratec Hybrid XS",
.vchannels = 3, .vchannels = 3,
...@@ -493,6 +539,8 @@ struct usb_device_id em28xx_id_table [] = { ...@@ -493,6 +539,8 @@ struct usb_device_id em28xx_id_table [] = {
.driver_info = EM2880_BOARD_TERRATEC_HYBRID_XS }, .driver_info = EM2880_BOARD_TERRATEC_HYBRID_XS },
{ USB_DEVICE(0x0ccd, 0x0047), { USB_DEVICE(0x0ccd, 0x0047),
.driver_info = EM2880_BOARD_TERRATEC_PRODIGY_XS }, .driver_info = EM2880_BOARD_TERRATEC_PRODIGY_XS },
{ USB_DEVICE(0x0438, 0xb002),
.driver_info = EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600 },
{ }, { },
}; };
MODULE_DEVICE_TABLE(usb, em28xx_id_table); MODULE_DEVICE_TABLE(usb, em28xx_id_table);
...@@ -608,6 +656,7 @@ void em28xx_pre_card_setup(struct em28xx *dev) ...@@ -608,6 +656,7 @@ void em28xx_pre_card_setup(struct em28xx *dev)
case EM2880_BOARD_TERRATEC_HYBRID_XS: case EM2880_BOARD_TERRATEC_HYBRID_XS:
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950: case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950:
case EM2880_BOARD_PINNACLE_PCTV_HD_PRO: case EM2880_BOARD_PINNACLE_PCTV_HD_PRO:
case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600:
em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x27", 1); em28xx_write_regs(dev, EM28XX_R0F_XCLK, "\x27", 1);
em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x40", 1); em28xx_write_regs(dev, EM28XX_R06_I2C_CLK, "\x40", 1);
msleep(50); msleep(50);
...@@ -649,6 +698,7 @@ static void em28xx_setup_xc3028(struct em28xx *dev, struct xc2028_ctrl *ctl) ...@@ -649,6 +698,7 @@ static void em28xx_setup_xc3028(struct em28xx *dev, struct xc2028_ctrl *ctl)
break; break;
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950: case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950:
case EM2880_BOARD_PINNACLE_PCTV_HD_PRO: case EM2880_BOARD_PINNACLE_PCTV_HD_PRO:
case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600:
/* FIXME: Better to specify the needed IF */ /* FIXME: Better to specify the needed IF */
ctl->demod = XC3028_FE_DEFAULT; ctl->demod = XC3028_FE_DEFAULT;
break; break;
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
(c) 2008 Devin Heitmueller <devin.heitmueller@gmail.com> (c) 2008 Devin Heitmueller <devin.heitmueller@gmail.com>
- Fixes for the driver to properly work with HVR-950 - Fixes for the driver to properly work with HVR-950
- Fixes for the driver to properly work with Pinnacle PCTV HD Pro Stick - Fixes for the driver to properly work with Pinnacle PCTV HD Pro Stick
- Fixes for the driver to properly work with AMD ATI TV Wonder HD 600
(c) 2008 Aidan Thornton <makosoft@googlemail.com> (c) 2008 Aidan Thornton <makosoft@googlemail.com>
...@@ -411,6 +412,7 @@ static int dvb_init(struct em28xx *dev) ...@@ -411,6 +412,7 @@ static int dvb_init(struct em28xx *dev)
switch (dev->model) { switch (dev->model) {
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950: case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950:
case EM2880_BOARD_PINNACLE_PCTV_HD_PRO: case EM2880_BOARD_PINNACLE_PCTV_HD_PRO:
case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600:
dvb->frontend = dvb_attach(lgdt330x_attach, dvb->frontend = dvb_attach(lgdt330x_attach,
&em2880_lgdt3303_dev, &em2880_lgdt3303_dev,
&dev->i2c_adap); &dev->i2c_adap);
......
...@@ -58,6 +58,7 @@ ...@@ -58,6 +58,7 @@
#define EM2880_BOARD_PINNACLE_PCTV_HD_PRO 17 #define EM2880_BOARD_PINNACLE_PCTV_HD_PRO 17
#define EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2 18 #define EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2 18
#define EM2860_BOARD_POINTNIX_INTRAORAL_CAMERA 19 #define EM2860_BOARD_POINTNIX_INTRAORAL_CAMERA 19
#define EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600 20
/* Limits minimum and default number of buffers */ /* Limits minimum and default number of buffers */
#define EM28XX_MIN_BUF 4 #define EM28XX_MIN_BUF 4
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册