Lines Matching refs:dev

64 static void u12motor_DownloadNullScanStates( U12_Device *dev )
66 memset( dev->scanStates, 0, _SCANSTATE_BYTES );
67 u12io_DownloadScanStates( dev );
72 static void u12motor_Force16Steps( U12_Device *dev, int dir )
77 u12io_DataToRegister( dev, REG_MOTOR0CONTROL, _FORWARD_MOTOR );
79 u12io_DataToRegister( dev, REG_MOTOR0CONTROL, _BACKWARD_MOTOR );
82 u12io_RegisterToScanner( dev, REG_FORCESTEP );
89 static void u12motor_ModuleFreeRun( U12_Device *dev, u_long steps )
97 u12io_DataToRegs( dev, rb, 3 );
102 static SANE_Status u12motor_PositionYProc( U12_Device *dev, u_long steps )
110 while(!(u12io_GetScanState( dev ) & _SCANSTATE_STOP) &&
113 u12motor_ModuleFreeRun( dev, steps );
118 if( !(u12io_GetExtendedStatus( dev ) & _STILL_FREE_RUNNING)) {
135 static void u12motor_PositionModuleToHome( U12_Device *dev )
142 saveModel = dev->regs.RD_ModelControl;
144 dev->scan.refreshState = SANE_FALSE;
145 u12motor_DownloadNullScanStates( dev );
148 save = dev->shade.intermediate;
150 dev->shade.intermediate = _ScanMode_AverageOut;
151 u12hw_InitAsic( dev, SANE_FALSE );
152 dev->shade.intermediate = save;
157 _SET_REG( rb, c, REG_MODELCONTROL, (dev->ModelCtrl | _MODEL_DPI300));
159 _SET_REG( rb, c, REG_XSTEPTIME, dev->XStepBack );
160 _SET_REG( rb, c, REG_MOTORDRVTYPE, dev->MotorPower );
164 u12io_DataToRegs( dev, rb, c );
166 memset( dev->scanStates, 0x88, _SCANSTATE_BYTES );
167 u12io_DownloadScanStates( dev );
169 u12io_RegisterToScanner( dev, REG_REFRESHSCANSTATE );
170 dev->regs.RD_ModelControl = saveModel;
175 static void u12motor_ToHomePosition( U12_Device *dev, SANE_Bool wait )
180 if( !(u12io_DataFromRegister( dev, REG_STATUS ) & _FLAG_PAPER)) {
182 u12motor_PositionModuleToHome( dev );
187 if( u12io_DataFromRegister( dev, REG_STATUS ) & _FLAG_PAPER)
197 static SANE_Status u12motor_BackToHomeSensor( U12_Device *dev )
209 u12io_DataToRegs( dev, rb, c );
211 u12motor_Force16Steps( dev, _DIR_NONE );
214 memset( dev->scanStates, 0x88, _SCANSTATE_BYTES );
215 u12io_DownloadScanStates( dev );
221 while(!(u12io_GetScanState( dev ) & _SCANSTATE_STOP) &&
229 u12motor_Force16Steps( dev, _DIR_BW );
230 dev->regs.RD_ModeControl = _ModeScan;
234 if(!(dev->DataInf.dwScanFlag & _SCANDEF_TPA)) {
235 _SET_REG( rb, c, REG_LINECONTROL, _LOBYTE(dev->shade.wExposure));
236 _SET_REG( rb, c, REG_XSTEPTIME, _LOBYTE(dev->shade.wXStep));
247 u12io_DataToRegs( dev, rb, c );
251 if( u12io_DataFromRegister( dev, REG_STATUS ) & _FLAG_PAPER )
264 _SET_REG( rb, c, REG_LINECONTROL, dev->regs.RD_LineControl);
265 _SET_REG( rb, c, REG_XSTEPTIME, dev->regs.RD_XStepTime);
266 u12io_DataToRegs( dev, rb, c );
269 dev->regs.RD_LineControl, dev->regs.RD_XStepTime );
271 u12motor_DownloadNullScanStates( dev );
277 static SANE_Status u12motor_ModuleToHome( U12_Device *dev )
282 if(!(u12io_DataFromRegister( dev, REG_STATUS ) & _FLAG_PAPER)) {
284 u12io_DataToRegister( dev, REG_MOTOR0CONTROL,
285 (SANE_Byte)(dev->regs.RD_Motor0Control|_MotorDirForward));
287 res = u12motor_PositionYProc( dev, 40 );
291 res = u12motor_BackToHomeSensor( dev );
303 static SANE_Status u12motor_WaitForPositionY( U12_Device *dev )
312 dwBeginY = (u_long)dev->DataInf.crImage.y * 4 + dev->scan.dwScanOrigin;
314 if( dev->DataInf.wPhyDataType <= COLOR_256GRAY ) {
315 if( dev->f0_8_16 )
321 bXStep = (SANE_Byte)((dev->DataInf.wPhyDataType <= COLOR_256GRAY) ?
322 dev->XStepMono : dev->XStepColor);
324 if( dev->shade.intermediate & _ScanMode_AverageOut )
327 u12motor_Force16Steps( dev, _DIR_NONE );
331 bXStep < dev->regs.RD_XStepTime ) {
333 u12io_DataToRegister( dev, REG_MOTORDRVTYPE, dev->MotorPower );
335 u12io_DataToRegister( dev, REG_XSTEPTIME, bXStep);
336 u12io_DataToRegister( dev, REG_EXTENDEDXSTEP, 0 );
337 u12io_DataToRegister( dev, REG_SCANCONTROL1,
338 (SANE_Byte)(dev->regs.RD_ScanControl1 & ~_MFRC_RUNSCANSTATE));
339 res = u12motor_PositionYProc( dev, dwBeginY - 64 );
344 _SET_REG(rb, c, REG_SCANCONTROL1, dev->regs.RD_ScanControl1 );
347 _SET_REG( rb, c, REG_FIFOFULLEN0, _LOBYTE(dev->regs.RD_BufFullSize));
348 _SET_REG( rb, c, REG_FIFOFULLEN1, _HIBYTE(dev->regs.RD_BufFullSize));
349 _SET_REG( rb, c, REG_FIFOFULLEN2, _LOBYTE(_HIWORD(dev->regs.RD_BufFullSize)));
350 u12io_DataToRegs( dev, rb, c );
352 u12io_DataToRegister( dev, REG_MOTORDRVTYPE, dev->regs.RD_MotorDriverType);
355 if(!dev->f2003 || (dev->shade.intermediate & _ScanMode_AverageOut) ||
356 ( dev->DataInf.xyAppDpi.y <= 75 &&
357 dev->DataInf.wPhyDataType <= COLOR_256GRAY)) {
358 u12io_DataToRegister( dev, REG_MOTORDRVTYPE,
359 (SANE_Byte)(dev->MotorPower & (_MOTORR_MASK | _MOTORR_STRONG)));
361 u12io_DataToRegister( dev, REG_MOTORDRVTYPE,
362 dev->regs.RD_MotorDriverType );
366 _SET_REG( rb, c, REG_XSTEPTIME, dev->regs.RD_XStepTime );
367 _SET_REG( rb, c, REG_EXTENDEDXSTEP, dev->regs.RD_ExtXStepTime );
369 (SANE_Byte)(dev->regs.RD_ScanControl1 & ~_MFRC_RUNSCANSTATE));
370 u12io_DataToRegs( dev, rb, c );
372 if( dev->DataInf.dwScanFlag & _SCANDEF_PREVIEW ) {
376 u12motor_ModuleFreeRun( dev, dwBeginY );
381 while(( u12io_GetExtendedStatus( dev ) & _STILL_FREE_RUNNING) &&
383 u12io_DataToRegister( dev, REG_MODECONTROL, _ModeScan );
385 u12motor_PositionYProc( dev, dwBeginY );
386 u12io_RegisterToScanner( dev, REG_REFRESHSCANSTATE );
393 static void u12motor_ForceToLeaveHomePos( U12_Device *dev )
403 u12io_DataToRegs( dev, rb, 2 );
408 if( !(u12io_DataFromRegister( dev, REG_STATUS ) & _FLAG_PAPER))
411 u12io_RegisterToScanner( dev, REG_FORCESTEP );
416 u12io_DataToRegister( dev, REG_STEPCONTROL, _MOTOR0_SCANSTATE );
421 static SANE_Status u12motor_GotoShadingPosition( U12_Device *dev )
428 res = u12motor_ModuleToHome( dev );
433 if( dev->DataInf.dwScanFlag & _SCANDEF_TPA ) {
435 u12motor_ForceToLeaveHomePos( dev );
436 u12motor_DownloadNullScanStates( dev );
445 u12io_DataToRegs( dev, rb, c );
447 res = u12motor_PositionYProc( dev, _TPA_SHADINGORG );
457 static void u12motor_ModuleForwardBackward( U12_Device *dev )
461 switch( dev->scan.bModuleState ) {
465 dev->scan.bModuleState = _MotorGoBackward;
466 u12io_DataToRegister( dev, REG_SCANCONTROL1,
467 (SANE_Byte)(dev->regs.RD_ScanControl1 & ~_MFRC_RUNSCANSTATE));
468 u12io_DataToRegister( dev, REG_MOTOR0CONTROL,
469 (SANE_Byte)(dev->regs.RD_Motor0Control & ~_MotorDirForward));
471 u12motor_ModuleFreeRun( dev, _BACKSTEPS );
478 if(!(u12io_GetExtendedStatus( dev ) & _STILL_FREE_RUNNING )) {
479 dev->scan.bModuleState = _MotorInStopState;
489 if( u12io_GetFifoLength( dev ) < dev->scan.dwMaxReadFifo ) {
490 dev->scan.bModuleState = _MotorAdvancing;
491 u12io_DataToRegister( dev, REG_SCANCONTROL1,
492 dev->regs.RD_ScanControl1);
493 u12io_DataToRegister( dev, REG_MOTOR0CONTROL,
494 dev->regs.RD_Motor0Control);
495 u12motor_ModuleFreeRun( dev, _FORWARDSTEPS );
504 if( !(u12io_GetScanState( dev ) & _SCANSTATE_STOP))
505 dev->scan.bModuleState = _MotorInNormalState;
507 if (!(u12io_GetExtendedStatus( dev ) & _STILL_FREE_RUNNING )) {
508 u12io_RegisterToScanner( dev, REG_REFRESHSCANSTATE );
509 dev->scan.bModuleState = _MotorInNormalState;