[linux-dvb] DiB3000MC rewritten and MT2060 is ready to go into main

matthieu castet castet.matthieu at free.fr
Sun Aug 20 13:20:27 CEST 2006


Hi Patrick,

Patrick Boettcher wrote:
> Hi Matthieu,
> 
> I added something to my repository which should fix it:
> 
> Can you give it a try:
> http://linuxtv.org/hg/~pb/v4l-dvb
> 
The patch doesn't work : in OUTMODE_MPEG2_FIFO you still erase the pid 
parse bit.

Here a patch that works.

Unfortunately on french tnt, the bandwidth share on a transponder is not 
usb1 friendly :
- the transponder bandwidth is 24 Mbps
- there are 5 or 6 channels per transponder (it make an average 4Mbps 
bandwidth)

Instead of having all channel near the average 4Mbps, they put the 
average lower (2.5-3 Mbps) and the extra bandwidth is given (sometimes 
randomly) to some channels.
This make peak > 7 Mbps on some channels [1] and usb1 mode doesn't seem 
to support such bandwidth (may be if iso were used, it could have worked).

Some transponder are more usb1 friendly and put the extra bits in pid 
8191 (up to 4-5 Mbps)...

[1]
-PID--FREQ-----BANDWIDTH-BANDWIDTH-
0000     9 p/s     1 kb/s    14 kbit
0017     0 p/s     0 kb/s     1 kbit
0018    10 p/s     1 kb/s    16 kbit
0021     1 p/s     0 kb/s     2 kbit
0110     9 p/s     1 kb/s    14 kbit
0120  2156 p/s   395 kb/s  3242 kbit
0130   132 p/s    24 kb/s   198 kbit
0140     2 p/s     0 kb/s     4 kbit
0210     9 p/s     1 kb/s    14 kbit
0220  2992 p/s   549 kb/s  4499 kbit
0230   131 p/s    24 kb/s   197 kbit
0240     1 p/s     0 kb/s     2 kbit
0310     9 p/s     1 kb/s    14 kbit
0320  4785 p/s   878 kb/s  7197 kbit
0330   131 p/s    24 kb/s   197 kbit
0340     2 p/s     0 kb/s     4 kbit
0410     9 p/s     1 kb/s    14 kbit
0420  1458 p/s   267 kb/s  2193 kbit
0430   132 p/s    24 kb/s   198 kbit
0440     2 p/s     0 kb/s     4 kbit
0510     9 p/s     1 kb/s    14 kbit
0520  1743 p/s   320 kb/s  2622 kbit
0530   132 p/s    24 kb/s   198 kbit
0531   132 p/s    24 kb/s   198 kbit
0541     2 p/s     0 kb/s     4 kbit
0542     3 p/s     0 kb/s     5 kbit
0610     9 p/s     1 kb/s    14 kbit
0620  1419 p/s   260 kb/s  2134 kbit
0630   132 p/s    24 kb/s   198 kbit
0640     1 p/s     0 kb/s     2 kbit
0660     8 p/s     1 kb/s    13 kbit
1010     9 p/s     1 kb/s    14 kbit
8191   926 p/s   170 kb/s  1393 kbit
8192 16540 p/s  3036 kb/s 24877 kbit


Signed-off-by: Matthieu CASTET <castet.matthieu at free.fr>


-------------- next part --------------
--- dib3000mc.c	2006-08-20 12:57:32.000000000 +0200
+++ dib3000mc.c	2006-08-20 12:59:32.000000000 +0200
@@ -193,8 +193,7 @@
 	u16 outreg = 0;
 	u16 outmode = 0;
 	u16 elecout = 1;
-	u16 smo_reg = (0 << 6) | (0 << 5) | (0 << 3) | (1 << 1) | 0 |
-		(dib3000mc_read_word(state, 206) & 0x0010); /* keep the pid_parse bit */
+	u16 smo_reg = (0 << 6) | (0 << 5) | (0 << 3) | (1 << 1) | 0;
 
 	dprintk("-I-  Setting output mode for demod %p to %d\n",
 			&state->demod, mode);
@@ -239,6 +238,9 @@
 	if ((state->cfg->output_mpeg2_in_188_bytes))
 		smo_reg |= (1 << 5); // P_smo_rs_discard     [1;5:5] = 1
 
+	/* keep the pid_parse bit */
+	smo_reg |= dib3000mc_read_word(state, 206) & (1<<4);
+
 	outreg = dib3000mc_read_word(state, 244) & 0x07FF;
 	outreg |= (outmode << 11);
 	ret |= dib3000mc_write_word(state,  244, outreg);


More information about the linux-dvb mailing list