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 |