[linux-dvb] Hauppage Nova-T firmware upload bug

Thomas Richter thor at math.TU-Berlin.DE
Fri Dec 30 23:02:18 CET 2005


Hi folks,

recently, I faced problems using my Hauppage Nova-T (old model, 
TechnoTrend design), especially getting the firmware uploaded correctly. 
The driver continuously fails to load the firmware, even though the file 
is in the right place. Interestingly, this behaivour is not 
reproducable: The system works fine for a week, then the next day it 
fails, and even rebooting doesn't bring it back to a working condition. 
The DVB-T card then requires once loading the windows drivers; then, 
when rebooting to Linux, things are fine again.

I played a lot with the sources now, using the 1.1.1 release of the 
linuxtv-dvb sources. The code always fails the loop at lines 244ff of 
saa7146_i2c.c, aborting with a "timed out waiting for end of xfer".

Adding a "short_delay = 1" at around line 307 of saa7146_i2c_transfer 
(thus bypassing

  	if ( count > 3 || 0 != (SAA7146_I2C_SHORT_DELAY & dev->ext->flags) )
		short_delay = 1;
)
seems to have fixed this *for today*. To avoid this hack, I modified 
budget-ci.c, namely the flags for the i2c module as follows:

static struct saa7146_extension budget_extension = {
	.name		= "budget_ci dvb\0",
	.flags	 	= SAA7146_I2C_SHORT_DELAY, /* FIX. was: 0, */

	.module		= THIS_MODULE,
	.pci_tbl	= &pci_tbl[0],
	.attach		= budget_ci_attach,
	.detach		= budget_ci_detach,

	.irq_mask	= MASK_06 | MASK_10,
	.irq_func	= budget_ci_irq,
};	

which seems to do the job right now. (Can anyone confirm that this is 
the right thing to do to get short_delay set?)

My question would be: What does "short_delay" do and why could it be 
that it fixes my card here? Are there any negative consequences I should 
expect?

Otherwise, it might be useful to include this patch in the next release.

So long,
	Thomas Richter



More information about the linux-dvb mailing list