|
@@ -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 [] = {
|
|
.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)
|
|
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)
|
|
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;
|