summaryrefslogtreecommitdiff
path: root/backend/umax_pp_low.c
diff options
context:
space:
mode:
Diffstat (limited to 'backend/umax_pp_low.c')
-rw-r--r--backend/umax_pp_low.c378
1 files changed, 1 insertions, 377 deletions
diff --git a/backend/umax_pp_low.c b/backend/umax_pp_low.c
index 35cefa9..d1f3c16 100644
--- a/backend/umax_pp_low.c
+++ b/backend/umax_pp_low.c
@@ -53,9 +53,7 @@
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
-#ifdef HAVE_SYS_IO_H
-#include <sys/io.h>
-#endif
+#include "../include/sane/sanei_directio.h"
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
@@ -85,380 +83,6 @@
#include <linux/ppdev.h>
#endif
-/*************************************************/
-/* 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 */
-/* once all these work, it might be moved to */
-/* sanei_pio.c */
-/*************************************************/
-
-#ifdef ENABLE_PARPORT_DIRECTIO
-
-#if (! defined SANE_INB ) && ( defined HAVE_SYS_HW_H ) /* OS/2 EMX case */
-#define SANE_INB 1
-static int
-sanei_ioperm (int start, int length, int enable)
-{
- if (enable)
- return _portaccess (port, port + length - 1);
- return 0;
-}
-
-static unsigned char
-sanei_inb (unsigned int port)
-{
- return _inp8 (port) & 0xFF;
-}
-
-static void
-sanei_outb (unsigned int port, unsigned char value)
-{
- _outp8 (port, value);
-}
-
-static void
-sanei_insb (unsigned int port, unsigned char *addr, unsigned long count)
-{
- _inps8 (port, (unsigned char *) addr, count);
-}
-
-static void
-sanei_insl (unsigned int port, unsigned char *addr, unsigned long count)
-{
- _inps32 (port, (unsigned long *) addr, count);
-}
-
-static void
-sanei_outsb (unsigned int port, const unsigned char *addr,
- unsigned long count)
-{
- _outps8 (port, (unsigned char *) addr, count);
-}
-
-static 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 (! defined SANE_INB ) && ( defined HAVE_MACHINE_CPUFUNC_H ) /* FreeBSD case */
-#define SANE_INB 2
-static 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
-}
-
-static unsigned char
-sanei_inb (unsigned int port)
-{
- return inb (port);
-}
-
-static void
-sanei_outb (unsigned int port, unsigned char value)
-{
- outb (port, value);
-}
-
-static void
-sanei_insb (unsigned int port, unsigned char *addr, unsigned long count)
-{
- insb (port, addr, count);
-}
-
-static void
-sanei_insl (unsigned int port, unsigned char *addr, unsigned long count)
-{
- insl (port, addr, count);
-}
-
-static void
-sanei_outsb (unsigned int port, const unsigned char *addr,
- unsigned long count)
-{
- outsb (port, addr, count);
-}
-
-static 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 ( ! defined SANE_INB ) && ( defined HAVE_SYS_IO_H ) && ( defined __GNUC__ ) && ( defined __i386__ )
-#define SANE_INB 3
-
-static 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
-}
-
-static unsigned char
-sanei_inb (unsigned int port)
-{
- return inb (port);
-}
-
-static void
-sanei_outb (unsigned int port, unsigned char value)
-{
- outb (value, port);
-}
-
-static void
-sanei_insb (unsigned int port, unsigned char *addr, unsigned long count)
-{
- insb (port, addr, count);
-}
-
-static void
-sanei_insl (unsigned int port, unsigned char *addr, unsigned long count)
-{
- insl (port, addr, count);
-}
-
-static void
-sanei_outsb (unsigned int port, const unsigned char *addr,
- unsigned long count)
-{
- outsb (port, addr, count);
-}
-
-static 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 ( ! defined SANE_INB ) && ( defined HAVE_SYS_IO_H ) && ( defined __GNUC__ ) && ( ! defined __i386__ )
-#define SANE_INB 4
-static 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
-}
-
-static unsigned char
-sanei_inb (unsigned int port)
-{
- return inb (port);
-}
-
-static void
-sanei_outb (unsigned int port, unsigned char value)
-{
- outb (value, port);
-}
-
-static 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);
-}
-
-static 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);
-}
-
-static 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]);
-}
-
-static 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 ( ! defined SANE_INB ) && ( defined __INTEL_COMPILER ) && ( defined __i386__ )
-#define SANE_INB 5
-static 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
-}
-static unsigned char
-sanei_inb (unsigned int port)
-{
- unsigned char ret;
-
- __asm__ __volatile__ ("inb %%dx,%%al":"=a" (ret):"d" ((u_int) port));
- return ret;
-}
-
-static void
-sanei_outb (unsigned int port, unsigned char value)
-{
- __asm__ __volatile__ ("outb %%al,%%dx"::"a" (value), "d" ((u_int) port));
-}
-
-static 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));
-}
-
-static 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));
-}
-
-static 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));
-}
-
-static 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 */
-
-/* direct io requested, but no valid inb/oub */
-#if ( ! defined SANE_INB) && ( defined ENABLE_PARPORT_DIRECTIO )
-#warning "ENABLE_PARPORT_DIRECTIO cannot be used du to lack of inb/out definition"
-#undef ENABLE_PARPORT_DIRECTIO
-#endif
-
-#endif /* ENABLE_PARPORT_DIRECTIO */
-/*
- * no inb/outb without --enable-parport-directio *
- */
-#ifndef ENABLE_PARPORT_DIRECTIO
-#define SANE_INB 0
-static int
-sanei_ioperm (__sane_unused__ int start, __sane_unused__ int length,
- __sane_unused__ int enable)
-{
- /* returns failure */
- return -1;
-}
-
-static unsigned char
-sanei_inb (__sane_unused__ unsigned int port)
-{
- return 255;
-}
-
-static void
-sanei_outb (__sane_unused__ unsigned int port,
- __sane_unused__ unsigned char value)
-{
-}
-
-static void
-sanei_insb (__sane_unused__ unsigned int port,
- __sane_unused__ unsigned char *addr,
- __sane_unused__ unsigned long count)
-{
-}
-
-static void
-sanei_insl (__sane_unused__ unsigned int port,
- __sane_unused__ unsigned char *addr,
- __sane_unused__ unsigned long count)
-{
-}
-
-static void
-sanei_outsb (__sane_unused__ unsigned int port,
- __sane_unused__ const unsigned char *addr,
- __sane_unused__ unsigned long count)
-{
-}
-
-static 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 */
-
-/* we need either direct io or ppdev */
-#if ! defined ENABLE_PARPORT_DIRECTIO && ! defined HAVE_LINUX_PPDEV_H && ! defined HAVE_DEV_PPBUS_PPI_H
-#define IO_SUPPORT_MISSING
-#endif
-
-
#include "umax_pp_low.h"
#ifdef DMALLOC