plustek@linuxhacker.org

plustek@linuxhacker.org


Subject: Re: Trouble making and installing driver with Mandrake 8.0
From: Dave Croal
Date: Mon, 11 Jun 2001 14:50:31 GMT

>>>>>>>>>>>>>>>>>> Original Message <<<<<<<<<<<<<<<<<<

On 6/8/01, 4:44:50 PM, kevin <kjsisson@bellsouth.net> wrote regarding Re: 
Trouble making and installing driver with Mandrake 8.0:


> Dave Croal wrote:
> >
> >
> > I checked that parport pc is loaded.
> > Proc fs is enabled and mounted too.
> >
> > I don't get unresolved symbols today, now I get:
> >
> > [root@croalnotebook plustek driver]# make load
> > /sbin/modprobe pt drv || exit 1
> > /lib/modules/2.4.3-20mdk-win4lin/misc/pt drv.o: init module: Success
> > Hint: insmod errors can be caused by incorrect module parameters,
> > including invalid IO or IRQ parameters
> > /lib/modules/2.4.3-20mdk-win4lin/misc/pt drv.o: insmod
> > /lib/modules/2.4.3-20mdk-win4lin/misc/pt drv.o failed
> > /lib/modules/2.4.3-20mdk-win4lin/misc/pt drv.o: insmod pt drv failed
> > make: *** [load] Error 1
> >
> > IIRC it is after a reboot that the  unresolved symbols happen. BTW I did
> > update my modules.conf and did run depmod.
> >
> > I also noticed that make load fails to create the /dev/pt drv* nodes,
> > guess it doesn't make it that far.
> >
> > Are you willing to send me a copy of your pt drv.o to try? I am running
> > gcc 2.96,  kernel 2.4.3mdk stock on an AMD K6-450 (i586).
> >
> > Am willing to try any and all legal suggestions. Thanks for your help.
> >
> > Dave Croal


> I will send it to you if you want, but I have the debug turned on
> so it is large (~2 MB). I will first rebuild it with debug off so
> it is smaller and check that that works. The other thing you could
> check is in the ../h/plustek scan.h file, near the beginning. Just
> before the

>  #define  OUTB CTRL..      outb p...

> statements there is an

> #if 1 or #if 0 statement.

> If it is 0, change it to 1 and rebuild the driver. I would also be
> sure the outb (lower case on right hand side of statement) is
> outb p (same for inb -> inb p). There seem to be timing issues
> involved here; I have only had consistent success with the outb p
> statements (they put in a slight delay). Since the /dev/pt drv do
> not seem to be created by the install, you might want to create
> them by hand (mknod /dev/pt drv c 40 0 at least).

>       Kevin

I believe ../h/plustek scan.h is compliant with your suggestions in the 
original tarball (see below) but no luck yet. Will keep trying, thanks 
for your help. For now I have hooked my OpticPro 4800P up to another box 
running 2.2.17mdk, no problems there at all.

Regards,
Dave Croal

#if 1

#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  OUTB STATUS(pSD,port value) 
 OPF(port value,pSD->IO.pbStatusPort)

#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)       
parport pc write control(pSD->pp, port value)
#define  OUTB DATA(pSD,port value)       parport pc write data(pSD->pp, 
port value)
#define  OUTB STATUS(pSD,port value) parport pc write status(pSD->pp, 
port value)

#define  INB CTRL(pSD)                          
parport pc read control(pSD->pp)
#define  INB DATA(pSD)                          
parport pc read data(pSD->pp)
#define  INB STATUS(pSD)                        
parport pc read status(pSD->pp)

#ifdef LINUX 24
# define  OUTB ECTL(pSD,port value)     
outb p(port value,(pSD->IO.portBase+0x402))
# define  INB EPPDATA(pSD)                      
inb p(pSD->IO.pbEppDataPort)
# define  INB ECTL(pSD)                         
inb p((pSD->IO.portBase+0x402))
#else
# define  OUTB ECTL(pSD,port value)     
parport pc write econtrol(pSD->pp, port value)
# define  INB EPPDATA(pSD)                      
parport pc read epp(pSD->pp)
# define  INB ECTL(pSD)                         
parport pc read econtrol(pSD->pp)
#endif

#endif



plustek@linuxhacker.org