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>
