|
From: <ad...@us...> - 2003-04-26 09:34:59
|
Update of /cvsroot/bdadev/NovaTDriver
In directory sc8-pr-cvs1:/tmp/cvs-serv29750
Modified Files:
device.h l64781.cpp saa7146.cpp
Log Message:
My last set of changes to try and resolve my issue with tuning
Index: device.h
===================================================================
RCS file: /cvsroot/bdadev/NovaTDriver/device.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** device.h 7 Mar 2003 08:04:13 -0000 1.5
--- device.h 26 Apr 2003 09:34:52 -0000 1.6
***************
*** 25,28 ****
--- 25,29 ----
KSSTATE cur_state;
int switcher;
+ unsigned long lastcopied;
int pv_error;
int lost_error;
Index: l64781.cpp
===================================================================
RCS file: /cvsroot/bdadev/NovaTDriver/l64781.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** l64781.cpp 7 Apr 2003 16:28:05 -0000 1.11
--- l64781.cpp 26 Apr 2003 09:34:52 -0000 1.12
***************
*** 112,115 ****
--- 112,116 ----
PULONG pulData;
+ return Default;
pPartialValueInfo=(PKEY_VALUE_PARTIAL_INFORMATION) rgulValueInfo;
pulData=(PULONG)pPartialValueInfo->Data;
***************
*** 465,468 ****
--- 466,472 ----
/*****************************************************************************\
* $Log$
+ * Revision 1.12 2003/04/26 09:34:52 adcockj
+ * My last set of changes to try and resolve my issue with tuning
+ *
* Revision 1.11 2003/04/07 16:28:05 adcockj
* Added registry setting of defaults and changed register setting order
Index: saa7146.cpp
===================================================================
RCS file: /cvsroot/bdadev/NovaTDriver/saa7146.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** saa7146.cpp 7 Apr 2003 07:00:50 -0000 1.9
--- saa7146.cpp 26 Apr 2003 09:34:53 -0000 1.10
***************
*** 77,80 ****
--- 77,81 ----
GETCONTEXT(device)->pv_error=0; // Number of Protection Violation errors
GETCONTEXT(device)->switcher=0; // Switches buffers
+ GETCONTEXT(device)->lastcopied=0;
GETCONTEXT(device)->lost_error=0; // Indicates lost buffers due to kernel not processing fast enough
GETCONTEXT(device)->counter=0;
***************
*** 82,86 ****
for(i=0;i<PAGE_ALLOCATE;i++) RtlZeroMemory(GETCONTEXT(device)->dma_pages[i],0x1000);
DeviceWriteRegister32(device,REG_PCI_BT_V1,0x001c0000);
! DeviceWriteRegister32(device,REG_DD1_INIT,DD1_PORTA(DD1_FIDESx_FALLING|DD1_SYNC_x_110|DD1_SIO_x_00)|DD1_PORTB(DD1_FIDESx_NOINT|DD1_SYNC_x_010|DD1_SIO_x_00));
DeviceWriteRegister32(device,REG_MC2,SET_BITS(MC2_UPLD_D1_A|MC2_UPLD_D1_B));
DeviceWriteRegister32(device,REG_BRS_CONTROL,0x60000000); // Hmm.
--- 83,88 ----
for(i=0;i<PAGE_ALLOCATE;i++) RtlZeroMemory(GETCONTEXT(device)->dma_pages[i],0x1000);
DeviceWriteRegister32(device,REG_PCI_BT_V1,0x001c0000);
! //DeviceWriteRegister32(device,REG_DD1_INIT,DD1_PORTA(DD1_FIDESx_BOTH|DD1_SYNC_x_110|DD1_SIO_x_00)|DD1_PORTB(DD1_FIDESx_BOTH|DD1_SYNC_x_010|DD1_SIO_x_00));
! DeviceWriteRegister32(device,REG_DD1_INIT,0x02000600);
DeviceWriteRegister32(device,REG_MC2,SET_BITS(MC2_UPLD_D1_A|MC2_UPLD_D1_B));
DeviceWriteRegister32(device,REG_BRS_CONTROL,0x60000000); // Hmm.
***************
*** 91,96 ****
DeviceWriteRegister32(device,REG_BASEEVEN3,TS_WIDTH*TS_HEIGHT/2);
DeviceWriteRegister32(device,REG_PROTADDR3,TS_WIDTH*TS_HEIGHT);
DeviceWriteRegister32(device,REG_PITCH3,TS_WIDTH);
- DeviceWriteRegister32(device,REG_BASEPAGE3,GETCONTEXT(device)->page_address.LowPart|DMA_ME1|0xB0);
DeviceWriteRegister32(device,REG_NUM_LINE_BYTE3,((TS_HEIGHT/2)<<16)|TS_WIDTH);
DeviceWriteRegister32(device,REG_MC2,SET_BITS(MC2_UPLD_DMA3));
--- 93,98 ----
DeviceWriteRegister32(device,REG_BASEEVEN3,TS_WIDTH*TS_HEIGHT/2);
DeviceWriteRegister32(device,REG_PROTADDR3,TS_WIDTH*TS_HEIGHT);
+ DeviceWriteRegister32(device,REG_BASEPAGE3,GETCONTEXT(device)->page_address.LowPart|DMA_ME1|0x90);
DeviceWriteRegister32(device,REG_PITCH3,TS_WIDTH);
DeviceWriteRegister32(device,REG_NUM_LINE_BYTE3,((TS_HEIGHT/2)<<16)|TS_WIDTH);
DeviceWriteRegister32(device,REG_MC2,SET_BITS(MC2_UPLD_DMA3));
***************
*** 112,117 ****
DeviceWriteRegister32(device,REG_IER,DeviceReadRegister32(device,REG_IER)&~IR_V_PE); // VPE interrupt off
DeviceWriteRegister32(device,REG_IER,DeviceReadRegister32(device,REG_IER)&~IR_FIDB); // FIDB interrupt off
! if(GETCONTEXT(device)->pv_error>0) PrintString(device,"Protection Violation errors occurred during run",GETCONTEXT(device)->pv_error);
! if(GETCONTEXT(device)->lost_error>0) PrintString(device,"Missed some interrupts during run",GETCONTEXT(device)->lost_error);
PrintString(device,"Stopped stream, packets sent:",GETCONTEXT(device)->counter);
}
--- 114,119 ----
DeviceWriteRegister32(device,REG_IER,DeviceReadRegister32(device,REG_IER)&~IR_V_PE); // VPE interrupt off
DeviceWriteRegister32(device,REG_IER,DeviceReadRegister32(device,REG_IER)&~IR_FIDB); // FIDB interrupt off
! PrintString(device,"Protection Violation errors occurred during run",GETCONTEXT(device)->pv_error);
! PrintString(device,"Missed some interrupts during run",GETCONTEXT(device)->lost_error);
PrintString(device,"Stopped stream, packets sent:",GETCONTEXT(device)->counter);
}
***************
*** 127,132 ****
// Tell chip which half isn't being used
GETCONTEXT(device)->switcher^=1;
! DeviceWriteRegister32(device,REG_DD1_INIT,DD1_PORTA(DD1_SYNC_x_110|(GETCONTEXT(device)->switcher?DD1_FIDESx_RISING:DD1_FIDESx_FALLING))|DD1_PORTB(DD1_SYNC_x_010));
! DeviceWriteRegister32(device,REG_MC2,SET_BITS(MC2_UPLD_D1_A|MC2_UPLD_D1_B));
// Queue DPC call to be run when kernel IRQL gets better
if((GETCONTEXT(device)->cur_state==KSSTATE_RUN)/*&&(((unsigned char**)GETCONTEXT(device)->dma_pages)[table_start][table_offset]==0x47)*/)
--- 129,134 ----
// Tell chip which half isn't being used
GETCONTEXT(device)->switcher^=1;
! //DeviceWriteRegister32(device,REG_DD1_INIT,DD1_PORTA(DD1_SYNC_x_110|(GETCONTEXT(device)->switcher?DD1_FIDESx_RISING:DD1_FIDESx_FALLING))|DD1_PORTB(DD1_SYNC_x_010));
! //DeviceWriteRegister32(device,REG_MC2,SET_BITS(MC2_UPLD_D1_A|MC2_UPLD_D1_B));
// Queue DPC call to be run when kernel IRQL gets better
if((GETCONTEXT(device)->cur_state==KSSTATE_RUN)/*&&(((unsigned char**)GETCONTEXT(device)->dma_pages)[table_start][table_offset]==0x47)*/)
***************
*** 188,192 ****
offset=(int)SystemArgument2;
stream_pointer=KsPinGetLeadingEdgeStreamPointer(GETCONTEXT(device)->pin_out,KSSTREAM_POINTER_STATE_LOCKED);
! if(stream_pointer!=NULL) {
// packet=(unsigned char*)ExAllocatePool(NonPagedPool,TRANSPORT_PACKET_SIZE*TRANSPORT_PACKET_COUNT);
// outsize=TRANSPORT_PACKET_SIZE*TRANSPORT_PACKET_COUNT;
--- 190,194 ----
offset=(int)SystemArgument2;
stream_pointer=KsPinGetLeadingEdgeStreamPointer(GETCONTEXT(device)->pin_out,KSSTREAM_POINTER_STATE_LOCKED);
! if(stream_pointer!=NULL && stream_pointer->OffsetOut.Remaining >= (TRANSPORT_PACKET_SIZE*TRANSPORT_PACKET_COUNT)) {
// packet=(unsigned char*)ExAllocatePool(NonPagedPool,TRANSPORT_PACKET_SIZE*TRANSPORT_PACKET_COUNT);
// outsize=TRANSPORT_PACKET_SIZE*TRANSPORT_PACKET_COUNT;
***************
*** 209,212 ****
--- 211,218 ----
GETCONTEXT(device)->counter++;
}
+ else
+ {
+ GETCONTEXT(device)->lost_error++;
+ }
// result=KsPinSubmitFrame(GETCONTEXT(device)->pin_out,packet,TRANSPORT_PACKET_SIZE*TRANSPORT_PACKET_COUNT,NULL,NULL);
// if(result==STATUS_SUCCESS) GETCONTEXT(device)->counter++;
***************
*** 218,255 ****
// Time to send some frames out
unsigned char *packet;
! int page,offset;
int size,copy,outsize;
PKSSTREAM_POINTER stream_pointer;
PKSDEVICE device = KsPinGetDevice(Pin);
! // Find out start address of memory to be sent
! if(GETCONTEXT(device)->switcher) {
! page=0;
! offset=0;
! } else {
! page=((TS_HEIGHT*TS_WIDTH)/2)/0x1000;
! offset=((TS_HEIGHT*TS_WIDTH)/2)%0x1000;
! }
! stream_pointer=KsPinGetLeadingEdgeStreamPointer(GETCONTEXT(device)->pin_out,KSSTREAM_POINTER_STATE_LOCKED);
! if(stream_pointer!=NULL) {
! packet=stream_pointer->OffsetOut.Data;
! size=0;
! while(size<(TRANSPORT_PACKET_SIZE*TRANSPORT_PACKET_COUNT)) {
! copy=SAA7146_PAGE_SIZE-offset;
! if(copy>((TRANSPORT_PACKET_SIZE*TRANSPORT_PACKET_COUNT)-size)) copy=(TRANSPORT_PACKET_SIZE*TRANSPORT_PACKET_COUNT)-size;
! RtlCopyMemory(packet+size,((unsigned char*)(GETCONTEXT(device)->dma_pages[page]))+offset,copy);
! size+=copy;
! offset+=copy;
! if(offset==SAA7146_PAGE_SIZE) {
page++;
! offset=0;
! }
! }
- KsStreamPointerAdvanceOffsetsAndUnlock(stream_pointer,0,TRANSPORT_PACKET_SIZE*TRANSPORT_PACKET_COUNT,FALSE);
- GETCONTEXT(device)->counter++;
- }
//_DbgPrintF(DEBUGLVL_TERSE, ("SAA7146 Got some data"));
return STATUS_PENDING;
--- 224,291 ----
// Time to send some frames out
unsigned char *packet;
! unsigned long page,offset;
int size,copy,outsize;
+ unsigned long dmapos;
PKSSTREAM_POINTER stream_pointer;
PKSDEVICE device = KsPinGetDevice(Pin);
! dmapos = DeviceReadRegister32(device,REG_PCI_VDP3);
! dmapos/=0x1000;
! if(dmapos > PAGE_ALLOCATE)
! {
! GETCONTEXT(device)->lost_error++;
! return STATUS_PENDING;
! }
!
! if(GETCONTEXT(device)->lastcopied > dmapos)
! {
! page = GETCONTEXT(device)->lastcopied;
!
! stream_pointer=KsPinGetLeadingEdgeStreamPointer(GETCONTEXT(device)->pin_out,KSSTREAM_POINTER_STATE_LOCKED);
! if(stream_pointer!=NULL && stream_pointer->OffsetOut.Remaining >= (unsigned long)((PAGE_ALLOCATE - page)* SAA7146_PAGE_SIZE)) {
! packet=stream_pointer->OffsetOut.Data;
! size=0;
! while(page < PAGE_ALLOCATE) {
! RtlCopyMemory(packet+size,((unsigned char*)(GETCONTEXT(device)->dma_pages[page])),SAA7146_PAGE_SIZE);
! size+=SAA7146_PAGE_SIZE;
page++;
! }
!
! KsStreamPointerAdvanceOffsetsAndUnlock(stream_pointer,0,size,FALSE);
! GETCONTEXT(device)->counter++;
! }
! else
! {
! GETCONTEXT(device)->lost_error++;
! }
! GETCONTEXT(device)->lastcopied = 0;
! }
!
! if(GETCONTEXT(device)->lastcopied < dmapos)
! {
! page = GETCONTEXT(device)->lastcopied;
!
! stream_pointer=KsPinGetLeadingEdgeStreamPointer(GETCONTEXT(device)->pin_out,KSSTREAM_POINTER_STATE_LOCKED);
! if(stream_pointer!=NULL && stream_pointer->OffsetOut.Remaining >= (unsigned long)((dmapos - page)* SAA7146_PAGE_SIZE)) {
! packet=stream_pointer->OffsetOut.Data;
! size=0;
! while(page < dmapos) {
! RtlCopyMemory(packet+size,((unsigned char*)(GETCONTEXT(device)->dma_pages[page])),SAA7146_PAGE_SIZE);
! size+=SAA7146_PAGE_SIZE;
! page++;
! }
!
! KsStreamPointerAdvanceOffsetsAndUnlock(stream_pointer,0,size,FALSE);
! GETCONTEXT(device)->counter++;
! }
! else
! {
! GETCONTEXT(device)->lost_error++;
! }
! GETCONTEXT(device)->lastcopied = dmapos;
! }
//_DbgPrintF(DEBUGLVL_TERSE, ("SAA7146 Got some data"));
return STATUS_PENDING;
***************
*** 413,416 ****
--- 449,455 ----
/*****************************************************************************\
* $Log$
+ * Revision 1.10 2003/04/26 09:34:53 adcockj
+ * My last set of changes to try and resolve my issue with tuning
+ *
* Revision 1.9 2003/04/07 07:00:50 adcockj
* Synced to linux driver
|