1139749Simp/*-
212496Speter * Device driver for Specialix range (SI/XIO) of serial line multiplexors.
310015Speter * 'C' definitions for Specialix serial multiplex driver.
410015Speter *
534832Speter * Copyright (C) 1990, 1992, 1998 Specialix International,
610015Speter * Copyright (C) 1993, Andy Rutter <andy@acronym.co.uk>
734832Speter * Copyright (C) 1995, Peter Wemm <peter@netplex.com.au>
810015Speter *
910015Speter * Derived from:	SunOS 4.x version
1010015Speter *
1110015Speter * Redistribution and use in source and binary forms, with or without
1210015Speter * modification, are permitted provided that the following conditions
1310015Speter * are met:
1410015Speter * 1. Redistributions of source code must retain the above copyright
1510015Speter *    notices, this list of conditions and the following disclaimer.
1610015Speter * 2. Redistributions in binary form must reproduce the above copyright
1710015Speter *    notices, this list of conditions and the following disclaimer in the
1810015Speter *    documentation and/or other materials provided with the distribution.
1910015Speter * 3. All advertising materials mentioning features or use of this software
2010015Speter *    must display the following acknowledgement:
2110015Speter *	This product includes software developed by Andy Rutter of
2210015Speter *	Advanced Methods and Tools Ltd. based on original information
2310015Speter *	from Specialix International.
2410015Speter * 4. Neither the name of Advanced Methods and Tools, nor Specialix
2510015Speter *    International may be used to endorse or promote products derived from
2610015Speter *    this software without specific prior written permission.
2710015Speter *
2810015Speter * THIS SOFTWARE IS PROVIDED BY ``AS IS'' AND ANY EXPRESS OR IMPLIED
2910015Speter * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
3010015Speter * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
3110015Speter * NO EVENT SHALL THE AUTHORS BE LIABLE.
3210015Speter *
3350477Speter * $FreeBSD$
3410015Speter */
3510015Speter
3610015Speter/*
3710015Speter * Hardware parameters which should be changed at your peril!
3810015Speter */
3910015Speter
4010015Speter/* Base and mask for SI Host 2.x (SIHOST2) */
4110015Speter#define SIPLSIG		0x7FF8			/* Start of control space */
4210015Speter#define SIPLCNTL	0x7FF8			/* Ditto */
4310015Speter#define SIPLRESET	SIPLCNTL		/* 0 = reset */
4410015Speter#define SIPLIRQ11	(SIPLCNTL+1)		/* 0 = mask irq 11 */
4510015Speter#define SIPLIRQ12	(SIPLCNTL+2)		/* 0 = mask irq 12 */
4610015Speter#define SIPLIRQ15	(SIPLCNTL+3)		/* 0 = mask irq 15 */
4710015Speter#define SIPLIRQSET	(SIPLCNTL+4)		/* 0 = interrupt host */
4810015Speter#define SIPLIRQCLR	(SIPLCNTL+5)		/* 0 = clear irq */
4910015Speter
5010015Speter/* SI Host 1.x */
5110015Speter#define	SIRAM		0x0000			/* Ram Starts here */
5210015Speter#define	SIRESET		0x8000			/* Set reset */
5310015Speter#define	SIRESET_CL 	0xc000			/* Clear reset */
5410015Speter#define	SIWAIT		0x9000			/* Set wait */
5510015Speter#define	SIWAIT_CL 	0xd000			/* Set wait */
5610015Speter#define SIINTCL		0xA000			/* Clear host int */
5710015Speter#define SIINTCL_CL 	0xE000			/* Clear host int */
5810015Speter
5934832Speter/* SI EISA */
6034832Speter#define SIEISADEVID	0x4d980411		/* EISA Device ID */
6134832Speter#define SIEISABASE	0xc00			/* Our ports start here */
6234832Speter#define SIEISAIOSIZE	0x100			/* XXX How many ports */
6334832Speter
6433395Speter/* SI old PCI */
65152172Sjhb#define SIPCIBADR	PCIR_BAR(0)		/* Which BADR to map in RAM */
6633395Speter#define SIPCI_MEMSIZE	0x100000		/* Mapping size */
6733395Speter#define SIPCIRESET	0xc0001			/* 0 = Reset */
6833395Speter#define SIPCIINTCL	0x40001			/* 0 = clear int */
6933395Speter
7033395Speter/* SI Jet PCI */
71152172Sjhb#define SIJETSSIDREG	PCIR_SUBVEND_0		/* Is it an SX or RIO? */
72152172Sjhb#define SIJETBADR	PCIR_BAR(2)		/* Which BADR to map in RAM */
7333395Speter/* SI Jet PCI & ISA */
7433395Speter#define SIJETIDBASE	0x7c00			/* ID ROM base */
7533395Speter#define SISPLXID	0x984d			/* Specialix ID */
7634832Speter#define SIUNIQID	0x7c0e			/* & 0xf0 = 0x20 for SX */
7734832Speter#define SIJETIDSTR	0x7c20			/* ID ROM string */
7833395Speter#define SIJETRESET	0x7d00
7933395Speter#define SIJETINTCL	0x7d80
8033395Speter#define SIJETCONFIG	0x7c00			/* for ISA, top nibble = IRQ */
8133395Speter#define SIJETBUSEN	0x2
8233395Speter#define SIJETIRQEN	0x4
8333395Speter
8410015Speter/*
8510015Speter * MEMSIZE is the total shared mem region
8610015Speter * RAMSIZE is value to use when probing
8756498Speter * PROBEALLOC is the amount to bus_resource_alloc() during probe.
8810015Speter */
8934832Speter#define SIJETPCI_MEMSIZE	0x10000
9045161Snsayer#define SIJETISA_MEMSIZE	0x8000
9133395Speter#define SIJET_RAMSIZE		0x7000
9210015Speter#define	SIHOST_MEMSIZE		0x10000
9310015Speter#define	SIHOST_RAMSIZE		0x8000
9410015Speter#define	SIHOST2_MEMSIZE		0x8000
9510015Speter#define	SIHOST2_RAMSIZE		0x7ff7
9610015Speter#define	SIEISA_MEMSIZE		0x10000
9734832Speter#define	SIEISA_RAMSIZE		0x10000
9856498Speter#define SIPROBEALLOC		0x8000
99