96 lines
2.9 KiB
C
96 lines
2.9 KiB
C
/* @(#)xtreg.h 1.1 92/07/30 SMI */
|
|
|
|
/*
|
|
* Copyright (c) 1984 by Sun Microsystems, Inc.
|
|
*/
|
|
|
|
/*
|
|
* Xylogics 472 multibus tape controller
|
|
* IOPB definition.
|
|
*/
|
|
|
|
#ifndef _sundev_xtreg_h
|
|
#define _sundev_xtreg_h
|
|
|
|
struct xtiopb {
|
|
/* Byte 1 */
|
|
u_char xt_swab : 1; /* do byte swapping */
|
|
u_char xt_retry : 1; /* enable retries */
|
|
u_char xt_subfunc : 6; /* sub-function code */
|
|
/* Byte 0 */
|
|
u_char xt_autoup : 1; /* auto update of IOPB */
|
|
u_char xt_reloc : 1; /* use relocation */
|
|
u_char xt_chain : 1; /* command chaining */
|
|
u_char xt_ie : 1; /* interrupt enable */
|
|
u_char xt_cmd : 4; /* command */
|
|
/* Byte 3 */
|
|
u_char xt_errno; /* error number */
|
|
/* Byte 2 */
|
|
u_char xt_iserr : 1; /* error indicator */
|
|
u_char : 2;
|
|
u_char xt_ctype : 3; /* controller type */
|
|
u_char : 1;
|
|
u_char xt_complete: 1; /* completion code valid */
|
|
u_short xt_status; /* 5,4: various status bits */
|
|
/* Byte 7 */
|
|
u_char : 5;
|
|
u_char xt_unit : 3; /* unit number */
|
|
/* Byte 6 */
|
|
u_char xt_bytebus : 1; /* use byte transfers */
|
|
u_char : 4;
|
|
u_char xt_throttle: 3; /* throttle control */
|
|
u_short xt_cnt; /* 9,8: requested count */
|
|
u_short xt_bufoff; /* b,a: buffer offset */
|
|
u_short xt_bufrel; /* d,c: buffer offset */
|
|
u_short xt_nxtoff; /* f,e: next iopb offset */
|
|
u_short xt_acnt; /* 11,10: actual count */
|
|
};
|
|
|
|
/* commands */
|
|
#define XT_NOP 0x00 /* no operation */
|
|
#define XT_WRITE 0x01 /* write */
|
|
#define XT_READ 0x02 /* read */
|
|
#define XT_SEEK 0x05 /* position */
|
|
#define XT_DRESET 0x06 /* drive reset */
|
|
#define XT_FMARK 0x07 /* write file mark / erase */
|
|
#define XT_DSTAT 0x09 /* read drive status */
|
|
#define XT_PARAM 0x0B /* set drive parameters */
|
|
#define XT_TEST 0x0C /* self test */
|
|
|
|
/* Subfunction codes */
|
|
#define XT_REVERSE 0x20 /* reverse tape motion */
|
|
#define XT_REC 0 /* search for record marks */
|
|
#define XT_FILE 1 /* search for file marks */
|
|
#define XT_REW 2 /* rewind */
|
|
#define XT_UNLOAD 3 /* unload */
|
|
#define XT_ERASE 1 /* erase, when used with FMARK */
|
|
#define XT_LODENS 0 /* low density */
|
|
#define XT_HIDENS 1 /* high density */
|
|
#define XT_LOW 2 /* low speed */
|
|
#define XT_HIGH 3 /* high speed */
|
|
|
|
/* status codes */
|
|
#define XTS_IEI 0x4000 /* interrupt on each iopb */
|
|
#define XTS_EOT 0x80 /* end of tape */
|
|
#define XTS_BOT 0x40 /* beginning of tape */
|
|
#define XTS_FPT 0x20 /* write protected */
|
|
#define XTS_REW 0x10 /* rewinding */
|
|
#define XTS_ONL 0x08 /* on line */
|
|
#define XTS_RDY 0x04 /* drive ready */
|
|
#define XTS_DBY 0x02 /* data busy */
|
|
#define XTS_FBY 0x01 /* formatter busy */
|
|
#define XTS_BITS "\1FBSY\2DBSY\3RDY\4ONL\5REW\6PROT\7BOT\10EOT"
|
|
|
|
/* error codes */
|
|
#define XTE_NOERROR 0x00
|
|
#define XTE_TIMEOUT 0x04 /* Hardware or Software timeout */
|
|
#define XTE_EOF 0x1E
|
|
#define XTE_SOFTERR 0x1F /* corrected data err */
|
|
#define XTE_SHORTREC 0x22
|
|
#define XTE_LONGREC 0x23
|
|
#define XTE_BOT 0x30
|
|
#define XTE_EOT 0x31
|
|
#define XTE_DLATE 0x33 /* r: fifo overrun w: data late */
|
|
|
|
#endif /*!_sundev_xtreg_h*/
|