Comment 30 for bug 318448

Revision history for this message
Andreas Modinos (blueturtl) wrote :

Based on the Gentoo patch of Terratec Cinergy XS[1] I inspected the source files in question:
/usr/src/linux/drivers/media/video/em28xx/em28xx-cards.c
/usr/src/linux/drivers/media/video/em28xx/em28xx-dvb.c

In em28xx-cards.c I've noted in sections for cards, (line 747 and after) that the regular HVR-900 has these lines but the R2 model does not:

.has_dvb = 1,
.dvb_gpio = hauppauge_wintv_hvr_900_digital,

More differences, same file lines 2054, 2055:

case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
ctl->demod = XC3028_FE_ZARLINK456;

vs. lines 2061, 2062, 2063:

case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900_R2:
/* djh - Not sure which demod we need here */
ctl->demod = XC3028_FE_DEFAULT;

I assume "demod" stands for demodulator so I Googled around a bit and found that the demodulator for HVR-900 (R2) is the Micronas drx397x[2] which was had no support until a driver for it was written and included in a new branch called em28xx-new by Markus Rechberger.[3]

In em28xx-dvb.c lines 495-499:

case EM2880_BOARD_HAUPPAUGE_WINTV_HVR_900:
case EM2880_BOARD_EMPIRE_DUAL_TV:
dvb->frontend = dvb_attach(zl10353_attach,
&em28xx_zl10353_xc3028_no_i2c_gate,
&dev->i2c_adap);

vs. lines 545-551:

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);

jbourdon's link in comment #2 contains instructions for building em28xx-new and replacing the default modules with it. However em28xx-new has been discontinued and apparently there has been some difficulty in migrating functional code over from em28xx-new[4] because support is still lacking.

Sources:
[1] http://forums.gentoo.org/viewtopic-t-815022-start-0.html
[2] http://www.linuxtv.org/wiki/index.php/Hauppauge_WinTV-HVR-900
[3] http://mcentral.de/hg/~mrec/em28xx-new
[4] http://osdir.com/ml/linux.drivers.em28xx/2008-01/msg00035.html

I've hunted for and attached the em28xx-new package in case it can be used to fix the problem. According to the README it contains drx3973d driver (this has been tested to work by those who've used em28xx-new before, including myself). Under the ubuntu folder no less.

The only thing is, I have no idea what the status of this thing is upstream. Maybe they've already got work in progress for a new driver.