Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 05 Apr 1997 11:42:25 -0800
From:      Amancio Hasty <hasty@rah.star-gate.com>
To:        multimedia@freebsd.org
Subject:   Bt848 Missing frames fix
Message-ID:  <199704051942.LAA00322@rah.star-gate.com>

next in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]

Hi,

I managed to solved the problem of frames dropping with resolutions
higher than 320x240.

The patch is against the bt848 driver in freebsd 3.0 -current. Please
try it out and let us know if it fixes the problem.

	Enjoy,
	Amancio


[-- Attachment #2 --]
*** brooktree848.c.orig	Sat Apr  5 11:27:11 1997
--- brooktree848.c	Sat Apr  5 11:29:45 1997
***************
*** 2039,2045 ****
  	buffer = target_buffer;
  
  	/* contruct sync : for video packet format */
! 	*dma_prog++ = OP_SYNC | 0xC << 24 | 1 << 15 | BKTR_FM1;
  
  	/* sync, mode indicator packed data */
  	*dma_prog++ = 0;  /* NULL WORD */
--- 2039,2045 ----
  	buffer = target_buffer;
  
  	/* contruct sync : for video packet format */
! 	*dma_prog++ = OP_SYNC  | 1 << 15 | BKTR_FM1;
  
  	/* sync, mode indicator packed data */
  	*dma_prog++ = 0;  /* NULL WORD */
***************
*** 2073,2079 ****
  
  	case 3:
  		/* sync vre */
! 		*dma_prog++ = OP_SYNC | 0xC << 24 | 1 << 24 | 1 << 15 | BKTR_VRO;
  		*dma_prog++ = 0;  /* NULL WORD */
  		*dma_prog++ = OP_JUMP | 0xc << 24 ;
  		*dma_prog = (u_long ) vtophys(bktr->odd_dma_prog);
--- 2073,2079 ----
  
  	case 3:
  		/* sync vre */
! 		*dma_prog++ = OP_SYNC |  1 << 15 | BKTR_VRO;
  		*dma_prog++ = 0;  /* NULL WORD */
  		*dma_prog++ = OP_JUMP | 0xc << 24 ;
  		*dma_prog = (u_long ) vtophys(bktr->odd_dma_prog);
***************
*** 2087,2093 ****
  		dma_prog = (u_long *) bktr->odd_dma_prog;
  
  		/* sync vre IRQ bit */
! 		*dma_prog++ = OP_SYNC | 0xc << 24 | 1 << 15 | BKTR_FM1;
  		*dma_prog++ = 0;  /* NULL WORD */
  
  		for (i = 0; i < (rows/interlace); i++) {
--- 2087,2093 ----
  		dma_prog = (u_long *) bktr->odd_dma_prog;
  
  		/* sync vre IRQ bit */
! 		*dma_prog++ = OP_SYNC |  1 << 15 | BKTR_FM1;
  		*dma_prog++ = 0;  /* NULL WORD */
  
  		for (i = 0; i < (rows/interlace); i++) {
***************
*** 2100,2108 ****
  	}
  
  	/* sync vre IRQ bit */
! 	*dma_prog++ = OP_SYNC | 0xc << 24 | 1 << 24 | 1 << 15 | BKTR_VRE;
  	*dma_prog++ = 0;  /* NULL WORD */
! 	*dma_prog++ = OP_JUMP | 0xc << 24;
  	*dma_prog++ = (u_long ) vtophys(bktr->dma_prog) ;
  	*dma_prog++ = 0;  /* NULL WORD */
  }
--- 2100,2108 ----
  	}
  
  	/* sync vre IRQ bit */
! 	*dma_prog++ = OP_SYNC |  1 << 24 | 1 << 15 | BKTR_VRE;
  	*dma_prog++ = 0;  /* NULL WORD */
! 	*dma_prog++ = OP_JUMP ;
  	*dma_prog++ = (u_long ) vtophys(bktr->dma_prog) ;
  	*dma_prog++ = 0;  /* NULL WORD */
  }
***************
*** 2288,2294 ****
  	t1 = target_buffer;
  
  	/* contruct sync : for video packet format */
! 	*dma_prog++ = OP_SYNC | 0xC << 24 | 1 << 15 |	BKTR_FM3; /*sync, mode indicator packed data*/
  	*dma_prog++ = 0;  /* NULL WORD */
  
  	for (i = 0; i < (rows/interlace ); i++) {
--- 2288,2294 ----
  	t1 = target_buffer;
  
  	/* contruct sync : for video packet format */
! 	*dma_prog++ = OP_SYNC  | 1 << 15 |	BKTR_FM3; /*sync, mode indicator packed data*/
  	*dma_prog++ = 0;  /* NULL WORD */
  
  	for (i = 0; i < (rows/interlace ); i++) {
***************
*** 2318,2327 ****
  		return;
  
  	case 3:
! 		*dma_prog++ = OP_SYNC	| 0xc << 24 |  1 << 15 |  BKTR_VRO;  
  		*dma_prog++ = 0;  /* NULL WORD */
  
! 		*dma_prog++ = OP_JUMP  | 0xc << 24 ;
  		*dma_prog = (u_long ) vtophys(bktr->odd_dma_prog);
  		break;
  	}
--- 2318,2327 ----
  		return;
  
  	case 3:
! 		*dma_prog++ = OP_SYNC	|   1 << 15 |  BKTR_VRO;  
  		*dma_prog++ = 0;  /* NULL WORD */
  
! 		*dma_prog++ = OP_JUMP  ;
  		*dma_prog = (u_long ) vtophys(bktr->odd_dma_prog);
  		break;
  	}
***************
*** 2332,2338 ****
  
  		target_buffer  = (u_long) buffer + cols;
  		t1 = target_buffer + cols/2;
! 		*dma_prog++ = OP_SYNC	| 0xc << 24 |  1 << 24 |   1 << 15 | BKTR_FM3; 
  		*dma_prog++ = 0;  /* NULL WORD */
  
  		for (i = 0; i < (rows/interlace ) ; i++) {
--- 2332,2338 ----
  
  		target_buffer  = (u_long) buffer + cols;
  		t1 = target_buffer + cols/2;
! 		*dma_prog++ = OP_SYNC	|   1 << 15 | BKTR_FM3; 
  		*dma_prog++ = 0;  /* NULL WORD */
  
  		for (i = 0; i < (rows/interlace ) ; i++) {
***************
*** 2345,2353 ****
  		}
  	}
      
! 	*dma_prog++ = OP_SYNC  | 0xC << 24 | 1 << 24 |	BKTR_VRE; 
  	*dma_prog++ = 0;  /* NULL WORD */
! 	*dma_prog++ = OP_JUMP | 0xC << 24;;
  	*dma_prog++ = (u_long ) vtophys(bktr->dma_prog) ;
  	*dma_prog++ = 0;  /* NULL WORD */
  }
--- 2345,2353 ----
  		}
  	}
      
! 	*dma_prog++ = OP_SYNC  | 1 << 24 |   BKTR_VRE; 
  	*dma_prog++ = 0;  /* NULL WORD */
! 	*dma_prog++ = OP_JUMP ;
  	*dma_prog++ = (u_long ) vtophys(bktr->dma_prog) ;
  	*dma_prog++ = 0;  /* NULL WORD */
  }

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199704051942.LAA00322>