Lines Matching refs:ps
20 * - removed calls to ps->PositionLamp
122 static void ptdrvStartLampTimer( pScanData ps );
196 static void ptDrvSwitchLampOn( pScanData ps )
200 if( _IS_ASIC98(ps->sCaps.AsicID)) {
202 ps->AsicReg.RD_ScanControl |= _SCAN_NORMALLAMP_ON;
204 ps->bLastLampStatus = _SCAN_NORMALLAMP_ON;
208 ps->AsicReg.RD_ScanControl |= ps->bLampOn;
209 ps->bLastLampStatus = ps->bLampOn;
212 IOCmdRegisterToScanner(ps, ps->RegScanControl, ps->AsicReg.RD_ScanControl);
217 static void ptdrvLampWarmup( pScanData ps )
222 if( 0 == ps->warmup )
230 if( _OK == MiscCheckTimer( &toTimer[ps->devno] )) {
236 warmupNeeded = ps->fWarmupNeeded;
245 DBG( DBG_LOW, "Waiting on warmup - %u s\n", ps->warmup );
247 MiscStartTimer( &timer, _SECOND * ps->warmup );
251 if( _FALSE == ps->fScanningStatus ) {
252 MiscStartTimer( &toTimer[ps->devno], (_SECOND * ps->warmup));
268 MiscStartTimer( &toTimer[ps->devno], _SECOND );
275 pScanData ps;
280 ps = PtDrvDevices[0];
285 if( NULL == ps )
288 if( _NO_BASE == ps->sCaps.wIOBase )
291 if( _IS_ASIC98(ps->sCaps.AsicID)) {
292 ps->AsicReg.RD_ScanControl &= ~_SCAN_LAMPS_ON;
294 ps->AsicReg.RD_ScanControl &= ~_SCAN_LAMP_ON;
298 ps->bLastLampStatus = 0xFF;
304 if( _OK != MiscClaimPort(ps)) {
305 ptdrvStartLampTimer( ps );
309 IOCmdRegisterToScanner( ps, ps->RegScanControl,
310 ps->AsicReg.RD_ScanControl );
311 MiscReleasePort(ps);
316 static void ptdrvStartLampTimer( pScanData ps )
336 DBG(DBG_HIGH,"pt_drv%u: Can't setup timer-irq handler\n",ps->devno);
346 interval.it_value.tv_sec = ps->lampoff;
350 if( 0 != ps->lampoff )
353 alarm( ps->lampoff );
361 static void ptdrvStopLampTimer( pScanData ps )
370 if( 0 != ps->lampoff )
373 _VAR_NOT_USED( ps );
382 static int ptdrvOpen( pScanData ps, int portBase )
387 if( NULL == ps )
393 retval = MiscClaimPort(ps);
398 return MiscInitPorts( ps, portBase );
404 static int ptdrvClose( pScanData ps )
407 if( NULL == ps )
413 if ( NULL != ps->driverbuf ) {
415 _VFREE( ps->driverbuf );
416 ps->driverbuf = NULL;
419 if ( NULL != ps->Shade.pHilight ) {
420 _VFREE( ps->Shade.pHilight );
421 ps->Shade.pHilight = NULL;
427 MiscRestorePort( ps );
428 MiscReleasePort( ps );
435 static int ptdrvOpenDevice( pScanData ps )
448 pd = ps->pardev;
449 iobase = ps->sCaps.wIOBase;
450 asic = ps->sCaps.AsicID;
451 lastStat = ps->bLastLampStatus;
452 lastMode = ps->IO.lastPortMode;
453 devno = ps->devno;
458 ptdrvStopLampTimer( ps );
459 MiscReinitStruct ( ps );
464 ps->pardev = pd;
465 ps->bLastLampStatus = lastStat;
466 ps->IO.lastPortMode = lastMode;
467 ps->devno = devno;
468 ps->ModelOverride = mov[devno];
469 ps->warmup = warmup[devno];
470 ps->lampoff = lampoff[devno];
471 ps->lOffonEnd = lOffonEnd[devno];
472 ps->IO.forceMode = forceMode[devno];
477 retval = ptdrvOpen( ps, iobase );
480 retval = DetectScanner( ps, asic );
482 ptdrvStartLampTimer( ps );
494 pScanData ps;
504 ps = MiscAllocAndInitStruct();
505 if( NULL == ps ) {
509 ps->ModelOverride = mov[devno];
510 ps->warmup = warmup[devno];
511 ps->lampoff = lampoff[devno];
512 ps->lOffonEnd = lOffonEnd[devno];
513 ps->IO.forceMode = forceMode[devno];
514 ps->devno = devno;
517 PtDrvDevices[devno] = ps;
522 retval = MiscRegisterPort( ps, port[devno] );
525 retval = ptdrvOpen( ps, port[devno] );
532 retval = DetectScanner( ps, 0 );
536 ptDrvSwitchLampOn( ps );
538 ptdrvClose( ps );
544 devno, MiscGetModelName(ps->sCaps.Model));
549 MiscStartTimer( &toTimer[ps->devno], (_SECOND * ps->warmup));
551 if( 0 == ps->lampoff )
557 devno, ps->lampoff );
562 devno, ps->warmup );
564 if( 0 == ps->lOffonEnd ) {
572 ptdrvStartLampTimer( ps );
584 static int ptdrvShutdown( pScanData ps )
590 if( NULL == ps )
593 devno = ps->devno;
597 if( _NO_BASE != ps->sCaps.wIOBase ) {
599 ptdrvStopLampTimer( ps );
601 if( _OK == MiscClaimPort(ps)) {
603 ps->PutToIdleMode( ps );
605 if( 0 != ps->lOffonEnd ) {
606 if( _IS_ASIC98(ps->sCaps.AsicID)) {
607 ps->AsicReg.RD_ScanControl &= ~_SCAN_LAMPS_ON;
609 ps->AsicReg.RD_ScanControl &= ~_SCAN_LAMP_ON;
611 IOCmdRegisterToScanner( ps, ps->RegScanControl,
612 ps->AsicReg.RD_ScanControl );
615 MiscReleasePort( ps );
620 MiscUnregisterPort( ps );
622 _KFREE( ps );
632 static int ptdrvIoctl( pScanData ps, UInt cmd, pVoid arg )
644 if( NULL == ps )
674 retval = ptdrvOpenDevice( ps );
681 if ( NULL != ps->driverbuf ) {
683 _VFREE( ps->driverbuf );
684 ps->driverbuf = NULL;
687 if ( NULL != ps->Shade.pHilight ) {
688 _VFREE( ps->Shade.pHilight );
689 ps->Shade.pHilight = NULL;
692 ps->PutToIdleMode( ps );
693 ptdrvStartLampTimer( ps );
700 return putUserPtr( &ps->sCaps, arg, size);
707 return putUserPtr( &ps->LensInf, arg, size);
728 _ASSERT( ps->GetImageInfo );
729 ps->GetImageInfo( ps, &img );
743 pcInf->dwPixelsPerLine = ps->DataInf.dwAppPixelsPerLine;
744 pcInf->dwBytesPerLine = ps->DataInf.dwAppBytesPerLine;
745 pcInf->dwLinesPerArea = ps->DataInf.dwAppLinesPerArea;
760 DBG( DBG_LOW, "Adjusting device %u\n", ps->devno );
765 if( ps->devno < _MAX_PTDEVS ) {
768 warmup[ps->devno] = adj.warmup;
769 ps->warmup = adj.warmup;
773 lampoff[ps->devno] = adj.lampOff;
774 ps->lampoff = adj.lampOff;
778 lOffonEnd[ps->devno] = adj.lampOffOnEnd;
779 ps->lOffonEnd = adj.lampOffOnEnd;
800 if( _IS_ASIC98(ps->sCaps.AsicID))
812 if (copy_from_user((pVoid)&ps->a_bMapTable[x_len * i],
825 if (copy_from_user((pVoid)&ps->a_bMapTable[x_len * idx],
834 MapAdjust( ps, map.map_id );
852 if( _ASIC_IS_96001 == ps->sCaps.AsicID ) {
859 _ASSERT( ps->SetupScanSettings );
860 retval = ps->SetupScanSettings( ps, &sInf );
864 MapInitialize ( ps );
865 MapSetupDither( ps );
867 ps->DataInf.dwVxdFlag |= _VF_ENVIRONMENT_READY;
883 retval = IOIsReadyForScan( ps );
886 ps->dwDitherIndex = 0;
887 ps->fScanningStatus = _TRUE;
888 pstart->dwBytesPerLine = ps->DataInf.dwAppBytesPerLine;
889 pstart->dwLinesPerScan = ps->DataInf.dwAppLinesPerArea;
890 pstart->dwFlag = ps->DataInf.dwScanFlag;
892 ps->DataInf.dwVxdFlag |= _VF_FIRSTSCANLINE;
893 ps->DataInf.dwScanFlag&=~(_SCANNER_SCANNING|_SCANNER_PAPEROUT);
910 ps->fScanningStatus = _FALSE;
915 MotorToHomePosition( ps );
917 ps->DataInf.dwAppLinesPerArea = 0;
918 ps->DataInf.dwScanFlag &= ~_SCANNER_SCANNING;
921 if (!(ps->DataInf.dwVxdFlag & _VF_ENVIRONMENT_READY))
924 ps->DataInf.dwVxdFlag &= ~_VF_ENVIRONMENT_READY;
938 IODataRegisterFromScanner( ps, ps->RegStatus );
953 static int ptdrvRead( pScanData ps, pUChar buffer, int count )
965 if((NULL == buffer) || (NULL == ps)) {
973 "pt_drv%u: reading 0 bytes makes no sense!\n", ps->devno );
977 if( _FALSE == ps->fScanningStatus )
985 if (!(ps->DataInf.dwVxdFlag & _VF_ENVIRONMENT_READY)) {
987 "pt_drv%u: Cannot read, driver not initialized!\n",ps->devno);
994 ps->Scan.bp.pMonoBuf = _KALLOC( ps->DataInf.dwAppPhyBytesPerLine, GFP_KERNEL);
996 if ( NULL == ps->Scan.bp.pMonoBuf ) {
998 "pt_drv%u: Not enough memory available!\n", ps->devno );
1003 if( ps->DataInf.XYRatio > 1000 ) {
1005 scaleBuf = _KALLOC( ps->DataInf.dwAppPhyBytesPerLine, GFP_KERNEL);
1007 _KFREE( ps->Scan.bp.pMonoBuf );
1009 "pt_drv%u: Not enough memory available!\n", ps->devno );
1018 (unsigned long)ps->Scan.bp.pMonoBuf,
1019 ps->DataInf.dwAppPhyBytesPerLine, (unsigned long)scaleBuf );
1024 MotorToHomePosition( ps );
1026 if( _FALSE == ps->fScanningStatus ) {
1036 ps->bMoveDataOutFlag = _DataInNormalState;
1037 ps->fHalfStepTableFlag = _FALSE;
1038 ps->fReshaded = _FALSE;
1039 ps->fScanningStatus = _TRUE;
1041 if( _ASIC_IS_98003 == ps->sCaps.AsicID )
1042 ps->Scan.fRefreshState = _FALSE;
1044 ps->Scan.fRefreshState = _TRUE;
1046 ptdrvLampWarmup( ps );
1048 if( _FALSE == ps->fScanningStatus ) {
1053 retval = ps->Calibration( ps );
1057 ps->devno, retval );
1061 if( _ASIC_IS_98003 == ps->sCaps.AsicID ) {
1063 ps->OpenScanPath( ps );
1065 MotorP98003ForceToLeaveHomePos( ps );
1068 _ASSERT(ps->SetupScanningCondition);
1069 ps->SetupScanningCondition(ps);
1071 if( _ASIC_IS_98003 != ps->sCaps.AsicID ) {
1072 ps->SetMotorSpeed( ps, ps->bCurrentSpeed, _TRUE );
1073 IOSetToMotorRegister( ps );
1076 ps->WaitForPositionY( ps );
1078 ps->Scan.bOldScanState = IOGetScanState( ps, _TRUE ) & _SCANSTATE_MASK;
1081 ps->DataInf.dwScanFlag |= _SCANNER_SCANNING;
1083 if( _FALSE == ps->fScanningStatus ) {
1092 DBG( DBG_HIGH, "dwAppLinesPerArea = %d\n", ps->DataInf.dwAppLinesPerArea);
1093 DBG( DBG_HIGH, "dwAppBytesPerLine = %d\n", ps->DataInf.dwAppBytesPerLine);
1096 ps->bMoveDataOutFlag = _DataFromStopState;
1098 if ( 0 != ps->DataInf.dwAppLinesPerArea ) {
1100 ps->Scan.dwLinesToRead = count / ps->DataInf.dwAppBytesPerLine;
1102 if( ps->Scan.dwLinesToRead ) {
1104 DBG( DBG_HIGH, "dwLinesToRead = %d\n", ps->Scan.dwLinesToRead );
1106 if( ps->Scan.dwLinesToRead > ps->DataInf.dwAppLinesPerArea )
1107 ps->Scan.dwLinesToRead = ps->DataInf.dwAppLinesPerArea;
1109 ps->DataInf.dwAppLinesPerArea -= ps->Scan.dwLinesToRead;
1111 if (ps->DataInf.dwScanFlag & SCANDEF_BmpStyle)
1112 buffer += ((ps->Scan.dwLinesToRead - 1) *
1113 ps->DataInf.dwAppBytesPerLine);
1115 if (ps->DataInf.dwVxdFlag & _VF_DATATOUSERBUFFER)
1116 ps->DataInf.pCurrentBuffer = ps->Scan.bp.pMonoBuf;
1118 while(ps->fScanningStatus && ps->Scan.dwLinesToRead) {
1120 _ASSERT(ps->ReadOneImageLine);
1121 if (!ps->ReadOneImageLine(ps)) {
1122 ps->fScanningStatus = _FALSE;
1135 ScaleX( ps, ps->Scan.bp.pMonoBuf, scaleBuf );
1137 ps->DataInf.dwAppPhyBytesPerLine)) {
1141 if (copy_to_user( buffer, ps->Scan.bp.pMonoBuf,
1142 ps->DataInf.dwAppPhyBytesPerLine)) {
1147 buffer += ps->Scan.lBufferAdjust;
1149 ps->Scan.dwLinesToRead--;
1157 if (ps->fScanningStatus) {
1159 if( _IS_ASIC96(ps->sCaps.AsicID))
1160 MotorP96SetSpeedToStopProc(ps);
1163 if (ps->DataInf.dwScanFlag & (SCANDEF_StopWhenPaperOut |
1165 ps->DataInf.dwAppLinesPerArea = 0;
1167 if (ps->DataInf.dwScanFlag & SCANDEF_BmpStyle)
1168 buffer -= (ps->DataInf.dwAppBytesPerLine *
1169 (ps->Scan.dwLinesToRead - 1));
1171 ps->Scan.dwLinesToRead * ps->DataInf.dwAppBytesPerLine );
1172 dwLinesRead += ps->Scan.dwLinesToRead;
1181 if( _FALSE == ps->fScanningStatus ) {
1189 if( _ASIC_IS_98003 == ps->sCaps.AsicID )
1190 ps->CloseScanPath( ps );
1192 if( NULL != ps->Scan.bp.pMonoBuf )
1193 _KFREE( ps->Scan.bp.pMonoBuf );
1202 return (ps->DataInf.dwAppPhyBytesPerLine * dwLinesRead);