Lines Matching refs:ps
76 static void detectResetPort( pScanData ps )
82 control = _INB_CTRL( ps );
85 _OUTB_CTRL( ps, _CTRL_RESERVED ); /* reset, 0xc0 */
88 _OUTB_CTRL( ps, control ); /* and restore... */
95 static int detectScannerConnection( pScanData ps )
100 detectResetPort( ps );
106 control = _INB_CTRL( ps );
111 _OUTB_CTRL( ps, _CTRL_GENSIGNAL );
114 _OUTB_DATA( ps, 0x55 );
117 data = _INB_DATA( ps );
123 _OUTB_DATA( ps, 0xAA );
126 data = _INB_DATA( ps );
132 _OUTB_DATA( ps, 0x0 );
135 data = _INB_STATUS( ps );
137 ps->OpenScanPath( ps );
139 _OUTB_DATA( ps, 0x0 );
142 status = _INB_STATUS( ps );
144 ps->CloseScanPath( ps );
150 data, status, ps->IO.portBase );
154 _ASSERT( ps->ReadWriteTest );
161 for( ps->IO.delay = 0; ps->IO.delay < 5; ps->IO.delay++ ) {
163 retval = ps->ReadWriteTest( ps );
175 ps->sCaps.wIOBase = ps->pardev;
176 ps->PutToIdleMode( ps );
179 ps->sCaps.wIOBase = _NO_BASE;
185 _OUTB_CTRL( ps, control );
195 static int detectSetupBuffers( pScanData ps )
201 if ( 0 == ps->TotalBufferRequire ) {
204 "pt_drv: asic 0x%x probably not supported\n", ps->sCaps.AsicID);
213 DBG(DBG_LOW,"Driverbuf(%u bytes) needed !\n", ps->TotalBufferRequire);
214 ps->driverbuf = (pUChar)_VMALLOC(ps->TotalBufferRequire);
216 if ( NULL == ps->driverbuf ) {
220 ps->TotalBufferRequire);
224 memset( ps->driverbuf, 0, ps->TotalBufferRequire );
227 ps->pPrescan16 = ps->driverbuf;
228 ps->pPrescan8 = ps->pPrescan16 + ps->BufferFor1stColor;
229 ps->pScanBuffer1 = ps->pPrescan8 + ps->BufferFor2ndColor;
233 ps->pEndBufR = ps->pPrescan8;
234 ps->pEndBufG = ps->pScanBuffer1;
235 ps->pColorRunTable = ps->pScanBuffer1 + ps->BufferForDataRead1;
238 (unsigned long)ps->pColorRunTable,
239 (unsigned long)((pUChar)ps->driverbuf + ps->TotalBufferRequire));
241 if ( _ASIC_IS_98001 == ps->sCaps.AsicID ) {
245 ps->pScanBuffer2 = ps->pPrescan16;
246 ps->pScanBuffer1 = ps->pScanBuffer2 + _LINE_BUFSIZE1;
247 ps->pColorRunTable = ps->pScanBuffer1 + _LINE_BUFSIZE * 2UL;
248 ps->pProcessingBuf = ps->pColorRunTable + ps->BufferForColorRunTable;
250 (unsigned long)ps->pScanBuffer2,
251 (unsigned long)ps->pScanBuffer1,
252 (unsigned long)ps->pColorRunTable );
254 (unsigned long)ps->pProcessingBuf, ps->TotalBufferRequire );
256 ps->dwShadow = (_DEF_BRIGHTEST_SKIP + _DEF_DARKEST_SKIP) * 5400UL * 2UL * 3UL;
258 ps->Shade.pHilight = _VMALLOC( ps->dwShadow );
260 if ( NULL != ps->Shade.pHilight ) {
262 memset( ps->Shade.pHilight, 0, ps->dwShadow );
264 ps->dwHilight = _DEF_BRIGHTEST_SKIP * 5400UL * 3UL;
265 ps->dwShadow = _DEF_DARKEST_SKIP * 5400UL * 3UL;
266 ps->pwShadow = (pUShort)ps->Shade.pHilight + ps->dwHilight;
267 ps->Shade.dwDiv = 32UL - _DEF_BRIGHTEST_SKIP - _DEF_DARKEST_SKIP;
269 ps->dwHilightCh = ps->dwHilight / 3UL;
270 ps->dwShadowCh = ps->dwShadow / 3UL;
272 } else if ( _ASIC_IS_98003 == ps->sCaps.AsicID ) {
276 ps->Bufs.b1.pReadBuf = ps->driverbuf;
277 ps->Bufs.b2.pSumBuf = ps->Bufs.b1.pReadBuf + _SizeDataBuf;
278 ps->Bufs.TpaBuf.pb = &((pUChar)ps->Bufs.b2.pSumBuf)[_SizeShadingSumBuf];
281 ps->Shade.skipHilight = _DEF_BRIGHTEST_SKIP;
282 ps->Shade.skipShadow = _DEF_DARKEST_SKIP;
284 if( ps->Shade.skipHilight && ps->Shade.skipShadow ) {
288 skipSize = (ULong)((ps->Shade.skipHilight + ps->Shade.skipShadow)
291 ps->Shade.pHilight = _VMALLOC( skipSize );
293 if( NULL != ps->Shade.pHilight ) {
294 ps->Shade.dwDiv = (ULong)(32UL - ps->Shade.skipHilight -
295 ps->Shade.skipShadow);
298 ps->Shade.pHilight = NULL;
306 static int detectP48xx( pScanData ps )
313 ps->IO.delay = 4;
315 ModelSet4800( ps );
317 result = P48xxInitAsic( ps );
321 return detectScannerConnection( ps );
326 static int detectAsic98003( pScanData ps )
333 ps->IO.delay = 4;
335 ModelSetP12( ps );
337 result = P12InitAsic( ps );
341 IOSoftwareReset( ps );
343 return detectScannerConnection( ps );
348 static int detectAsic98001( pScanData ps )
355 ps->IO.delay = 4;
357 ModelSet9636( ps );
359 result = P9636InitAsic( ps );
364 return detectScannerConnection( ps );
368 ps->sCaps.AsicID = _ASIC_IS_98001;
369 ps->sCaps.wIOBase = ps->IO.pbSppDataPort;
378 _LOC int DetectScanner( pScanData ps, int mode )
386 if((ps->IO.portMode != _PORT_EPP) && (ps->IO.portMode != _PORT_SPP) &&
387 (ps->IO.portMode != _PORT_BIDI)) {
389 DBG( DBG_LOW, "!!! Portmode (%u)not supported !!!\n", ps->IO.portMode );
402 result = detectP48xx( ps );
411 ps->CtrlReadHighNibble = _CTRL_GENSIGNAL+_CTRL_AUTOLF+_CTRL_STROBE;
412 ps->CtrlReadLowNibble = _CTRL_GENSIGNAL+_CTRL_AUTOLF;
420 detectResetPort( ps );
423 ps->RegAsicID = 0x18;
424 ps->IO.useEPPCmdMode = _FALSE;
425 ps->sCaps.AsicID = _ASIC_IS_98001;
426 IOInitialize( ps );
428 asic = IODataRegisterFromScanner( ps, ps->RegAsicID );
437 result = detectAsic98001( ps );
445 ps->IO.useEPPCmdMode = _FALSE;
446 ps->sCaps.AsicID = _ASIC_IS_98003;
447 IOInitialize( ps );
448 IOSoftwareReset( ps );
450 result = detectAsic98003( ps );
468 result = detectAsic98001( ps );
473 result = detectAsic98003( ps );
478 result = detectP48xx( ps );
484 _ASSERT( ps->SetupScannerVariables );
485 ps->SetupScannerVariables( ps );
487 detectSetupBuffers( ps );
492 ps->sCaps.wIOBase = _NO_BASE;