diff options
Diffstat (limited to 'sanei')
| -rw-r--r-- | sanei/Makefile.am | 2 | ||||
| -rw-r--r-- | sanei/sanei_ab306.c | 42 | ||||
| -rw-r--r-- | sanei/sanei_directio.c | 367 | ||||
| -rw-r--r-- | sanei/sanei_jpeg.c | 24 | ||||
| -rw-r--r-- | sanei/sanei_magic.c | 4 | ||||
| -rw-r--r-- | sanei/sanei_pa4s2.c | 64 | ||||
| -rw-r--r-- | sanei/sanei_pio.c | 154 | ||||
| -rw-r--r-- | sanei/sanei_pp.c | 71 | ||||
| -rw-r--r-- | sanei/sanei_pv8630.c | 3 | ||||
| -rw-r--r-- | sanei/sanei_scsi.c | 3 | 
10 files changed, 435 insertions, 299 deletions
| diff --git a/sanei/Makefile.am b/sanei/Makefile.am index 46d3ff4..30b9781 100644 --- a/sanei/Makefile.am +++ b/sanei/Makefile.am @@ -9,7 +9,7 @@ AM_CPPFLAGS += -I. -I$(srcdir) -I$(top_builddir)/include \  noinst_LTLIBRARIES = libsanei.la -libsanei_la_SOURCES = sanei_ab306.c sanei_constrain_value.c \ +libsanei_la_SOURCES = sanei_directio.c sanei_ab306.c sanei_constrain_value.c \    sanei_init_debug.c sanei_net.c sanei_wire.c sanei_codec_ascii.c \    sanei_codec_bin.c sanei_scsi.c sanei_config.c sanei_config2.c \    sanei_pio.c sanei_pa4s2.c sanei_auth.c sanei_usb.c sanei_thread.c \ diff --git a/sanei/sanei_ab306.c b/sanei/sanei_ab306.c index aa642c9..5c1f200 100644 --- a/sanei/sanei_ab306.c +++ b/sanei/sanei_ab306.c @@ -47,33 +47,7 @@  #include <sys/types.h> -#ifdef HAVE_SYS_IO_H -# include <sys/io.h>	/* use where available (glibc 2.x, for example) */ -# ifndef SANE_HAVE_SYS_IO_H_WITH_INB_OUTB -#  define IO_SUPPORT_MISSING -# endif -#elif HAVE_ASM_IO_H -# include <asm/io.h>	/* ugly, but backwards compatible */ -#elif defined (__i386__)  && defined (__GNUC__) - -static __inline__ void -outb (u_char value, u_long port) -{ -  __asm__ __volatile__ ("outb %0,%1" : : "a" (value), "d" ((u_short) port)); -} - -static __inline__ u_char -inb (u_long port) -{ -  u_char value; - -  __asm__ __volatile__ ("inb %1,%0" : "=a" (value) : "d" ((u_short)port)); -  return value; -} - -#else -# define IO_SUPPORT_MISSING -#endif +#include "../include/sane/sanei_directio.h"  #include "../include/sane/sane.h"  #include "../include/sane/sanei.h" @@ -149,7 +123,7 @@ ab306_outb (Port *p, u_long addr, u_char val)  	return;      }    else -    outb (val, addr); +    sanei_outb (addr, val);  }  static int @@ -166,7 +140,7 @@ ab306_inb (Port *p, u_long addr)        return ch;      }    else -    return inb (addr); +    return sanei_inb (addr);  }  /* Send a single command-byte over the AB306N-interface.  */ @@ -299,11 +273,11 @@ sanei_ab306_open (const char *dev, int *fdp)        byte = wakeup[j];        if (j == NELEMS(wakeup) - 1)  	byte |= i; -      outb (byte, AB306_CIO); +      sanei_outb (AB306_CIO, byte);      }  #else /* !defined(__FreeBSD__) */ -  if (ioperm (AB306_CIO, 1, 1) != 0) +  if (sanei_ioperm (AB306_CIO, 1, 1) != 0)      {        DBG(1, "sanei_ab306_ioport: using /dev/port access\n");        if (port[i].port_fd < 0) @@ -329,7 +303,7 @@ sanei_ab306_open (const char *dev, int *fdp)  	  byte = wakeup[j];  	  if (j == NELEMS(wakeup) - 1)  	    byte |= i; -	  outb (byte, AB306_CIO); +	  sanei_outb (AB306_CIO, byte);  	}        status = sanei_ab306_get_io_privilege (i);        if (status != SANE_STATUS_GOOD) @@ -373,7 +347,7 @@ sanei_ab306_get_io_privilege (int fd)        if (dev_io_fd < 0)          return SANE_STATUS_IO_ERROR;  #else /* !defined(__FreeBSD__) */ -      if (ioperm (port[fd].base, 3, 1) != 0) +      if (sanei_ioperm (port[fd].base, 3, 1) != 0)  	return SANE_STATUS_IO_ERROR;  #endif /* !defined(__FreeBSD__) */      } @@ -493,7 +467,7 @@ sanei_ab306_rdata (int fd, int planes, SANE_Byte * buf, int lines, int bpl)  	      /* the pixel-loop: */  	      for (bcnt = 0; bcnt < xmax; bcnt++)  		{ -		  *(u_char *) buf = inb (p->base); +		  *(u_char *) buf = sanei_inb (p->base);  		  ++buf;  		}  	    } diff --git a/sanei/sanei_directio.c b/sanei/sanei_directio.c new file mode 100644 index 0000000..c95bb97 --- /dev/null +++ b/sanei/sanei_directio.c @@ -0,0 +1,367 @@ +/*************************************************/ +/* here we define sanei_inb/sanei_outb based on  */ +/* OS dependent inb/outb definitions             */ +/* SANE_INB is defined whenever a valid inb/outb */ +/* definition has been found                     */ +/*************************************************/ + +#include "../include/sane/config.h" + +#include <errno.h> +#include <stdlib.h> +#include <string.h> + +#include <sys/types.h> + +#include "../include/sane/sane.h" +#include "../include/sane/sanei.h" +#include "../include/sane/sanei_directio.h" + +#ifdef ENABLE_PARPORT_DIRECTIO + +#define TEST_SANE_INB(val) ( SANE_INB == val ) + +#if ( TEST_SANE_INB(1) )	/* OS/2 EMX case */ +int +sanei_ioperm (int start, int length, int enable) +{ +  if (enable) +    return _portaccess (port, port + length - 1); +  return 0; +} + +unsigned char +sanei_inb (unsigned int port) +{ +  return _inp8 (port) & 0xFF; +} + +void +sanei_outb (unsigned int port, unsigned char value) +{ +  _outp8 (port, value); +} + +void +sanei_insb (unsigned int port, unsigned char *addr, unsigned long count) +{ +  _inps8 (port, (unsigned char *) addr, count); +} + +void +sanei_insl (unsigned int port, unsigned char *addr, unsigned long count) +{ +  _inps32 (port, (unsigned long *) addr, count); +} + +void +sanei_outsb (unsigned int port, const unsigned char *addr, +	     unsigned long count) +{ +  _outps8 (port, (unsigned char *) addr, count); +} + +void +sanei_outsl (unsigned int port, const unsigned char *addr, +	     unsigned long count) +{ +  _outps32 (port, (unsigned long *) addr, count); +} +#endif /* OS/2 EMX case */ + + + +#if ( TEST_SANE_INB(2) )	/* FreeBSD case */ +int +sanei_ioperm (int start, int length, int enable) +{ +#ifdef HAVE_I386_SET_IOPERM +  return i386_set_ioperm (start, length, enable); +#else +  int fd = 0; + +  /* makes compilers happy */ +  start = length + enable; +  fd = open ("/dev/io", O_RDONLY); +  if (fd > 0) +    return 0; +  return -1; +#endif +} + +unsigned char +sanei_inb (unsigned int port) +{ +  return inb (port); +} + +void +sanei_outb (unsigned int port, unsigned char value) +{ +  outb (port, value); +} + +void +sanei_insb (unsigned int port, unsigned char *addr, unsigned long count) +{ +  insb (port, addr, count); +} + +void +sanei_insl (unsigned int port, unsigned char *addr, unsigned long count) +{ +  insl (port, addr, count); +} + +void +sanei_outsb (unsigned int port, const unsigned char *addr, +	     unsigned long count) +{ +  outsb (port, addr, count); +} + +void +sanei_outsl (unsigned int port, const unsigned char *addr, +	     unsigned long count) +{ +  outsl (port, addr, count); +} +#endif /* FreeBSD case */ + + +/* linux GCC on i386 */ +#if ( TEST_SANE_INB(3) )	/* FreeBSD case */ + +int +sanei_ioperm (int start, int length, int enable) +{ +#ifdef HAVE_IOPERM +  return ioperm (start, length, enable); +#else +  /* linux without ioperm ? hum ... */ +  /* makes compilers happy */ +  start = length + enable; +  return 0; +#endif +} + +unsigned char +sanei_inb (unsigned int port) +{ +  return inb (port); +} + +void +sanei_outb (unsigned int port, unsigned char value) +{ +  outb (value, port); +} + +void +sanei_insb (unsigned int port, unsigned char *addr, unsigned long count) +{ +  insb (port, addr, count); +} + +void +sanei_insl (unsigned int port, unsigned char *addr, unsigned long count) +{ +  insl (port, addr, count); +} + +void +sanei_outsb (unsigned int port, const unsigned char *addr, +	     unsigned long count) +{ +  outsb (port, addr, count); +} + +void +sanei_outsl (unsigned int port, const unsigned char *addr, +	     unsigned long count) +{ +  /* oddly, 32 bit I/O are done with outsw instead of the expected outsl */ +  outsw (port, addr, count); +} +#endif /* linux GCC on i386 */ + + +/* linux GCC non i386 */ +#if ( TEST_SANE_INB(4) ) +int +sanei_ioperm (int start, int length, int enable) +{ +#ifdef HAVE_IOPERM +  return ioperm (start, length, enable); +#else +  /* linux without ioperm ? hum ... */ +  /* makes compilers happy */ +  start = length + enable; +  return 0; +#endif +} + +unsigned char +sanei_inb (unsigned int port) +{ +  return inb (port); +} + +void +sanei_outb (unsigned int port, unsigned char value) +{ +  outb (value, port); +} + +void +sanei_insb (unsigned int port, unsigned char *addr, unsigned long count) +{ +  unsigned int i; + +  for (i = 0; i < count; i++) +    addr[i] = sanei_inb (port); +} + +void +sanei_insl (unsigned int port, unsigned char *addr, unsigned long count) +{ +  unsigned int i; + +  for (i = 0; i < count * 4; i++) +    addr[i] = sanei_inb (port); +} + +void +sanei_outsb (unsigned int port, const unsigned char *addr, +	     unsigned long count) +{ +  unsigned int i; + +  for (i = 0; i < count; i++) +    sanei_outb (port, addr[i]); +} + +void +sanei_outsl (unsigned int port, const unsigned char *addr, +	     unsigned long count) +{ +  unsigned int i; + +  for (i = 0; i < count * 4; i++) +    sanei_outb (port, addr[i]); +} +#endif /* linux GCC non i386 */ + + +/* ICC on i386 */ +#if ( TEST_SANE_INB(5) ) +int +sanei_ioperm (int start, int length, int enable) +{ +#ifdef HAVE_IOPERM +  return ioperm (start, length, enable); +#else +  /* ICC without ioperm() ... */ +  /* makes compilers happy */ +  start = length + enable; +  return 0; +#endif +} +unsigned char +sanei_inb (unsigned int port) +{ +  unsigned char ret; + +  __asm__ __volatile__ ("inb %%dx,%%al":"=a" (ret):"d" ((u_int) port)); +  return ret; +} + +void +sanei_outb (unsigned int port, unsigned char value) +{ +  __asm__ __volatile__ ("outb %%al,%%dx"::"a" (value), "d" ((u_int) port)); +} + +void +sanei_insb (unsigned int port, void *addr, unsigned long count) +{ +  __asm__ __volatile__ ("rep ; insb":"=D" (addr), "=c" (count):"d" (port), +			"0" (addr), "1" (count)); +} + +void +sanei_insl (unsigned int port, void *addr, unsigned long count) +{ +  __asm__ __volatile__ ("rep ; insl":"=D" (addr), "=c" (count):"d" (port), +			"0" (addr), "1" (count)); +} + +void +sanei_outsb (unsigned int port, const void *addr, unsigned long count) +{ +  __asm__ __volatile__ ("rep ; outsb":"=S" (addr), "=c" (count):"d" (port), +			"0" (addr), "1" (count)); +} + +void +sanei_outsl (unsigned int port, const void *addr, unsigned long count) +{ +  __asm__ __volatile__ ("rep ; outsl":"=S" (addr), "=c" (count):"d" (port), +			"0" (addr), "1" (count)); +} + +#endif /* ICC on i386 */ + +#endif /* ENABLE_PARPORT_DIRECTIO */ +/* + * no inb/outb without --enable-parport-directio * + */ +#ifndef ENABLE_PARPORT_DIRECTIO +int +sanei_ioperm (__sane_unused__ int start, __sane_unused__ int length, +              __sane_unused__ int enable) +{ +  /* returns failure */ +  return -1; +} + +unsigned char +sanei_inb (__sane_unused__ unsigned int port) +{ +  return 255; +} + +void +sanei_outb (__sane_unused__ unsigned int port, +            __sane_unused__ unsigned char value) +{ +} + +void +sanei_insb (__sane_unused__ unsigned int port, +            __sane_unused__ unsigned char *addr, +            __sane_unused__ unsigned long count) +{ +} + +void +sanei_insl (__sane_unused__ unsigned int port, +            __sane_unused__ unsigned char *addr, +            __sane_unused__ unsigned long count) +{ +} + +void +sanei_outsb (__sane_unused__ unsigned int port, +             __sane_unused__ const unsigned char *addr, +	     __sane_unused__ unsigned long count) +{ +} + +void +sanei_outsl (__sane_unused__ unsigned int port, +             __sane_unused__ const unsigned char *addr, +	     __sane_unused__ unsigned long count) +{ +} +#endif /* ENABLE_PARPORT_DIRECTIO is not defined */ diff --git a/sanei/sanei_jpeg.c b/sanei/sanei_jpeg.c index 7b66dae..d27701f 100644 --- a/sanei/sanei_jpeg.c +++ b/sanei/sanei_jpeg.c @@ -57,8 +57,8 @@ typedef ppm_dest_struct *ppm_dest_ptr;  METHODDEF (void)  sanei_jpeg_start_output_ppm (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)  { -  cinfo = cinfo; -  dinfo = dinfo; +  (void) cinfo; +  (void) dinfo;    /* header image is supplied for us */  } @@ -66,8 +66,8 @@ sanei_jpeg_start_output_ppm (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)  METHODDEF (void)  sanei_jpeg_finish_output_ppm (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo)  { -  cinfo = cinfo; -  dinfo = dinfo; +  (void) cinfo; +  (void) dinfo;    /* nothing to do */  } @@ -85,9 +85,9 @@ sanei_jpeg_put_pixel_rows (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,  			   JDIMENSION rows_supplied, char *data)  {    ppm_dest_ptr dest = (ppm_dest_ptr) dinfo; -  cinfo = cinfo; -  dinfo = dinfo; -  rows_supplied = rows_supplied; +  (void) cinfo; +  (void) dinfo; +  (void) rows_supplied;    memcpy (data, dest->iobuffer, dest->buffer_width);  } @@ -107,9 +107,9 @@ sanei_jpeg_copy_pixel_rows (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,    register JSAMPROW ptr;    register JDIMENSION col; -  cinfo = cinfo; -  dinfo = dinfo; -  rows_supplied = rows_supplied; +  (void) cinfo; +  (void) dinfo; +  (void) rows_supplied;    ptr = dest->pub.buffer[0];    bufferptr = dest->iobuffer; @@ -140,7 +140,7 @@ sanei_jpeg_put_demapped_rgb (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,    register JSAMPROW color_map2 = cinfo->colormap[2];    register JDIMENSION col; -  rows_supplied = rows_supplied; +  (void) rows_supplied;    ptr = dest->pub.buffer[0];    bufferptr = dest->iobuffer; @@ -165,7 +165,7 @@ sanei_jpeg_put_demapped_gray (j_decompress_ptr cinfo, djpeg_dest_ptr dinfo,    register JSAMPROW color_map = cinfo->colormap[0];    register JDIMENSION col; -  rows_supplied = rows_supplied; +  (void) rows_supplied;    ptr = dest->pub.buffer[0];    bufferptr = dest->iobuffer; diff --git a/sanei/sanei_magic.c b/sanei/sanei_magic.c index f5d1ac0..e62c56a 100644 --- a/sanei/sanei_magic.c +++ b/sanei/sanei_magic.c @@ -527,7 +527,7 @@ sanei_magic_findSkew(SANE_Parameters * params, SANE_Byte * buffer,    DBG (10, "sanei_magic_findSkew: start\n"); -  dpiX=dpiX; +  (void) dpiX;    /* get buffers for edge detection */    topBuf = sanei_magic_getTransY(params,dpiY,buffer,1); @@ -1406,7 +1406,7 @@ getLine (int height, int width, int * buff,      minSlope,maxSlope,minOffset,maxOffset);    /*silence compiler*/ -  height = height; +  (void) height;    if(absMaxSlope < absMinSlope)      absMaxSlope = absMinSlope; diff --git a/sanei/sanei_pa4s2.c b/sanei/sanei_pa4s2.c index 5e59743..92fcf7f 100644 --- a/sanei/sanei_pa4s2.c +++ b/sanei/sanei_pa4s2.c @@ -66,43 +66,7 @@  #elif defined(ENABLE_PARPORT_DIRECTIO) -# if defined(HAVE_SYS_IO_H) -#  if defined (__ICC) && __ICC >= 700 -#   define __GNUC__ 2 -#  endif -#  include <sys/io.h> -#  ifndef SANE_HAVE_SYS_IO_H_WITH_INB_OUTB -#   define IO_SUPPORT_MISSING -#  endif -#  if defined (__ICC) && __ICC >= 700 -#   undef __GNUC__ -#  elif defined(__ICC) && defined(HAVE_ASM_IO_H) -#   include <asm/io.h> -#  endif -# elif defined(HAVE_ASM_IO_H) -#  include <asm/io.h>		/* ugly, but backwards compatible */ -# elif defined(HAVE_SYS_HW_H) -#  include <sys/hw.h> -# elif defined(__i386__)  && ( defined (__GNUC__) || defined (__ICC) ) - -static __inline__ void -outb (u_char value, u_long port) -{ -  __asm__ __volatile__ ("outb %0,%1"::"a" (value), "d" ((u_short) port)); -} - -static __inline__ u_char -inb (u_long port) -{ -  u_char value; - -  __asm__ __volatile__ ("inb %1,%0":"=a" (value):"d" ((u_short) port)); -  return value; -} - -# else -#  define IO_SUPPORT_MISSING -# endif +#include "../include/sane/sanei_directio.h"  #else @@ -306,7 +270,7 @@ pa4s2_init (SANE_Status *status)    if (first_time == SANE_FALSE)      {        DBG (5, "pa4s2_init: sanei already initialized\n"); -      status = SANE_STATUS_GOOD; +      *status = SANE_STATUS_GOOD;        return 0;      } @@ -519,7 +483,7 @@ pa4s2_open (const char *dev, SANE_Status * status)    /* TODO: insert FreeBSD compatible code here */ -  if (ioperm (port[n].base, 5, 1)) +  if (sanei_ioperm (port[n].base, 5, 1))      {        DBG (1, "pa4s2_open: cannot get io privilege for port 0x%03lx\n", @@ -571,15 +535,15 @@ static void outbyte3(int fd, u_char val)  #else -#define inbyte0(fd)	inb(port[fd].base) -#define inbyte1(fd)	inb(port[fd].base + 1) -#define inbyte2(fd)	inb(port[fd].base + 2) -#define inbyte4(fd)	inb(port[fd].base + 4) +#define inbyte0(fd)	sanei_inb(port[fd].base) +#define inbyte1(fd)	sanei_inb(port[fd].base + 1) +#define inbyte2(fd)	sanei_inb(port[fd].base + 2) +#define inbyte4(fd)	sanei_inb(port[fd].base + 4) -#define outbyte0(fd,val)	outb(val, port[fd].base) -#define outbyte1(fd,val)	outb(val, port[fd].base + 1) -#define outbyte2(fd,val)	outb(val, port[fd].base + 2) -#define outbyte3(fd,val)	outb(val, port[fd].base + 3) +#define outbyte0(fd,val)	sanei_outb(port[fd].base, val) +#define outbyte1(fd,val)	sanei_outb(port[fd].base + 1, val) +#define outbyte2(fd,val)	sanei_outb(port[fd].base + 2, val) +#define outbyte3(fd,val)	sanei_outb(port[fd].base + 3, val)  #endif @@ -882,7 +846,7 @@ pa4s2_close (int fd, SANE_Status * status)  #if defined(HAVE_LIBIEEE1284)    if ((result = ieee1284_close(pplist.portv[fd])) < 0)  #else -  if (ioperm (port[fd].base, 5, 0)) +  if (sanei_ioperm (port[fd].base, 5, 0))  #endif      { @@ -1427,7 +1391,7 @@ sanei_pa4s2_enable (int fd, int enable)           linux 2.2, although they seem to be inherited on linux 2.4),           so we should make sure we get the permission */ -      if (ioperm (port[fd].base, 5, 1)) +      if (sanei_ioperm (port[fd].base, 5, 1))        {            DBG (1, "sanei_pa4s2_enable: cannot get io privilege for port"  	       " 0x%03lx\n", port[fd].base); @@ -1917,7 +1881,7 @@ sanei_pa4s2_open (const char *dev, int *fd)    DBG (3, "sanei_pa4s2_open: A4S2 support not compiled\n");    DBG (6, "sanei_pa4s2_open: basically, this backend does only compile\n");    DBG (6, "sanei_pa4s2_open: on x86 architectures. Furthermore it\n"); -  DBG (6, "sanei_pa4s2_open: needs ioperm() and inb()/outb() calls.\n"); +  DBG (6, "sanei_pa4s2_open: needs sanei_ioperm() and sanei_inb()/sanei_outb() calls.\n");    DBG (6, "sanei_pa4s2_open: alternatively it makes use of libieee1284\n");    DBG (6, "sanei_pa4s2_open: (which isn't present either)\n");    DBG (5, "sanei_pa4s2_open: returning SANE_STATUS_INVAL\n"); diff --git a/sanei/sanei_pio.c b/sanei/sanei_pio.c index ee27267..cd379dd 100644 --- a/sanei/sanei_pio.c +++ b/sanei/sanei_pio.c @@ -48,6 +48,8 @@   */  #include "../include/sane/config.h" +#include "../include/sane/sanei_directio.h" +/* pick up compatibility defs */  #define BACKEND_NAME sanei_pio  #include "../include/sane/sanei_backend.h"		/* pick up compatibility defs */ @@ -57,42 +59,10 @@  #endif  #include <sys/types.h> -#ifdef HAVE_SYS_IO_H -# include <sys/io.h>	/* use where available (glibc 2.x, for example) */ -# ifndef SANE_HAVE_SYS_IO_H_WITH_INB_OUTB -#  define IO_SUPPORT_MISSING -# endif -#elif HAVE_ASM_IO_H -# include <asm/io.h>		/* ugly, but backwards compatible */ -#elif HAVE_SYS_HW_H -# include <sys/hw.h> -#elif defined(__i386__)  && defined (__GNUC__) - -static __inline__ void -outb (u_char value, u_long port) -{ -  __asm__ __volatile__ ("outb %0,%1"::"a" (value), "d" ((u_short) port)); -} - -static __inline__ u_char -inb (u_long port) -{ -  u_char value; - -  __asm__ __volatile__ ("inb %1,%0":"=a" (value):"d" ((u_short) port)); -  return value; -} - -#else -# define IO_SUPPORT_MISSING -#endif -  #include "../include/sane/sane.h"  #include "../include/sane/sanei.h"  #include "../include/sane/sanei_pio.h" -#if defined (HAVE_IOPERM) && !defined (IO_SUPPORT_MISSING) -  #include <errno.h>  #include <fcntl.h>  #include <limits.h> @@ -161,8 +131,6 @@ static PortRec port[] =  extern int setuid (uid_t); -static inline int pio_outb (const Port port, u_char val, u_long addr); -static inline int pio_inb (const Port port, u_char * val, u_long addr);  static inline int pio_wait (const Port port, u_char val, u_char mask);  static inline void pio_ctrl (const Port port, u_char val);  static inline void pio_delay (const Port port); @@ -173,38 +141,6 @@ static int pio_read (const Port port, u_char * buf, int n);  static int pio_open (const char *dev, SANE_Status * status);  static inline int -pio_outb (const Port port, u_char val, u_long addr) -{ - -  if (-1 == port->fd) -    outb (val, addr); -  else -    { -      if (addr != (u_long)lseek (port->fd, addr, SEEK_SET)) -	return -1; -      if (1 != write (port->fd, &val, 1)) -	return -1; -    } -  return 0; -} - -static inline int -pio_inb (const Port port, u_char * val, u_long addr) -{ - -  if (-1 == port->fd) -    *val = inb (addr); -  else -    { -      if (addr != (u_long)lseek (port->fd, addr, SEEK_SET)) -	return -1; -      if (1 != read (port->fd, val, 1)) -	return -1; -    } -  return 0; -} - -static inline int  pio_wait (const Port port, u_char val, u_char mask)  {    int stat = 0; @@ -221,7 +157,7 @@ pio_wait (const Port port, u_char val, u_char mask)    for (;;)      {        ++poll_count; -      stat = inb (port->base + PIO_STAT); +      stat = sanei_inb (port->base + PIO_STAT);        if ((stat & mask) == (val & mask))  	{  	  DBG (DL60, "got %02x after %ld tries\n", stat, poll_count); @@ -261,7 +197,7 @@ pio_ctrl (const Port port, u_char val)    DBG (DL61, "   FDXT    %s\n", val & PIO_CTRL_FDXT ? "on" : "off");    DBG (DL61, "   NSTROBE %s\n", val & PIO_CTRL_NSTROBE ? "on" : "off"); -  outb (val, port->base + PIO_CTRL); +  sanei_outb (port->base + PIO_CTRL, val);    return;  } @@ -269,7 +205,7 @@ pio_ctrl (const Port port, u_char val)  static inline void  pio_delay (const Port port)  { -  inb (port->base + PIO_STAT);	/* delay */ +  sanei_inb (port->base + PIO_STAT);	/* delay */    return;  } @@ -290,8 +226,8 @@ pio_reset (const Port port)    for (n = PIO_APPLYRESET; --n >= 0;)      { -      outb ((PIO_CTRL_IE | PIO_CTRL_NINIT) ^ PIO_CTRL_NINIT, -	    port->base + PIO_CTRL); +      sanei_outb (port->base + PIO_CTRL, +		 (PIO_CTRL_IE | PIO_CTRL_NINIT) ^ PIO_CTRL_NINIT);      }    pio_init (port); @@ -323,7 +259,7 @@ pio_write (const Port port, const u_char * buf, int n)  #endif        DBG (DL60, "out  %02x\n", (int) *buf); -      outb (*buf, port->base + PIO_IOPORT); +      sanei_outb (port->base + PIO_IOPORT, *buf);        pio_delay (port);        pio_delay (port); @@ -387,7 +323,7 @@ pio_read (const Port port, u_char * buf, int n)        /* busynack */  #endif -      *buf = inb (port->base + PIO_IOPORT); +      *buf = sanei_inb (port->base + PIO_IOPORT);        DBG (DL60, "in   %02x\n", (int) *buf);        DBG (DL40, "end read byte\n");      } @@ -465,7 +401,7 @@ pio_open (const char *dev, SANE_Status * status)    port[n].max_time_seconds = 10;    port[n].in_use = 1; -  if (ioperm (port[n].base, 3, 1)) +  if (sanei_ioperm (port[n].base, 3, 1))      {        DBG (1, "sanei_pio_open: cannot get io privilege for port 0x%03lx\n",  	   port[n].base); @@ -533,73 +469,3 @@ sanei_pio_write (int fd, const u_char * buf, int n)    return pio_write (&port[fd], buf, n);  } - -#else /* !HAVE_IOPERM */ - -#ifdef __BEOS__ - -#include <fcntl.h> - -SANE_Status -sanei_pio_open (const char *dev, int *fdp) -{ -	int fp; - -	/* open internal parallel port */ -	fp=open("/dev/parallel/parallel1",O_RDWR); - -  	*fdp=fp; -  	if(fp<0) return SANE_STATUS_INVAL; -  	return(SANE_STATUS_GOOD); -} - - -void -sanei_pio_close (int fd) -{ -	close(fd); -	return; -} - -int -sanei_pio_read (int fd, u_char * buf, int n) -{ -	return(read(fd,buf,n)); -} - -int -sanei_pio_write (int fd, const u_char * buf, int n) -{ -  	return(write(fd,buf,n)); -} - -#else /* !__BEOS__ */ - -SANE_Status -sanei_pio_open (const char *dev, int *fdp) -{ -  *fdp = -1; -  return SANE_STATUS_INVAL; -} - - -void -sanei_pio_close (int fd) -{ -  return; -} - -int -sanei_pio_read (int fd, u_char * buf, int n) -{ -  return -1; -} - -int -sanei_pio_write (int fd, const u_char * buf, int n) -{ -  return -1; -} -#endif /* __BEOS__ */ - -#endif /* !HAVE_IOPERM */ diff --git a/sanei/sanei_pp.c b/sanei/sanei_pp.c index 5150313..efd271d 100644 --- a/sanei/sanei_pp.c +++ b/sanei/sanei_pp.c @@ -87,40 +87,7 @@  #endif  #if defined (ENABLE_PARPORT_DIRECTIO)  # undef HAVE_LIBIEEE1284 -# if defined(HAVE_SYS_IO_H) -#  if defined (__ICC) && __ICC >= 700 -#   define __GNUC__ 2 -#  endif -#  include <sys/io.h> -#  ifndef SANE_HAVE_SYS_IO_H_WITH_INB_OUTB -#   define IO_SUPPORT_MISSING -#  endif -#  if defined (__ICC) && __ICC >= 700 -#   undef __GNUC__ -#  elif defined(__ICC) && defined(HAVE_ASM_IO_H) -#   include <asm/io.h> -#  endif -# elif defined(HAVE_ASM_IO_H) -#  include <asm/io.h> -# elif defined(HAVE_SYS_HW_H) -#  include <sys/hw.h> -# elif defined(__i386__)  && ( defined (__GNUC__) || defined (__ICC) ) - -static __inline__ void -outb( u_char value, u_long port ) -{ -  __asm__ __volatile__ ("outb %0,%1"::"a" (value), "d" ((u_short) port)); -} - -static __inline__ u_char -inb( u_long port ) -{ -  u_char value; - -  __asm__ __volatile__ ("inb %1,%0":"=a" (value):"d" ((u_short) port)); -  return value; -} -# endif +# include "../include/sane/sanei_directio.h"  #elif defined(HAVE_LIBIEEE1284)  # include <ieee1284.h>  #else @@ -228,30 +195,26 @@ static inline void outb_addr(int fd, u_char val)  #else -#define inb_data(fd)    inb(port[fd].base) -#define inb_stat(fd)    inb(port[fd].base + 1) -#define inb_ctrl(fd)    inb(port[fd].base + 2) -#define inb_eppdata(fd) inb(port[fd].base + 4) +#define inb_data(fd)    sanei_inb(port[fd].base) +#define inb_stat(fd)    sanei_inb(port[fd].base + 1) +#define inb_ctrl(fd)    sanei_inb(port[fd].base + 2) +#define inb_eppdata(fd) sanei_inb(port[fd].base + 4) -#define outb_data(fd,val)    outb(val, port[fd].base) -#define outb_stat(fd,val)    outb(val, port[fd].base + 1) -#define outb_ctrl(fd,val)    outb(val, port[fd].base + 2) -#define outb_addr(fd,val)    outb(val, port[fd].base + 3) -#define outb_eppdata(fd,val) outb(val, port[fd].base + 4) +#define outb_data(fd,val)    sanei_outb(port[fd].base, val) +#define outb_stat(fd,val)    sanei_outb(port[fd].base + 1, val) +#define outb_ctrl(fd,val)    sanei_outb(port[fd].base + 2, val) +#define outb_addr(fd,val)    sanei_outb(port[fd].base + 3, val) +#define outb_eppdata(fd,val) sanei_outb(port[fd].base + 4, val)  #ifdef HAVE_IOPL  # define _SET_IOPL()        iopl(3) -# define inbyte400(fd)      inb(port[fd].base + 0x400) -# define inbyte402(fd)      inb(port[fd].base + 0x402) -# define outbyte400(fd,val) outb(val, port[fd].base + 0x400) -# define outbyte402(fd,val) outb(val, port[fd].base + 0x402)  #else  # define _SET_IOPL() -# define inbyte400(fd) -# define inbyte402(fd,val) -# define outbyte400(fd,val) -# define outbyte402(fd,val)  #endif +#define inbyte400(fd)      sanei_inb(port[fd].base + 0x400) +#define inbyte402(fd)      sanei_inb(port[fd].base + 0x402) +#define outbyte400(fd,val) sanei_outb(port[fd].base + 0x400, val) +#define outbyte402(fd,val) sanei_outb(port[fd].base + 0x402, val)  #endif  /* should also be in unistd.h */ @@ -848,7 +811,7 @@ pp_open( const char *dev, SANE_Status * status )  	/* TODO: insert FreeBSD compatible code here */ -	if( ioperm( port[i].base, 5, 1 )) { +	if( sanei_ioperm( port[i].base, 5, 1 )) {  		DBG( 1, "pp_open: cannot get io privilege for port 0x%03lx\n",  				port[i].base); @@ -901,7 +864,7 @@ pp_close( int fd, SANE_Status *status )  #if defined(HAVE_LIBIEEE1284)  	if((result = ieee1284_close(pplist.portv[fd])) < 0) {  #else -	if( ioperm( port[fd].base, 5, 0 )) { +	if( sanei_ioperm( port[fd].base, 5, 0 )) {  #endif  #if defined(HAVE_LIBIEEE1284)  		DBG( 1, "pp_close: can't free port '%s' (%s)\n", @@ -1328,7 +1291,7 @@ sanei_pp_open( const char *dev, int *fd )  	DBG( 3, "sanei_pp_open: support not compiled\n" );  	DBG( 6, "sanei_pp_open: basically, this backend does only compile\n" );  	DBG( 6, "sanei_pp_open: on x86 architectures. Furthermore it\n" ); -	DBG( 6, "sanei_pp_open: needs ioperm() and inb()/outb() calls.\n" ); +	DBG( 6, "sanei_pp_open: needs ioperm() and sanei_inb()/sanei_outb() calls.\n" );  	DBG( 6, "sanei_pp_open: alternatively it makes use of libieee1284\n" );  	DBG( 6, "sanei_pp_open: (which isn't present either)\n");  	return SANE_STATUS_INVAL; diff --git a/sanei/sanei_pv8630.c b/sanei/sanei_pv8630.c index 5f3c2af..2bbc0f4 100644 --- a/sanei/sanei_pv8630.c +++ b/sanei/sanei_pv8630.c @@ -87,7 +87,8 @@ sanei_pv8630_read_byte (int fd, SANEI_PV_Index index, SANE_Byte * byte)  {    SANE_Status status; -  DBG(DBG_info, "sanei_pv8630_read_byte - index=%d, byte=%p\n", index, byte); +  DBG(DBG_info, "sanei_pv8630_read_byte - index=%d, byte=%p\n", +      index, (void *) byte);    status =      sanei_usb_control_msg (fd, 0xc0, PV8630_REQ_READBYTE, 0, index, 1, byte); diff --git a/sanei/sanei_scsi.c b/sanei/sanei_scsi.c index 53736ca..6eef998 100644 --- a/sanei/sanei_scsi.c +++ b/sanei/sanei_scsi.c @@ -50,6 +50,7 @@  #include <ctype.h>  #include <errno.h>  #include <fcntl.h> +#include <inttypes.h>  #include <stdlib.h>  #include <string.h>  #include <unistd.h> @@ -3509,7 +3510,7 @@ sanei_scsi_find_devices (const char *findvendor, const char *findmodel,  	    if (cdm.matches[i].type != DEV_MATCH_PERIPH)  	      continue;  	    result = &cdm.matches[i].result.periph_result; -	    DBG (4, "%s%d on scbus%d %d:%d\n", +	    DBG (4, "%s%d on scbus%d %d:" PRIu64 "\n",  		 result->periph_name, result->unit_number,  		 result->path_id, result->target_id, result->target_lun);  	    if (cam_compare_inquiry (fd, result->path_id, | 
