[linux-dvb] HVR-4000 driver problems - i2c error

Mika Laitio lamikr at pilppa.org
Thu Sep 25 00:21:27 CEST 2008


> The ~stoth/hg/s2 has no DVB-T support on the HVR4000 yet. Those patches will 
> appear very shortly in ~stoth/hg/s2-mfe.

Thanks,

I build and installed drivers from s2-mfe branch and now atleast the dvb-t 
and dvb-s scan were working both for hvr-1300 and hvr-4000.
With hvr-4000, the scan worked with
"./scan -a 1 -f 1 "... parameters.

>>  WIth liplianinis multiproto version the selection between DVB-S and DVB-T
>>  works by using the "options cx88-dvb frontend=1" but I am seeing the i2c
>>  errors described below.
>>
>>  Could you have any URL and changeset tag to patch in some repository where
>>  this I2C thing has been fixed?
>
> I'm speculating that your issue is the same issue I fixed sometime ago (2-3 
> months in the master repo). I'd suggest you wait for the 
> ~ stoth/hg/s2-mfe patches to appear later tonight and test again.
>
> That tree (and ~stoth/hg/s2 for that matter) have the i2c fix I'm referring 
> to.

I tried to find the fix by checking from the log your commits for cx88 
couple of months ago and could not find the one you were referring.
Then I remembered that in 2.6.25 kernel, similar errors for HVR-1300 could 
be fixed by defining the radio information for the board structure.

So I tried the same trick also for hvr-4000, and that made dvb-t working 
without I2C errors also for HVR4000. ( with liplianis version of 
multiproto tree.)

--- cx88-cards.c_old	2008-09-25 00:51:18.000000000 +0300
+++ cx88-cards.c	2008-09-24 10:44:15.000000000 +0300
@@ -1480,6 +1480,10 @@
  		}},
  		/* fixme: Add radio support */
  		.mpeg           = CX88_MPEG_DVB,
+		.radio = {
+			.type   = CX88_RADIO,
+			.gpio0	= 0xe780,
+		},
  	},
  	[CX88_BOARD_HAUPPAUGE_HVR4000LITE] = {
  		.name           = "Hauppauge WinTV-HVR4000(Lite) 
DVB-S/S2",

In S2 and S2-mfe, the dvb-t worked even without radio data defined for 
hvr-4000.

Other non-API related changes that I could found between multiproto and s2 
trees for CX88 were pretty small. Is this udelay really needed?

@@ -2594,8 +2598,9 @@
  		break;
  	case CX88_BOARD_HAUPPAUGE_HVR3000: /* ? */
  	case CX88_BOARD_HAUPPAUGE_HVR4000:
-		/* Init GPIO for DVB-S/S2/Analog */
-		cx_write(MO_GP0_IO,core->board.input[0].gpio0);
+		/* Init GPIO */
+		cx_write(MO_GP0_IO, core->board.input[0].gpio0);
+		udelay(1000);
  		break;

  	case CX88_BOARD_PROLINK_PV_8000GT:
@@ -2939,6 +2944,7 @@
  		cx88_card_list(core, pci);
  	}

+	memset(&core->board, 0, sizeof(core->board));
  	memcpy(&core->board, &cx88_boards[core->boardnr], 
sizeof(core->board));

  	info_printk(core, "subsystem: %04x:%04x, board: %s 
[card=%d,%s]\n",

Those did not help



More information about the linux-dvb mailing list