mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 01:04:19 +08:00
V4L/DVB (8006): em28xx: Split HVR900 into two separate entries
- Separate the newer variant of the HVR-900 into its own device profile because it has a Micronas DRX397 instead of the Zarlink demod. This doesn't make the device work, but at least we don't try to initialize it as though it had the Zarlink device. Signed-off-by: Devin Heitmueller <devin.heitmueller@gmail.com> [mchehab@infradead.org: avoid compilation breakage at mainstream, where drx397xD.h doesn't exist yet] Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
bbc8995f9f
commit
17d9d558e8
@ -8,7 +8,7 @@
|
||||
7 -> Leadtek Winfast USB II (em2800)
|
||||
8 -> Kworld USB2800 (em2800)
|
||||
9 -> Pinnacle Dazzle DVC 90/DVC 100 (em2820/em2840) [2304:0207,2304:021a]
|
||||
10 -> Hauppauge WinTV HVR 900 (em2880) [2040:6500,2040:6502]
|
||||
10 -> Hauppauge WinTV HVR 900 (em2880) [2040:6500]
|
||||
11 -> Terratec Hybrid XS (em2880) [0ccd:0042]
|
||||
12 -> Kworld PVR TV 2800 RF (em2820/em2840)
|
||||
13 -> Terratec Prodigy XS (em2880) [0ccd:0047]
|
||||
@ -16,3 +16,4 @@
|
||||
15 -> V-Gear PocketTV (em2800)
|
||||
16 -> Hauppauge WinTV HVR 950 (em2880) [2040:6513,2040:6517,2040:651b,2040:651f]
|
||||
17 -> Pinnacle PCTV HD Pro Stick (em2880) [2304:0227]
|
||||
18 -> Hauppauge WinTV HVR 900 (R2) (em2880) [2040:6502]
|
||||
|
@ -173,6 +173,27 @@ struct em28xx_board em28xx_boards[] = {
|
||||
.amux = 1,
|
||||
} },
|
||||
},
|
||||
[EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2] = {
|
||||
.name = "Hauppauge WinTV HVR 900 (R2)",
|
||||
.vchannels = 3,
|
||||
.tda9887_conf = TDA9887_PRESENT,
|
||||
.tuner_type = TUNER_XC2028,
|
||||
.mts_firmware = 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_HAUPPAUGE_WINTV_HVR_950] = {
|
||||
.name = "Hauppauge WinTV HVR 950",
|
||||
.vchannels = 3,
|
||||
@ -445,7 +466,7 @@ struct usb_device_id em28xx_id_table [] = {
|
||||
{ USB_DEVICE(0x2040, 0x6500),
|
||||
.driver_info = EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900 },
|
||||
{ USB_DEVICE(0x2040, 0x6502),
|
||||
.driver_info = EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900 },
|
||||
.driver_info = EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2 },
|
||||
{ USB_DEVICE(0x2040, 0x6513), /* HCW HVR-980 */
|
||||
.driver_info = EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950 },
|
||||
{ USB_DEVICE(0x2040, 0x6517), /* HP HVR-950 */
|
||||
@ -567,6 +588,7 @@ void em28xx_pre_card_setup(struct em28xx *dev)
|
||||
switch (dev->model) {
|
||||
case EM2880_BOARD_TERRATEC_PRODIGY_XS:
|
||||
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
|
||||
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2:
|
||||
case EM2880_BOARD_TERRATEC_HYBRID_XS:
|
||||
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950:
|
||||
case EM2880_BOARD_PINNACLE_PCTV_HD_PRO:
|
||||
@ -602,6 +624,10 @@ static void em28xx_setup_xc3028(struct em28xx *dev, struct xc2028_ctrl *ctl)
|
||||
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
|
||||
ctl->demod = XC3028_FE_ZARLINK456;
|
||||
break;
|
||||
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2:
|
||||
/* djh - Not sure which demod we need here */
|
||||
ctl->demod = XC3028_FE_DEFAULT;
|
||||
break;
|
||||
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950:
|
||||
case EM2880_BOARD_PINNACLE_PCTV_HD_PRO:
|
||||
/* FIXME: Better to specify the needed IF */
|
||||
@ -781,6 +807,7 @@ void em28xx_card_setup(struct em28xx *dev)
|
||||
switch (dev->model) {
|
||||
case EM2820_BOARD_HAUPPAUGE_WINTV_USB_2:
|
||||
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
|
||||
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2:
|
||||
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950:
|
||||
{
|
||||
struct tveeprom tv;
|
||||
|
@ -27,6 +27,9 @@
|
||||
|
||||
#include "lgdt330x.h"
|
||||
#include "zl10353.h"
|
||||
#ifdef EM28XX_DRX397XD_SUPPORT
|
||||
#include "drx397xD.h"
|
||||
#endif
|
||||
|
||||
MODULE_DESCRIPTION("driver for em28xx based DVB cards");
|
||||
MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@infradead.org>");
|
||||
@ -228,6 +231,13 @@ static struct zl10353_config em28xx_zl10353_with_xc3028 = {
|
||||
.if2 = 45600,
|
||||
};
|
||||
|
||||
#ifdef EM28XX_DRX397XD_SUPPORT
|
||||
/* [TODO] djh - not sure yet what the device config needs to contain */
|
||||
static struct drx397xD_config em28xx_drx397xD_with_xc3028 = {
|
||||
.demod_address = (0xe0 >> 1),
|
||||
};
|
||||
#endif
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
|
||||
static int attach_xc3028(u8 addr, struct em28xx *dev)
|
||||
@ -418,6 +428,19 @@ static int dvb_init(struct em28xx *dev)
|
||||
goto out_free;
|
||||
}
|
||||
break;
|
||||
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2:
|
||||
#ifdef EM28XX_DRX397XD_SUPPORT
|
||||
/* We don't have the config structure properly populated, so
|
||||
this is commented out for now */
|
||||
dvb->frontend = dvb_attach(drx397xD_attach,
|
||||
&em28xx_drx397xD_with_xc3028,
|
||||
&dev->i2c_adap);
|
||||
if (attach_xc3028(0x61, dev) < 0) {
|
||||
result = -EINVAL;
|
||||
goto out_free;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
printk(KERN_ERR "%s/2: The frontend of your DVB/ATSC card"
|
||||
" isn't supported yet\n",
|
||||
|
@ -56,6 +56,7 @@
|
||||
#define EM2800_BOARD_VGEAR_POCKETTV 15
|
||||
#define EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950 16
|
||||
#define EM2880_BOARD_PINNACLE_PCTV_HD_PRO 17
|
||||
#define EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2 18
|
||||
|
||||
/* Limits minimum and default number of buffers */
|
||||
#define EM28XX_MIN_BUF 4
|
||||
|
Loading…
Reference in New Issue
Block a user