/*
 * (C) 2000 R.E.Wolff@BitWizard.nl
 *
 *      This program is free software; you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 2 of the License, or
 *      (at your option) any later version.
 *
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *
 *      You should have received a copy of the GNU General Public License
 *      along with this program; if not, write to the Free Software
 *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#include <asm/hardirq.h>


#define disable(oldspl) save_flags (oldspl)
#define restore(oldspl) restore_flags (oldspl)

#define sysbrk(x) kmalloc ((x),in_interrupt()? GFP_ATOMIC : GFP_KERNEL)
#define sysfree(p,size) kfree ((p))

#define WBYTE(p,v) writeb(v, &p)
#define RBYTE(p)   readb (&p)
#define WWORD(p,v) writew(v, &p)
#define RWORD(p)   readw(&p)
#define WINDW(p,v) writew(v, p)
#define RINDW(p)   readw(p)

#define DEBUG_ALL

#define cprintf printk

#ifdef __KERNEL__
#define INKERNEL
#endif

struct ttystatics {
  struct termios tm;
};

#define bzero(d, n)         memset((d), 0, (n))
#define bcopy(src, dest, n) memcpy ((dest), (src), (n))

#define SEM_SIGIGNORE 0x1234

#ifdef DEBUG_SEM
#define swait(a,b)      printk ("waiting:    " __FILE__ " line %d\n", __LINE__)
#define ssignal(sem)    printk ("signalling: " __FILE__ " line %d\n", __LINE__)

#define sreset(sem)     printk ("sreset:     " __FILE__ "\n")
#define sem_init(sem,v) printk ("sreset:     " __FILE__ "\n")
#endif


#define getpid()    (current->pid)

#define major(dev) MAJOR(dev)
#define minor(dev) MINOR(dev)

#define QSIZE SERIAL_XMIT_SIZE

#define pseterr(errno) return (- errno)

#define V_CBAUD CBAUD

/* For one reason or another rioboot.c uses delay instead of RIODelay. */
#define delay(x,y) RIODelay(NULL, y)

extern int rio_debug;

#define RIO_DEBUG_INIT         0x000001
#define RIO_DEBUG_BOOT         0x000002
#define RIO_DEBUG_CMD          0x000004
#define RIO_DEBUG_CTRL         0x000008
#define RIO_DEBUG_INTR         0x000010
#define RIO_DEBUG_PARAM        0x000020
#define RIO_DEBUG_ROUTE        0x000040
#define RIO_DEBUG_TABLE        0x000080
#define RIO_DEBUG_TTY          0x000100
#define RIO_DEBUG_FLOW         0x000200
#define RIO_DEBUG_MODEMSIGNALS 0x000400
#define RIO_DEBUG_PROBE        0x000800
#define RIO_DEBUG_CLEANUP      0x001000
#define RIO_DEBUG_IFLOW        0x002000
#define RIO_DEBUG_PFE          0x004000
#define RIO_DEBUG_REC          0x008000
#define RIO_DEBUG_SPINLOCK     0x010000
#define RIO_DEBUG_DELAY        0x020000
#define RIO_DEBUG_MOD_COUNT    0x040000
#define RIO_DEBUG_IOCTL        0x080000

/* Copied over from riowinif.h . This is ugly. The winif file declares
also much other stuff which is incompatible with the headers from
the older driver. The older driver includes "brates.h" which shadows
the definitions from Linux, and is incompatible... */

/* RxBaud and TxBaud definitions... */
#define	RIO_B0			0x00			/* RTS / DTR signals dropped */
#define	RIO_B50			0x01			/* 50 baud */
#define	RIO_B75			0x02			/* 75 baud */
#define	RIO_B110		0x03			/* 110 baud */
#define	RIO_B134		0x04			/* 134.5 baud */
#define	RIO_B150		0x05			/* 150 baud */
#define	RIO_B200		0x06			/* 200 baud */
#define	RIO_B300		0x07			/* 300 baud */
#define	RIO_B600		0x08			/* 600 baud */
#define	RIO_B1200		0x09			/* 1200 baud */
#define	RIO_B1800		0x0A			/* 1800 baud */
#define	RIO_B2400		0x0B			/* 2400 baud */
#define	RIO_B4800		0x0C			/* 4800 baud */
#define	RIO_B9600		0x0D			/* 9600 baud */
#define	RIO_B19200		0x0E			/* 19200 baud */
#define	RIO_B38400		0x0F			/* 38400 baud */
#define	RIO_B56000		0x10			/* 56000 baud */
#define	RIO_B57600		0x11			/* 57600 baud */
#define	RIO_B64000		0x12			/* 64000 baud */
#define	RIO_B115200		0x13			/* 115200 baud */
#define	RIO_B2000		0x14			/* 2000 baud */


