Several changes:
- Implement proper EISA probing. - Better support for the new transputer based host cards. - use standard termios settings, one can use the intial/lock devices. - use a simple bcopy since some cards/systems apparently don't support 32 bit accesses. - hard reset and halt host card CPU prior to download in case of a soft restart. - recognize new remote module types (ASIC vs. CD1400 based) - a number of cosmetic changes (my fault, not Nick's) Submitted by: Nick Sayer <nsayer@quack.kfu.com>
This commit is contained in:
parent
7cedb4afa6
commit
0ddeeb0ae5
747
sys/dev/si/si.c
747
sys/dev/si/si.c
File diff suppressed because it is too large
Load Diff
@ -2,9 +2,9 @@
|
|||||||
* Device driver for Specialix range (SI/XIO) of serial line multiplexors.
|
* Device driver for Specialix range (SI/XIO) of serial line multiplexors.
|
||||||
* 'C' definitions for Specialix serial multiplex driver.
|
* 'C' definitions for Specialix serial multiplex driver.
|
||||||
*
|
*
|
||||||
* Copyright (C) 1990, 1992 Specialix International,
|
* Copyright (C) 1990, 1992, 1998 Specialix International,
|
||||||
* Copyright (C) 1993, Andy Rutter <andy@acronym.co.uk>
|
* Copyright (C) 1993, Andy Rutter <andy@acronym.co.uk>
|
||||||
* Copyright (C) 1995, Peter Wemm <peter@haywire.dialix.com>
|
* Copyright (C) 1995, Peter Wemm <peter@netplex.com.au>
|
||||||
*
|
*
|
||||||
* Derived from: SunOS 4.x version
|
* Derived from: SunOS 4.x version
|
||||||
*
|
*
|
||||||
@ -30,7 +30,7 @@
|
|||||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
||||||
* NO EVENT SHALL THE AUTHORS BE LIABLE.
|
* NO EVENT SHALL THE AUTHORS BE LIABLE.
|
||||||
*
|
*
|
||||||
* $Id: si.h,v 1.10 1998/02/15 14:42:32 peter Exp $
|
* $Id: si.h,v 1.11 1998/03/21 06:17:14 peter Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/callout.h>
|
#include <sys/callout.h>
|
||||||
@ -88,7 +88,7 @@
|
|||||||
/* Adapter types */
|
/* Adapter types */
|
||||||
#define SIEMPTY 0
|
#define SIEMPTY 0
|
||||||
#define SIHOST 1
|
#define SIHOST 1
|
||||||
#define SI2 2
|
#define SIMCA 2
|
||||||
#define SIHOST2 3
|
#define SIHOST2 3
|
||||||
#define SIEISA 4
|
#define SIEISA 4
|
||||||
#define SIPCI 5
|
#define SIPCI 5
|
||||||
@ -113,8 +113,8 @@ struct si_reg {
|
|||||||
BYTE memsize;
|
BYTE memsize;
|
||||||
WORD int_count;
|
WORD int_count;
|
||||||
WORD revision;
|
WORD revision;
|
||||||
BYTE rx_int_count;
|
BYTE rx_int_count; /* isr_count on Jet */
|
||||||
BYTE spare;
|
BYTE main_count; /* spare on Z-280 */
|
||||||
WORD int_pending;
|
WORD int_pending;
|
||||||
WORD int_counter;
|
WORD int_counter;
|
||||||
BYTE int_scounter;
|
BYTE int_scounter;
|
||||||
@ -137,26 +137,13 @@ struct si_module {
|
|||||||
* the address of the next module block if fitted. (else 0)
|
* the address of the next module block if fitted. (else 0)
|
||||||
* Note that next points to the TX buffer so 0x60 must be
|
* Note that next points to the TX buffer so 0x60 must be
|
||||||
* subtracted to find the true base.
|
* subtracted to find the true base.
|
||||||
*
|
|
||||||
* Type is a bit field as follows: The bottom 5 bits are the
|
|
||||||
* number of channels on this module, the top 3 bits are
|
|
||||||
* as the module type thus:
|
|
||||||
*
|
|
||||||
* 000 2698 RS232 module (4 port or 8 port)
|
|
||||||
* 001 Reserved for 2698 RS422 module
|
|
||||||
* 010 Reserved for 8530 based sync module
|
|
||||||
* 011 Reserved for parallel printer module
|
|
||||||
* 100 Reserved for network module
|
|
||||||
* 101-111 Reserved for expansion.
|
|
||||||
*
|
|
||||||
* The number field is the cable position of the module.
|
|
||||||
*/
|
*/
|
||||||
#define M232 0x00
|
#define TA4 0x00
|
||||||
#define M422 0x20 /* not supported */
|
#define TA8 0x08
|
||||||
#define MSYNC 0x40 /* this is the Telebit Netblazer module */
|
#define TA4_ASIC 0x0A
|
||||||
#define MCENT 0x60 /* not supported */
|
#define TA8_ASIC 0x0B
|
||||||
#define MNET 0x80 /* not supported */
|
#define MTA 0x28
|
||||||
#define MMASK 0x1F
|
#define SXDC 0x48
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Per channel(port) control structure, stored in shared memory.
|
* Per channel(port) control structure, stored in shared memory.
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
* Device driver for Specialix range (SI/XIO) of serial line multiplexors.
|
* Device driver for Specialix range (SI/XIO) of serial line multiplexors.
|
||||||
* 'C' definitions for Specialix serial multiplex driver.
|
* 'C' definitions for Specialix serial multiplex driver.
|
||||||
*
|
*
|
||||||
* Copyright (C) 1990, 1992 Specialix International,
|
* Copyright (C) 1990, 1992, 1998 Specialix International,
|
||||||
* Copyright (C) 1993, Andy Rutter <andy@acronym.co.uk>
|
* Copyright (C) 1993, Andy Rutter <andy@acronym.co.uk>
|
||||||
* Copyright (C) 1995, Peter Wemm <peter@haywire.dialix.com>
|
* Copyright (C) 1995, Peter Wemm <peter@netplex.com.au>
|
||||||
*
|
*
|
||||||
* Derived from: SunOS 4.x version
|
* Derived from: SunOS 4.x version
|
||||||
*
|
*
|
||||||
@ -30,7 +30,7 @@
|
|||||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
||||||
* NO EVENT SHALL THE AUTHORS BE LIABLE.
|
* NO EVENT SHALL THE AUTHORS BE LIABLE.
|
||||||
*
|
*
|
||||||
* $Id: sireg.h,v 1.4 1997/02/22 09:37:11 peter Exp $
|
* $Id: sireg.h,v 1.5 1998/02/15 14:42:33 peter Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -56,6 +56,11 @@
|
|||||||
#define SIINTCL 0xA000 /* Clear host int */
|
#define SIINTCL 0xA000 /* Clear host int */
|
||||||
#define SIINTCL_CL 0xE000 /* Clear host int */
|
#define SIINTCL_CL 0xE000 /* Clear host int */
|
||||||
|
|
||||||
|
/* SI EISA */
|
||||||
|
#define SIEISADEVID 0x4d980411 /* EISA Device ID */
|
||||||
|
#define SIEISABASE 0xc00 /* Our ports start here */
|
||||||
|
#define SIEISAIOSIZE 0x100 /* XXX How many ports */
|
||||||
|
|
||||||
/* SI old PCI */
|
/* SI old PCI */
|
||||||
#define SIPCIBADR 0x10 /* Which BADR to map in RAM */
|
#define SIPCIBADR 0x10 /* Which BADR to map in RAM */
|
||||||
#define SIPCI_MEMSIZE 0x100000 /* Mapping size */
|
#define SIPCI_MEMSIZE 0x100000 /* Mapping size */
|
||||||
@ -63,12 +68,13 @@
|
|||||||
#define SIPCIINTCL 0x40001 /* 0 = clear int */
|
#define SIPCIINTCL 0x40001 /* 0 = clear int */
|
||||||
|
|
||||||
/* SI Jet PCI */
|
/* SI Jet PCI */
|
||||||
#define SIJETSSIDREG 0x2c /* Is it a SI/XIO or RIO? */
|
#define SIJETSSIDREG 0x2c /* Is it an SX or RIO? */
|
||||||
#define SIJETBADR 0x18 /* Which BADR to map in RAM */
|
#define SIJETBADR 0x18 /* Which BADR to map in RAM */
|
||||||
/* SI Jet PCI & ISA */
|
/* SI Jet PCI & ISA */
|
||||||
#define SIJETIDBASE 0x7c00 /* ID ROM base */
|
#define SIJETIDBASE 0x7c00 /* ID ROM base */
|
||||||
#define SISPLXID 0x984d /* Specialix ID */
|
#define SISPLXID 0x984d /* Specialix ID */
|
||||||
#define SIUNIQID 0x7c0e /* & 0xf0 = 0x20 for Si/XIO */
|
#define SIUNIQID 0x7c0e /* & 0xf0 = 0x20 for SX */
|
||||||
|
#define SIJETIDSTR 0x7c20 /* ID ROM string */
|
||||||
#define SIJETRESET 0x7d00
|
#define SIJETRESET 0x7d00
|
||||||
#define SIJETINTCL 0x7d80
|
#define SIJETINTCL 0x7d80
|
||||||
#define SIJETCONFIG 0x7c00 /* for ISA, top nibble = IRQ */
|
#define SIJETCONFIG 0x7c00 /* for ISA, top nibble = IRQ */
|
||||||
@ -79,12 +85,13 @@
|
|||||||
* MEMSIZE is the total shared mem region
|
* MEMSIZE is the total shared mem region
|
||||||
* RAMSIZE is value to use when probing
|
* RAMSIZE is value to use when probing
|
||||||
*/
|
*/
|
||||||
#define SIJET_MEMSIZE 0x10000
|
#define SIJETPCI_MEMSIZE 0x10000
|
||||||
|
#define SIJETISA_MEMSIZE 0x10000
|
||||||
#define SIJET_RAMSIZE 0x7000
|
#define SIJET_RAMSIZE 0x7000
|
||||||
#define SIHOST_MEMSIZE 0x10000
|
#define SIHOST_MEMSIZE 0x10000
|
||||||
#define SIHOST_RAMSIZE 0x8000
|
#define SIHOST_RAMSIZE 0x8000
|
||||||
#define SIHOST2_MEMSIZE 0x8000
|
#define SIHOST2_MEMSIZE 0x8000
|
||||||
#define SIHOST2_RAMSIZE 0x7ff7
|
#define SIHOST2_RAMSIZE 0x7ff7
|
||||||
#define SIEISA_MEMSIZE 0x10000
|
#define SIEISA_MEMSIZE 0x10000
|
||||||
#define SEISAT_RAMSIZE 0x10000
|
#define SIEISA_RAMSIZE 0x10000
|
||||||
|
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
* Device driver for Specialix range (SI/XIO) of serial line multiplexors.
|
* Device driver for Specialix range (SI/XIO) of serial line multiplexors.
|
||||||
* 'C' definitions for Specialix serial multiplex driver.
|
* 'C' definitions for Specialix serial multiplex driver.
|
||||||
*
|
*
|
||||||
* Copyright (C) 1990, 1992 Specialix International,
|
* Copyright (C) 1990, 1992, 1998 Specialix International,
|
||||||
* Copyright (C) 1993, Andy Rutter <andy@acronym.co.uk>
|
* Copyright (C) 1993, Andy Rutter <andy@acronym.co.uk>
|
||||||
* Copyright (C) 1995, Peter Wemm <peter@haywire.dialix.com>
|
* Copyright (C) 1995, Peter Wemm <peter@netplex.com.au>
|
||||||
*
|
*
|
||||||
* Derived from: SunOS 4.x version
|
* Derived from: SunOS 4.x version
|
||||||
*
|
*
|
||||||
@ -30,7 +30,7 @@
|
|||||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
||||||
* NO EVENT SHALL THE AUTHORS BE LIABLE.
|
* NO EVENT SHALL THE AUTHORS BE LIABLE.
|
||||||
*
|
*
|
||||||
* $Id: si.h,v 1.10 1998/02/15 14:42:32 peter Exp $
|
* $Id: si.h,v 1.11 1998/03/21 06:17:14 peter Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/callout.h>
|
#include <sys/callout.h>
|
||||||
@ -88,7 +88,7 @@
|
|||||||
/* Adapter types */
|
/* Adapter types */
|
||||||
#define SIEMPTY 0
|
#define SIEMPTY 0
|
||||||
#define SIHOST 1
|
#define SIHOST 1
|
||||||
#define SI2 2
|
#define SIMCA 2
|
||||||
#define SIHOST2 3
|
#define SIHOST2 3
|
||||||
#define SIEISA 4
|
#define SIEISA 4
|
||||||
#define SIPCI 5
|
#define SIPCI 5
|
||||||
@ -113,8 +113,8 @@ struct si_reg {
|
|||||||
BYTE memsize;
|
BYTE memsize;
|
||||||
WORD int_count;
|
WORD int_count;
|
||||||
WORD revision;
|
WORD revision;
|
||||||
BYTE rx_int_count;
|
BYTE rx_int_count; /* isr_count on Jet */
|
||||||
BYTE spare;
|
BYTE main_count; /* spare on Z-280 */
|
||||||
WORD int_pending;
|
WORD int_pending;
|
||||||
WORD int_counter;
|
WORD int_counter;
|
||||||
BYTE int_scounter;
|
BYTE int_scounter;
|
||||||
@ -137,26 +137,13 @@ struct si_module {
|
|||||||
* the address of the next module block if fitted. (else 0)
|
* the address of the next module block if fitted. (else 0)
|
||||||
* Note that next points to the TX buffer so 0x60 must be
|
* Note that next points to the TX buffer so 0x60 must be
|
||||||
* subtracted to find the true base.
|
* subtracted to find the true base.
|
||||||
*
|
|
||||||
* Type is a bit field as follows: The bottom 5 bits are the
|
|
||||||
* number of channels on this module, the top 3 bits are
|
|
||||||
* as the module type thus:
|
|
||||||
*
|
|
||||||
* 000 2698 RS232 module (4 port or 8 port)
|
|
||||||
* 001 Reserved for 2698 RS422 module
|
|
||||||
* 010 Reserved for 8530 based sync module
|
|
||||||
* 011 Reserved for parallel printer module
|
|
||||||
* 100 Reserved for network module
|
|
||||||
* 101-111 Reserved for expansion.
|
|
||||||
*
|
|
||||||
* The number field is the cable position of the module.
|
|
||||||
*/
|
*/
|
||||||
#define M232 0x00
|
#define TA4 0x00
|
||||||
#define M422 0x20 /* not supported */
|
#define TA8 0x08
|
||||||
#define MSYNC 0x40 /* this is the Telebit Netblazer module */
|
#define TA4_ASIC 0x0A
|
||||||
#define MCENT 0x60 /* not supported */
|
#define TA8_ASIC 0x0B
|
||||||
#define MNET 0x80 /* not supported */
|
#define MTA 0x28
|
||||||
#define MMASK 0x1F
|
#define SXDC 0x48
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Per channel(port) control structure, stored in shared memory.
|
* Per channel(port) control structure, stored in shared memory.
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -2,9 +2,9 @@
|
|||||||
* Device driver for Specialix range (SI/XIO) of serial line multiplexors.
|
* Device driver for Specialix range (SI/XIO) of serial line multiplexors.
|
||||||
* 'C' definitions for Specialix serial multiplex driver.
|
* 'C' definitions for Specialix serial multiplex driver.
|
||||||
*
|
*
|
||||||
* Copyright (C) 1990, 1992 Specialix International,
|
* Copyright (C) 1990, 1992, 1998 Specialix International,
|
||||||
* Copyright (C) 1993, Andy Rutter <andy@acronym.co.uk>
|
* Copyright (C) 1993, Andy Rutter <andy@acronym.co.uk>
|
||||||
* Copyright (C) 1995, Peter Wemm <peter@haywire.dialix.com>
|
* Copyright (C) 1995, Peter Wemm <peter@netplex.com.au>
|
||||||
*
|
*
|
||||||
* Derived from: SunOS 4.x version
|
* Derived from: SunOS 4.x version
|
||||||
*
|
*
|
||||||
@ -30,7 +30,7 @@
|
|||||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
||||||
* NO EVENT SHALL THE AUTHORS BE LIABLE.
|
* NO EVENT SHALL THE AUTHORS BE LIABLE.
|
||||||
*
|
*
|
||||||
* $Id: sireg.h,v 1.4 1997/02/22 09:37:11 peter Exp $
|
* $Id: sireg.h,v 1.5 1998/02/15 14:42:33 peter Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -56,6 +56,11 @@
|
|||||||
#define SIINTCL 0xA000 /* Clear host int */
|
#define SIINTCL 0xA000 /* Clear host int */
|
||||||
#define SIINTCL_CL 0xE000 /* Clear host int */
|
#define SIINTCL_CL 0xE000 /* Clear host int */
|
||||||
|
|
||||||
|
/* SI EISA */
|
||||||
|
#define SIEISADEVID 0x4d980411 /* EISA Device ID */
|
||||||
|
#define SIEISABASE 0xc00 /* Our ports start here */
|
||||||
|
#define SIEISAIOSIZE 0x100 /* XXX How many ports */
|
||||||
|
|
||||||
/* SI old PCI */
|
/* SI old PCI */
|
||||||
#define SIPCIBADR 0x10 /* Which BADR to map in RAM */
|
#define SIPCIBADR 0x10 /* Which BADR to map in RAM */
|
||||||
#define SIPCI_MEMSIZE 0x100000 /* Mapping size */
|
#define SIPCI_MEMSIZE 0x100000 /* Mapping size */
|
||||||
@ -63,12 +68,13 @@
|
|||||||
#define SIPCIINTCL 0x40001 /* 0 = clear int */
|
#define SIPCIINTCL 0x40001 /* 0 = clear int */
|
||||||
|
|
||||||
/* SI Jet PCI */
|
/* SI Jet PCI */
|
||||||
#define SIJETSSIDREG 0x2c /* Is it a SI/XIO or RIO? */
|
#define SIJETSSIDREG 0x2c /* Is it an SX or RIO? */
|
||||||
#define SIJETBADR 0x18 /* Which BADR to map in RAM */
|
#define SIJETBADR 0x18 /* Which BADR to map in RAM */
|
||||||
/* SI Jet PCI & ISA */
|
/* SI Jet PCI & ISA */
|
||||||
#define SIJETIDBASE 0x7c00 /* ID ROM base */
|
#define SIJETIDBASE 0x7c00 /* ID ROM base */
|
||||||
#define SISPLXID 0x984d /* Specialix ID */
|
#define SISPLXID 0x984d /* Specialix ID */
|
||||||
#define SIUNIQID 0x7c0e /* & 0xf0 = 0x20 for Si/XIO */
|
#define SIUNIQID 0x7c0e /* & 0xf0 = 0x20 for SX */
|
||||||
|
#define SIJETIDSTR 0x7c20 /* ID ROM string */
|
||||||
#define SIJETRESET 0x7d00
|
#define SIJETRESET 0x7d00
|
||||||
#define SIJETINTCL 0x7d80
|
#define SIJETINTCL 0x7d80
|
||||||
#define SIJETCONFIG 0x7c00 /* for ISA, top nibble = IRQ */
|
#define SIJETCONFIG 0x7c00 /* for ISA, top nibble = IRQ */
|
||||||
@ -79,12 +85,13 @@
|
|||||||
* MEMSIZE is the total shared mem region
|
* MEMSIZE is the total shared mem region
|
||||||
* RAMSIZE is value to use when probing
|
* RAMSIZE is value to use when probing
|
||||||
*/
|
*/
|
||||||
#define SIJET_MEMSIZE 0x10000
|
#define SIJETPCI_MEMSIZE 0x10000
|
||||||
|
#define SIJETISA_MEMSIZE 0x10000
|
||||||
#define SIJET_RAMSIZE 0x7000
|
#define SIJET_RAMSIZE 0x7000
|
||||||
#define SIHOST_MEMSIZE 0x10000
|
#define SIHOST_MEMSIZE 0x10000
|
||||||
#define SIHOST_RAMSIZE 0x8000
|
#define SIHOST_RAMSIZE 0x8000
|
||||||
#define SIHOST2_MEMSIZE 0x8000
|
#define SIHOST2_MEMSIZE 0x8000
|
||||||
#define SIHOST2_RAMSIZE 0x7ff7
|
#define SIHOST2_RAMSIZE 0x7ff7
|
||||||
#define SIEISA_MEMSIZE 0x10000
|
#define SIEISA_MEMSIZE 0x10000
|
||||||
#define SEISAT_RAMSIZE 0x10000
|
#define SIEISA_RAMSIZE 0x10000
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user