1 1.6 wiz /* $NetBSD: scsi_5380.h,v 1.6 2003/05/03 18:10:51 wiz Exp $ */ 2 1.3 cgd 3 1.1 briggs /* 4 1.1 briggs * Mach Operating System 5 1.1 briggs * Copyright (c) 1991,1990,1989 Carnegie Mellon University 6 1.1 briggs * All Rights Reserved. 7 1.1 briggs * 8 1.1 briggs * Permission to use, copy, modify and distribute this software and its 9 1.1 briggs * documentation is hereby granted, provided that both the copyright 10 1.1 briggs * notice and this permission notice appear in all copies of the 11 1.1 briggs * software, derivative works or modified versions, and any portions 12 1.1 briggs * thereof, and that both notices appear in supporting documentation. 13 1.1 briggs * 14 1.5 pk * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 15 1.1 briggs * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR 16 1.1 briggs * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 17 1.1 briggs * 18 1.1 briggs * Carnegie Mellon requests users of this software to return to 19 1.1 briggs * 20 1.1 briggs * Software Distribution Coordinator or Software.Distribution (at) CS.CMU.EDU 21 1.1 briggs * School of Computer Science 22 1.1 briggs * Carnegie Mellon University 23 1.1 briggs * Pittsburgh PA 15213-3890 24 1.1 briggs * 25 1.1 briggs * any improvements or extensions that they make and grant Carnegie the 26 1.1 briggs * rights to redistribute these changes. 27 1.1 briggs */ 28 1.1 briggs /* 29 1.1 briggs * File: scsi_5380.h 30 1.1 briggs * Author: Alessandro Forin, Carnegie Mellon University 31 1.1 briggs * Date: 5/91 32 1.1 briggs * 33 1.1 briggs * Defines for the NCR 5380 (SCSI chip), aka Am5380 34 1.1 briggs */ 35 1.1 briggs 36 1.1 briggs /* 37 1.1 briggs * Register map 38 1.1 briggs */ 39 1.1 briggs 40 1.1 briggs typedef struct { 41 1.1 briggs volatile unsigned char sci_data; /* r: Current data */ 42 1.1 briggs #define sci_odata sci_data /* w: Out data */ 43 1.1 briggs PAD(pad0); 44 1.1 briggs 45 1.1 briggs volatile unsigned char sci_icmd; /* rw: Initiator command */ 46 1.1 briggs PAD(pad1); 47 1.1 briggs 48 1.1 briggs volatile unsigned char sci_mode; /* rw: Mode */ 49 1.1 briggs PAD(pad2); 50 1.1 briggs 51 1.1 briggs volatile unsigned char sci_tcmd; /* rw: Target command */ 52 1.1 briggs PAD(pad3); 53 1.1 briggs 54 1.1 briggs volatile unsigned char sci_bus_csr; /* r: Bus Status */ 55 1.1 briggs #define sci_sel_enb sci_bus_csr /* w: Select enable */ 56 1.1 briggs PAD(pad4); 57 1.1 briggs 58 1.1 briggs volatile unsigned char sci_csr; /* r: Status */ 59 1.6 wiz #define sci_dma_send sci_csr /* w: Start DMA send data */ 60 1.1 briggs PAD(pad5); 61 1.1 briggs 62 1.1 briggs volatile unsigned char sci_idata; /* r: Input data */ 63 1.6 wiz #define sci_trecv sci_idata /* w: Start DMA receive, target */ 64 1.1 briggs PAD(pad6); 65 1.1 briggs 66 1.1 briggs volatile unsigned char sci_iack; /* r: Interrupt Acknowledge */ 67 1.6 wiz #define sci_irecv sci_iack /* w: Start DMA receive, initiator */ 68 1.1 briggs } sci_regmap_t; 69 1.1 briggs 70 1.1 briggs 71 1.1 briggs /* 72 1.1 briggs * Initiator command register 73 1.1 briggs */ 74 1.1 briggs 75 1.1 briggs #define SCI_ICMD_DATA 0x01 /* rw: Assert data bus */ 76 1.1 briggs #define SCI_ICMD_ATN 0x02 /* rw: Assert ATN signal */ 77 1.1 briggs #define SCI_ICMD_SEL 0x04 /* rw: Assert SEL signal */ 78 1.1 briggs #define SCI_ICMD_BSY 0x08 /* rw: Assert BSY signal */ 79 1.1 briggs #define SCI_ICMD_ACK 0x10 /* rw: Assert ACK signal */ 80 1.1 briggs #define SCI_ICMD_LST 0x20 /* r: Lost arbitration */ 81 1.1 briggs #define SCI_ICMD_DIFF SCI_ICMD_LST /* w: Differential cable */ 82 1.1 briggs #define SCI_ICMD_AIP 0x40 /* r: Arbitration in progress */ 83 1.1 briggs #define SCI_ICMD_TEST SCI_ICMD_AIP /* w: Test mode */ 84 1.1 briggs #define SCI_ICMD_RST 0x80 /* rw: Assert RST signal */ 85 1.1 briggs 86 1.1 briggs 87 1.1 briggs /* 88 1.1 briggs * Mode register 89 1.1 briggs */ 90 1.1 briggs 91 1.1 briggs #define SCI_MODE_ARB 0x01 /* rw: Start arbitration */ 92 1.1 briggs #define SCI_MODE_DMA 0x02 /* rw: Enable DMA xfers */ 93 1.1 briggs #define SCI_MODE_MONBSY 0x04 /* rw: Monitor BSY signal */ 94 1.1 briggs #define SCI_MODE_DMA_IE 0x08 /* rw: Enable DMA complete interrupt */ 95 1.1 briggs #define SCI_MODE_PERR_IE 0x10 /* rw: Interrupt on parity errors */ 96 1.1 briggs #define SCI_MODE_PAR_CHK 0x20 /* rw: Check parity */ 97 1.1 briggs #define SCI_MODE_TARGET 0x40 /* rw: Target mode (Initiator if 0) */ 98 1.1 briggs #define SCI_MODE_BLOCKDMA 0x80 /* rw: Block-mode DMA handshake (MBZ) */ 99 1.1 briggs 100 1.1 briggs 101 1.1 briggs /* 102 1.1 briggs * Target command register 103 1.1 briggs */ 104 1.1 briggs 105 1.1 briggs #define SCI_TCMD_IO 0x01 /* rw: Assert I/O signal */ 106 1.1 briggs #define SCI_TCMD_CD 0x02 /* rw: Assert C/D signal */ 107 1.1 briggs #define SCI_TCMD_MSG 0x04 /* rw: Assert MSG signal */ 108 1.1 briggs #define SCI_TCMD_PHASE_MASK 0x07 /* r: Mask for current bus phase */ 109 1.1 briggs #define SCI_TCMD_REQ 0x08 /* rw: Assert REQ signal */ 110 1.1 briggs #define SCI_TCMD_LAST_SENT 0x80 /* ro: Last byte was xferred 111 1.1 briggs * (not on 5380/1) */ 112 1.1 briggs 113 1.1 briggs #define SCI_PHASE(x) SCSI_PHASE(x) 114 1.1 briggs 115 1.1 briggs /* 116 1.1 briggs * Current (SCSI) Bus status 117 1.1 briggs */ 118 1.1 briggs 119 1.1 briggs #define SCI_BUS_DBP 0x01 /* r: Data Bus parity */ 120 1.1 briggs #define SCI_BUS_SEL 0x02 /* r: SEL signal */ 121 1.1 briggs #define SCI_BUS_IO 0x04 /* r: I/O signal */ 122 1.1 briggs #define SCI_BUS_CD 0x08 /* r: C/D signal */ 123 1.1 briggs #define SCI_BUS_MSG 0x10 /* r: MSG signal */ 124 1.1 briggs #define SCI_BUS_REQ 0x20 /* r: REQ signal */ 125 1.1 briggs #define SCI_BUS_BSY 0x40 /* r: BSY signal */ 126 1.1 briggs #define SCI_BUS_RST 0x80 /* r: RST signal */ 127 1.1 briggs 128 1.1 briggs #define SCI_CUR_PHASE(x) SCSI_PHASE((x)>>2) 129 1.1 briggs 130 1.1 briggs /* 131 1.1 briggs * Bus and Status register 132 1.1 briggs */ 133 1.1 briggs 134 1.1 briggs #define SCI_CSR_ACK 0x01 /* r: ACK signal */ 135 1.1 briggs #define SCI_CSR_ATN 0x02 /* r: ATN signal */ 136 1.1 briggs #define SCI_CSR_DISC 0x04 /* r: Disconnected (BSY==0) */ 137 1.1 briggs #define SCI_CSR_PHASE_MATCH 0x08 /* r: Bus and SCI_TCMD match */ 138 1.1 briggs #define SCI_CSR_INT 0x10 /* r: Interrupt request */ 139 1.1 briggs #define SCI_CSR_PERR 0x20 /* r: Parity error */ 140 1.1 briggs #define SCI_CSR_DREQ 0x40 /* r: DMA request */ 141 1.1 briggs #define SCI_CSR_DONE 0x80 /* r: DMA count is zero */ 142 1.1 briggs 143