sanei: Reuse sanei_directio in sanei_pp

merge-requests/521/head
Thierry HUCHARD 2021-12-15 22:36:55 +02:00 zatwierdzone przez Povilas Kanapickas
rodzic 7b5386ff6e
commit db83d55495
2 zmienionych plików z 27 dodań i 55 usunięć

Wyświetl plik

@ -1498,7 +1498,16 @@ libplustek_pp_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=plustek_pp
nodist_libsane_plustek_pp_la_SOURCES = plustek_pp-s.c
libsane_plustek_pp_la_CPPFLAGS = $(AM_CPPFLAGS) -DBACKEND_NAME=plustek_pp
libsane_plustek_pp_la_LDFLAGS = $(DIST_SANELIBS_LDFLAGS)
libsane_plustek_pp_la_LIBADD = $(COMMON_LIBS) libplustek_pp.la ../sanei/sanei_init_debug.lo ../sanei/sanei_constrain_value.lo ../sanei/sanei_config.lo sane_strstatus.lo ../sanei/sanei_pp.lo ../sanei/sanei_thread.lo $(MATH_LIB) $(IEEE1284_LIBS) $(SANEI_THREAD_LIBS)
libsane_plustek_pp_la_LIBADD = $(COMMON_LIBS) \
libplustek_pp.la \
../sanei/sanei_init_debug.lo \
../sanei/sanei_constrain_value.lo \
../sanei/sanei_config.lo \
sane_strstatus.lo \
../sanei/sanei_pp.lo \
../sanei/sanei_thread.lo \
../sanei/sanei_directio.lo \
$(MATH_LIB) $(IEEE1284_LIBS) $(SANEI_THREAD_LIBS)
EXTRA_DIST += plustek_pp.conf.in
# TODO: Why are these distributed but not compiled?
EXTRA_DIST += plustek-pp_dac.c plustek-pp_dbg.h plustek-pp_detect.c plustek-pp_genericio.c plustek-pp_hwdefs.h plustek-pp_image.c plustek-pp_io.c plustek-pp_map.c plustek-pp_misc.c plustek-pp_models.c plustek-pp_motor.c plustek-pp_p12.c plustek-pp_p12ccd.c plustek-pp_p48xx.c plustek-pp_p9636.c plustek-pp_procfs.c plustek-pp_procs.h plustek-pp_ptdrv.c plustek-pp_scale.c plustek-pp_scan.h plustek-pp_scandata.h plustek-pp_sysdep.h plustek-pp_tpa.c plustek-pp_types.h plustek-pp_wrapper.c

Wyświetl plik

@ -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;