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)
|
7 -> Leadtek Winfast USB II (em2800)
|
||||||
8 -> Kworld USB2800 (em2800)
|
8 -> Kworld USB2800 (em2800)
|
||||||
9 -> Pinnacle Dazzle DVC 90/DVC 100 (em2820/em2840) [2304:0207,2304:021a]
|
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]
|
11 -> Terratec Hybrid XS (em2880) [0ccd:0042]
|
||||||
12 -> Kworld PVR TV 2800 RF (em2820/em2840)
|
12 -> Kworld PVR TV 2800 RF (em2820/em2840)
|
||||||
13 -> Terratec Prodigy XS (em2880) [0ccd:0047]
|
13 -> Terratec Prodigy XS (em2880) [0ccd:0047]
|
||||||
|
@ -16,3 +16,4 @@
|
||||||
15 -> V-Gear PocketTV (em2800)
|
15 -> V-Gear PocketTV (em2800)
|
||||||
16 -> Hauppauge WinTV HVR 950 (em2880) [2040:6513,2040:6517,2040:651b,2040:651f]
|
16 -> Hauppauge WinTV HVR 950 (em2880) [2040:6513,2040:6517,2040:651b,2040:651f]
|
||||||
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]
|
||||||
|
|
|
@ -173,6 +173,27 @@ struct em28xx_board em28xx_boards[] = {
|
||||||
.amux = 1,
|
.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] = {
|
[EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950] = {
|
||||||
.name = "Hauppauge WinTV HVR 950",
|
.name = "Hauppauge WinTV HVR 950",
|
||||||
.vchannels = 3,
|
.vchannels = 3,
|
||||||
|
@ -445,7 +466,7 @@ struct usb_device_id em28xx_id_table [] = {
|
||||||
{ USB_DEVICE(0x2040, 0x6500),
|
{ USB_DEVICE(0x2040, 0x6500),
|
||||||
.driver_info = EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900 },
|
.driver_info = EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900 },
|
||||||
{ USB_DEVICE(0x2040, 0x6502),
|
{ 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 */
|
{ USB_DEVICE(0x2040, 0x6513), /* HCW HVR-980 */
|
||||||
.driver_info = EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950 },
|
.driver_info = EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950 },
|
||||||
{ USB_DEVICE(0x2040, 0x6517), /* HP HVR-950 */
|
{ USB_DEVICE(0x2040, 0x6517), /* HP HVR-950 */
|
||||||
|
@ -567,6 +588,7 @@ void em28xx_pre_card_setup(struct em28xx *dev)
|
||||||
switch (dev->model) {
|
switch (dev->model) {
|
||||||
case EM2880_BOARD_TERRATEC_PRODIGY_XS:
|
case EM2880_BOARD_TERRATEC_PRODIGY_XS:
|
||||||
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
|
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
|
||||||
|
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2:
|
||||||
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:
|
||||||
|
@ -602,6 +624,10 @@ static void em28xx_setup_xc3028(struct em28xx *dev, struct xc2028_ctrl *ctl)
|
||||||
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
|
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
|
||||||
ctl->demod = XC3028_FE_ZARLINK456;
|
ctl->demod = XC3028_FE_ZARLINK456;
|
||||||
break;
|
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_HAUPPAUGE_WINTV_HVR_950:
|
||||||
case EM2880_BOARD_PINNACLE_PCTV_HD_PRO:
|
case EM2880_BOARD_PINNACLE_PCTV_HD_PRO:
|
||||||
/* FIXME: Better to specify the needed IF */
|
/* FIXME: Better to specify the needed IF */
|
||||||
|
@ -781,6 +807,7 @@ void em28xx_card_setup(struct em28xx *dev)
|
||||||
switch (dev->model) {
|
switch (dev->model) {
|
||||||
case EM2820_BOARD_HAUPPAUGE_WINTV_USB_2:
|
case EM2820_BOARD_HAUPPAUGE_WINTV_USB_2:
|
||||||
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
|
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
|
||||||
|
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2:
|
||||||
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950:
|
case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950:
|
||||||
{
|
{
|
||||||
struct tveeprom tv;
|
struct tveeprom tv;
|
||||||
|
|
|
@ -27,6 +27,9 @@
|
||||||
|
|
||||||
#include "lgdt330x.h"
|
#include "lgdt330x.h"
|
||||||
#include "zl10353.h"
|
#include "zl10353.h"
|
||||||
|
#ifdef EM28XX_DRX397XD_SUPPORT
|
||||||
|
#include "drx397xD.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
MODULE_DESCRIPTION("driver for em28xx based DVB cards");
|
MODULE_DESCRIPTION("driver for em28xx based DVB cards");
|
||||||
MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@infradead.org>");
|
MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@infradead.org>");
|
||||||
|
@ -228,6 +231,13 @@ static struct zl10353_config em28xx_zl10353_with_xc3028 = {
|
||||||
.if2 = 45600,
|
.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)
|
static int attach_xc3028(u8 addr, struct em28xx *dev)
|
||||||
|
@ -418,6 +428,19 @@ static int dvb_init(struct em28xx *dev)
|
||||||
goto out_free;
|
goto out_free;
|
||||||
}
|
}
|
||||||
break;
|
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:
|
default:
|
||||||
printk(KERN_ERR "%s/2: The frontend of your DVB/ATSC card"
|
printk(KERN_ERR "%s/2: The frontend of your DVB/ATSC card"
|
||||||
" isn't supported yet\n",
|
" isn't supported yet\n",
|
||||||
|
|
|
@ -56,6 +56,7 @@
|
||||||
#define EM2800_BOARD_VGEAR_POCKETTV 15
|
#define EM2800_BOARD_VGEAR_POCKETTV 15
|
||||||
#define EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950 16
|
#define EM2880_BOARD_HAUPPAUGE_WINTV_HVR_950 16
|
||||||
#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
|
||||||
|
|
||||||
/* Limits minimum and default number of buffers */
|
/* Limits minimum and default number of buffers */
|
||||||
#define EM28XX_MIN_BUF 4
|
#define EM28XX_MIN_BUF 4
|
||||||
|
|
Loading…
Reference in New Issue