145 lines
4.8 KiB
C
145 lines
4.8 KiB
C
/* $NetBSD: a12dcreg.h,v 1.1 1998/09/23 21:14:02 ross Exp $ */
|
|
|
|
/* [Notice revision 2.2]
|
|
* Copyright (c) 1997, 1998 Avalon Computer Systems, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* Author: Ross Harvey
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions
|
|
* are met:
|
|
* 1. Redistributions of source code must retain the above copyright and
|
|
* author notice, this list of conditions, and the following disclaimer.
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* 3. Neither the name of Avalon Computer Systems, Inc. nor the names of
|
|
* its contributors may be used to endorse or promote products derived
|
|
* from this software without specific prior written permission.
|
|
* 4. This copyright will be assigned to The NetBSD Foundation on
|
|
* 1/1/2000 unless these terms (including possibly the assignment
|
|
* date) are updated in writing by Avalon prior to the latest specified
|
|
* assignment date.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY AVALON COMPUTER SYSTEMS, INC. AND CONTRIBUTORS
|
|
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AVALON OR THE CONTRIBUTORS
|
|
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
#define A12DCREG() /* Generate ctags(1) key */
|
|
|
|
/* Id: a12backdriver.h,v 1.1.1.1 1997/12/04 04:33:31 ross Exp */
|
|
|
|
#define A12C_TXRDY 0x8000
|
|
#define A12C_TXACK 0x4000
|
|
#define CHMASK 0x3f00
|
|
|
|
#define MCQ_SLOTNO 0x81
|
|
|
|
#define MSP(n) (a12_mstate+(n))
|
|
|
|
#define CHANNEL_KDATA 1
|
|
#define CHANNEL_KMARK 2
|
|
#define CHANNEL_MULTI 3
|
|
#define CHANNEL_MONITOR 4
|
|
#define CHANNEL_SROM_A 5
|
|
#define CHANNEL_SROM_D 6
|
|
#define CHANNEL_CONSOLE 7
|
|
|
|
/* detached console commands > to detached console */
|
|
/* < to A12 CPU */
|
|
#define CPX_GEO 129 /* >return geographical address (card #)*/
|
|
#define CPX_LOGMC 130 /* >return multi channel log level */
|
|
#define CPX_PANIC 131 /* >process has entered panic() */
|
|
#define CPX_READY 132 /* >fw kernel can accept CPX_GO command */
|
|
#define CPX_GO 133 /* <fw kernel should proceed with boot */
|
|
|
|
#define MAX_EVENTS 1000
|
|
#ifndef MAX_MODULES
|
|
#define MAX_MODULES 1
|
|
#endif
|
|
|
|
#define mcgetput(mn,chan,byte) msgetput(&a12_mstate[mn],(chan),(byte))
|
|
|
|
typedef unsigned char a12uchar;
|
|
|
|
enum tx_state {
|
|
tx_idle, /* transmitter idle */
|
|
tx_braaw /* transmitter byte ready assert ack wait */
|
|
};
|
|
|
|
enum rx_state {
|
|
rx_idle, /* receiver idle */
|
|
rx_busy /* receiver byte is ready */
|
|
};
|
|
|
|
typedef volatile long mmreg_t;
|
|
|
|
typedef struct mstate_struct {
|
|
mmreg_t *xcdr; /* address of CDR */
|
|
unsigned short cbvsr, /* software copy */
|
|
cdr; /* software copy */
|
|
unsigned short txsv, rxsv; /* transmitter and receiver states */
|
|
a12uchar b2c_char,
|
|
b2c_channel,
|
|
c2b_char,
|
|
c2b_channel;
|
|
char up,
|
|
inuse,
|
|
reset_scanner,
|
|
reset_loader;
|
|
int panicexit;
|
|
int txrdy_out, txrdy_in, /* current polarity of interlocks */
|
|
txack_out, txack_in;
|
|
char lastr, lastrc, /* last received char. and channel */
|
|
lastt, lasttc; /* last transmitted char. and channel */
|
|
unsigned int rx_busy_wait, /* receive busy ticks */
|
|
rx_busy_cnt, /* receive busy start count */
|
|
tx_busy_wait, /* transmit busy ticks */
|
|
tx_busy_cnt; /* transmit busy start count */
|
|
unsigned int tbytes, /* bytes not in block send */
|
|
tblkbytes, /* bytes in block send */
|
|
tblks; /* total blocks */
|
|
unsigned int blwobe, /* blocks sent without retry */
|
|
blwbe; /* blocks sent with retry */
|
|
unsigned int max_blkretry; /* max. retries to send block */
|
|
unsigned int max_blktime, /* max. time to send block */
|
|
max_blktimesz; /* size of max. time block */
|
|
unsigned int avg_blksz, /* avg. size block */
|
|
avg_blktime; /* avg. time to send block */
|
|
unsigned int retry_time; /* time spent sending re-try blocks */
|
|
} mstate_type;
|
|
|
|
/* EVENT TRACKING */
|
|
|
|
typedef enum {
|
|
BS,BE,BL,READ0,READ1,WRITE0,WRITE1,R360,W360,CL1,CL2,IDL1,IDL2
|
|
} ET;
|
|
|
|
typedef struct {
|
|
ET type;
|
|
int time;
|
|
char m; /* module # */
|
|
char chnl;
|
|
char rsv1;
|
|
char rsv2;
|
|
int data;
|
|
} ESTRUCT;
|
|
|
|
/* EVENT TRACKING END */
|
|
|
|
mstate_type a12_mstate[MAX_MODULES];
|
|
|
|
int a12console_last_unexpected_error;
|
|
|
|
int a12dccnattach __P((void));
|