1139749Simp/*- 256505Speter * Device driver for Specialix range (SI/XIO) of serial line multiplexors. 356505Speter * 456505Speter * Copyright (C) 2000, Peter Wemm <peter@netplex.com.au> 556505Speter * 656505Speter * Redistribution and use in source and binary forms, with or without 756505Speter * modification, are permitted provided that the following conditions 856505Speter * are met: 956505Speter * 1. Redistributions of source code must retain the above copyright 1056505Speter * notices, this list of conditions and the following disclaimer. 1156505Speter * 2. Redistributions in binary form must reproduce the above copyright 1256505Speter * notices, this list of conditions and the following disclaimer in the 1356505Speter * documentation and/or other materials provided with the distribution. 1456505Speter * 1556505Speter * THIS SOFTWARE IS PROVIDED BY ``AS IS'' AND ANY EXPRESS OR IMPLIED 1656505Speter * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 1756505Speter * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 1856505Speter * NO EVENT SHALL THE AUTHORS BE LIABLE. 1956505Speter * 2056505Speter * $FreeBSD$ 2156505Speter */ 2256505Speter 23136062Sphk#ifdef _KERNEL 2456505Speterint siattach(device_t dev); 2556505Spetervoid si_intr(void *); 2656505Speter 2756505Speterextern devclass_t si_devclass; 2856505Speter 2956505Speter/* where the firmware lives; defined in si2_z280.c and si3_t225.c */ 3056505Speter/* old: si2_z280.c */ 3156505Speterextern unsigned char si2_z280_download[]; 3256505Speterextern unsigned short si2_z280_downloadaddr; 3356505Speterextern int si2_z280_dsize; 3456505Speter/* new: si3_t225.c */ 3556505Speterextern unsigned char si3_t225_download[]; 3656505Speterextern unsigned short si3_t225_downloadaddr; 3756505Speterextern int si3_t225_dsize; 3856505Speterextern unsigned char si3_t225_bootstrap[]; 3956505Speterextern unsigned short si3_t225_bootloadaddr; 4056505Speterextern int si3_t225_bsize; 4156505Speter 4256505Speterstruct si_softc { 4356505Speter int sc_type; /* adapter type */ 44136058Sphk const char *sc_typename; /* adapter type string */ 4556505Speter 4656505Speter struct si_port *sc_ports; /* port structures for this card */ 4756505Speter 4856505Speter caddr_t sc_paddr; /* physical addr of iomem */ 4956505Speter caddr_t sc_maddr; /* kvaddr of iomem */ 5056505Speter int sc_nport; /* # ports on this card */ 5156505Speter int sc_irq; /* copy of attach irq */ 5256505Speter int sc_iobase; /* EISA io port address */ 5356505Speter struct resource *sc_port_res; 5456505Speter struct resource *sc_irq_res; 5556505Speter struct resource *sc_mem_res; 5656505Speter int sc_port_rid; 5756505Speter int sc_irq_rid; 5856505Speter int sc_mem_rid; 5956505Speter int sc_memsize; 6056505Speter}; 6156505Speter 62136062Sphk#endif /* _KERNEL */ 63136062Sphk 6456505Speter#ifdef SI_DEBUG 6556505Speter/* 6656505Speter * debugging stuff - manipulated using siconfig(8) 6756505Speter */ 6856505Speter 6956505Spetervoid si_dprintf(struct si_port *pp, int flags, const char *fmt, ...); 7056505Speter 7156505Speter#define DPRINT(x) si_dprintf x 7256505Speter 73136058Sphk/* 74136058Sphk * Extensive debugging stuff - manipulated using siconfig(8) 75136058Sphk */ 7656505Speter#define DBG_ENTRY 0x00000001 7756505Speter#define DBG_DRAIN 0x00000002 7856505Speter#define DBG_OPEN 0x00000004 7956505Speter#define DBG_CLOSE 0x00000008 8056505Speter#define DBG_READ 0x00000010 8156505Speter#define DBG_WRITE 0x00000020 8256505Speter#define DBG_PARAM 0x00000040 8356505Speter#define DBG_INTR 0x00000080 8456505Speter#define DBG_IOCTL 0x00000100 8556505Speter/* 0x00000200 */ 8656505Speter#define DBG_SELECT 0x00000400 8756505Speter#define DBG_OPTIM 0x00000800 8856505Speter#define DBG_START 0x00001000 8956505Speter#define DBG_EXIT 0x00002000 9056505Speter#define DBG_FAIL 0x00004000 9156505Speter#define DBG_STOP 0x00008000 9256505Speter#define DBG_AUTOBOOT 0x00010000 9356505Speter#define DBG_MODEM 0x00020000 9456505Speter#define DBG_DOWNLOAD 0x00040000 9556505Speter#define DBG_LSTART 0x00080000 9656505Speter#define DBG_POLL 0x00100000 9756505Speter#define DBG_ALL 0xffffffff 9856505Speter 9956505Speter#else 10056505Speter#define DPRINT(x) /* void */ 10156505Speter#endif 10256505Speter 10356505Speter/* Adapter types */ 10456505Speter#define SIEMPTY 0 10556505Speter#define SIHOST 1 10656505Speter#define SIMCA 2 10756505Speter#define SIHOST2 3 10856505Speter#define SIEISA 4 10956505Speter#define SIPCI 5 11056505Speter#define SIJETPCI 6 11156505Speter#define SIJETISA 7 11256505Speter 11356505Speter#define SI_ISJET(x) (((x) == SIJETPCI) || ((x) == SIJETISA)) 114