kopia lustrzana https://gitlab.com/sane-project/backends
- EPP mode set fix for direct hardware access
- icc compile fixesmerge-requests/1/head
rodzic
4c0c01a04e
commit
a7b7dfb309
|
@ -1,3 +1,8 @@
|
||||||
|
2003-02-18 Stéphane Voltz <svoltz@wanadoo.fr>
|
||||||
|
|
||||||
|
* backend/umax_pp_low.c: icc compile fixes, and
|
||||||
|
EPP mode setting fix for direct hardware access
|
||||||
|
|
||||||
2003-02-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
2003-02-18 Henning Meier-Geinitz <henning@meier-geinitz.de>
|
||||||
|
|
||||||
* po/sane-backends.fr.po: Added more French translations (from Yann E.
|
* po/sane-backends.fr.po: Added more French translations (from Yann E.
|
||||||
|
|
|
@ -71,17 +71,65 @@
|
||||||
#include <linux/ppdev.h>
|
#include <linux/ppdev.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_SYS_IO_H
|
#if HAVE_SYS_IO_H && defined __GNUC__
|
||||||
# include <sys/io.h> /* GNU libc based Linux */
|
# include <sys/io.h> /* GNU libc based Linux */
|
||||||
#elif HAVE_ASM_IO_H && defined __i386__
|
#elif HAVE_ASM_IO_H && defined __i386__
|
||||||
# include <asm/io.h> /* older Linux */
|
# include <asm/io.h> /* older Linux */
|
||||||
#elif HAVE_SYS_HW_H
|
#elif HAVE_SYS_HW_H
|
||||||
# include <sys/hw.h> /* OS/2 */
|
# include <sys/hw.h> /* OS/2 */
|
||||||
|
#else
|
||||||
|
#ifdef _ICC
|
||||||
|
|
||||||
|
static inline unsigned char
|
||||||
|
inb (unsigned int port)
|
||||||
|
{
|
||||||
|
unsigned char ret;
|
||||||
|
|
||||||
|
__asm__ __volatile__ ("inb %1,%0":"=a" (ret):"d" ((u_int) port));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
outb (unsigned int port, unsigned char value)
|
||||||
|
{
|
||||||
|
__asm__ __volatile__ ("outb %0,%1"::"a" (value), "d" ((u_int) port));
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
insb (unsigned int port, void *addr, unsigned long count)
|
||||||
|
{
|
||||||
|
__asm__ __volatile__ ("rep ; insb":"=D" (addr), "=c" (count):"d" (port),
|
||||||
|
"0" (addr), "1" (count));
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
insl (unsigned int port, void *addr, unsigned long count)
|
||||||
|
{
|
||||||
|
__asm__ __volatile__ ("rep ; insl":"=D" (addr), "=c" (count):"d" (port),
|
||||||
|
"0" (addr), "1" (count));
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
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 inline void
|
||||||
|
outsw (unsigned int port, const void *addr, unsigned long count)
|
||||||
|
{
|
||||||
|
__asm__ __volatile__ ("rep ; outsw":"=S" (addr), "=c" (count):"d" (port),
|
||||||
|
"0" (addr), "1" (count));
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#ifdef ENABLE_PARPORT_DIRECTIO
|
#ifdef ENABLE_PARPORT_DIRECTIO
|
||||||
|
#warning "ENABLE_PARPORT_DIRECTIO overriden"
|
||||||
#undef ENABLE_PARPORT_DIRECTIO
|
#undef ENABLE_PARPORT_DIRECTIO
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
/* we need either direct io or ppdev */
|
/* we need either direct io or ppdev */
|
||||||
#if ! defined ENABLE_PARPORT_DIRECTIO && ! defined HAVE_LINUX_PPDEV_H
|
#if ! defined ENABLE_PARPORT_DIRECTIO && ! defined HAVE_LINUX_PPDEV_H
|
||||||
|
@ -402,7 +450,7 @@ int
|
||||||
sanei_umax_pp_InitPort (int port, char *name)
|
sanei_umax_pp_InitPort (int port, char *name)
|
||||||
{
|
{
|
||||||
int fd, ectr;
|
int fd, ectr;
|
||||||
int found = 0, ecp = 0;
|
int found = 0, ecp = 1;
|
||||||
#if ((defined HAVE_IOPERM)||(defined HAVE_LINUX_PPDEV_H))
|
#if ((defined HAVE_IOPERM)||(defined HAVE_LINUX_PPDEV_H))
|
||||||
int mode;
|
int mode;
|
||||||
#endif
|
#endif
|
||||||
|
@ -547,6 +595,7 @@ sanei_umax_pp_InitPort (int port, char *name)
|
||||||
DBG (16,
|
DBG (16,
|
||||||
"umax_pp: mode set to PARPORT_MODE_EPP for '%s'\n",
|
"umax_pp: mode set to PARPORT_MODE_EPP for '%s'\n",
|
||||||
name);
|
name);
|
||||||
|
ecp = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -622,11 +671,6 @@ sanei_umax_pp_InitPort (int port, char *name)
|
||||||
DBG (1, "iopl could not raise IO permission to level 3\n");
|
DBG (1, "iopl could not raise IO permission to level 3\n");
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
mode = getuid ();
|
|
||||||
setreuid (mode, mode);
|
|
||||||
mode = getgid ();
|
|
||||||
setregid (mode, mode);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* set up ECPEPP the hard way ... */
|
/* set up ECPEPP the hard way ... */
|
||||||
/* frob_econtrol (port, 0xe0, 4 << 5);
|
/* frob_econtrol (port, 0xe0, 4 << 5);
|
||||||
|
@ -642,6 +686,14 @@ sanei_umax_pp_InitPort (int port, char *name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* in case of suid, return to real user rights */
|
||||||
|
mode = getuid ();
|
||||||
|
setreuid (mode, mode);
|
||||||
|
mode = getgid ();
|
||||||
|
setregid (mode, mode);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* IO_SUPPORT_MISSING */
|
#endif /* IO_SUPPORT_MISSING */
|
||||||
return (1);
|
return (1);
|
||||||
|
|
Ładowanie…
Reference in New Issue