Description: Remove kernel driver for plustek_pp
 Cherry-Picked from upstream.
Origin: upstream
Bug:https://gitlab.com/sane-project/backends/-/issues/578
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1008275
Forwarded: not-needed
Last-Update: 2022-03-26 <YYYY-MM-DD, last update of the meta-information, optional>
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
Index: trunk/backend/plustek-pp.h
===================================================================
--- trunk.orig/backend/plustek-pp.h
+++ trunk/backend/plustek-pp.h
@@ -235,11 +235,7 @@ typedef const struct mode_param
 #define _E_SEQUENCE	  (_FIRST_ERR-30)	/* caller sequence does not match	*/
 #define _E_NO_ASIC	  (_FIRST_ERR-31)	/* can't detect ASIC            	*/
 
-#ifdef __KERNEL__
-# define _E_FAULT     (-EFAULT)
-#else
 # define _E_FAULT     (_E_INTERNAL)    /* should never happen in userspace  */
-#endif
 
 #define _E_LAMP_NOT_IN_POS	(_FIRST_ERR-40)
 #define _E_LAMP_NOT_STABLE	(_FIRST_ERR-41)
@@ -471,10 +467,6 @@ typedef struct {
 #define _ScanMode_AverageOut	1	/* CCD averaged 2 pixels value for output*/
 #define _ScanMode_Mono			2   /* not color mode						 */
 
-
-#ifndef __KERNEL__
-
-
 #define PLUSTEK_CONFIG_FILE	"plustek_pp.conf"
 
 #ifndef PATH_MAX
@@ -631,7 +623,6 @@ typedef struct {
 	AdjDef adj;
 
 } CnfDef, *pCnfDef;
-#endif /* guard __KERNEL__ */
 
 #endif	/* guard __PLUSTEKPP_H__ */
 
Index: trunk/backend/plustek-pp_dbg.h
===================================================================
--- trunk.orig/backend/plustek-pp_dbg.h
+++ trunk/backend/plustek-pp_dbg.h
@@ -47,22 +47,11 @@
 /* #define _ASIC_98001_SIM */
 
 /*
- * the print macros
- */
-#ifdef __KERNEL__
-# define _PRINT	printk
-#endif
-
-/*
  * some debug definitions
  */
 #ifdef DEBUG
-# ifndef __KERNEL__
 #  include <assert.h>
 #  define _ASSERT(x) assert(x)
-# else
-#  define _ASSERT(x)
-# endif
 
 # ifndef DBG
 #  define DBG(level, msg, args...)		if ((dbg_level) & (level)) {	\
Index: trunk/backend/plustek-pp_detect.c
===================================================================
--- trunk.orig/backend/plustek-pp_detect.c
+++ trunk/backend/plustek-pp_detect.c
@@ -97,11 +97,6 @@ static int detectScannerConnection( pSca
 	UChar data, control, status;
 	int   retval = _E_NO_CONN;
 
-#ifdef __KERNEL__
-	DBG( DBG_LOW, "Dataport = 0x%04x\n", ps->IO.pbSppDataPort );
-	DBG( DBG_LOW, "Ctrlport = 0x%04x\n", ps->IO.pbControlPort );
-#endif
-
 	detectResetPort( ps );
 
 	/*
@@ -177,11 +172,7 @@ static int detectScannerConnection( pSca
 
 	/* work on the result */
 	if ( _OK == retval ) {
-#ifdef __KERNEL__
-		ps->sCaps.wIOBase = ps->IO.pbSppDataPort;
-#else
 		ps->sCaps.wIOBase = ps->pardev;
-#endif
 		ps->PutToIdleMode( ps );
 
 	} else {
@@ -209,11 +200,7 @@ static int detectSetupBuffers( pScanData
      */
     if ( 0 == ps->TotalBufferRequire ) {
 
-#ifdef __KERNEL__
-		_PRINT(
-#else
 		DBG( DBG_HIGH,
-#endif
         "pt_drv: asic 0x%x probably not supported\n", ps->sCaps.AsicID);
 
         return _E_ALLOC;  /* Out of memory */
@@ -228,11 +215,7 @@ static int detectSetupBuffers( pScanData
 
         if ( NULL == ps->driverbuf ) {
 
-#ifdef __KERNEL__
-		_PRINT(
-#else
 		DBG( DBG_HIGH,
-#endif
              "pt_drv: Not enough kernel memory %d\n",
                     ps->TotalBufferRequire);
             return _E_ALLOC;  /* Out of memory */
@@ -380,11 +363,7 @@ static int detectAsic98001( pScanData ps
 
 	return detectScannerConnection( ps );
 #else
-#ifdef __KERNEL__
-		_PRINT(
-#else
 		DBG( DBG_HIGH,
-#endif
 			"!!!! WARNING, have a look at function detectAsic98001() !!!!\n" );
    	ps->sCaps.AsicID  =  _ASIC_IS_98001;
   	ps->sCaps.wIOBase = ps->IO.pbSppDataPort;
@@ -434,11 +413,7 @@ _LOC int DetectScanner( pScanData ps, in
 
             /* read Register 0x18 (AsicID Register) of Asic9800x based devices */
 #ifdef _ASIC_98001_SIM
-#ifdef __KERNEL__
-			_PRINT(
-#else
 			DBG( DBG_HIGH,
-#endif
 						"!!!! WARNING, SW-Emulation active !!!!\n" );
             asic = _ASIC_IS_98001;
 #else
Index: trunk/backend/plustek-pp_hwdefs.h
===================================================================
--- trunk.orig/backend/plustek-pp_hwdefs.h
+++ trunk/backend/plustek-pp_hwdefs.h
@@ -586,19 +586,6 @@ typedef struct
  * structure to hold IO port specific stuff
  */
 typedef struct {
-
-#ifdef __KERNEL__
-	pFnOut fnOut;
-	pFnIn  fnIn;
-
-	UShort pbSppDataPort;
-	UShort pbEppDataPort;
-
-	UShort pbStatusPort;
-	UShort pbControlPort;
-	UShort pbAddrOffsetPort;
-#endif
-
 	UShort portBase;
 	UShort portMode;
 	UShort lastPortMode;
Index: trunk/backend/plustek-pp_image.c
===================================================================
--- trunk.orig/backend/plustek-pp_image.c
+++ trunk/backend/plustek-pp_image.c
@@ -1288,11 +1288,7 @@ static Bool imageP98003ReadOneImageLine(
 
     } while( !MiscCheckTimer( &timer ));
 
-#ifdef __KERNEL__
-	_PRINT(
-#else
 	DBG( DBG_HIGH,
-#endif
 	"Timeout - Scanner malfunction !!\n" );
 	MotorToHomePosition(ps);
 
Index: trunk/backend/plustek-pp_io.c
===================================================================
--- trunk.orig/backend/plustek-pp_io.c
+++ trunk/backend/plustek-pp_io.c
@@ -257,21 +257,11 @@ static Bool fnEPPRead( pScanData ps, pUC
 
 	if( _IS_ASIC98(ps->sCaps.AsicID)) {
 
-#ifndef __KERNEL__
 		sanei_pp_set_datadir( ps->pardev, SANEI_PP_DATAIN );
-#else
-		_OUTB_CTRL( ps, (_CTRL_GENSIGNAL + _CTRL_DIRECTION));
-		_DO_UDELAY( 1 );
-#endif
 		for( i = 0; i < ulSize; i++ )
 			pBuffer[i] = _INB_EPPDATA( ps );
 
-#ifndef __KERNEL__
 		sanei_pp_set_datadir( ps->pardev, SANEI_PP_DATAOUT );
-#else
-		_OUTB_CTRL( ps, _CTRL_GENSIGNAL );
-		_DO_UDELAY( 1 );
-#endif
 	} else {
 
 		for( i = 0; i < ulSize; i++ )
@@ -290,18 +280,12 @@ static Bool fnBiDirRead( pScanData ps, p
 	start = _CTRL_START_BIDIREAD;
 	end   = _CTRL_END_BIDIREAD;
 
-#ifndef __KERNEL__
 	sanei_pp_set_datadir( ps->pardev, SANEI_PP_DATAIN );
 
 	if( !sanei_pp_uses_directio()) {
 		start &= ~_CTRL_DIRECTION;
 		end   &= ~_CTRL_DIRECTION;
 	}
-#else
-	if( _IS_ASIC98(ps->sCaps.AsicID)) {
-		_OUTB_CTRL( ps, (_CTRL_GENSIGNAL + _CTRL_DIRECTION));
-	}
-#endif
 
 	switch( ps->IO.delay ) {
 
@@ -341,13 +325,7 @@ static Bool fnBiDirRead( pScanData ps, p
 
 	}
 
-#ifndef __KERNEL__
 	sanei_pp_set_datadir( ps->pardev, SANEI_PP_DATAOUT );
-#else
-	if( _IS_ASIC98(ps->sCaps.AsicID)) {
-		_OUTB_CTRL( ps, _CTRL_GENSIGNAL );
-	}
-#endif
 	return _TRUE;
 }
 
@@ -953,45 +931,4 @@ _LOC void IOReadScannerImageData( pScanD
 		ps->OpenScanPath( ps );
 }
 
-#ifdef __KERNEL__
-
-/** the wrapper functions to support delayed and non-delayed I/O
- */
-_LOC void IOOut( Byte data, UShort port )
-{
-	DBG( DBG_IOF, "outb(0x%04x, 0x%02x)\n", port, data );
-	outb( data, port );
-}
-
-_LOC void IOOutDelayed( Byte data, UShort port )
-{
-	DBG( DBG_IOF, "outb_p(0x%04x, 0x%02x)\n", port, data );
-	outb_p( data, port );
-}
-
-_LOC Byte IOIn( UShort port )
-{
-#ifdef DEBUG
-	Byte data = inb( port );
-
-	DBG( DBG_IOF, "inb(0x%04x) = 0x%02x\n", port, data );
-	return data;
-#else
-	return inb( port );
-#endif
-}
-
-_LOC Byte IOInDelayed( UShort port )
-{
-#ifdef DEBUG
-	Byte data = inb_p( port );
-
-	DBG( DBG_IOF, "inb_p(0x%04x) = 0x%02x\n", port, data );
-	return data;
-#else
-	return inb_p( port );
-#endif
-}
-#endif /* guard __KERNEL__ */
-
 /* END PLUSTEK-PP_IO.C ......................................................*/
Index: trunk/backend/plustek-pp_misc.c
===================================================================
--- trunk.orig/backend/plustek-pp_misc.c
+++ trunk/backend/plustek-pp_misc.c
@@ -77,27 +77,11 @@
 
 /*************************** some definitions ********************************/
 
-#ifndef __KERNEL__
 # define PPA_PROBE_SPP   0x0001
 # define PPA_PROBE_PS2   0x0002
 # define PPA_PROBE_ECR   0x0010
 # define PPA_PROBE_EPP17 0x0100
 # define PPA_PROBE_EPP19 0x0200
-#else
-
-/* the parport driver in Kernel 2.4 has changed. It does report the
- * possible modes in a different, more general way. As long, as
- * we do not use the parport-module change mode facility, I assume
- * the following correlations
- */
-#if defined LINUX_24 || defined LINUX_26
-# define PARPORT_MODE_PCPS2     PARPORT_MODE_TRISTATE
-# define PARPORT_MODE_PCEPP     PARPORT_MODE_EPP
-# define PARPORT_MODE_PCECPPS2  PARPORT_MODE_TRISTATE
-# define PARPORT_MODE_PCECPEPP  PARPORT_MODE_EPP
-# define PARPORT_MODE_PCECR     PARPORT_MODE_ECP
-#endif
-#endif
 
 #define _PP_A 16807         /**< multiplier */
 #define _PP_M 2147483647L   /**< 2**31 - 1  */
@@ -107,298 +91,10 @@
 static int  port_feature = 0;
 static long randomnum    = 1;
 
-#ifdef __KERNEL__
-static int portIsClaimed[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = 0 };
-
-MODELSTR;	/**< a static char array (see plustek-pp.h) */
-
-#else
 static int portIsClaimed[_MAX_PTDEVS] = { 0, 0, 0, 0 };
-#endif
 
 /*************************** local functions *********************************/
 
-#ifdef __KERNEL__
-#ifdef LINUX_26
-
-static pScanData __ps = NULL;
-static int       __pa = -1;
-
-/** callback from parport driver
- */
-static void misc_attach(struct parport *port)
-{
-	DBG( DBG_LOW, "misc_attach\n" );
-
-	__ps->pp = NULL;
-	if( port->base == (unsigned long)__pa ) {
-		DBG( DBG_LOW, "Requested port (0x%02x) found\n", __pa );
-		DBG( DBG_LOW, "Port mode reported: (0x%04x)\n",  port->modes );
-		__ps->pp = port;
-	}
-}
-
-static void misc_detach( struct parport *port )
-{
-	DBG( DBG_LOW, "misc_detach\n" );
-}
-
-static struct parport_driver pt_drv = {
-	.name   = "pt_drv",
-	.attach = misc_attach,
-	.detach = misc_detach,
-};
-#endif
-
-/** display the available port-modes
- */
-#ifdef DEBUG
-static void miscShowPortModes( int modes )
-{
-	DBG( DBG_LOW, "parport-modi:" );
-
-	if( modes & PARPORT_MODE_PCSPP )
-		DBG( DBG_LOW, " SPP" );
-
-	if( modes & PARPORT_MODE_PCPS2 )
-		DBG( DBG_LOW, " PS/2" );
-
-	if( modes & PARPORT_MODE_PCEPP )
-		DBG( DBG_LOW, " EPP" );
-
-	if( modes & PARPORT_MODE_PCECR )
-		DBG( DBG_LOW, " ECP" );
-
-	if( modes & PARPORT_MODE_PCECPEPP )
-		DBG( DBG_LOW, " EPP(ECP)" );
-
-	if( modes & PARPORT_MODE_PCECPPS2 )
-		DBG( DBG_LOW, " PS/2(ECP)" );
-
-	DBG( DBG_LOW, "\n" );
-}
-#endif
-
-/** probe the parallel port
- */
-static int initPortProbe( pScanData ps )
-{
-    int retv = 0;
-
-	/* clear the controls */
-	ps->IO.lastPortMode = 0xFFFF;
-
-	if( NULL != ps->pardev )
-		retv = ps->pardev->port->modes;
-    return retv;
-}
-
-/** will be called by the parport module when we already have access, but
- * another module wants access to the port...
- */
-static int miscPreemptionCallback( pVoid data )
-{
-	pScanData ps = (pScanData)data;
-
-	if( NULL != ps ) {
-
-		/* never release during scanning */
-		if( ps->DataInf.dwScanFlag & _SCANNER_SCANNING ) {
-			DBG( DBG_LOW, "no way!!!\n" );
-			return 1;
-		}
-	}
-
-	/* let the port go...*/
-	return 0;
-}
-
-/** depending on the reported possible port modes, we try to set a faster mode
- * than SPP
- */
-static int miscSetFastMode( pScanData ps )
-{
-	UChar a, b;
-
-	/*
-	 *  when previously found the EPP mode, break right here
-	 */
-	if (( _PORT_EPP == ps->IO.portMode ) && (!(port_feature & PARPORT_MODE_PCECR)))
- 		return _OK;
-
- 	/* CHECK REMOVE: from here we should have SPP (Paranoia Code !) */
-	if (( _PORT_SPP != ps->IO.portMode ) && (!(port_feature & PARPORT_MODE_PCECR)))
- 		return _OK;
-
-	DBG(DBG_LOW, "Trying faster mode...\n" );
-
-	/*
-	 * ECP mode usually has sub-modes of EPP and/or PS2.
-	 * First we try to set EPP
-	 */
-    if((port_feature & PARPORT_MODE_PCECR) &&
-									(port_feature & PARPORT_MODE_PCECPEPP)){
-
-        DBG(DBG_LOW, "Attempting to set EPP from ECP mode.\n" );
-
-        a = _INB_ECTL(ps);  				/* get current ECR				*/
-		ps->IO.lastPortMode = a;	     	/* save it for restoring later	*/
-        a = (a & 0x1F) | 0x80;  	     	/* set to EPP					*/
-        _OUTB_ECTL(ps, a);					/* write it back				*/
-		_DO_UDELAY(1);
-
-		/*
-		 * It is probably unnecessary to
-		 * do this check but it makes me feel better
-		 */
-        b = _INB_ECTL(ps);					/* check to see if port set */
-        if( a == b ) {
-            DBG( DBG_LOW, "Port is set to (ECP) EPP mode.\n" );
-            ps->IO.portMode = _PORT_EPP;
-			return _OK;
-
-        } else {
-            DBG( DBG_LOW, "Port could not be set to (ECP) EPP mode. "
-														"Using SPP mode.\n" );
-            _OUTB_ECTL(ps,(Byte)ps->IO.lastPortMode); 		/* restore */
-			_DO_UDELAY(1);
-		    ps->IO.portMode = _PORT_SPP;
-
-			/* go ahead and try with other settings...*/
-        }
-    }
-
-	/* If port cannot be set to EPP, try PS2 */
-    if((port_feature & PARPORT_MODE_PCECR) &&
-									(port_feature & PARPORT_MODE_PCECPPS2)) {
-
-        DBG(DBG_LOW, "Attempting to set PS2 from ECPPS2 mode.\n" );
-
-        a = _INB_ECTL(ps);  				/* get current ECR				*/
-		ps->IO.lastPortMode = a;	     	/* save it for restoring later 	*/
-
-		/* set to Fast Centronics/bi-directional/PS2 */
-        a = (a & 0x1F) | 0x20;
-        _OUTB_ECTL(ps,a);					/* write it back */
-		_DO_UDELAY(1);
-
-		/*
-		 * It is probably unnecessary to do this check
-		 * but it makes me feel better
-		 */
-        b = _INB_ECTL(ps);					/* check to see if port set */
-        if (a == b) {
-            DBG(DBG_LOW, "Port is set to (ECP) PS2 bidirectional mode.\n");
-            ps->IO.portMode = _PORT_BIDI;
-			return _OK;
-        } else {
-        	DBG(DBG_LOW, "Port could not be set to (ECP) PS2 mode. "
-														"Using SPP mode.\n");
-			a = ps->IO.lastPortMode & 0x1F;
-            _OUTB_ECTL(ps, a);					/* set ECP ctrl to SPP */
-			_DO_UDELAY(1);
-		    ps->IO.portMode = _PORT_SPP;
-
-			/* next mode, last attempt... */
-        }
-	}
-
-	/*
-	 * Some BIOS/cards have only a Bi-directional/PS2 mode (no EPP).
-	 * Make one last attempt to set to PS2 mode.
-	 */
-	if ( port_feature & PARPORT_MODE_PCPS2 ){
-
-		DBG(DBG_LOW, "Attempting to set PS2 mode.\n" );
-
-		a = _INB_CTRL(ps); 		    /* get current setting of control register*/
-		ps->IO.lastPortMode = a;	/* save it for restoring later            */
-		a = a | 0x20;  			    /* set bit 5 of control reg              */
-		_OUTB_CTRL(ps,a); 		/* set to Fast Centronics/bi-directional/PS2 */
-		_DO_UDELAY(1);
-		a = 0;
-
-		_OUTB_DATA(ps,0x55);
-		_DO_UDELAY(1);
-		if ((inb(ps->IO.portBase)) != 0x55)	/* read data */
-			a++;
-
-		_OUTB_DATA(ps,0xAA);
-		_DO_UDELAY(1);
-
-		if (_INB_DATA(ps) != 0xAA)   /* read data */
-			a++;
-
-		if( 2 == a ) {
-			DBG(DBG_LOW, "Port is set to PS2 bidirectional mode.\n");
-			ps->IO.portMode = _PORT_BIDI;
-			return _OK;
-
-		} else {
-			DBG(DBG_LOW, "Port could not be set to PS2 mode. "
-														"Using SPP mode.\n");
-            _OUTB_CTRL(ps,(Byte)ps->IO.lastPortMode);		/* restore */
-			_DO_UDELAY(1);
-			ps->IO.portMode = _PORT_SPP;
-		}
-	}
-
-	/* reaching this point, we're back in SPP mode and there's no need
-	 * to restore at shutdown...
-	 */
-	ps->IO.lastPortMode = 0xFFFF;
-
-	return _OK;
-}
-
-/** check the state of the par-port and switch to EPP-mode if possible
- */
-static int miscSetPortMode( pScanData ps )
-{
-	/* try to detect the port settings, SPP seems to work in any case ! */
-	port_feature = initPortProbe( ps );
-
-#ifdef DEBUG
-	miscShowPortModes( port_feature );
-#endif
-
-	switch( ps->IO.forceMode ) {
-
-		case 1:
-			DBG( DBG_LOW, "Use of SPP-mode enforced\n" );
-			ps->IO.portMode = _PORT_SPP;
-			return _OK;
-			break;
-
-        case 2:
-	    	DBG( DBG_LOW, "Use of EPP-mode enforced\n" );
-	        ps->IO.portMode = _PORT_EPP;
-    		return _OK;
-            break;
-
-        default:
-            break;
-	}
-
-	if( !(port_feature & PARPORT_MODE_PCEPP)) {
-
-		if( !(port_feature & PARPORT_MODE_PCSPP )) {
-			_PRINT("\nThis Port supports not the  SPP- or EPP-Mode\n" );
-			_PRINT("Please activate SPP-Mode, EPP-Mode or\nEPP + ECP-Mode!\n");
-			return _E_NOSUPP;
-		} else {
-			DBG(DBG_LOW, "Using SPP-mode\n" );
-		    ps->IO.portMode = _PORT_SPP;
-		}
-    } else {
-		DBG(DBG_LOW, "Using EPP-mode\n" );
-	    ps->IO.portMode = _PORT_EPP;
-	}
-
-	/* else try to set to a faster mode than SPP */
-	return miscSetFastMode( ps );
-}
-#endif
 
 /** miscNextLongRand() -- generate 2**31-2 random numbers
 **
@@ -488,34 +184,6 @@ _LOC int MiscReinitStruct( pScanData ps
  */
 _LOC int MiscInitPorts( pScanData ps, int port )
 {
-#ifdef __KERNEL__
-	int status;
-
-	if( NULL == ps )
-		return _E_NULLPTR;
-
-    /*
-     * Get access to the ports
-     */
-    ps->IO.portBase = (UShort)port;
-
-	status = miscSetPortMode(ps);
-
-	if( _OK != status ) {
-		ps->sCaps.wIOBase = _NO_BASE;
-		ps->IO.portBase = _NO_BASE;
-		return status;
-	}
-
-	/*
- 	 * the port settings
-	 */
-    ps->IO.pbSppDataPort = (UShort)port;
-    ps->IO.pbStatusPort  = (UShort)port+1;
-    ps->IO.pbControlPort = (UShort)port+2;
-    ps->IO.pbEppDataPort = (UShort)port+4;
-
-#else
 	int mode, mts;
 
 	if( NULL == ps )
@@ -560,7 +228,6 @@ _LOC int MiscInitPorts( pScanData ps, in
 
 	sanei_pp_setmode( ps->pardev, mts );
 	_VAR_NOT_USED( port );
-#endif
 	return _OK;
 }
 
@@ -568,11 +235,6 @@ _LOC int MiscInitPorts( pScanData ps, in
  */
 _LOC void MiscRestorePort( pScanData ps )
 {
-#ifdef __KERNEL__
-	if( 0 == ps->IO.pbSppDataPort )
-		return;
-#endif
-
     DBG(DBG_LOW,"MiscRestorePort()\n");
 
 	/* don't restore if not necessary */
@@ -582,19 +244,9 @@ _LOC void MiscRestorePort( pScanData ps
 	}
 
     /*Restore Port-Mode*/
-#ifdef __KERNEL__
-	if( port_feature & PARPORT_MODE_PCECR ){
-		_OUTB_ECTL( ps, (Byte)ps->IO.lastPortMode );
-		_DO_UDELAY(1);
-    } else {
-		_OUTB_CTRL( ps, (Byte)ps->IO.lastPortMode );
-		_DO_UDELAY(1);
-    }
-#else
     if( port_feature & PPA_PROBE_ECR ){
 		_OUTB_ECTL(ps,ps->IO.lastPortMode);
     }
-#endif
 }
 
 /** Initializes a timer.
@@ -605,11 +257,7 @@ _LOC void MiscStartTimer( TimerDef *time
 {
     struct timeval start_time;
 
-#ifdef __KERNEL__
-	_GET_TIME( &start_time );
-#else
 	gettimeofday(&start_time, NULL);
-#endif
 
     *timer = (TimerDef)start_time.tv_sec * 1000000 + (TimerDef)start_time.tv_usec + us;
 }
@@ -624,21 +272,14 @@ _LOC int MiscCheckTimer( TimerDef *timer
 {
     struct timeval current_time;
 
-#ifdef __KERNEL__
-	_GET_TIME( &current_time );
-#else
 	gettimeofday(&current_time, NULL);
-#endif
 
     if ((TimerDef)current_time.tv_sec * 1000000 + (TimerDef)current_time.tv_usec > *timer) {
 		return _E_TIMEOUT;
     } else {
-#ifdef __KERNEL__
-		schedule();
 /*#else
 		sched_yield();
 */
-#endif
 		return _OK;
 	}
 }
@@ -673,65 +314,8 @@ _LOC Bool MiscAllPointersSet( pScanData
  */
 _LOC int MiscRegisterPort( pScanData ps, int portAddr )
 {
-#ifndef __KERNEL__
 	DBG( DBG_LOW, "Assigning port handle %i\n", portAddr );
     ps->pardev = portAddr;
-#else
-
-#ifdef LINUX_26
-	__ps = ps;
-	__pa = portAddr;
-
-	DBG( DBG_LOW, "Requested port at 0x%02x\n", portAddr );
-
-	if( parport_register_driver(&pt_drv)) {
-		/* Failed; nothing we can do. */
-		return _E_REGISTER;
-	}
-
-#else
-	struct parport *pp = NULL;
-
-	DBG( DBG_LOW, "Requested port at 0x%02x\n", portAddr );
-
-	pp         = parport_enumerate();
-	ps->pardev = NULL;
-
-	if( NULL == pp ) {
-		return _E_PORTSEARCH;
-	}
-
-	/* go through the list
-	 */
-	for( ps->pp = NULL; NULL != pp; ) {
-
-		if( pp->base == (unsigned long)portAddr ) {
-			DBG( DBG_LOW, "Requested port (0x%02x) found\n", portAddr );
-			DBG( DBG_LOW, "Port mode reported: (0x%04x)\n",  pp->modes );
-			ps->pp = pp;
-			break;
-		}
-		pp = pp->next;
-	}
-#endif
-
-	if( NULL == ps->pp ) {
-		printk("PORT not found!!!\n");
-		return _E_NO_PORT;
-	}
-
-	/*
-	 * register this device
-	 */
-	ps->pardev = parport_register_device( ps->pp, "Plustek Driver",
-	                    miscPreemptionCallback, NULL, NULL, 0, (pVoid)ps );
-
-	if( NULL == ps->pardev ) {
-		return _E_REGISTER;
-	}
-
-	DBG( DBG_LOW, "Port for device %u registered\n", ps->devno );
-#endif
 
 	portIsClaimed[ps->devno] = 0;
 	return _OK;
@@ -741,17 +325,7 @@ _LOC int MiscRegisterPort( pScanData ps,
  */
 _LOC void MiscUnregisterPort( pScanData ps )
 {
-#ifdef __KERNEL__
-	if( NULL != ps->pardev ) {
-		DBG( DBG_LOW, "Port unregistered\n" );
-		parport_unregister_device( ps->pardev );
-	}
-#ifdef LINUX_26
-	parport_unregister_driver( &pt_drv );
-#endif
-#else
 	sanei_pp_close( ps->pardev );
-#endif
 }
 
 /** Try to claim the port
@@ -763,11 +337,7 @@ _LOC int MiscClaimPort( pScanData ps )
 	if( 0 == portIsClaimed[ps->devno] ) {
 
 		DBG( DBG_HIGH, "Try to claim the parport\n" );
-#ifdef __KERNEL__
-		if( 0 != parport_claim( ps->pardev )) {
-#else
 		if( SANE_STATUS_GOOD != sanei_pp_claim( ps->pardev )) {
-#endif
 			return _E_BUSY;
 		}
 	}
@@ -785,11 +355,7 @@ _LOC void MiscReleasePort( pScanData ps
 
 		if( 0 == portIsClaimed[ps->devno] ) {
 			DBG( DBG_HIGH, "Releasing parport\n" );
-#ifdef __KERNEL__
-			parport_release( ps->pardev );
-#else
 			sanei_pp_release( ps->pardev );
-#endif
 		}
 	}
 }
Index: trunk/backend/plustek-pp_procs.h
===================================================================
--- trunk.orig/backend/plustek-pp_procs.h
+++ trunk/backend/plustek-pp_procs.h
@@ -219,13 +219,6 @@ _LOC void IORegisterDirectToScanner( pSc
 _LOC void IOSoftwareReset          ( pScanData ps );
 _LOC void IOReadScannerImageData   ( pScanData ps, pUChar pBuf, ULong size );
 
-#ifdef __KERNEL__
-_LOC void IOOut       ( Byte data, UShort port );
-_LOC void IOOutDelayed( Byte data, UShort port );
-_LOC Byte IOIn        ( UShort port );
-_LOC Byte IOInDelayed ( UShort port );
-#endif
-
 /*
  * implementation in plustek-pp_tpa.c
  */
@@ -238,16 +231,6 @@ _LOC void TPAP98003Reshading         ( p
  */
 _LOC void ScaleX( pScanData ps, pUChar inBuf, pUChar outBuf );
 
-/*
- * implementation in plustek-pp_procfs.c (Kernel-mode only)
- */
-#ifdef __KERNEL__
-int  ProcFsInitialize      ( void );
-void ProcFsShutdown        ( void );
-void ProcFsRegisterDevice  ( pScanData ps );
-void ProcFsUnregisterDevice( pScanData ps );
-#endif
-
 #endif	/* guard __PROCS_H__ */
 
 /* END PLUSTEK-PP_PROCS.H ...................................................*/
Index: trunk/backend/plustek-pp_ptdrv.c
===================================================================
--- trunk.orig/backend/plustek-pp_ptdrv.c
+++ trunk/backend/plustek-pp_ptdrv.c
@@ -94,52 +94,13 @@
  * If you do not wish that, delete this exception notice.
  * <hr>
  */
-#ifdef __KERNEL__
-# include <linux/module.h>
-# include <linux/version.h>
-
-# ifdef CONFIG_DEVFS_FS
-#  include <linux/devfs_fs_kernel.h>
-#  if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,69))
-#   define DEVFS_26_STYLE
-#  endif
-# endif
-#endif
-
 #include "plustek-pp_scan.h"
 
-#ifdef __KERNEL__
-# include <linux/param.h>
-#endif
-
 /****************************** static vars **********************************/
 
 /* default port is at 0x378 */
 static int port[_MAX_PTDEVS] = { 0x378, 0, 0, 0 };
 
-#ifdef __KERNEL__
-static pScanData PtDrvDevices[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = NULL};
-
-/* default is 180 secs for lamp switch off */
-static int lampoff[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = 180 };
-
-/* warmup period for lamp (30 secs) */
-static int warmup[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = 30 };
-
-/* switch lamp off on unload (default = no)*/
-static int lOffonEnd[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = 0 };
-
-/* model override (0-->none) */
-static UShort mov[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = 0 };
-
-/* forceMode (0--> auto, 1: SPP, 2:EPP, others: auto) */
-static UShort forceMode[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = 0 };
-
-/* to use delayed I/O for each device */
-static Bool slowIO[_MAX_PTDEVS] = { [0 ... (_MAX_PTDEVS-1)] = _FALSE };
-
-#else
-
 static pScanData PtDrvDevices[_MAX_PTDEVS]= { NULL,   NULL,   NULL,   NULL   };
 static int       lampoff[_MAX_PTDEVS]     = { 180,    180,    180,    180    };
 static int       warmup[_MAX_PTDEVS]      = { 30,     30,     30,     30     };
@@ -147,140 +108,14 @@ static int       lOffonEnd[_MAX_PTDEVS]
 static UShort    mov[_MAX_PTDEVS]         = { 0,      0,      0,      0      };
 static UShort    forceMode[_MAX_PTDEVS]   = { 0,      0,      0,      0      };
 
-#endif
-
 /* timers for warmup checks */
 static TimerDef toTimer[_MAX_PTDEVS];
 
-#ifndef __KERNEL__
 static Bool	PtDrvInitialized = _FALSE;
 #ifdef HAVE_SETITIMER
 static struct itimerval saveSettings;
 #endif
-#else
-static Bool deviceScanning = _FALSE;
-
-static struct timer_list tl[_MAX_PTDEVS];
-
-/* for calculation of the timer expiration */
-extern volatile unsigned long jiffies;
-
-/* the parameter interface
- */
-#if ((LINUX_VERSION_CODE > 0x020111) && defined(MODULE))
-MODULE_AUTHOR("Gerhard Jaeger <gerhard@gjaeger.de>");
-MODULE_DESCRIPTION("Plustek parallelport-scanner driver");
-
-/* addresses this 'new' license feature... */
-#ifdef MODULE_LICENSE
-MODULE_LICENSE("GPL");
-#endif
-
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,13))
-MODULE_PARM(port, "1-" __MODULE_STRING(_MAX_PTDEVS) "i");
-MODULE_PARM(lampoff, "1-" __MODULE_STRING(_MAX_PTDEVS) "i");
-MODULE_PARM(warmup,"1-" __MODULE_STRING(_MAX_PTDEVS) "i");
-MODULE_PARM(lOffonEnd, "1-" __MODULE_STRING(_MAX_PTDEVS) "i");
-MODULE_PARM(mov, "1-" __MODULE_STRING(_MAX_PTDEVS) "i");
-MODULE_PARM(slowIO,"1-" __MODULE_STRING(_MAX_PTDEVS) "i");
-MODULE_PARM(forceMode,"1-" __MODULE_STRING(_MAX_PTDEVS) "i");
-
-#else
-
-static int array_len = _MAX_PTDEVS;
-
-module_param_array(port,      int,    &array_len, 0);
-module_param_array(lampoff,   int,    &array_len, 0);
-module_param_array(warmup,    int,    &array_len, 0);
-module_param_array(lOffonEnd, int,    &array_len, 0);
-module_param_array(mov,       ushort, &array_len, 0);
-module_param_array(slowIO,    int,    &array_len, 0);
-module_param_array(forceMode, ushort, &array_len, 0);
-
-#endif
-
-
-MODULE_PARM_DESC(port, "I/O base address of parport");
-MODULE_PARM_DESC(lampoff, "Lamp-Off timer preset in seconds");
-MODULE_PARM_DESC(warmup, "Minimum warmup time in seconds");
-MODULE_PARM_DESC(lOffonEnd, "1 - switchoff lamp on unload");
-MODULE_PARM_DESC(mov, "Modell-override switch");
-MODULE_PARM_DESC(slowIO, "0 = Fast I/O, 1 = Delayed I/O");
-MODULE_PARM_DESC(forceMode, "0 = use auto detection, "
-                            "1 = use SPP mode, 2 = use EPP mode");
-#endif
-
-#if defined (CONFIG_DEVFS_FS)
-# ifndef (DEVFS_26_STYLE)
-	static devfs_handle_t devfs_handle = NULL;
-# endif
-#else
-# ifdef LINUX_26
-	static class_t *ptdrv_class;
-# endif
-#endif
-
-/*
- * the module interface
- */
-static int 		 pt_drv_open ( struct inode *, struct file *);
-static CLOSETYPE pt_drv_close( struct inode *, struct file *);
-
-#ifdef LINUX_20
-  static int pt_drv_read(  struct inode*, struct file*, char*, int );
-  static int pt_drv_write( struct inode*, struct file*, const char*, int );
-#else
-  static ssize_t pt_drv_read ( struct file *file,
-							 char *buffer, size_t count, loff_t *);
-  static ssize_t pt_drv_write( struct file *file,
-							 const char *buffer, size_t tmp,loff_t *count);
-#endif
-
-#ifdef NOLOCK_IOCTL
-  static long pt_drv_ioctl( struct file *, UInt, unsigned long );
-#else
-  static int pt_drv_ioctl( struct inode *, struct file *, UInt, unsigned long );
-#endif
-
-
-/*
- * the driver interface
- */
-#ifdef LINUX_20
-
-static struct file_operations pt_drv_fops =
-{
-	NULL,			/* seek 				*/
-	pt_drv_read,	/* read 				*/
-	pt_drv_write,	/* write 				*/
-	NULL,			/* readdir 				*/
-	NULL,			/* select 				*/
-	pt_drv_ioctl,  	/* ioctl 				*/
-	NULL,   		/* mmap 				*/
-	pt_drv_open,    /* open 				*/
-	pt_drv_close,	/* release 				*/
-	NULL,			/* fsync 				*/
-	NULL,			/* fasync 				*/
-	NULL,			/* check_media_change 	*/
-	NULL			/* revalidate 			*/
-};
-
-#else	/* 2.2.x and higher stuff */
-
-static struct file_operations pt_drv_fops = {
-#ifdef LINUX_24
-	owner:		THIS_MODULE,
-#endif
-	read:		pt_drv_read,
-	write:		pt_drv_write,
-	IOCTL:		pt_drv_ioctl,
-	open:		pt_drv_open,
-	release:	pt_drv_close,
-};
 
-#endif
-
-#endif	/* guard __KERNEL */
 
 /****************************** some prototypes ******************************/
 
@@ -288,23 +123,6 @@ static void ptdrvStartLampTimer( pScanDa
 
 /****************************** local functions ******************************/
 
-#ifdef __KERNEL__
-/** depending on the device, return the data structure
- */
-static pScanData get_pt_from_inode(struct inode *ip)
-{
-    int minor = _MINOR(ip);
-
-    /*
-     * unit out of range
-     */
-    if (minor >=  _MAX_PTDEVS )
-        return NULL;
-
-    return( PtDrvDevices[minor] );
-}
-#endif
-
 /** copy user-space data into kernel memory
  */
 static int getUserPtr(const pVoid useraddr, pVoid where, UInt size )
@@ -315,32 +133,9 @@ static int getUserPtr(const pVoid userad
 	if((NULL == useraddr) || ( 0 == size))
 		return _E_INVALID;
 
-#ifdef __KERNEL__
-	if ((err = verify_area_20(VERIFY_READ, useraddr, size)))
-		return err;
-#endif
-
 	switch (size) {
-#ifdef __KERNEL__
-	case sizeof(u_char):
-		GET_USER_RET(*(u_char *)where, (u_char *) useraddr, -EFAULT);
-		break;
-
-	case sizeof(u_short):
-		GET_USER_RET(*(u_short *)where, (u_short *) useraddr, -EFAULT);
-		break;
-
-	case sizeof(u_long):
-		GET_USER_RET(*(u_long *)where, (u_long *) useraddr, -EFAULT);
-		break;
-
-	default:
-		if (copy_from_user(where, useraddr, size))
-			return -EFAULT;
-#else
 	default:
 		memcpy( where, useraddr, size );
-#endif
 	}
 	return err;
 }
@@ -354,20 +149,11 @@ static int putUserPtr( const pVoid ptr,
 	if (NULL == useraddr)
     	return _E_INVALID;
 
-#ifdef __KERNEL__
-	if ((err = verify_area_20(VERIFY_WRITE, useraddr, size)))
-		return err;
-
-	if (copy_to_user(useraddr, ptr, size ))
-		return -EFAULT;
-#else
 	memcpy( useraddr, ptr, size );
-#endif
 
 	return err;
 }
 
-#ifndef __KERNEL__
 static unsigned long copy_from_user( pVoid dest, pVoid src, unsigned long len )
 {
 	memcpy( dest, src, len );
@@ -379,37 +165,16 @@ static unsigned long copy_to_user( pVoid
 	memcpy( dest, src, len );
 	return 0;
 }
-#endif
 
 /**
  */
 static int putUserVal(const ULong value, pVoid useraddr, UInt size)
 {
-#ifdef __KERNEL__
-	int err;
-#endif
-
 	if (NULL == useraddr)
     	return _E_INVALID;
 
-#ifdef __KERNEL__
-	if ((err = verify_area_20(VERIFY_WRITE, useraddr, size)))
-    	return err;
-#endif
-
 	switch (size) {
 
-#ifdef __KERNEL__
-	case sizeof(u_char):
-    	PUT_USER_RET((u_char)value, (u_char *) useraddr, -EFAULT);
-    	break;
-  	case sizeof(u_short):
-    	PUT_USER_RET((u_short)value, (u_short *) useraddr, -EFAULT);
-    	break;
-  	case sizeof(u_long):
-    	PUT_USER_RET((u_long)value, (u_long *) useraddr, -EFAULT);
-    	break;
-#else
 	case sizeof(UChar):
 		*(pUChar)useraddr = (UChar)value;
 		break;
@@ -420,7 +185,6 @@ static int putUserVal(const ULong value,
 		*(pULong)useraddr = (ULong)value;
 		break;
 
-#endif
   	default:
     	return _E_INVALID;
 	}
@@ -506,22 +270,14 @@ static void ptdrvLampWarmup( pScanData p
 
 /**
  */
-#ifdef __KERNEL__
-static void ptdrvLampTimerIrq( unsigned long ptr )
-#else
 static void ptdrvLampTimerIrq( int sig_num )
-#endif
 {
 	pScanData ps;
 
 	DBG( DBG_HIGH, "!! IRQ !! Lamp-Timer stopped.\n" );
 
-#ifdef __KERNEL__
-	ps = (pScanData)ptr;
-#else
     _VAR_NOT_USED( sig_num );
 	ps = PtDrvDevices[0];
-#endif
 
 	/*
 	 * paranoia check!
@@ -559,7 +315,6 @@ static void ptdrvLampTimerIrq( int sig_n
  */
 static void ptdrvStartLampTimer( pScanData ps )
 {
-#ifndef __KERNEL__
 	sigset_t 		 block, pause_mask;
 	struct sigaction s;
 #ifdef HAVE_SETITIMER
@@ -597,17 +352,6 @@ static void ptdrvStartLampTimer( pScanDa
 #else
 	alarm( ps->lampoff );
 #endif
-#else
-	init_timer( &tl[ps->devno] );
-
-	/* timeout val in seconds */
-	tl[ps->devno].expires  =  jiffies + ps->lampoff * HZ;
-	tl[ps->devno].data     = (unsigned long)ps;
-	tl[ps->devno].function = ptdrvLampTimerIrq;
-
-	if( 0 != ps->lampoff )
-		add_timer( &tl[ps->devno] );
-#endif
 
 	DBG( DBG_HIGH, "Lamp-Timer started!\n" );
 }
@@ -616,7 +360,6 @@ static void ptdrvStartLampTimer( pScanDa
  */
 static void ptdrvStopLampTimer( pScanData ps )
 {
-#ifndef __KERNEL__
 	sigset_t block, pause_mask;
 
 	/* block SIGALRM */
@@ -630,10 +373,6 @@ static void ptdrvStopLampTimer( pScanDat
 	_VAR_NOT_USED( ps );
 	alarm(0);
 #endif
-#else
-	if( 0 != ps->lampoff )
-		del_timer( &tl[ps->devno] );
-#endif
 
 	DBG( DBG_HIGH, "Lamp-Timer stopped!\n" );
 }
@@ -701,23 +440,11 @@ static int ptdrvOpenDevice( pScanData ps
 	UShort lastMode;
 	ULong  devno;
 
-#ifdef __KERNEL__
-	UShort            flags;
-	struct pardevice *pd;
-	struct parport   *pp;
-	ProcDirDef        procDir;
-#else
     int pd;
-#endif
 
 	/*
 	 * push some values from the struct
      */
-#ifdef __KERNEL__
-	flags    = ps->flags;
-	pp       = ps->pp;
-	procDir  = ps->procDir;
-#endif
 	pd       = ps->pardev;
 	iobase   = ps->sCaps.wIOBase;
 	asic     = ps->sCaps.AsicID;
@@ -734,29 +461,10 @@ static int ptdrvOpenDevice( pScanData ps
 	/*
 	 * pop the val(s)
 	 */
-#ifdef __KERNEL__
-	ps->flags   = flags;
-	ps->pp      = pp;
-	ps->procDir = procDir;
-#endif
 	ps->pardev          = pd;
 	ps->bLastLampStatus = lastStat;
 	ps->IO.lastPortMode = lastMode;
 	ps->devno           = devno;
-
-#ifdef __KERNEL__
-	if( _TRUE == slowIO[devno] ) {
-		DBG( DBG_LOW, "Using slow I/O\n" );
-		ps->IO.slowIO = _TRUE;
-		ps->IO.fnOut  = IOOutDelayed;
-		ps->IO.fnIn   = IOInDelayed;
-	} else {
-		DBG( DBG_LOW, "Using fast I/O\n" );
-		ps->IO.slowIO = _FALSE;
-		ps->IO.fnOut  = IOOut;
-		ps->IO.fnIn   = IOIn;
-	}
-#endif
 	ps->ModelOverride = mov[devno];
 	ps->warmup        = warmup[devno];
 	ps->lampoff		  = lampoff[devno];
@@ -798,19 +506,6 @@ static int ptdrvInit( int devno )
 		return _E_ALLOC;
 	}
 
-#ifdef __KERNEL__
-	if( _TRUE == slowIO[devno] ) {
-		DBG( DBG_LOW, "Using slow I/O\n" );
-		ps->IO.slowIO = _TRUE;
-		ps->IO.fnOut  = IOOutDelayed;
-		ps->IO.fnIn   = IOInDelayed;
-	} else {
-		DBG( DBG_LOW, "Using fast I/O\n" );
-		ps->IO.slowIO = _FALSE;
-		ps->IO.fnOut  = IOOut;
-		ps->IO.fnIn   = IOIn;
-	}
-#endif
 	ps->ModelOverride = mov[devno];
 	ps->warmup        = warmup[devno];
 	ps->lampoff       = lampoff[devno];
@@ -845,13 +540,8 @@ static int ptdrvInit( int devno )
 
 	if( _OK == retval ) {
 
-#ifdef __KERNEL__
-		_PRINT( "pt_drv%u: %s found on port 0x%04x\n",
-			 devno, MiscGetModelName(ps->sCaps.Model), ps->IO.pbSppDataPort );
-#else
 		DBG( DBG_LOW, "pt_drv%u: %s found\n",
 									 devno, MiscGetModelName(ps->sCaps.Model));
-#endif
 
 		/*
 		 * initialize the timespan timer
@@ -859,43 +549,23 @@ static int ptdrvInit( int devno )
 		MiscStartTimer( &toTimer[ps->devno], (_SECOND * ps->warmup));
 
 		if( 0 == ps->lampoff )
-#ifdef __KERNEL__
-		_PRINT(
-#else
 		DBG( DBG_LOW,
-#endif
 					"pt_drv%u: Lamp-Timer switched off.\n", devno );
 		else {
-#ifdef __KERNEL__
-		_PRINT(
-#else
 		DBG( DBG_LOW,
-#endif
 					"pt_drv%u: Lamp-Timer set to %u seconds.\n",
 														devno, ps->lampoff );
 		}
 
-#ifdef __KERNEL__
-		_PRINT(
-#else
 		DBG( DBG_LOW,
-#endif
 				"pt_drv%u: WarmUp period set to %u seconds.\n",
 														devno, ps->warmup );
 
 		if( 0 == ps->lOffonEnd ) {
-#ifdef __KERNEL__
-		_PRINT(
-#else
 		DBG( DBG_LOW,
-#endif
 				"pt_drv%u: Lamp untouched on driver unload.\n", devno );
 		} else {
-#ifdef __KERNEL__
-		_PRINT(
-#else
 		DBG( DBG_LOW,
-#endif
 				"pt_drv%u: Lamp switch-off on driver unload.\n", devno );
 		}
 
@@ -1287,31 +957,19 @@ static int ptdrvRead( pScanData ps, pUCh
 	int 	retval      = _OK;
 
 #ifdef _ASIC_98001_SIM
-#ifdef __KERNEL__
-		_PRINT(
-#else
 		DBG( DBG_LOW,
-#endif
 					"pt_drv : Software-Emulation active, can't read!\n" );
 	return _E_INVALID;
 #endif
 
 	if((NULL == buffer) || (NULL == ps)) {
-#ifdef __KERNEL__
-		_PRINT(
-#else
 		DBG( DBG_HIGH,
-#endif
 						"pt_drv :  Internal NULL-pointer!\n" );
 		return _E_NULLPTR;
 	}
 
 	if( 0 == count ) {
-#ifdef __KERNEL__
-		_PRINT(
-#else
 		DBG( DBG_HIGH,
-#endif
 			"pt_drv%u: reading 0 bytes makes no sense!\n", ps->devno );
 		return _E_INVALID;
 	}
@@ -1325,11 +983,7 @@ static int ptdrvRead( pScanData ps, pUCh
 	 * when using the cat /dev/pt_drv command!
 	 */
    	if (!(ps->DataInf.dwVxdFlag & _VF_ENVIRONMENT_READY)) {
-#ifdef __KERNEL__
-		_PRINT(
-#else
 		DBG( DBG_HIGH,
-#endif
 			"pt_drv%u:  Cannot read, driver not initialized!\n",ps->devno);
 		return _E_SEQUENCE;
 	}
@@ -1340,11 +994,7 @@ static int ptdrvRead( pScanData ps, pUCh
 	ps->Scan.bp.pMonoBuf = _KALLOC( ps->DataInf.dwAppPhyBytesPerLine, GFP_KERNEL);
 
 	if ( NULL == ps->Scan.bp.pMonoBuf ) {
-#ifdef __KERNEL__
-		_PRINT(
-#else
 		DBG( DBG_HIGH,
-#endif
 			"pt_drv%u:  Not enough memory available!\n", ps->devno );
     	return _E_ALLOC;
 	}
@@ -1355,11 +1005,7 @@ static int ptdrvRead( pScanData ps, pUCh
 		scaleBuf = _KALLOC( ps->DataInf.dwAppPhyBytesPerLine, GFP_KERNEL);
 		if ( NULL == scaleBuf ) {
 			_KFREE( ps->Scan.bp.pMonoBuf );
-#ifdef __KERNEL__
-		_PRINT(
-#else
 		DBG( DBG_HIGH,
-#endif
 			"pt_drv%u:  Not enough memory available!\n", ps->devno );
     		return _E_ALLOC;
 		}
@@ -1406,11 +1052,7 @@ static int ptdrvRead( pScanData ps, pUCh
 
     retval = ps->Calibration( ps );
 	if( _OK != retval ) {
-#ifdef __KERNEL__
-		_PRINT(
-#else
 		DBG( DBG_HIGH,
-#endif
 			"pt_drv%u: calibration failed, result = %i\n",
 														ps->devno, retval );
 		goto ReadFinished;
@@ -1507,12 +1149,9 @@ static int ptdrvRead( pScanData ps, pUCh
 				ps->Scan.dwLinesToRead--;
 
 				/* needed, esp. to avoid freezing the system in SPP mode */
-#ifdef __KERNEL__
-				schedule();
 /*#else
 				sched_yield();
 */
-#endif
         	}
 
 			if (ps->fScanningStatus) {
@@ -1565,346 +1204,6 @@ ReadFinished:
    	return retval;
 }
 
-/*************************** the module interface ****************************/
-
-#ifdef __KERNEL__		/* the kernel module interface */
-
-/* Designed to be used as a module */
-#ifdef MODULE
-
-/*.............................................................................
- * gets called upon module initialization
- */
-#ifdef LINUX_26
-static int __init ptdrv_init( void )
-#else
-int init_module( void )
-#endif
-{
-    UInt devCount;
-    UInt i;
-    int  retval = _OK;
-    int  result = _OK;
-#if (defined(CONFIG_DEVFS_FS) && !defined(DEVFS_26_STYLE))
-    char controlname[24];
-#endif
-# ifdef LINUX_26
-    char devname[20];
-#endif
-
-    DBG( DBG_HIGH, "*********************************************\n" );
-    DBG( DBG_HIGH, "pt_drv: init_module()\n" );
-
-#if (defined(CONFIG_DEVFS_FS) && !defined(DEVFS_26_STYLE))
-	devfs_handle = devfs_mk_dir(NULL, "scanner", NULL);
-	if( devfs_register_chrdev(_PTDRV_MAJOR, _DRV_NAME, &pt_drv_fops)) {
-#else
-	if( register_chrdev(_PTDRV_MAJOR, _DRV_NAME, &pt_drv_fops)) {
-#endif
-
-		_PRINT(KERN_INFO "pt_drv: unable to get major %d for pt_drv devices\n",
-		       _PTDRV_MAJOR);
-		return -EIO;
-	}
-	printk( KERN_INFO "pt_drv : driver version "_PTDRV_VERSTR"\n" );
-
-#if !defined (CONFIG_DEVFS_FS) && defined (LINUX_26)
-	ptdrv_class = class_create(THIS_MODULE, "scanner");
-	if (IS_ERR(ptdrv_class))
-		goto out_devfs;
-#endif
-
-	/* register the proc_fs */
-	ProcFsInitialize();
-
-	/* go through the list of defined ports and try to find a device
-	 */
-	devCount = 0;
-	for( i = 0; i < _MAX_PTDEVS; i++ ) {
-
-		if( 0 != port[i] ) {
-			result = ptdrvInit( i );
-
-			if ( _OK == result ) {
-		    	PtDrvDevices[i]->flags |= _PTDRV_INITALIZED;
-
-#ifdef CONFIG_DEVFS_FS
-# ifndef DEVFS_26_STYLE
-				sprintf( controlname, "scanner/pt_drv%d", devCount );
-				devfs_register( NULL, controlname,
-				                DEVFS_FL_DEFAULT, _PTDRV_MAJOR, 0,
-			                    (S_IFCHR | S_IRUGO | S_IWUGO | S_IFCHR),
-				                &pt_drv_fops, NULL );
-# else /* DEVFS_26_STYLE */
-				devfs_mk_cdev(MKDEV(_PTDRV_MAJOR, devCount),
-				    (S_IFCHR | S_IRUGO | S_IWUGO | S_IFCHR),
-				    "scanner/pt_drv%d", devCount);
-# endif
-#else
-# ifdef LINUX_26
-				sprintf(devname, "pt_drv%d", devCount);
-				CLASS_DEV_CREATE(ptdrv_class,
-				                 MKDEV(_PTDRV_MAJOR, devCount), NULL,
-				                 devname);
-
-# endif /* LINUX_26 */
-#endif /* CONFIG_DEVFS_FS */
-				ProcFsRegisterDevice( PtDrvDevices[i] );
-				devCount++;
-			} else {
-				retval = result;
-				ptdrvShutdown( PtDrvDevices[i] );
-				PtDrvDevices[i] = NULL;
-			}
-		}
-	}
-
-	/* * if something went wrong, shutdown all... */
-	if( devCount == 0 ) {
-
-#if !defined (CONFIG_DEVFS_FS) && defined (LINUX_26)
-out_devfs:
-		class_destroy(ptdrv_class);
-#endif
-
-#if (defined(CONFIG_DEVFS_FS) && !defined(DEVFS_26_STYLE))
-		devfs_unregister_chrdev( _PTDRV_MAJOR, _DRV_NAME );
-#else
-		unregister_chrdev( _PTDRV_MAJOR, _DRV_NAME );
-#endif
-		ProcFsShutdown();
-
-#ifdef __KERNEL__
-		_PRINT( KERN_INFO "pt_drv : no device(s) detected, (%i)\n", retval );
-#endif
-
-	} else {
-
-		DBG( DBG_HIGH, "pt_drv : init done, %u device(s) found\n", devCount );
-		retval = _OK;
-	}
-	DBG( DBG_HIGH, "---------------------------------------------\n" );
-
-	deviceScanning = _FALSE;
-	return retval;
-}
-
-/*.............................................................................
- * cleanup the show
- */
-#ifdef LINUX_26
-static void __exit ptdrv_exit( void )
-#else
-void cleanup_module( void )
-#endif
-{
-	UInt      i;
-	pScanData ps;
-#if (defined(CONFIG_DEVFS_FS) && !defined(DEVFS_26_STYLE))
-	char           controlname[24];
-	devfs_handle_t master;
-#endif
-
-	DBG( DBG_HIGH, "pt_drv: cleanup_module()\n" );
-
-	for ( i = 0; i < _MAX_PTDEVS; i++ ) {
-
-		ps = PtDrvDevices[i];
-		PtDrvDevices[i] = NULL;
-
-		if ( NULL != ps ) {
-#ifdef CONFIG_DEVFS_FS
-# ifndef DEVFS_26_STYLE
-			sprintf( controlname, "scanner/pt_drv%d", i );
-			master = devfs_find_handle( NULL,controlname, 0, 0,
-			                            DEVFS_SPECIAL_CHR, 0 );
-			devfs_unregister( master );
-# else
-			devfs_remove("scanner/pt_drv%d", i);
-# endif
-#else
-# ifdef LINUX_26
-			CLASS_DEV_DESTROY(ptdrv_class, MKDEV(_PTDRV_MAJOR, i));
-# endif /* LINUX_26 */
-#endif /* CONFIG_DEVFS_FS */
-			ptdrvShutdown( ps );
-			ProcFsUnregisterDevice( ps );
-		}
-	}
-
-#if (defined(CONFIG_DEVFS_FS) && !defined(DEVFS_26_STYLE))
-	devfs_unregister_chrdev( _PTDRV_MAJOR, _DRV_NAME );
-#else
-	unregister_chrdev( _PTDRV_MAJOR, _DRV_NAME );
-#endif
-	ProcFsShutdown();
-
-#if !defined (CONFIG_DEVFS_FS) && defined (LINUX_26)
-	class_destroy(ptdrv_class);
-#endif
-
-	DBG( DBG_HIGH, "pt_drv: cleanup done.\n" );
-	DBG( DBG_HIGH, "*********************************************\n" );
-}
-
-#ifdef LINUX_26
-module_init(ptdrv_init);
-module_exit(ptdrv_exit);
-#endif
-
-#endif /*MODULE*/
-
-
-/*.............................................................................
- * device open...
- */
-static int pt_drv_open(struct inode *inode, struct file *file)
-{
-	pScanData ps;
-
-	DBG( DBG_HIGH, "pt_drv_open()\n" );
-
-	ps = get_pt_from_inode(inode);
-
-	if ( NULL == ps ) {
-		return(-ENXIO);
-	}
-
-	/* device not found ? */
-	if (!(ps->flags & _PTDRV_INITALIZED)) {
-		return(-ENXIO);
-	}
-
-	/* device is busy ? */
-	if (ps->flags & _PTDRV_OPEN) {
-		return(-EBUSY);
-	}
-
-#ifdef LINUX_26
-	if (!try_module_get(THIS_MODULE))
-		return -EAGAIN;
-#else
-	MOD_INC_USE_COUNT;
-#endif
-	ps->flags |= _PTDRV_OPEN;
-
-	return _OK;
-}
-
-/*.............................................................................
- * device close...
- */
-static CLOSETYPE pt_drv_close(struct inode * inode, struct file * file)
-{
-	pScanData ps;
-
-	DBG( DBG_HIGH, "pt_drv_close()\n" );
-
-	if ((ps = get_pt_from_inode(inode)) ) {
-
-		ptdrvClose( ps );
-
-    	ps->flags &= ~_PTDRV_OPEN;
-#ifdef LINUX_26
-		module_put(THIS_MODULE);
-#else
-    	MOD_DEC_USE_COUNT;
-#endif
-	    CLOSERETURN(0);
-	} else {
-
-		DBG( DBG_HIGH, "pt_drv: - close failed!\n" );
-		CLOSERETURN(-ENXIO);
-	}
-}
-
-/*.............................................................................
- * read data from device
- */
-#ifdef LINUX_20
-static int pt_drv_read(struct inode *inode, struct file *file,
-                       char *buffer, int count)
-{
-	int		  result;
-	pScanData ps;
-
-	if ( !(ps = get_pt_from_inode(inode)))
-    	return(-ENXIO);
-#else
-static ssize_t pt_drv_read( struct file *file,
-                             char *buffer, size_t count, loff_t *tmp )
-{
-	int       result;
-	pScanData ps;
-
-	if ( !(ps = get_pt_from_inode(file->f_dentry->d_inode)) )
-		return(-ENXIO);
-#endif
-	if ((result = verify_area_20(VERIFY_WRITE, buffer, count)))
-		return result;
-
-	/*
-	 * as the driver contains some global vars, it is not
-	 * possible to scan simultaenously with two or more devices
-	 */
-	if( _TRUE == deviceScanning ) {
-	    printk( KERN_INFO "pt_drv: device %u busy!!!\n", ps->devno );
-		return(-EBUSY);
-	}
-
-	deviceScanning = _TRUE;
-
-	result = ptdrvRead( ps, buffer, count );
-
-	deviceScanning = _FALSE;
-	return result;
-}
-
-/*.............................................................................
- * writing makes no sense
- */
-#ifdef LINUX_20
-static int pt_drv_write(struct inode * inode, struct file * file,
-                        const char * buffer, int count)
-{
-  return -EPERM;
-}
-#else
- static ssize_t pt_drv_write( struct file * file,const char * buffer,
-                              size_t tmp,loff_t* count)
-{
-  return -EPERM;
-}
-#endif
-
-/*.............................................................................
- * the ioctl interface
- */
-#ifdef NOLOCK_IOCTL
-static long pt_drv_ioctl( struct file *file, UInt cmd, unsigned long arg )
-{
-	pScanData ps;
-
-	if ( !(ps = get_pt_from_inode(file->f_dentry->d_inode)) )
-    	return(-ENXIO);
-
-  	return ptdrvIoctl( ps, cmd, (pVoid)arg);
-}
-#else
-static int pt_drv_ioctl( struct inode *inode, struct file *file,
-                         UInt cmd, unsigned long arg )
-{
-	pScanData ps;
-
-	if ( !(ps = get_pt_from_inode(inode)) )
-    	return(-ENXIO);
-
-  	return ptdrvIoctl( ps, cmd, (pVoid)arg);
-}
-#endif
-
-#else	/* the user-mode interface */
-
 /*.............................................................................
  * here we only have wrapper functions
  */
@@ -1980,6 +1279,4 @@ static int PtDrvRead ( pUChar buffer, in
 	return ptdrvRead( PtDrvDevices[0], buffer, count );
 }
 
-#endif /* guard __KERNEL__ */
-
 /* END PLUSTEK-PP_PTDRV.C ...................................................*/
Index: trunk/backend/plustek-pp_scan.h
===================================================================
--- trunk.orig/backend/plustek-pp_scan.h
+++ trunk/backend/plustek-pp_scan.h
@@ -63,8 +63,6 @@
 #ifndef __PLUSTEK_SCAN_H__
 #define __PLUSTEK_SCAN_H__
 
-#ifndef __KERNEL__
-
 # include <stdlib.h>
 # include <stdarg.h>
 # include <string.h>
@@ -76,19 +74,6 @@
 # ifdef HAVE_SYS_IO_H
 #  include <sys/io.h>
 # endif
-#else
-# include <linux/kernel.h>
-# include <linux/init.h>
-# include <linux/version.h>
-# include "plustek-pp_sysdep.h"
-# include <linux/delay.h>
-# include <linux/parport.h>
-
-#ifdef LINUX_24
-# include <linux/parport_pc.h>
-#endif	/* LINUX_24   */
-
-#endif  /* __KERNEL__ */
 
 /*.............................................................................
  * driver properties
@@ -104,20 +89,6 @@
 # define _OPF	ps->IO.fnOut
 # define _IPF	ps->IO.fnIn
 
-#ifdef __KERNEL__
-
-#define _OUTB_CTRL(pSD,port_value)	 _OPF(port_value,pSD->IO.pbControlPort)
-#define _OUTB_DATA(pSD,port_value)	 _OPF(port_value,pSD->IO.pbSppDataPort)
-#define _OUTB_ECTL(pSD,port_value)	 _OPF(port_value,(pSD->IO.portBase+0x402))
-
-#define _INB_CTRL(pSD)				_IPF(pSD->IO.pbControlPort)
-#define _INB_DATA(pSD)				_IPF(pSD->IO.pbSppDataPort)
-#define _INB_EPPDATA(pSD)			_IPF(pSD->IO.pbEppDataPort)
-#define _INB_STATUS(pSD)			_IPF(pSD->IO.pbStatusPort)
-#define _INB_ECTL(pSD)				_IPF((pSD->IO.portBase+0x402))
-
-#else
-
 #define _OUTB_CTRL(pSD,port_value)   sanei_pp_outb_ctrl(pSD->pardev, port_value)
 #define _OUTB_DATA(pSD,port_value)   sanei_pp_outb_data(pSD->pardev, port_value)
 #define _OUTB_ECTL(pSD,port_value)
@@ -127,32 +98,19 @@
 #define _INB_EPPDATA(pSD)            sanei_pp_inb_epp(pSD->pardev)
 #define _INB_STATUS(pSD)             sanei_pp_inb_stat(pSD->pardev)
 
-#endif
-
 /*.............................................................................
  * for memory allocation
  */
-#ifndef __KERNEL__
 # define _KALLOC(x,y)   malloc(x)
 # define _KFREE(x)		free(x)
 # define _VMALLOC(x)	malloc(x)
 # define _VFREE(x)		free(x)
-#else
-# define _KALLOC(x,y)   kmalloc(x,y)
-# define _KFREE(x)		kfree(x)
-# define _VMALLOC(x)	vmalloc(x)
-# define _VFREE(x)		vfree(x)
-#endif
 
 /*
  * WARNING - never use the _SECOND define with the _DODELAY macro !!
  * they are for use the MiscStartTimer function and the _DO_UDELAY macro
  */
-#ifndef __KERNEL__
 typedef double TimerDef, *pTimerDef;
-#else
-typedef long long TimerDef, *pTimerDef;
-#endif
 
 #define _MSECOND    1000             /* based on 1 us */
 #define _SECOND     (1000*_MSECOND)
@@ -160,13 +118,8 @@ typedef long long TimerDef, *pTimerDef;
 /*.............................................................................
  * timer topics
  */
-#ifndef __KERNEL__
 # define _DO_UDELAY(usecs)   sanei_pp_udelay(usecs)
 # define _DODELAY(msecs)     { int i; for( i = msecs; i--; ) _DO_UDELAY(1000); }
-#else
-# define _DO_UDELAY(usecs)   udelay(usecs)
-# define _DODELAY(msecs)     mdelay(msecs)
-#endif
 
 /*.............................................................................
  * include the shared stuff right here, this concerns the ioctl interface
Index: trunk/backend/plustek-pp_scandata.h
===================================================================
--- trunk.orig/backend/plustek-pp_scandata.h
+++ trunk/backend/plustek-pp_scandata.h
@@ -143,17 +143,7 @@ typedef struct {
  */
 typedef struct scandata
 {
-#ifdef __KERNEL__
-	UInt	flags;          	/* as follows:  */
-#define	_PTDRV_INITALIZED	0x00000001
-#define	_PTDRV_OPEN		    0x00000002
-
-	struct pardevice *pardev;	/* for accessing parport... */
-	struct parport   *pp;
-	ProcDirDef		  procDir;
-#else
 	int pardev;                 /* parport handle in user-space */
-#endif
 
 	/*
 	 * device control
Index: trunk/doc/Makefile.am
===================================================================
--- trunk.orig/doc/Makefile.am
+++ trunk/doc/Makefile.am
@@ -124,8 +124,8 @@ BEDOCS += mustek/mustek.CHANGES
 BEDOCS += mustek_usb/mustek_usb.CHANGES mustek_usb/mustek_usb.TODO
 BEDOCS += mustek_usb2/mustek_usb2.CHANGES mustek_usb2/mustek_usb2.TODO
 BEDOCS += niash/niash.TODO
-BEDOCS += plustek/FAQ plustek/MakeModule.sh plustek/Makefile.kernel24 \
-  plustek/Makefile.kernel26 plustek/Plustek-PARPORT-TODO.txt \
+BEDOCS += plustek/FAQ \
+  plustek/Plustek-PARPORT-TODO.txt \
   plustek/Plustek-PARPORT.changes plustek/Plustek-PARPORT.txt \
   plustek/Plustek-USB-TODO.txt plustek/Plustek-USB.changes \
   plustek/Plustek-USB.txt
Index: trunk/doc/plustek/FAQ
===================================================================
--- trunk.orig/doc/plustek/FAQ
+++ trunk/doc/plustek/FAQ
@@ -12,111 +12,10 @@ If you have some more FAQ entries, let m
 THANKS to Jochen <jochen@puchalla-online.de>, who roamed through the
 mailing-list and gathered the different questions.
 
-
 *******************************************************************************
-*                           TROUBLE-SHOOTING                                  *
-*                                                                             *
-*                             DRIVER TOPICS                                   *
+*                                 General                                     *
 *******************************************************************************
 
-
-SYMPTOM: "kernel-module version mismatch"
---------
-"When I try to "make load" I get an error"
-
-/sbin/modprobe pt_drv || exit 1
-/lib/modules/2.2.14-6.0.6/misc/pt_drv.o: kernel-module version mismatch
-/lib/modules/2.2.14-6.0.1/misc/pt_drv.o was compiled
-for kernel version 2.2.14-5.0
-while this kernel is version 2.2.14-6.0.1.
-
-PROBLEM:
---------
-You're using the wrong Kernel-header files.
-
-The path
-/usr/include/linux is a link to
-/usr/src/linux/include/linux and
-/usr/src/linux is normally a link to your current
-kernel, i.e:
-/usr/src/linux-2.2.14
-
-If you now upgrade your kernel and you have
-forgotten to correct the link /usr/src/linux, then
-every kernel-module you build outside the
-kernelsource structure will include the wrong
-version information.
-
-SOLUTION:
----------
-Set the link /usr/src/linux
-to your current kernel-source tree before recompiling
-kernel-modules like pt_drv, then your version mismatch
-problem should be solved.
-
-
-
-SYMPTOM: "Device or resource busy"
---------
-Any attempt to "modprobe" or "make load" the driver leads
-to this message.
-
-PROBLEM:
---------
-The driver refuses to load. During startup, the driver performs
-some tests according to the parallel port and the connected
-scanners.
-If the parallel port is not supported or the scanner cannot be
-found, the driver returns an error and the system will report
-"device or resource busy"
-
-SOLUTION:
----------
-There's no way to provide a general solution. First of all
-you should check your connections and the parallel port.
-Also check power for your scanner.
-If the problem still exists, enable the debug-messages of the
-pt_drv module (see INSTALL).
-Then check the messages after loading or send the output to
-the mailing list.
-Most of these problems are related to HW-problems. Before
-giving up, check the scanner under Windows (not really a
-good advice I know, but it helps to find HW-damage).
-There was also one case were the internal plugs of the parport
-connection were wrong...
-
-
-
-SYMPTOM: "Unresolved symbols"
---------
-"make load" or "modprobe pt_drv" produces this message:
-
-/sbin/modprobe pt_drv || exit 1
-/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_unregister_device
-/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_enumerate
-/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_register_device
-/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_claim
-/lib/modules/2.2.14-5.0/misc/pt_drv.o: unresolved symbol parport_release
-/lib/modules/2.2.14-5.0/misc/pt_drv.o: insmod
-/lib/modules/2.2.14-5.0/misc/pt_drv.o failed
-
-
-PROBLEM:
---------
-The driver needs at least the parport_pc and the parport modules
-to work. They MUST be loaded prior to pt_drv. If these modules
-are not loaded you get this message.
-
-SOLUTION:
----------
-Simply load the parport module. You can add this dependency to
-your /etc/modules.conf (or /etc/conf.modules) file (see INSTALL).
-Then every time you load pt_drv with modprobe, parport will be loaded
-automatically. After modifying this file, call
-depmod -va
-
-
-
 SYMPTOM: Scanner makes awful noise
 --------
 
@@ -138,7 +37,6 @@ The second case is often reported when t
 already loaded. So remove lp.o before loading pt_drv.
 
 
-
 SYMPTOM: Printer starts to print while scanning
 --------
 
@@ -294,23 +192,6 @@ A:  You should be able to use xscanimage
     now the Acquire Image menu entry. That's all.
     If not, start gimp from an xterm and have a look at the output.
 
-
-Q:  Is there any way to load the plustek_driver at bootup-time?
-
-A:  Normally, there is no need to do so, because once you
-    altered your /etc/conf.modules file (or /etc/modules.conf)
-    and added the suggested stuff (see INSTALL file), you won't
-    have to worry about loading the driver. It happens automagically. ;-)
-    The driver will be loaded when needed (and eventually
-    removed after a specific time of not using it).
-
-    Nevertheless, another possibility is to do a modprobe pt_drv in the
-    /etc/rc.d/boot.local (using SuSE) or
-    /etc/rc.d/rc.local (using RedHat or Mandrake) file
-    So the driver will be loaded at bootup-time...
-    !!! YOUR SCANNER MUST BE ONLINE during power-up then !!!
-
-
 Q:  I wonder if Mandrake 7.1's sane rpm file has this support already built in.
     My scanner light is coming on yet Xscanimage seems to report that there
     is no scanner present.
Index: trunk/doc/plustek/MakeModule.sh
===================================================================
--- trunk.orig/doc/plustek/MakeModule.sh
+++ /dev/null
@@ -1,116 +0,0 @@
-#!/bin/bash
-#******************************************************************************
-#
-# Bash-Script to create Plustek-Scannerdriver modules for Kernel 2.4, 2.6 and 3.x
-# out of the backend sources...
-#
-
-BUILD_DIR=$PWD/build
-SRC_DIR=$PWD/../../backend
-MAKEFILE=$PWD/Makefile.kernel26
-KERNEL_V=`uname -r`
-OSMINOR=`uname -r | cut -b 3`
-OSMAJOR=`uname -r | cut -b 1`
-
-#
-# some intro ;-)
-#
-echo "This script will try and build a suitable kernel-module for your system."
-echo "If you'd like to make the module WITH debug output, restart this script"
-echo "with as follows:"
-echo "./MakeModule.sh DEBUG=y"
-echo "Press <ENTER> to continue or <CTRL><C> to cancel."
-read
-
-#
-# we need to be root user...
-#
-echo -n "Check for root..."
-if [ $EUID -ne 0 ]; then
-	echo -e "\b\b\b - failed"
-	echo "Please retry as root user."
-	exit -1
-fi
-echo -e "\b\b\b - done."
-
-#
-# Version checks...
-#
-echo -e "\nCheck for kernelversion:"
-if [ "$OSMAJOR" == "3" ];then
-	echo "Using makefile for kernel 2.6.x - okay for kernel 3 as well..."
-	MAKEFILE=$PWD/Makefile.kernel26
-elif [ "$OSMINOR" == "6" ]; then
-	echo "Using makefile for kernel 2.6.x"
-	MAKEFILE=$PWD/Makefile.kernel26
-elif [ "$OSMINOR" == "4" ]; then
-	echo "Using makefile for kernel 2.4.x"
-	MAKEFILE=$PWD/Makefile.kernel24
-else
-	echo "Your kernelversion >"$OSMAJOR"."$OSMINOR"< is probably not supported"
-	exit -2
-fi
-
-#
-# Setup...
-#
-echo -e "Build-directory: \n"$BUILD_DIR
-echo -n "Removing build-directory..."
-rm -rf $BUILD_DIR
-echo -e "\b\b\b - done."
-
-echo -n "Creating build-directory..."
-mkdir $BUILD_DIR
-cd $BUILD_DIR
-echo -e "\b\b\b - done.\n"
-
-echo -n "Linking source files..."
-C_FILES=`ls $SRC_DIR/plustek-pp_*.c`
-H_FILES=`ls $SRC_DIR/plustek-pp_*.h`
-
-for F in $C_FILES $H_FILES $SRC_DIR/plustek-pp.h $SRC_DIR/plustek_pp.c; do
-	ln -s $F .
-done
-echo -e "\b\b\b - done."
-
-echo -n "Copying Makefile to build-directory..."
-cp $MAKEFILE Makefile
-echo -e "\b\b\b - done."
-
-#
-# Building the module...
-#
-echo "Making the module..."
-if [ "$OSMAJOR" == "2" -a "$OSMINOR" == "4" ]; then
-	make all $1
-else
-	make -C /lib/modules/$KERNEL_V/build/ SUBDIRS=$BUILD_DIR modules $1
-fi
-RES=$?
-cd ..
-if [ $RES != 0 ]; then
-	echo "There were some build errors..."
-	exit -1
-fi
-echo "done."
-
-echo "Should I install the module?"
-echo "Press <ENTER> to continue or <CTRL><C> to cancel."
-read
-
-make -C $BUILD_DIR install
-
-echo "Should I try and load the module?"
-echo "If this step fails, check the kernel-log."
-echo "Press <ENTER> to continue or <CTRL><C> to cancel."
-read
-
-make -C $BUILD_DIR load
-echo "done."
-
-echo "Should I remove the build directory?"
-echo "Press <ENTER> to continue or <CTRL><C> to cancel."
-read
-
-rm -rf $BUILD_DIR
-echo "done."
Index: trunk/doc/plustek/Makefile.kernel24
===================================================================
--- trunk.orig/doc/plustek/Makefile.kernel24
+++ /dev/null
@@ -1,250 +0,0 @@
-# Makefile for the plustek scanner driver (kernel-module)
-#
-###############################################################################
-#
-# define the directories
-#
-HOME_DIR := .
-SRC_DIR  := $(HOME_DIR)
-INC_DIR  := $(SRC_DIR)
-OBJ_DIR  := $(HOME_DIR)/obj
-DOC_DIR  := $(HOME_DIR)/doc
-BACKEND  := $(SRC_DIR)
-
-#
-# define the used tools
-#
-MD  = mkdir -p
-CC  = gcc
-TAR = tar
-REF = cxref
-
-#
-# Comment/uncomment the following line to disable/enable debugging
-# can also be set by commandline parameter: make all DEBUG=y
-#
-#DEBUG = y
-
-#
-# common compiler options
-#
-OPT = -fomit-frame-pointer -D_PTDRV_VERSTR=\"$(VERSIONSTR)\"
-
-#
-# cxref options
-#
-REFOPT = -xref-all -index-all -html32
-
-#
-# Comment out if you are not running SMP. Someone take this out of here
-# when the SMP stuff gets moved out of the kernel Makefile.
-# SMP = 1
-# SMP_PROF = 1
-
-#
-# add the following to get assembly listing
-# -Wa,-alh,-L -g
-
-#
-# get some version numbers
-#
-ifeq ($(LINUXVERSION),)
- LINUXVERSION = $(shell uname -r)
-endif
-
-VERSIONSTR = $(shell grep "define BACKEND_VERSION" $(SRC_DIR)/plustek_pp.c | cut -b25-50 )
-
-# Change it here or specify it on the "make" commandline
-ifeq ($(HEADER_PATH),)
-MACHTYPE = $(shell env | grep debian-linux | wc -l | sed 's/ //g')
-ifeq ($(MACHTYPE),1)
-#  debian
-  HEADER_PATH = /usr/src/kernel-headers-$(LINUXVERSION)/include
-else
-#  redhat, slackware
-  HEADER_PATH = /usr/src/linux/include
-endif
-#   HEADER_PATH = /usr/include
-endif
-
-ifeq ($(DEBUG),y)
-  DEBFLAGS = -O -g -DDEBUG # "-O" is needed to expand inlines
-else
-  DEBFLAGS = -O2
-endif
-
-#
-# the new style reference
-#
-K24_HEADER_PATH = /lib/modules/$(LINUXVERSION)/build/include
-
-#
-# try to autodetect if we can use the new style header include references
-#
-KERNEL_HEADERS = $(shell if test -d $(K24_HEADER_PATH); then \
-							echo $(K24_HEADER_PATH); 		 \
-				 	     else 								 \
-							echo $(HEADER_PATH); 			 \
-					     fi; )
-
-#
-# seems to be necessary for kernels 2.4.x
-#
-MODVERFILE = $(shell if [ -e $(KERNEL_HEADERS)/linux/modversions.h ]; then \
-						echo $(KERNEL_HEADERS)/linux/modversions.h ;	   \
-					 else											       \
-						echo $(KERNEL_HEADERS)/linux/modsetver.h ;		   \
-					 fi )
-
-MODFLAGS = -DMODULE
-
-#
-# set MODVERSIONS if the kernel uses it
-#
-VERSUSED = $(shell grep 'define CONFIG_MODVERSIONS' \
-                   $(KERNEL_HEADERS)/linux/autoconf.h | wc -l | sed 's/ //g')
-ifeq ($(VERSUSED),1)
-  MODFLAGS += -DMODVERSIONS -include $(MODVERFILE)
-endif
-
-
-WARNFLAGS = -Wall -Wstrict-prototypes
-CFLAGS    = $(WARNFLAGS) $(OPT) -D__KERNEL__ -I$(KERNEL_HEADERS) -I$(INC_DIR) -I$(BACKEND) $(DEBFLAGS) $(MODFLAGS)
-MODLIB    = /lib/modules/$(LINUXVERSION)
-
-ifdef SMP
-CFLAGS += -D__SMP__
-
-ifdef SMP_PROF
-CFLAGS += -D__SMP_PROF__
-endif
-endif
-
-TARGET = pt_drv
-
-OBJ  = $(TARGET).o
-NAMES := dac detect genericio image map misc models io procfs
-NAMES := $(NAMES) motor p9636 ptdrv scale tpa p48xx p12 p12ccd
-NAMES := $(addprefix plustek-pp_, $(NAMES))
-SRCS  := $(addprefix $(SRC_DIR)/, $(NAMES))
-SRCS  := $(addsuffix .c, $(SRCS))
-OBJS  := $(addprefix $(OBJ_DIR)/, $(NAMES))
-OBJS  := $(addsuffix .o, $(OBJS))
-INCS  := scan dbg types scandata procs hwdefs sysdep
-INCS  := $(addsuffix .h, $(INCS))
-HDRS  = $(addprefix $(INC_DIR)/plustek-pp_, $(INCS))
-
-#
-# the header files we need from the backend
-#
-BACKINCS := plustek-pp.h
-BACKINCS := $(addprefix $(BACKEND)/, $(BACKINCS))
-
-group = "root"
-mode  = "644"
-INST_DIR = /lib/modules/$(LINUXVERSION)/kernel/drivers/char
-
-info:
-	@clear
-	@echo "Makefile to create the Plustek-Scanner kernel-module:"
-	@echo "all          ... builds the module"
-	@echo "all DEBUG=y  ... builds the module with debug-messages enabled"
-	@echo "clean        ... cleans up the show"
-	@echo "install      ... installs the module to the library path"
-	@echo "uninstall    ... removes the module from the library path"
-	@echo "load         ... tries to load the module and creates device nodes"
-	@echo "unload       ... unloads the module"
-
-
-all: .depend chkdir $(OBJ)
-
-#
-# create object directory
-#
-.PHONY : chkdir
-chkdir:
-	@-$(MD) $(OBJ_DIR)
-	@-$(MD) $(DOC_DIR)
-
-$(OBJ): $(OBJS)
-	$(LD) -r $^ -o $@
-
-$(OBJS): Makefile $(HDRS) $(BACKINCS)
-
-$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
-	$(CC) $(CFLAGS) -c $< -o $@
-
-$(OBJ_DIR)/$(OBJ): VERSION1 VERSION0
-
-#
-# copy the driver to the modules directory
-#
-install:
-	mkdir -p $(INST_DIR)
-	install -c -m $(mode) $(OBJ) $(INST_DIR)
-	/sbin/depmod -a
-
-#
-# remove it
-#
-uninstall:
-	rm -f $(INST_DIR)/$(OBJ)
-
-#
-# use modprobe to load the driver, remember to set the
-# parameter in /etc/modules.conf (see sane-plustek_pp.man for more details)
-#
-load:   $(INST_DIR)/$(OBJ)
-# invoke modprobe with all arguments we got
-	/sbin/modprobe $(TARGET) || exit 1
-
-# Remove stale nodes and replace them, then give gid and perms
-	rm -f /dev/$(TARGET)*
-
-# when using the devfs support, we check the /dev/scanner entries
-# and only create links to the devfs nodes
-# at least we create one link
-	@if [ -e /dev/scanner/$(TARGET)* ]; then 				\
-		ln -s /dev/scanner/$(TARGET)0 /dev/$(TARGET);		\
-		for name in `ls /dev/scanner | grep $(TARGET)`; do	\
-			ln -s /dev/scanner/$$name /dev/$$name ;     	\
-		done												\
-	else                      								\
-		mknod /dev/$(TARGET) c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0;  \
-		mknod /dev/$(TARGET)0 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0;	\
-		mknod /dev/$(TARGET)1 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 1;	\
-		mknod /dev/$(TARGET)2 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 2; \
-		mknod /dev/$(TARGET)3 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 3;	\
-																							\
-		chgrp $(group) /dev/$(TARGET)*;	\
-		chmod $(mode)  /dev/$(TARGET)*;	\
-	fi
-
-#
-# unload the driver
-#
-unload:
-	/sbin/modprobe -r $(TARGET) || exit 1
-
-# Remove stale nodes
-	rm -f /dev/$(TARGET)*
-
-#
-# create reference docu
-#
-doc: chkdir
-	$(REF) $(REFOPT) $(INC_DIR)/*.h $(SRC_DIR)/*.c $(BACKEND)/plustek-share.h \
-    -D__KERNEL__ -I$(KERNEL_HEADERS) -I$(INC_DIR) -I$(BACKEND) $(MODFLAGS) \
-    -D_PTDRV_V1=$(VERSION1) -D_PTDRV_V0=$(VERSION0) -D_PTDRV_BUILD=$(BUILD) -O$(DOC_DIR)
-
-clean:
-	@-rm -f $(OBJ_DIR)/*.o .depend depend dep $(REF).* *.html $(TARGET).o
-	@-rm -rf $(OBJ_DIR)
-	@-rm -rf $(DOC_DIR)
-
-depend .depend dep:
-	$(CC) $(CFLAGS) -M $(SRCS) > $@
-
-ifeq (.depend,$(wildcard .depend))
-#include .depend
-endif
Index: trunk/doc/plustek/Makefile.kernel26
===================================================================
--- trunk.orig/doc/plustek/Makefile.kernel26
+++ /dev/null
@@ -1,124 +0,0 @@
-# Makefile for the plustek scanner driver (kernel-module)
-#
-###############################################################################
-
-#
-# retrieve the version numbers
-#
-ifeq ($(LINUXVERSION),)
- LINUXVERSION = $(shell uname -r)
-endif
-LINUXRELEASE = $(shell uname -r | cut -d'.' -f3)
-
-ifeq ($(VERSIONSTR),)
- ifeq ($(SUBDIRS),)
-  VERSIONSTR = $(shell grep "define BACKEND_VERSION" $(M)/plustek_pp.c | cut -b25-50 )
- else
-  VERSIONSTR = $(shell grep "define BACKEND_VERSION" $(SUBDIRS)/plustek_pp.c | cut -b25-50 )
- endif
-endif
-
-#
-# extra flags
-#
-EXTRA_CFLAGS += -D_PTDRV_VERSTR=\"$(VERSIONSTR)\"
-
-ifeq ($(DEBUG),y)
-	EXTRA_CFLAGS += -DDEBUG
-endif
-
-#
-# the module name
-#
-TARGET := pt_drv
-MODULE := $(TARGET).ko
-
-#
-# our files...
-#
-NAMES := dac detect genericio image map misc models io procfs
-NAMES := $(NAMES) motor p9636 ptdrv scale tpa p48xx p12 p12ccd
-NAMES := $(addprefix plustek-pp_, $(NAMES))
-OBJS  := $(addsuffix .o, $(NAMES))
-
-#
-# now the kernel magic
-#
-ifneq ($(KERNELRELEASE),)
-obj-m := $(TARGET).o
-
-$(TARGET)-objs := $(OBJS)
-
-else
-KDIR := /lib/modules/$(shell uname -r)/build
-PWD  := $(shell pwd)
-
-default:
-	$(MAKE) -C $(KDIR) M=$(PWD) modules
-endif
-
-#
-# the installation stuff
-#
-group = "root"
-mode  = "644"
-INST_DIR = /lib/modules/$(LINUXVERSION)/kernel/drivers/parport
-
-#
-# copy the driver to the modules directory
-#
-install:
-	mkdir -p $(INST_DIR)
-	install -c -m $(mode) $(MODULE) $(INST_DIR)
-	/sbin/depmod -a
-
-#
-#
-#
-uninstall:
-	rm -f $(INST_DIR)/$(MODULE)
-
-#
-# use modprobe to load the driver, remember to set the
-# parameter in /etc/conf.modules (see INSTALL for more details)
-#
-load:   $(INST_DIR)/$(MODULE)
-# invoke modprobe with all arguments we got
-	/sbin/modprobe $(TARGET) || exit 1
-
-# Remove stale nodes and replace them, then give gid and perms
-	rm -f /dev/$(TARGET)*
-
-# when using the devfs support, we check the /dev/scanner entries
-# and only create links to the devfs nodes
-# at least we create one link
-	@if [ -e /dev/scanner/$(TARGET)* ]; then 				\
-		ln -s /dev/scanner/$(TARGET)0 /dev/$(TARGET);		\
-		for name in `ls /dev/scanner | grep $(TARGET)`; do	\
-			ln -s /dev/scanner/$$name /dev/$$name ;     	\
-		done												\
-	else                      								\
-		mknod /dev/$(TARGET) c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0;  \
-		mknod /dev/$(TARGET)0 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0;	\
-		mknod /dev/$(TARGET)1 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 1;	\
-		mknod /dev/$(TARGET)2 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 2; \
-		mknod /dev/$(TARGET)3 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 3;	\
-																							\
-		chgrp $(group) /dev/$(TARGET)*;	\
-		chmod $(mode)  /dev/$(TARGET)*;	\
-	fi
-
-#
-# unload the driver
-#
-unload:
-	/sbin/modprobe -r $(TARGET) || exit 1
-
-# Remove stale nodes
-	rm -f /dev/$(TARGET)*
-
-#
-# cleanup the show
-#
-clean:
-	@-rm -f *.o .depend depend dep $(MODULE) $(TARGET).o $(TARGET).mod.c .*.cmd
Index: trunk/doc/plustek/Plustek-PARPORT.txt
===================================================================
--- trunk.orig/doc/plustek/Plustek-PARPORT.txt
+++ trunk/doc/plustek/Plustek-PARPORT.txt
@@ -1,46 +1,10 @@
 Plustek-PARPRORT.txt (2004-03-28) Gerhard Jäger <gerhard@gjaeger.de>
 ====================================================================
 
-
 Beginning with SANE-1.0.13, there's a backend called plustek_pp.
 This is for controlling Plustek parallel-port scanner and compatible
 devices. For a full listing, see plustek_pp.desc.
 
-This code formerly was available for creating the Linux kernelmodule
-pt_drv. This should no longer be necessary. You should be able to use
+This code formerly was available for creating the Linux kernel module
+pt_drv. This is no longer be necessary. You should be able to use
 the backend out of the box.
-
-
-The kernel module
------------------
-
-As it might be helpful to create and use the kernel-module, this way still
-exists. It's possible to create this module out of the backend sources
-in sane-backends/backend. Simply do (as root user)
-
-./MakeModule.sh
-
-Then the module should be compiled, installed and loaded.
-
-Add the following three lines to file /etc/modules.conf
-
-alias char-major-40	pt_drv
-pre-install pt_drv modprobe -k parport
-options pt_drv lampoff=180 warmup=15 port=0x378 lOffonEnd=0 mov=0 slowIO=1
-
-See man page for sane-plustek_pp ("man sane-plustek_pp") for explanation of
-these options.
-
-Now "scanimage -L" should show something like this:
-device `plustek:/dev/pt_drv' is a Plustek 9630P flatbed scanner
-
-
-Known Problems:
----------------
-
-Sometimes it is necessary to change the ioctl-interface between the
-driver and the backend, in this case the version number of the communication
-protocol will be changed and newer drivers won't work with older backends
-and vice versa.
-In this case (error -9019 in the SANE debug output!!) you have to recompile SANE
-AND the driver (have a look at the installation procedure above).
Index: trunk/doc/plustek/Plustek-USB.txt
===================================================================
--- trunk.orig/doc/plustek/Plustek-USB.txt
+++ trunk/doc/plustek/Plustek-USB.txt
@@ -4,10 +4,7 @@ Plustek-USB.txt (2005-08-08) Gerhard Jä
 NOTE:
 -----
 
-ALL YOU NEED TO RUN YOUR USB SCANNER IS ALREADY INCLUDED. THERE'S
-NO NEED TO INSTALL THE KERNEL MODULE pt_drv. THIS ONE IS ONLY NEEDED
-FOR THE PLUSTEK PARALLELPORT SCANNER.
-
+ALL YOU NEED TO RUN YOUR USB SCANNER IS ALREADY INCLUDED.
 
 List of all currently implemented devices
 -----------------------------------------
Index: trunk/doc/sane-plustek_pp.man
===================================================================
--- trunk.orig/doc/sane-plustek_pp.man
+++ trunk/doc/sane-plustek_pp.man
@@ -9,18 +9,10 @@ The
 library implements a SANE (Scanner Access Now Easy) backend that
 provides access to Plustek ASIC 9600[1/3] and P9800[1/3] based
 parallel port flatbed scanners.
-The access of the scanner is either done directly by the backend
-or via kernel module, called pt_drv which can be created out of
-the
-.B sane\-plustek_pp
-backend code \- see also section
-.B "BUILDING THE KERNEL MODULE"
-for further information.
 
 .SH "SUPPORTED DEVICES"
 
-At present, the following scanners should work with this backend
-and/or the kernel module:
+At present, the following scanners should work with this backend:
 .PP
 .B "PLUSTEK SCANNERS"
 .PP
@@ -112,18 +104,14 @@ BrightScan OpticPro         OpticPro P12
 .ft R
 
 .SH "DEVICE NAMES"
-This backend works in two modes, the so called "direct-mode"
-and the "kernel-mode". In direct-mode, the user-space backend is
-used, in kernel-mode, you should have a kernel-module named pt_drv
-loaded.
-This backends default device is:
+This backend's default device is:
 .PP
 .RS
 .I 0x378
 .RE
 .PP
-This "default device" will be used, if no configuration
-file can be found. It is rather the base address of the parallel port
+This "default device" will be used if no configuration
+file can be found. It is the base address of the parallel port
 on i386 machines.
 .PP
 As the backend supports up to four devices, it is possible to
@@ -150,24 +138,13 @@ For a proper setup, you will need at lea
 .I device 0x378
 .RE
 .PP
-or
-.RS
-.I [kernel]
-.br
-.I device /dev/pt_drv
-.RE
-.PP
 .I direct
 tells the backend, that the following devicename (here
 .IR 0x378 )
 has to be interpreted as parallel port scanner device. In
-fact it is the address to use, alternatively you can use
+fact it is the address to use. Alternatively you can use
 .I /dev/parport0
 if the backend has been compiled with libieee1284 support.
-.I kernel
-should only be used, when a kernel-module has been built
-out of the backend sources. See below for more instructions
-about this.
 .PP
 Further options:
 .PP
@@ -235,157 +212,6 @@ See the
 file for examples.
 .PP
 
-.SH "BUILDING THE KERNEL MODULE"
-As mentioned before, the
-.B sane\-plustek_pp
-backend code can also be compiled and installed as linux kernel module. To do so,
-you will need the source-files of this sane\-backend installation.
-Unpack this tar-ball and go to the directory:
-.IR sane\-backends/doc/plustek .
-Within this directory, you should find a script called:
-.IR MakeModule.sh .
-Now if your Linux kernelsources are installed correctly,
-it should be possible to build, install and load the
-module
-.BR pt_drv .
-.B Please note,
-that the kernelsources need to be configured correctly.
-Refer to your distributions
-manual on how this is done. As root user, try
-.PP
-.I ./MakeModule.sh
-.PP
-the script will try and get all necessary information about your
-running kernel and will lead you through the whole installation
-process.
-.br
-.B Note: Installing and loading the can only be done as
-superuser.
-.PP
-
-.SH "KERNEL MODULE SETUP"
-The configuration of the kernel module is done by providing
-some or more options found below to the kernel module at
-load time. This can be done by invoking
-.BR insmod (8)
-with the appropriate parameters or appending the options to the file
-.I /etc/modules.conf (kernel < 2.6.x)
-or
-.I /etc/modprobe.conf (kernel >= 2.6.x)
-.PP
-.B
-The Options:
-.br
-lampoff=lll
-.RS
-The value
-.I lll
-tells the driver, after how many seconds to
-switch-off the lamp(s). The default value is 180.
-0 will disable this feature.
-.br
-.B HINT:
-Do not use a value that is too small, because often
-switching on/off the lamps will reduce their lifetime.
-.RE
-.PP
-port=ppp
-.RS
-.I ppp
-specifies the port base address, where the scanner
-is connected to. The default value is 0x378, which
-is normally a standard.
-.RE
-.PP
-warmup=www
-.RS
-.I www
-specifies the time in seconds, how long a lamp has to be on,
-until the driver will start to scan. The default value is 30.
-.RE
-.PP
-lOffonEnd=e
-.RS
-.I e
-specifies the behaviour when unloading the driver, 1 --> switch
-lamps off, 0 --> do not change lamp status
-.RE
-.PP
-slowIO=s
-.RS
-.I s
-specifies which I/O functions the driver should use, 1 --> use
-delayed functions, 0 --> use the non-delayed ones
-.RE
-.PP
-forceMode=fm
-.RS
-.I fm
-specifies port mode which should be used, 0 --> autodetection,
-1 --> use SPP mode and 2 --> use EPP mode
-.RE
-.PP
-mov=m
-.RS
-.TP
-.IR m " = 0"
-default: no override
-.TP
-.IR m " = 1"
-OpticPro 9630PL override (works if OP9630
-has been detected) forces legal size (14")
-.TP
-.IR m " = 2"
-Primax 4800Direct override (works if OP600
-has been detected) swaps red/green color
-.TP
-.IR m " = 3"
-OpticPro 9636 override (works if OP9636 has
-been detected) disables backends
-transparency/negative capabilities
-.TP
-.IR m " = 4"
-OpticPro 9636P override (works if OP9636 has
-been detected) disables backends
-transparency/negative capabilities
-.TP
-.IR m " = 5"
-OpticPro A3I override (works if OP12000 has
-been detected) enables A3 scanning
-.TP
-.IR m " = 6"
-OpticPro 4800P override (works if OP600
-has been detected) swaps red/green color
-.TP
-.IR m " = 7"
-Primax 4800Direct 30bit override (works if
-OP4830 has been detected)
-.RE
-.PP
-Sample entry for file
-.IR /etc/modules.conf :
-.PP
-.RS
-alias char\-major\-40 pt_drv
-.br
-pre-install pt_drv modprobe -k parport
-.br
-options pt_drv lampoff=180 warmup=15 port=0x378 lOffonEnd=0 mov=0 slowIO=0 forceMode=0
-.RE
-.PP
-For multidevice support, simply add values separated by commas to
-the different options
-.PP
-.RS
-options pt_drv port=0x378,0x278 mov=0,4 slowIO=0,1 forceMode=0,1
-.RE
-.PP
-Remember to call
-.BR depmod (8)
-after changing
-.IR /etc/conf.modules .
-.PP
-
 .SH "PARALLEL PORT MODES"
 .PP
 The current driver works best, when the parallel port
@@ -423,13 +249,6 @@ The static library implementing this bac
 .I @LIBDIR@/libsane\-plustek_pp.so
 The shared library implementing this backend (present on systems that
 support dynamic loading).
-.TP
-.I /lib/modules/<Kernel-Version>/kernel/drivers/parport/pt_drv.o
-The Linux kernelmodule for kernels < 2.6.x.
-.TP
-.I /lib/modules/<Kernel-Version>/kernel/drivers/parport/pt_drv.ko
-The Linux kernelmodule for kernels >= 2.6.x.
-.PP
 
 .SH ENVIRONMENT
 .TP