^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) * Aic79xx register and scratch ram definitions.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * Copyright (c) 1994-2001, 2004 Justin T. Gibbs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Copyright (c) 2000-2002 Adaptec Inc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * All rights reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) * Redistribution and use in source and binary forms, with or without
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) * modification, are permitted provided that the following conditions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) * are met:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) * 1. Redistributions of source code must retain the above copyright
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) * notice, this list of conditions, and the following disclaimer,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) * without modification.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) * 2. Redistributions in binary form must reproduce at minimum a disclaimer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) * substantially similar to the "NO WARRANTY" disclaimer below
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) * ("Disclaimer") and any redistribution must be conditioned upon
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) * including a substantially similar Disclaimer requirement for further
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) * binary redistribution.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) * 3. Neither the names of the above-listed copyright holders nor the names
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) * of any contributors may be used to endorse or promote products derived
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) * from this software without specific prior written permission.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) * Alternatively, this software may be distributed under the terms of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) * GNU General Public License ("GPL") version 2 as published by the Free
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) * Software Foundation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) * NO WARRANTY
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) * POSSIBILITY OF SUCH DAMAGES.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) * $FreeBSD$
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) VERSION = "$Id: //depot/aic7xxx/aic7xxx/aic79xx.reg#77 $"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) * This file is processed by the aic7xxx_asm utility for use in assembling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) * firmware for the aic79xx family of SCSI host adapters as well as to generate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) * a C header file for use in the kernel portion of the Aic79xx driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) /* Register window Modes */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) #define M_DFF0 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) #define M_DFF1 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) #define M_CCHAN 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) #define M_SCSI 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) #define M_CFG 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) #define M_DST_SHIFT 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) #define MK_MODE(src, dst) ((src) | ((dst) << M_DST_SHIFT))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) #define SET_MODE(src, dst) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) SET_SRC_MODE src; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) SET_DST_MODE dst; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) mvi MK_MODE(src, dst) call set_mode_work_around; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) } else { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) mvi MODE_PTR, MK_MODE(src, dst); \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) #define RESTORE_MODE(mode) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) if ((ahd->bugs & AHD_SET_MODE_BUG) != 0) { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) mov mode call set_mode_work_around; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) } else { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) mov MODE_PTR, mode; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) #define SET_SEQINTCODE(code) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) if ((ahd->bugs & AHD_INTCOLLISION_BUG) != 0) { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) mvi code call set_seqint_work_around; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) } else { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) mvi SEQINTCODE, code; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) * Registers marked "dont_generate_debug_code" are not (yet) referenced
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) * from the driver code, and this keyword inhibit generation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) * of debug code for them.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) * REG_PRETTY_PRINT config will complain if dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) * is added to the register which is referenced in the driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) * Unreferenced register with no dont_generate_debug_code will result
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) * in dead code. No warning is issued.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) * Mode Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) * Controls which of the 5, 512byte, address spaces should be used
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) * as the source and destination of any register accesses in our
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) * register window.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) register MODE_PTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) address 0x000
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) field DST_MODE 0x70
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) field SRC_MODE 0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) mode_pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) const SRC_MODE_SHIFT 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) const DST_MODE_SHIFT 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) * Host Interrupt Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) register INTSTAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) address 0x001
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) field HWERRINT 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) field BRKADRINT 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) field SWTMINT 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) field PCIINT 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) field SCSIINT 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) field SEQINT 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) field CMDCMPLT 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) field SPLTINT 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) mask INT_PEND 0xFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) * Sequencer Interrupt Code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) register SEQINTCODE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) address 0x002
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) field {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) NO_SEQINT, /* No seqint pending. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) BAD_PHASE, /* unknown scsi bus phase */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) SEND_REJECT, /* sending a message reject */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) PROTO_VIOLATION, /* Protocol Violation */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) NO_MATCH, /* no cmd match for reconnect */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) IGN_WIDE_RES, /* Complex IGN Wide Res Msg */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) PDATA_REINIT, /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) * Returned to data phase
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) * that requires data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) * transfer pointers to be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) * recalculated from the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) * transfer residual.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) HOST_MSG_LOOP, /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) * The bus is ready for the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) * host to perform another
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) * message transaction. This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) * mechanism is used for things
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) * like sync/wide negotiation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) * that require a kernel based
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) * message state engine.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) BAD_STATUS, /* Bad status from target */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) DATA_OVERRUN, /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) * Target attempted to write
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) * beyond the bounds of its
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) * command.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) MKMSG_FAILED, /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) * Target completed command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) * without honoring our ATN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) * request to issue a message.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) MISSED_BUSFREE, /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) * The sequencer never saw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) * the bus go free after
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) * either a command complete
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) * or disconnect message.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) DUMP_CARD_STATE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) ILLEGAL_PHASE,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) INVALID_SEQINT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) CFG4ISTAT_INTR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) STATUS_OVERRUN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) CFG4OVERRUN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) ENTERING_NONPACK,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) TASKMGMT_FUNC_COMPLETE, /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) * Task management function
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) * request completed with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) * an expected busfree.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) TASKMGMT_CMD_CMPLT_OKAY, /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) * A command with a non-zero
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) * task management function
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) * has completed via the normal
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) * command completion method
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) * for commands with a zero
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) * task management function.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) * This happens when an attempt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) * to abort a command loses
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) * the race for the command to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) * complete normally.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) TRACEPOINT0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) TRACEPOINT1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) TRACEPOINT2,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) TRACEPOINT3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) SAW_HWERR,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) BAD_SCB_STATUS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) * Clear Host Interrupt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) register CLRINT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) address 0x003
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) access_mode WO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) count 19
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) field CLRHWERRINT 0x80 /* Rev B or greater */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) field CLRBRKADRINT 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) field CLRSWTMINT 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) field CLRPCIINT 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) field CLRSCSIINT 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) field CLRSEQINT 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) field CLRCMDINT 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) field CLRSPLTINT 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) * Error Register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) register ERROR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) address 0x004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) field CIOPARERR 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) field CIOACCESFAIL 0x40 /* Rev B or greater */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) field MPARERR 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) field DPARERR 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) field SQPARERR 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) field ILLOPCODE 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) field DSCTMOUT 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) * Clear Error
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) register CLRERR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) address 0x004
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) access_mode WO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) field CLRCIOPARERR 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) field CLRCIOACCESFAIL 0x40 /* Rev B or greater */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) field CLRMPARERR 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) field CLRDPARERR 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) field CLRSQPARERR 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) field CLRILLOPCODE 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) field CLRDSCTMOUT 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) * Host Control Register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) * Overall host control of the device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) register HCNTRL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) address 0x005
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) count 12
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) field SEQ_RESET 0x80 /* Rev B or greater */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) field POWRDN 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) field SWINT 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) field SWTIMER_START_B 0x08 /* Rev B or greater */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) field PAUSE 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) field INTEN 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) field CHIPRST 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) field CHIPRSTACK 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) * Host New SCB Queue Offset
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) register HNSCB_QOFF {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) address 0x006
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) * Host Empty SCB Queue Offset
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) register HESCB_QOFF {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) address 0x008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) * Host Mailbox
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) register HS_MAILBOX {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) address 0x00B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) mask HOST_TQINPOS 0x80 /* Boundary at either 0 or 128 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) mask ENINT_COALESCE 0x40 /* Perform interrupt coalescing */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) * Sequencer Interrupt Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) register SEQINTSTAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) address 0x00C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) field SEQ_SWTMRTO 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) field SEQ_SEQINT 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) field SEQ_SCSIINT 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) field SEQ_PCIINT 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) field SEQ_SPLTINT 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) * Clear SEQ Interrupt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) register CLRSEQINTSTAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) address 0x00C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) access_mode WO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) field CLRSEQ_SWTMRTO 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) field CLRSEQ_SEQINT 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) field CLRSEQ_SCSIINT 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) field CLRSEQ_PCIINT 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) field CLRSEQ_SPLTINT 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) * Software Timer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) register SWTIMER {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) address 0x00E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) * SEQ New SCB Queue Offset
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) register SNSCB_QOFF {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) address 0x010
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) modes M_CCHAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) * SEQ Empty SCB Queue Offset
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) register SESCB_QOFF {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) address 0x012
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) modes M_CCHAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) * SEQ Done SCB Queue Offset
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) register SDSCB_QOFF {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) address 0x014
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) modes M_CCHAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) * Queue Offset Control & Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) register QOFF_CTLSTA {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) address 0x016
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) modes M_CCHAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) field EMPTY_SCB_AVAIL 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) field NEW_SCB_AVAIL 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) field SDSCB_ROLLOVR 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) field HS_MAILBOX_ACT 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) field SCB_QSIZE 0x0F {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) SCB_QSIZE_4,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) SCB_QSIZE_8,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) SCB_QSIZE_16,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) SCB_QSIZE_32,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) SCB_QSIZE_64,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) SCB_QSIZE_128,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) SCB_QSIZE_256,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) SCB_QSIZE_512,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) SCB_QSIZE_1024,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) SCB_QSIZE_2048,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) SCB_QSIZE_4096,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) SCB_QSIZE_8192,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) SCB_QSIZE_16384
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) * Interrupt Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) register INTCTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) address 0x018
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) field SWTMINTMASK 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) field SWTMINTEN 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) field SWTIMER_START 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) field AUTOCLRCMDINT 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) field PCIINTEN 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) field SCSIINTEN 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) field SEQINTEN 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) field SPLTINTEN 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) * Data FIFO Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) register DFCNTRL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) address 0x019
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) count 11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) field PRELOADEN 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) field SCSIENWRDIS 0x40 /* Rev B only. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) field SCSIEN 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) field SCSIENACK 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) field HDMAEN 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) field HDMAENACK 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) field DIRECTION 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) field DIRECTIONACK 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) field FIFOFLUSH 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) field FIFOFLUSHACK 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) field DIRECTIONEN 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) * Device Space Command 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) register DSCOMMAND0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) address 0x019
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) field CACHETHEN 0x80 /* Cache Threshold enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) field DPARCKEN 0x40 /* Data Parity Check Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) field MPARCKEN 0x20 /* Memory Parity Check Enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) field EXTREQLCK 0x10 /* External Request Lock */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) field DISABLE_TWATE 0x02 /* Rev B or greater */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) field CIOPARCKEN 0x01 /* Internal bus parity error enable */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) * Data FIFO Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) register DFSTATUS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) address 0x01A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) field PRELOAD_AVAIL 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) field PKT_PRELOAD_AVAIL 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) field MREQPEND 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) field HDONE 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) field DFTHRESH 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) field FIFOFULL 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) field FIFOEMP 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) * S/G Cache Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) register SG_CACHE_PRE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) address 0x01B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) access_mode WO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) field SG_ADDR_MASK 0xf8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) field ODD_SEG 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) field LAST_SEG 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490) register SG_CACHE_SHADOW {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) address 0x01B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) field SG_ADDR_MASK 0xf8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) field ODD_SEG 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) field LAST_SEG 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) field LAST_SEG_DONE 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) * Arbiter Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) register ARBCTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504) address 0x01B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) field RESET_HARB 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) field RETRY_SWEN 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) field USE_TIME 0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) * Data Channel Host Address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) register HADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) address 0x070
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) size 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) * Host Overlay DMA Address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) register HODMAADR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) address 0x070
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) size 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) * PCI PLL Delay.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) register PLLDELAY {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) address 0x070
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) field SPLIT_DROP_REQ 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) * Data Channel Host Count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) register HCNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) address 0x078
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) size 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) * Host Overlay DMA Count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) register HODMACNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) address 0x078
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566) * Host Overlay DMA Enable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568) register HODMAEN {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569) address 0x07A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) * Scatter/Gather Host Address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) register SGHADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578) address 0x07C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580) size 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) * SCB Host Address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) register SCBHADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589) address 0x07C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591) size 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) modes M_CCHAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) * Scatter/Gather Host Count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) register SGHCNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600) address 0x084
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) * SCB Host Count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) register SCBHCNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) address 0x084
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) modes M_CCHAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617) * Data FIFO Threshold
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619) register DFF_THRSH {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) address 0x088
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) field WR_DFTHRSH 0x70 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625) WR_DFTHRSH_MIN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) WR_DFTHRSH_25,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) WR_DFTHRSH_50,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) WR_DFTHRSH_63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629) WR_DFTHRSH_75,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) WR_DFTHRSH_85,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631) WR_DFTHRSH_90,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) WR_DFTHRSH_MAX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) field RD_DFTHRSH 0x07 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) RD_DFTHRSH_MIN,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) RD_DFTHRSH_25,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) RD_DFTHRSH_50,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638) RD_DFTHRSH_63,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639) RD_DFTHRSH_75,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) RD_DFTHRSH_85,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) RD_DFTHRSH_90,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) RD_DFTHRSH_MAX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648) * ROM Address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650) register ROMADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651) address 0x08A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) size 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) * ROM Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) register ROMCNTRL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) address 0x08D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) field ROMOP 0xE0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) field ROMSPD 0x18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) field REPEAT 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) field RDY 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669) * ROM Data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) register ROMDATA {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672) address 0x08E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677) * Data Channel Receive Message 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) register DCHRXMSG0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680) address 0x090
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683) field CDNUM 0xF8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) field CFNUM 0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688) * CMC Receive Message 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690) register CMCRXMSG0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) address 0x090
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693) modes M_CCHAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) field CDNUM 0xF8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695) field CFNUM 0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699) * Overlay Receive Message 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701) register OVLYRXMSG0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702) address 0x090
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705) field CDNUM 0xF8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706) field CFNUM 0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710) * Relaxed Order Enable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712) register ROENABLE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713) address 0x090
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716) field MSIROEN 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) field OVLYROEN 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718) field CMCROEN 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719) field SGROEN 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720) field DCH1ROEN 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721) field DCH0ROEN 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 724) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 725) * Data Channel Receive Message 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 726) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 727) register DCHRXMSG1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 728) address 0x091
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 729) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 730) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 731) field CBNUM 0xFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 732) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 733)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 734) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 735) * CMC Receive Message 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 736) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 737) register CMCRXMSG1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 738) address 0x091
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 739) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 740) modes M_CCHAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 741) field CBNUM 0xFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 742) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 743)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 744) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 745) * Overlay Receive Message 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 746) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 747) register OVLYRXMSG1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 748) address 0x091
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 749) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 750) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 751) field CBNUM 0xFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 752) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 753)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 754) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 755) * No Snoop Enable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 756) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 757) register NSENABLE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 758) address 0x091
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 759) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 760) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 761) field MSINSEN 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 762) field OVLYNSEN 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 763) field CMCNSEN 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 764) field SGNSEN 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 765) field DCH1NSEN 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 766) field DCH0NSEN 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 767) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 768)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 769) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 770) * Data Channel Receive Message 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 771) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 772) register DCHRXMSG2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 773) address 0x092
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 774) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 775) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 776) field MINDEX 0xFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 777) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 778)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 779) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 780) * CMC Receive Message 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 781) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 782) register CMCRXMSG2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 783) address 0x092
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 784) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 785) modes M_CCHAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 786) field MINDEX 0xFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 787) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 788)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 789) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 790) * Overlay Receive Message 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 791) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 792) register OVLYRXMSG2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 793) address 0x092
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 794) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 795) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 796) field MINDEX 0xFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 797) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 798)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 799) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 800) * Outstanding Split Transactions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 801) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 802) register OST {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 803) address 0x092
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 804) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 805) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 806) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 807)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 808) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 809) * Data Channel Receive Message 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 810) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 811) register DCHRXMSG3 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 812) address 0x093
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 813) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 814) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 815) field MCLASS 0x0F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 816) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 817)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 818) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 819) * CMC Receive Message 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 820) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 821) register CMCRXMSG3 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 822) address 0x093
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 823) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 824) modes M_CCHAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 825) field MCLASS 0x0F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 826) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 827)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 828) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 829) * Overlay Receive Message 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 830) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 831) register OVLYRXMSG3 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 832) address 0x093
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 833) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 834) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 835) field MCLASS 0x0F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 836) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 837)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 838) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 839) * PCI-X Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 840) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 841) register PCIXCTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 842) address 0x093
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 843) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 844) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 845) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 846) field SERRPULSE 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 847) field UNEXPSCIEN 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 848) field SPLTSMADIS 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 849) field SPLTSTADIS 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 850) field SRSPDPEEN 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 851) field TSCSERREN 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 852) field CMPABCDIS 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 853) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 854) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 855)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 856) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 857) * CMC Sequencer Byte Count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 858) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 859) register CMCSEQBCNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 860) address 0x094
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 861) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 862) modes M_CCHAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 863) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 864)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 865) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 866) * Overlay Sequencer Byte Count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 867) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 868) register OVLYSEQBCNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 869) address 0x094
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 870) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 871) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 872) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 873)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 874) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 875) * Data Channel Sequencer Byte Count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 876) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 877) register DCHSEQBCNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 878) address 0x094
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 879) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 880) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 881) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 882) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 883)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 884) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 885) * Data Channel Split Status 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 886) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 887) register DCHSPLTSTAT0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 888) address 0x096
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 889) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 890) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 891) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 892) field STAETERM 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 893) field SCBCERR 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 894) field SCADERR 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 895) field SCDATBUCKET 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 896) field CNTNOTCMPLT 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 897) field RXOVRUN 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 898) field RXSCEMSG 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 899) field RXSPLTRSP 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 900) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 901) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 902)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 903) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 904) * CMC Split Status 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 905) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 906) register CMCSPLTSTAT0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 907) address 0x096
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 908) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 909) modes M_CCHAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 910) field STAETERM 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 911) field SCBCERR 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 912) field SCADERR 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 913) field SCDATBUCKET 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 914) field CNTNOTCMPLT 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 915) field RXOVRUN 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 916) field RXSCEMSG 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 917) field RXSPLTRSP 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 918) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 919)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 920) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 921) * Overlay Split Status 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 922) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 923) register OVLYSPLTSTAT0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 924) address 0x096
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 925) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 926) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 927) field STAETERM 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 928) field SCBCERR 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 929) field SCADERR 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 930) field SCDATBUCKET 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 931) field CNTNOTCMPLT 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 932) field RXOVRUN 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 933) field RXSCEMSG 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 934) field RXSPLTRSP 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 935) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 936)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 937) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 938) * Data Channel Split Status 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 939) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 940) register DCHSPLTSTAT1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 941) address 0x097
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 942) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 943) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 944) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 945) field RXDATABUCKET 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 946) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 947) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 948)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 949) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 950) * CMC Split Status 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 951) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 952) register CMCSPLTSTAT1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 953) address 0x097
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 954) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 955) modes M_CCHAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 956) field RXDATABUCKET 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 957) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 958)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 959) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 960) * Overlay Split Status 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 961) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 962) register OVLYSPLTSTAT1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 963) address 0x097
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 964) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 965) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 966) field RXDATABUCKET 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 967) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 968)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 969) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 970) * S/G Receive Message 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 971) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 972) register SGRXMSG0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 973) address 0x098
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 974) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 975) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 976) field CDNUM 0xF8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 977) field CFNUM 0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 978) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 979)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 980) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 981) * S/G Receive Message 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 982) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 983) register SGRXMSG1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 984) address 0x099
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 985) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 986) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 987) field CBNUM 0xFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 988) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 989)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 990) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 991) * S/G Receive Message 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 992) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 993) register SGRXMSG2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 994) address 0x09A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 995) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 996) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 997) field MINDEX 0xFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 998) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 999)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) * S/G Receive Message 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) register SGRXMSG3 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004) address 0x09B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) field MCLASS 0x0F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011) * Slave Split Out Address 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013) register SLVSPLTOUTADR0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) address 0x098
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017) field LOWER_ADDR 0x7F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) * Slave Split Out Address 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) register SLVSPLTOUTADR1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024) address 0x099
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) field REQ_DNUM 0xF8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028) field REQ_FNUM 0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) * Slave Split Out Address 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034) register SLVSPLTOUTADR2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) address 0x09A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038) field REQ_BNUM 0xFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042) * Slave Split Out Address 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044) register SLVSPLTOUTADR3 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045) address 0x09B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) field RLXORD 020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049) field TAG_NUM 0x1F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053) * SG Sequencer Byte Count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055) register SGSEQBCNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) address 0x09C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062) * Slave Split Out Attribute 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064) register SLVSPLTOUTATTR0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065) address 0x09C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068) field LOWER_BCNT 0xFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072) * Slave Split Out Attribute 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074) register SLVSPLTOUTATTR1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) address 0x09D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078) field CMPLT_DNUM 0xF8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) field CMPLT_FNUM 0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083) * Slave Split Out Attribute 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) register SLVSPLTOUTATTR2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086) address 0x09E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) field CMPLT_BNUM 0xFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093) * S/G Split Status 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095) register SGSPLTSTAT0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) address 0x09E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) field STAETERM 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) field SCBCERR 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102) field SCADERR 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) field SCDATBUCKET 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104) field CNTNOTCMPLT 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105) field RXOVRUN 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) field RXSCEMSG 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107) field RXSPLTRSP 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112) * S/G Split Status 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) register SGSPLTSTAT1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) address 0x09F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119) field RXDATABUCKET 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) * Special Function
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126) register SFUNCT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127) address 0x09f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130) field TEST_GROUP 0xF0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131) field TEST_NUM 0x0F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136) * Data FIFO 0 PCI Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138) register DF0PCISTAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139) address 0x0A0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143) field DPE 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144) field SSE 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) field RMA 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146) field RTA 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147) field SCAAPERR 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148) field RDPERR 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149) field TWATERR 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150) field DPR 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155) * Data FIFO 1 PCI Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) register DF1PCISTAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158) address 0x0A1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161) field DPE 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162) field SSE 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163) field RMA 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164) field RTA 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) field SCAAPERR 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166) field RDPERR 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167) field TWATERR 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168) field DPR 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172) * S/G PCI Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174) register SGPCISTAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) address 0x0A2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178) field DPE 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179) field SSE 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180) field RMA 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) field RTA 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182) field SCAAPERR 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183) field RDPERR 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184) field DPR 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188) * CMC PCI Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190) register CMCPCISTAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) address 0x0A3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) field DPE 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) field SSE 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196) field RMA 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) field RTA 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) field SCAAPERR 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199) field RDPERR 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) field TWATERR 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201) field DPR 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205) * Overlay PCI Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1206) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1207) register OVLYPCISTAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1208) address 0x0A4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1209) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1210) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1211) field DPE 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1212) field SSE 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1213) field RMA 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1214) field RTA 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1215) field SCAAPERR 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1216) field RDPERR 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1217) field DPR 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1218) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1219)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1220) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1221) * PCI Status for MSI Master DMA Transfer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1222) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1223) register MSIPCISTAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1224) address 0x0A6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1225) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1226) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1227) field SSE 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1228) field RMA 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1229) field RTA 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1230) field CLRPENDMSI 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1231) field TWATERR 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1232) field DPR 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1233) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1234)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1235) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1236) * PCI Status for Target
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1237) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1238) register TARGPCISTAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1239) address 0x0A7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1240) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1241) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1242) count 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1243) field DPE 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1244) field SSE 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1245) field STA 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1246) field TWATERR 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1247) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1248) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1249)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1250) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1251) * LQ Packet In
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1252) * The last LQ Packet received
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1253) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1254) register LQIN {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1255) address 0x020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1256) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1257) size 20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1258) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1259) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1260) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1261) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1262)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1263) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1264) * SCB Type Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1265) * SCB offset for Target Mode SCB type information
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1266) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1267) register TYPEPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1268) address 0x020
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1269) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1270) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1271) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1272)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1273) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1274) * Queue Tag Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1275) * SCB offset to the Two Byte tag identifier used for target mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1276) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1277) register TAGPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1278) address 0x021
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1279) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1280) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1281) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1282)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1283) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1284) * Logical Unit Number Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1285) * SCB offset to the LSB (little endian) of the lun field.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1286) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1287) register LUNPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1288) address 0x022
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1289) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1290) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1291) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1292) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1293) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1294)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1295) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1296) * Data Length Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1297) * SCB offset for the 4 byte data length field in target mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1298) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1299) register DATALENPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1300) address 0x023
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1301) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1302) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1303) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1304)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1305) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1306) * Status Length Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1307) * SCB offset to the two byte status field in target SCBs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1308) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1309) register STATLENPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1310) address 0x024
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1311) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1312) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1313) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1314)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1315) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1316) * Command Length Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1317) * Scb offset for the CDB length field in initiator SCBs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1318) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1319) register CMDLENPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1320) address 0x025
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1321) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1322) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1323) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1324) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1325) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1326)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1327) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1328) * Task Attribute Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1329) * Scb offset for the byte field specifying the attribute byte
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1330) * to be used in command packets.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1331) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1332) register ATTRPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1333) address 0x026
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1334) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1335) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1336) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1337) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1338) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1339)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1340) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1341) * Task Management Flags Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1342) * Scb offset for the byte field specifying the attribute flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1343) * byte to be used in command packets.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1344) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1345) register FLAGPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1346) address 0x027
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1347) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1348) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1349) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1350) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1351) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1352)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1353) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1354) * Command Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1355) * Scb offset for the first byte in the CDB for initiator SCBs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1356) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1357) register CMDPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1358) address 0x028
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1359) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1360) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1361) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1362) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1363) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1364)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1365) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1366) * Queue Next Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1367) * Scb offset for the 2 byte "next scb link".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1368) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1369) register QNEXTPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1370) address 0x029
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1371) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1372) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1373) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1374) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1375) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1376)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1377) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1378) * SCSI ID Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1379) * Scb offset to the value to place in the SCSIID register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1380) * during target mode connections.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1381) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1382) register IDPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1383) address 0x02A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1384) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1385) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1386) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1387)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1388) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1389) * Command Aborted Byte Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1390) * Offset to the SCB flags field that includes the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1391) * "SCB aborted" status bit.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1392) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1393) register ABRTBYTEPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1394) address 0x02B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1395) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1396) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1397) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1398) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1399) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1400)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1401) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1402) * Command Aborted Bit Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1403) * Bit offset in the SCB flags field for "SCB aborted" status.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1404) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1405) register ABRTBITPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1406) address 0x02C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1407) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1408) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1409) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1410) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1411) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1412)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1413) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1414) * Rev B or greater.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1415) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1416) register MAXCMDBYTES {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1417) address 0x02D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1418) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1419) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1420) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1421)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1422) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1423) * Rev B or greater.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1424) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1425) register MAXCMD2RCV {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1426) address 0x02E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1427) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1428) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1429) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1430)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1431) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1432) * Rev B or greater.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1433) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1434) register SHORTTHRESH {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1435) address 0x02F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1436) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1437) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1438) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1439)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1440) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1441) * Logical Unit Number Length
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1442) * The length, in bytes, of the SCB lun field.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1443) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1444) register LUNLEN {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1445) address 0x030
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1446) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1447) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1448) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1449) mask ILUNLEN 0x0F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1450) mask TLUNLEN 0xF0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1451) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1452) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1453) const LUNLEN_SINGLE_LEVEL_LUN 0xF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1454)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1455) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1456) * CDB Limit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1457) * The size, in bytes, of the embedded CDB field in initator SCBs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1458) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1459) register CDBLIMIT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1460) address 0x031
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1461) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1462) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1463) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1464) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1465) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1466)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1467) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1468) * Maximum Commands
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1469) * The maximum number of commands to issue during a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1470) * single packetized connection.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1471) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1472) register MAXCMD {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1473) address 0x032
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1474) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1475) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1476) count 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1477) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1478) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1479)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1480) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1481) * Maximum Command Counter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1482) * The number of commands already sent during this connection
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1483) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1484) register MAXCMDCNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1485) address 0x033
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1486) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1487) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1488) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1489) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1490)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1491) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1492) * LQ Packet Reserved Bytes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1493) * The bytes to be sent in the currently reserved fileds
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1494) * of all LQ packets.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1495) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1496) register LQRSVD01 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1497) address 0x034
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1498) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1499) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1500) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1501) register LQRSVD16 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1502) address 0x035
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1503) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1504) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1505) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1506) register LQRSVD17 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1507) address 0x036
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1508) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1509) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1510) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1511)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1512) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1513) * Command Reserved 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1514) * The byte to be sent for the reserved byte 0 of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1515) * outgoing command packets.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1516) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1517) register CMDRSVD0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1518) address 0x037
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1519) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1520) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1521) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1522)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1523) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1524) * LQ Manager Control 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1525) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1526) register LQCTL0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1527) address 0x038
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1528) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1529) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1530) field LQITARGCLT 0xC0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1531) field LQIINITGCLT 0x30
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1532) field LQ0TARGCLT 0x0C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1533) field LQ0INITGCLT 0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1534) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1535)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1536) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1537) * LQ Manager Control 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1538) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1539) register LQCTL1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1540) address 0x038
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1541) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1542) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1543) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1544) field PCI2PCI 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1545) field SINGLECMD 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1546) field ABORTPENDING 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1547) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1548) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1549)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1550) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1551) * LQ Manager Control 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1552) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1553) register LQCTL2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1554) address 0x039
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1555) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1556) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1557) count 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1558) field LQIRETRY 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1559) field LQICONTINUE 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1560) field LQITOIDLE 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1561) field LQIPAUSE 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1562) field LQORETRY 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1563) field LQOCONTINUE 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1564) field LQOTOIDLE 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1565) field LQOPAUSE 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1566) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1567) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1568)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1569) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1570) * SCSI RAM BIST0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1571) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1572) register SCSBIST0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1573) address 0x039
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1574) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1575) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1576) field GSBISTERR 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1577) field GSBISTDONE 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1578) field GSBISTRUN 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1579) field OSBISTERR 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1580) field OSBISTDONE 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1581) field OSBISTRUN 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1582) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1583)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1584) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1585) * SCSI Sequence Control0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1586) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1587) register SCSISEQ0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1588) address 0x03A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1589) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1590) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1591) field TEMODEO 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1592) field ENSELO 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1593) field ENARBO 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1594) field FORCEBUSFREE 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1595) field SCSIRSTO 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1596) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1597)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1598) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1599) * SCSI RAM BIST 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1600) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1601) register SCSBIST1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1602) address 0x03A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1603) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1604) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1605) field NTBISTERR 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1606) field NTBISTDONE 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1607) field NTBISTRUN 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1608) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1609)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1610) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1611) * SCSI Sequence Control 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1612) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1613) register SCSISEQ1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1614) address 0x03B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1615) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1616) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1617) count 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1618) field MANUALCTL 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1619) field ENSELI 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1620) field ENRSELI 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1621) field MANUALP 0x0C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1622) field ENAUTOATNP 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1623) field ALTSTIM 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1624) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1625)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1626) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1627) * SCSI Transfer Control 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1628) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1629) register SXFRCTL0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1630) address 0x03C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1631) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1632) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1633) field DFON 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1634) field DFPEXP 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1635) field BIOSCANCELEN 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1636) field SPIOEN 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1637) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1638) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1639)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1640) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1641) * SCSI Transfer Control 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1642) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1643) register SXFRCTL1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1644) address 0x03D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1645) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1646) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1647) field BITBUCKET 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1648) field ENSACHK 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1649) field ENSPCHK 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1650) field STIMESEL 0x18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1651) field ENSTIMER 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1652) field ACTNEGEN 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1653) field STPWEN 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1654) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1655) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1656)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1657) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1658) * SCSI Transfer Control 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1659) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1660) register SXFRCTL2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1661) address 0x03E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1662) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1663) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1664) field AUTORSTDIS 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1665) field CMDDMAEN 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1666) field ASU 0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1667) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1668)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1669) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1670) * SCSI Bus Initiator IDs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1671) * Bitmask of observed initiators on the bus.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1672) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1673) register BUSINITID {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1674) address 0x03C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1675) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1676) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1677) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1678) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1679)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1680) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1681) * Data Length Counters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1682) * Packet byte counter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1683) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1684) register DLCOUNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1685) address 0x03C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1686) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1687) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1688) size 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1689) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1690)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1691) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1692) * Data FIFO Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1693) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1694) register DFFSTAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1695) address 0x03F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1696) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1697) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1698) field FIFO1FREE 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1699) field FIFO0FREE 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1700) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1701) * On the B, this enum only works
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1702) * in the read direction. For writes,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1703) * you must use the B version of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1704) * CURRFIFO_0 definition which is defined
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1705) * as a constant outside of this register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1706) * definition to avoid confusing the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1707) * register pretty printing code.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1708) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1709) enum CURRFIFO 0x03 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1710) CURRFIFO_0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1711) CURRFIFO_1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1712) CURRFIFO_NONE 0x3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1713) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1714) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1715)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1716) const B_CURRFIFO_0 0x2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1717)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1718) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1719) * SCSI Bus Target IDs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1720) * Bitmask of observed targets on the bus.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1721) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1722) register BUSTARGID {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1723) address 0x03E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1724) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1725) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1726) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1727) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1728)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1729) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1730) * SCSI Control Signal Out
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1731) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1732) register SCSISIGO {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1733) address 0x040
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1734) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1735) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1736) field CDO 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1737) field IOO 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1738) field MSGO 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1739) field ATNO 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1740) field SELO 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1741) field BSYO 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1742) field REQO 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1743) field ACKO 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1744) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1745) * Possible phases to write into SCSISIG0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1746) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1747) enum PHASE_MASK CDO|IOO|MSGO {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1748) P_DATAOUT 0x0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1749) P_DATAIN IOO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1750) P_DATAOUT_DT P_DATAOUT|MSGO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1751) P_DATAIN_DT P_DATAIN|MSGO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1752) P_COMMAND CDO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1753) P_MESGOUT CDO|MSGO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1754) P_STATUS CDO|IOO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1755) P_MESGIN CDO|IOO|MSGO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1756) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1757) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1758) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1759)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1760) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1761) * SCSI Control Signal In
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1762) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1763) register SCSISIGI {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1764) address 0x041
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1765) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1766) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1767) field CDI 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1768) field IOI 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1769) field MSGI 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1770) field ATNI 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1771) field SELI 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1772) field BSYI 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1773) field REQI 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1774) field ACKI 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1775) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1776) * Possible phases in SCSISIGI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1777) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1778) enum PHASE_MASK CDO|IOO|MSGO {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1779) P_DATAOUT 0x0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1780) P_DATAIN IOO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1781) P_DATAOUT_DT P_DATAOUT|MSGO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1782) P_DATAIN_DT P_DATAIN|MSGO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1783) P_COMMAND CDO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1784) P_MESGOUT CDO|MSGO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1785) P_STATUS CDO|IOO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1786) P_MESGIN CDO|IOO|MSGO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1787) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1788) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1789)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1790) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1791) * Multiple Target IDs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1792) * Bitmask of ids to respond as a target.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1793) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1794) register MULTARGID {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1795) address 0x040
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1796) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1797) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1798) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1799) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1800) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1801) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1802)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1803) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1804) * SCSI Phase
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1805) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1806) register SCSIPHASE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1807) address 0x042
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1808) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1809) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1810) field STATUS_PHASE 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1811) field COMMAND_PHASE 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1812) field MSG_IN_PHASE 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1813) field MSG_OUT_PHASE 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1814) field DATA_PHASE_MASK 0x03 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1815) DATA_OUT_PHASE 0x01,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1816) DATA_IN_PHASE 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1817) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1818) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1819)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1820) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1821) * SCSI Data 0 Image
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1822) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1823) register SCSIDAT0_IMG {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1824) address 0x043
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1825) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1826) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1827) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1828)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1829) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1830) * SCSI Latched Data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1831) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1832) register SCSIDAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1833) address 0x044
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1834) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1835) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1836) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1837) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1838) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1839)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1840) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1841) * SCSI Data Bus
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1842) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1843) register SCSIBUS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1844) address 0x046
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1845) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1846) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1847) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1848) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1849)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1850) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1851) * Target ID In
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1852) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1853) register TARGIDIN {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1854) address 0x048
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1855) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1856) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1857) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1858) field CLKOUT 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1859) field TARGID 0x0F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1860) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1861) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1862)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1863) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1864) * Selection/Reselection ID
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1865) * Upper four bits are the device id. The ONEBIT is set when the re/selecting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1866) * device did not set its own ID.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1867) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1868) register SELID {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1869) address 0x049
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1870) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1871) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1872) field SELID_MASK 0xf0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1873) field ONEBIT 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1874) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1875)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1876) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1877) * SCSI Block Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1878) * Controls Bus type and channel selection. SELWIDE allows for the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1879) * coexistence of 8bit and 16bit devices on a wide bus.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1880) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1881) register SBLKCTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1882) address 0x04A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1883) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1884) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1885) field DIAGLEDEN 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1886) field DIAGLEDON 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1887) field ENAB40 0x08 /* LVD transceiver active */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1888) field ENAB20 0x04 /* SE/HVD transceiver active */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1889) field SELWIDE 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1890) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1891) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1892)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1893) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1894) * Option Mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1895) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1896) register OPTIONMODE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1897) address 0x04A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1898) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1899) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1900) count 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1901) field BIOSCANCTL 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1902) field AUTOACKEN 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1903) field BIASCANCTL 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1904) field BUSFREEREV 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1905) field ENDGFORMCHK 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1906) field AUTO_MSGOUT_DE 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1907) mask OPTIONMODE_DEFAULTS AUTO_MSGOUT_DE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1908) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1909) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1910)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1911) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1912) * SCSI Status 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1913) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1914) register SSTAT0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1915) address 0x04B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1916) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1917) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1918) field TARGET 0x80 /* Board acting as target */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1919) field SELDO 0x40 /* Selection Done */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1920) field SELDI 0x20 /* Board has been selected */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1921) field SELINGO 0x10 /* Selection In Progress */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1922) field IOERR 0x08 /* LVD Tranceiver mode changed */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1923) field OVERRUN 0x04 /* SCSI Offset overrun detected */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1924) field SPIORDY 0x02 /* SCSI PIO Ready */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1925) field ARBDO 0x01 /* Arbitration Done Out */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1926) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1927)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1928) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1929) * Clear SCSI Interrupt 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1930) * Writing a 1 to a bit clears the associated SCSI Interrupt in SSTAT0.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1931) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1932) register CLRSINT0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1933) address 0x04B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1934) access_mode WO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1935) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1936) field CLRSELDO 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1937) field CLRSELDI 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1938) field CLRSELINGO 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1939) field CLRIOERR 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1940) field CLROVERRUN 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1941) field CLRSPIORDY 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1942) field CLRARBDO 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1943) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1944) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1945)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1946) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1947) * SCSI Interrupt Mode 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1948) * Setting any bit will enable the corresponding function
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1949) * in SIMODE0 to interrupt via the IRQ pin.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1950) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1951) register SIMODE0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1952) address 0x04B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1953) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1954) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1955) count 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1956) field ENSELDO 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1957) field ENSELDI 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1958) field ENSELINGO 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1959) field ENIOERR 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1960) field ENOVERRUN 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1961) field ENSPIORDY 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1962) field ENARBDO 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1963) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1964)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1965) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1966) * SCSI Status 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1967) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1968) register SSTAT1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1969) address 0x04C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1970) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1971) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1972) field SELTO 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1973) field ATNTARG 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1974) field SCSIRSTI 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1975) field PHASEMIS 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1976) field BUSFREE 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1977) field SCSIPERR 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1978) field STRB2FAST 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1979) field REQINIT 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1980) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1981)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1982) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1983) * Clear SCSI Interrupt 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1984) * Writing a 1 to a bit clears the associated SCSI Interrupt in SSTAT1.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1985) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1986) register CLRSINT1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1987) address 0x04C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1988) access_mode WO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1989) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1990) field CLRSELTIMEO 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1991) field CLRATNO 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1992) field CLRSCSIRSTI 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1993) field CLRBUSFREE 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1994) field CLRSCSIPERR 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1995) field CLRSTRB2FAST 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1996) field CLRREQINIT 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1997) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1998) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1999)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2000) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2001) * SCSI Status 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2002) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2003) register SSTAT2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2004) address 0x04d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2005) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2006) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2007) field BUSFREETIME 0xc0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2008) BUSFREE_LQO 0x40,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2009) BUSFREE_DFF0 0x80,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2010) BUSFREE_DFF1 0xC0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2011) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2012) field NONPACKREQ 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2013) field EXP_ACTIVE 0x10 /* SCSI Expander Active */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2014) field BSYX 0x08 /* Busy Expander */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2015) field WIDE_RES 0x04 /* Modes 0 and 1 only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2016) field SDONE 0x02 /* Modes 0 and 1 only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2017) field DMADONE 0x01 /* Modes 0 and 1 only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2018) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2019)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2020) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2021) * Clear SCSI Interrupt 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2022) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2023) register CLRSINT2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2024) address 0x04D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2025) access_mode WO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2026) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2027) field CLRNONPACKREQ 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2028) field CLRWIDE_RES 0x04 /* Modes 0 and 1 only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2029) field CLRSDONE 0x02 /* Modes 0 and 1 only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2030) field CLRDMADONE 0x01 /* Modes 0 and 1 only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2031) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2032) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2033)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2034) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2035) * SCSI Interrupt Mode 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2036) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2037) register SIMODE2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2038) address 0x04D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2039) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2040) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2041) field ENWIDE_RES 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2042) field ENSDONE 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2043) field ENDMADONE 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2044) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2045)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2046) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2047) * Physical Error Diagnosis
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2048) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2049) register PERRDIAG {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2050) address 0x04E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2051) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2052) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2053) count 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2054) field HIZERO 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2055) field HIPERR 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2056) field PREVPHASE 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2057) field PARITYERR 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2058) field AIPERR 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2059) field CRCERR 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2060) field DGFORMERR 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2061) field DTERR 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2062) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2063)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2064) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2065) * LQI Manager Current State
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2066) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2067) register LQISTATE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2068) address 0x04E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2069) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2070) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2071) count 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2072) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2073) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2074)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2075) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2076) * SCSI Offset Count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2077) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2078) register SOFFCNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2079) address 0x04F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2080) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2081) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2082) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2083) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2084)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2085) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2086) * LQO Manager Current State
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2087) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2088) register LQOSTATE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2089) address 0x04F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2090) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2091) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2092) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2093) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2094) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2095)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2096) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2097) * LQI Manager Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2098) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2099) register LQISTAT0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2100) address 0x050
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2101) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2102) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2103) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2104) field LQIATNQAS 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2105) field LQICRCT1 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2106) field LQICRCT2 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2107) field LQIBADLQT 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2108) field LQIATNLQ 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2109) field LQIATNCMD 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2110) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2112) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2113) * Clear LQI Interrupts 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2114) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2115) register CLRLQIINT0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2116) address 0x050
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2117) access_mode WO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2118) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2119) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2120) field CLRLQIATNQAS 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2121) field CLRLQICRCT1 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2122) field CLRLQICRCT2 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2123) field CLRLQIBADLQT 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2124) field CLRLQIATNLQ 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2125) field CLRLQIATNCMD 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2126) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2127) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2129) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2130) * LQI Manager Interrupt Mode 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2131) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2132) register LQIMODE0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2133) address 0x050
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2134) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2135) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2136) count 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2137) field ENLQIATNQASK 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2138) field ENLQICRCT1 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2139) field ENLQICRCT2 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2140) field ENLQIBADLQT 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2141) field ENLQIATNLQ 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2142) field ENLQIATNCMD 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2143) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2144) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2145)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2146) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2147) * LQI Manager Status 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2148) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2149) register LQISTAT1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2150) address 0x051
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2151) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2152) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2153) count 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2154) field LQIPHASE_LQ 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2155) field LQIPHASE_NLQ 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2156) field LQIABORT 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2157) field LQICRCI_LQ 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2158) field LQICRCI_NLQ 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2159) field LQIBADLQI 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2160) field LQIOVERI_LQ 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2161) field LQIOVERI_NLQ 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2162) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2163)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2164) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2165) * Clear LQI Manager Interrupts1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2166) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2167) register CLRLQIINT1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2168) address 0x051
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2169) access_mode WO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2170) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2171) count 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2172) field CLRLQIPHASE_LQ 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2173) field CLRLQIPHASE_NLQ 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2174) field CLRLIQABORT 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2175) field CLRLQICRCI_LQ 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2176) field CLRLQICRCI_NLQ 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2177) field CLRLQIBADLQI 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2178) field CLRLQIOVERI_LQ 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2179) field CLRLQIOVERI_NLQ 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2180) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2181) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2182)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2183) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2184) * LQI Manager Interrupt Mode 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2185) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2186) register LQIMODE1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2187) address 0x051
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2188) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2189) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2190) count 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2191) field ENLQIPHASE_LQ 0x80 /* LQIPHASE1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2192) field ENLQIPHASE_NLQ 0x40 /* LQIPHASE2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2193) field ENLIQABORT 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2194) field ENLQICRCI_LQ 0x10 /* LQICRCI1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2195) field ENLQICRCI_NLQ 0x08 /* LQICRCI2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2196) field ENLQIBADLQI 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2197) field ENLQIOVERI_LQ 0x02 /* LQIOVERI1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2198) field ENLQIOVERI_NLQ 0x01 /* LQIOVERI2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2199) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2200) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2201)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2202) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2203) * LQI Manager Status 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2204) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2205) register LQISTAT2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2206) address 0x052
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2207) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2208) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2209) field PACKETIZED 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2210) field LQIPHASE_OUTPKT 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2211) field LQIWORKONLQ 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2212) field LQIWAITFIFO 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2213) field LQISTOPPKT 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2214) field LQISTOPLQ 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2215) field LQISTOPCMD 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2216) field LQIGSAVAIL 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2217) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2218)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2219) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2220) * SCSI Status 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2221) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2222) register SSTAT3 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2223) address 0x053
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2224) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2225) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2226) count 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2227) field NTRAMPERR 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2228) field OSRAMPERR 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2229) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2230)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2231) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2232) * Clear SCSI Status 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2233) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2234) register CLRSINT3 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2235) address 0x053
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2236) access_mode WO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2237) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2238) count 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2239) field CLRNTRAMPERR 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2240) field CLROSRAMPERR 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2241) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2242) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2243)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2244) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2245) * SCSI Interrupt Mode 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2246) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2247) register SIMODE3 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2248) address 0x053
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2249) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2250) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2251) count 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2252) field ENNTRAMPERR 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2253) field ENOSRAMPERR 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2254) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2255) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2256)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2257) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2258) * LQO Manager Status 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2259) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2260) register LQOSTAT0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2261) address 0x054
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2262) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2263) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2264) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2265) field LQOTARGSCBPERR 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2266) field LQOSTOPT2 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2267) field LQOATNLQ 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2268) field LQOATNPKT 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2269) field LQOTCRC 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2270) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2271)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2272) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2273) * Clear LQO Manager interrupt 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2274) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2275) register CLRLQOINT0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2276) address 0x054
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2277) access_mode WO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2278) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2279) count 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2280) field CLRLQOTARGSCBPERR 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2281) field CLRLQOSTOPT2 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2282) field CLRLQOATNLQ 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2283) field CLRLQOATNPKT 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2284) field CLRLQOTCRC 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2285) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2286) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2287)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2288) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2289) * LQO Manager Interrupt Mode 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2290) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2291) register LQOMODE0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2292) address 0x054
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2293) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2294) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2295) count 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2296) field ENLQOTARGSCBPERR 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2297) field ENLQOSTOPT2 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2298) field ENLQOATNLQ 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2299) field ENLQOATNPKT 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2300) field ENLQOTCRC 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2301) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2302) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2303)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2304) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2305) * LQO Manager Status 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2306) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2307) register LQOSTAT1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2308) address 0x055
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2309) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2310) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2311) field LQOINITSCBPERR 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2312) field LQOSTOPI2 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2313) field LQOBADQAS 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2314) field LQOBUSFREE 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2315) field LQOPHACHGINPKT 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2316) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2317)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2318) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2319) * Clear LOQ Interrupt 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2320) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2321) register CLRLQOINT1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2322) address 0x055
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2323) access_mode WO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2324) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2325) count 7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2326) field CLRLQOINITSCBPERR 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2327) field CLRLQOSTOPI2 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2328) field CLRLQOBADQAS 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2329) field CLRLQOBUSFREE 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2330) field CLRLQOPHACHGINPKT 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2331) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2332) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2333)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2334) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2335) * LQO Manager Interrupt Mode 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2336) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2337) register LQOMODE1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2338) address 0x055
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2339) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2340) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2341) count 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2342) field ENLQOINITSCBPERR 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2343) field ENLQOSTOPI2 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2344) field ENLQOBADQAS 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2345) field ENLQOBUSFREE 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2346) field ENLQOPHACHGINPKT 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2347) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2348) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2349)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2350) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2351) * LQO Manager Status 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2352) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2353) register LQOSTAT2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2354) address 0x056
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2355) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2356) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2357) field LQOPKT 0xE0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2358) field LQOWAITFIFO 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2359) field LQOPHACHGOUTPKT 0x02 /* outside of packet boundaries. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2360) field LQOSTOP0 0x01 /* Stopped after sending all packets */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2361) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2362)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2363) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2364) * Output Synchronizer Space Count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2365) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2366) register OS_SPACE_CNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2367) address 0x056
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2368) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2369) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2370) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2371) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2372) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2373)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2374) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2375) * SCSI Interrupt Mode 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2376) * Setting any bit will enable the corresponding function
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2377) * in SIMODE1 to interrupt via the IRQ pin.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2378) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2379) register SIMODE1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2380) address 0x057
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2381) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2382) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2383) field ENSELTIMO 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2384) field ENATNTARG 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2385) field ENSCSIRST 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2386) field ENPHASEMIS 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2387) field ENBUSFREE 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2388) field ENSCSIPERR 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2389) field ENSTRB2FAST 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2390) field ENREQINIT 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2391) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2392)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2393) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2394) * Good Status FIFO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2395) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2396) register GSFIFO {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2397) address 0x058
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2398) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2399) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2400) modes M_DFF0, M_DFF1, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2401) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2402) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2403)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2404) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2405) * Data FIFO SCSI Transfer Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2406) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2407) register DFFSXFRCTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2408) address 0x05A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2409) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2410) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2411) field DFFBITBUCKET 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2412) field CLRSHCNT 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2413) field CLRCHN 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2414) field RSTCHN 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2415) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2416)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2417) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2418) * Next SCSI Control Block
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2419) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2420) register NEXTSCB {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2421) address 0x05A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2422) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2423) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2424) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2425) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2426) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2427)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2428) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2429) * LQO SCSI Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2430) * (Rev B only.)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2431) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2432) register LQOSCSCTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2433) address 0x05A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2434) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2435) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2436) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2437) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2438) field LQOH2A_VERSION 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2439) field LQOBUSETDLY 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2440) field LQONOHOLDLACK 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2441) field LQONOCHKOVER 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2442) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2443) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2444)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2445) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2446) * SEQ Interrupts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2447) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2448) register SEQINTSRC {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2449) address 0x05B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2450) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2451) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2452) field CTXTDONE 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2453) field SAVEPTRS 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2454) field CFG4DATA 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2455) field CFG4ISTAT 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2456) field CFG4TSTAT 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2457) field CFG4ICMD 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2458) field CFG4TCMD 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2459) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2460)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2461) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2462) * Clear Arp Interrupts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2463) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2464) register CLRSEQINTSRC {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2465) address 0x05B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2466) access_mode WO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2467) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2468) field CLRCTXTDONE 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2469) field CLRSAVEPTRS 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2470) field CLRCFG4DATA 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2471) field CLRCFG4ISTAT 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2472) field CLRCFG4TSTAT 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2473) field CLRCFG4ICMD 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2474) field CLRCFG4TCMD 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2475) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2476) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2477)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2478) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2479) * SEQ Interrupt Enabled (Shared)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2480) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2481) register SEQIMODE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2482) address 0x05C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2483) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2484) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2485) field ENCTXTDONE 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2486) field ENSAVEPTRS 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2487) field ENCFG4DATA 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2488) field ENCFG4ISTAT 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2489) field ENCFG4TSTAT 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2490) field ENCFG4ICMD 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2491) field ENCFG4TCMD 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2492) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2493)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2494) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2495) * Current SCSI Control Block
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2496) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2497) register CURRSCB {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2498) address 0x05C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2499) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2500) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2501) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2502) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2503) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2504)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2505) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2506) * Data FIFO Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2507) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2508) register MDFFSTAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2509) address 0x05D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2510) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2511) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2512) field SHCNTNEGATIVE 0x40 /* Rev B or higher */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2513) field SHCNTMINUS1 0x20 /* Rev B or higher */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2514) field LASTSDONE 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2515) field SHVALID 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2516) field DLZERO 0x04 /* FIFO data ends on packet boundary. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2517) field DATAINFIFO 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2518) field FIFOFREE 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2519) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2520)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2521) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2522) * CRC Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2523) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2524) register CRCCONTROL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2525) address 0x05d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2526) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2527) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2528) field CRCVALCHKEN 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2529) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2530)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2531) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2532) * SCSI Test Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2533) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2534) register SCSITEST {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2535) address 0x05E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2536) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2537) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2538) field CNTRTEST 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2539) field SEL_TXPLL_DEBUG 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2540) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2541)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2542) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2543) * Data FIFO Queue Tag
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2544) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2545) register DFFTAG {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2546) address 0x05E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2547) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2548) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2549) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2550) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2551)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2552) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2553) * Last SCSI Control Block
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2554) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2555) register LASTSCB {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2556) address 0x05E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2557) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2558) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2559) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2560) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2561) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2562)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2563) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2564) * SCSI I/O Cell Power-down Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2565) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2566) register IOPDNCTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2567) address 0x05F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2568) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2569) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2570) field DISABLE_OE 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2571) field PDN_IDIST 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2572) field PDN_DIFFSENSE 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2573) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2574)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2575) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2576) * Shadow Host Address.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2577) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2578) register SHADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2579) address 0x060
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2580) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2581) size 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2582) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2583) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2584) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2585)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2586) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2587) * Data Group CRC Interval.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2588) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2589) register DGRPCRCI {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2590) address 0x060
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2591) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2592) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2593) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2594) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2595)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2596) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2597) * Data Transfer Negotiation Address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2598) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2599) register NEGOADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2600) address 0x060
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2601) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2602) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2603) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2604) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2605)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2606) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2607) * Data Transfer Negotiation Data - Period Byte
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2608) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2609) register NEGPERIOD {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2610) address 0x061
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2611) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2612) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2613) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2614) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2615) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2616)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2617) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2618) * Packetized CRC Interval
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2619) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2620) register PACKCRCI {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2621) address 0x062
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2622) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2623) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2624) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2625) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2626)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2627) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2628) * Data Transfer Negotiation Data - Offset Byte
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2629) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2630) register NEGOFFSET {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2631) address 0x062
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2632) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2633) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2634) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2635) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2636) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2637)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2638) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2639) * Data Transfer Negotiation Data - PPR Options
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2640) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2641) register NEGPPROPTS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2642) address 0x063
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2643) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2644) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2645) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2646) field PPROPT_PACE 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2647) field PPROPT_QAS 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2648) field PPROPT_DT 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2649) field PPROPT_IUT 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2650) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2651) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2652)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2653) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2654) * Data Transfer Negotiation Data - Connection Options
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2655) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2656) register NEGCONOPTS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2657) address 0x064
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2658) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2659) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2660) field ENSNAPSHOT 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2661) field RTI_WRTDIS 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2662) field RTI_OVRDTRN 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2663) field ENSLOWCRC 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2664) field ENAUTOATNI 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2665) field ENAUTOATNO 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2666) field WIDEXFER 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2667) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2668) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2669)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2670) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2671) * Negotiation Table Annex Column Index.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2672) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2673) register ANNEXCOL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2674) address 0x065
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2675) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2676) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2677) count 7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2678) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2679) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2680)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2681) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2682) * SCSI Check
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2683) * (Rev. B only)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2684) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2685) register SCSCHKN {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2686) address 0x066
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2687) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2688) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2689) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2690) field BIDICHKDIS 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2691) field STSELSKIDDIS 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2692) field CURRFIFODEF 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2693) field WIDERESEN 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2694) field SDONEMSKDIS 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2695) field DFFACTCLR 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2696) field SHVALIDSTDIS 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2697) field LSTSGCLRDIS 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2698) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2699) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2700)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2701) const AHD_ANNEXCOL_PER_DEV0 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2702) const AHD_NUM_PER_DEV_ANNEXCOLS 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2703) const AHD_ANNEXCOL_PRECOMP_SLEW 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2704) const AHD_PRECOMP_MASK 0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2705) const AHD_PRECOMP_SHIFT 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2706) const AHD_PRECOMP_CUTBACK_17 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2707) const AHD_PRECOMP_CUTBACK_29 0x06
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2708) const AHD_PRECOMP_CUTBACK_37 0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2709) const AHD_SLEWRATE_MASK 0x78
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2710) const AHD_SLEWRATE_SHIFT 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2711) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2712) * Rev A has only a single bit (high bit of field) of slew adjustment.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2713) * Rev B has 4 bits. The current default happens to be the same for both.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2714) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2715) const AHD_SLEWRATE_DEF_REVA 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2716) const AHD_SLEWRATE_DEF_REVB 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2717)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2718) /* Rev A does not have any amplitude setting. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2719) const AHD_ANNEXCOL_AMPLITUDE 6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2720) const AHD_AMPLITUDE_MASK 0x7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2721) const AHD_AMPLITUDE_SHIFT 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2722) const AHD_AMPLITUDE_DEF 0x7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2723)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2724) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2725) * Negotiation Table Annex Data Port.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2726) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2727) register ANNEXDAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2728) address 0x066
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2729) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2730) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2731) count 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2732) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2733) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2734)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2735) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2736) * Initiator's Own Id.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2737) * The SCSI ID to use for Selection Out and seen during a reselection..
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2738) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2739) register IOWNID {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2740) address 0x067
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2741) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2742) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2743) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2744) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2745)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2746) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2747) * 960MHz Phase-Locked Loop Control 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2748) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2749) register PLL960CTL0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2750) address 0x068
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2751) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2752) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2753) field PLL_VCOSEL 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2754) field PLL_PWDN 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2755) field PLL_NS 0x30
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2756) field PLL_ENLUD 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2757) field PLL_ENLPF 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2758) field PLL_DLPF 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2759) field PLL_ENFBM 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2760) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2761)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2762) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2763) * Target Own Id
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2764) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2765) register TOWNID {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2766) address 0x069
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2767) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2768) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2769) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2770) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2771) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2772)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2773) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2774) * 960MHz Phase-Locked Loop Control 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2775) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2776) register PLL960CTL1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2777) address 0x069
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2778) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2779) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2780) field PLL_CNTEN 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2781) field PLL_CNTCLR 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2782) field PLL_RST 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2783) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2784)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2785) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2786) * Expander Signature
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2787) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2788) register XSIG {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2789) address 0x06A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2790) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2791) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2792) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2793)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2794) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2795) * Shadow Byte Count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2796) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2797) register SHCNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2798) address 0x068
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2799) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2800) size 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2801) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2802) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2803) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2804)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2805) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2806) * Selection Out ID
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2807) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2808) register SELOID {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2809) address 0x06B
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2810) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2811) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2812) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2813)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2814) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2815) * 960-MHz Phase-Locked Loop Test Count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2816) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2817) register PLL960CNT0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2818) address 0x06A
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2819) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2820) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2821) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2822) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2823)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2824) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2825) * 400-MHz Phase-Locked Loop Control 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2826) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2827) register PLL400CTL0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2828) address 0x06C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2829) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2830) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2831) field PLL_VCOSEL 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2832) field PLL_PWDN 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2833) field PLL_NS 0x30
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2834) field PLL_ENLUD 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2835) field PLL_ENLPF 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2836) field PLL_DLPF 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2837) field PLL_ENFBM 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2838) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2839)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2840) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2841) * Arbitration Fairness
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2842) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2843) register FAIRNESS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2844) address 0x06C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2845) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2846) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2847) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2848) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2849)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2850) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2851) * 400-MHz Phase-Locked Loop Control 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2852) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2853) register PLL400CTL1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2854) address 0x06D
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2855) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2856) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2857) field PLL_CNTEN 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2858) field PLL_CNTCLR 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2859) field PLL_RST 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2860) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2861)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2862) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2863) * Arbitration Unfairness
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2864) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2865) register UNFAIRNESS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2866) address 0x06E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2867) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2868) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2869) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2870) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2871)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2872) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2873) * 400-MHz Phase-Locked Loop Test Count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2874) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2875) register PLL400CNT0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2876) address 0x06E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2877) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2878) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2879) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2880) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2881)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2882) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2883) * SCB Page Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2884) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2885) register SCBPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2886) address 0x0A8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2887) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2888) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2889) modes M_DFF0, M_DFF1, M_CCHAN, M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2890) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2891) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2892)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2893) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2894) * CMC SCB Array Count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2895) * Number of bytes to transfer between CMC SCB memory and SCBRAM.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2896) * Transfers must be 8byte aligned and sized.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2897) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2898) register CCSCBACNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2899) address 0x0AB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2900) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2901) modes M_CCHAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2902) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2903)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2904) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2905) * SCB Autopointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2906) * SCB-Next Address Snooping logic. When an SCB is transferred to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2907) * the card, the next SCB address to be used by the CMC array can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2908) * be autoloaded from that transfer.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2909) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2910) register SCBAUTOPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2911) address 0x0AB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2912) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2913) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2914) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2915) field AUSCBPTR_EN 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2916) field SCBPTR_ADDR 0x38
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2917) field SCBPTR_OFF 0x07
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2918) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2919) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2920)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2921) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2922) * CMC SG Ram Address Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2923) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2924) register CCSGADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2925) address 0x0AC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2926) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2927) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2928) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2929) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2930)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2931) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2932) * CMC SCB RAM Address Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2933) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2934) register CCSCBADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2935) address 0x0AC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2936) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2937) modes M_CCHAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2938) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2939) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2940)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2941) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2942) * CMC SCB Ram Back-up Address Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2943) * Indicates the true stop location of transfers halted prior
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2944) * to SCBHCNT going to 0.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2945) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2946) register CCSCBADR_BK {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2947) address 0x0AC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2948) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2949) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2950) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2951)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2952) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2953) * CMC SG Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2954) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2955) register CCSGCTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2956) address 0x0AD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2957) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2958) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2959) field CCSGDONE 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2960) field SG_CACHE_AVAIL 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2961) field CCSGENACK 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2962) mask CCSGEN 0x0C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2963) field SG_FETCH_REQ 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2964) field CCSGRESET 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2965) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2966)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2967) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2968) * CMD SCB Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2969) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2970) register CCSCBCTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2971) address 0x0AD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2972) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2973) modes M_CCHAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2974) field CCSCBDONE 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2975) field ARRDONE 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2976) field CCARREN 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2977) field CCSCBEN 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2978) field CCSCBDIR 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2979) field CCSCBRESET 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2980) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2981)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2982) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2983) * CMC Ram BIST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2984) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2985) register CMC_RAMBIST {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2986) address 0x0AD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2987) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2988) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2989) field SG_ELEMENT_SIZE 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2990) field SCBRAMBIST_FAIL 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2991) field SG_BIST_FAIL 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2992) field SG_BIST_EN 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2993) field CMC_BUFFER_BIST_FAIL 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2994) field CMC_BUFFER_BIST_EN 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2995) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2996)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2997) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2998) * CMC SG RAM Data Port
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2999) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3000) register CCSGRAM {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3001) address 0x0B0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3002) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3003) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3004) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3005) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3006)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3007) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3008) * CMC SCB RAM Data Port
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3009) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3010) register CCSCBRAM {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3011) address 0x0B0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3012) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3013) modes M_CCHAN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3014) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3015) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3016)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3017) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3018) * Flex DMA Address.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3019) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3020) register FLEXADR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3021) address 0x0B0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3022) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3023) size 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3024) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3025) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3026)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3027) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3028) * Flex DMA Byte Count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3029) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3030) register FLEXCNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3031) address 0x0B3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3032) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3033) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3034) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3035) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3036)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3037) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3038) * Flex DMA Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3039) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3040) register FLEXDMASTAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3041) address 0x0B5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3042) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3043) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3044) field FLEXDMAERR 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3045) field FLEXDMADONE 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3046) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3047)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3048) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3049) * Flex DMA Data Port
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3050) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3051) register FLEXDATA {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3052) address 0x0B6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3053) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3054) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3055) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3056)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3057) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3058) * Board Data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3059) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3060) register BRDDAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3061) address 0x0B8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3062) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3063) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3064) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3065) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3066) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3067)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3068) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3069) * Board Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3070) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3071) register BRDCTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3072) address 0x0B9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3073) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3074) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3075) count 7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3076) field FLXARBACK 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3077) field FLXARBREQ 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3078) field BRDADDR 0x38
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3079) field BRDEN 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3080) field BRDRW 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3081) field BRDSTB 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3082) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3083) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3084)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3085) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3086) * Serial EEPROM Address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3087) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3088) register SEEADR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3089) address 0x0BA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3090) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3091) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3092) count 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3093) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3094) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3095)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3096) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3097) * Serial EEPROM Data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3098) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3099) register SEEDAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3100) address 0x0BC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3101) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3102) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3103) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3104) count 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3105) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3106) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3107)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3108) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3109) * Serial EEPROM Status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3110) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3111) register SEESTAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3112) address 0x0BE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3113) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3114) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3115) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3116) field INIT_DONE 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3117) field SEEOPCODE 0x70
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3118) field LDALTID_L 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3119) field SEEARBACK 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3120) field SEEBUSY 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3121) field SEESTART 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3122) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3123) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3124)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3125) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3126) * Serial EEPROM Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3127) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3128) register SEECTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3129) address 0x0BE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3130) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3131) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3132) count 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3133) field SEEOPCODE 0x70 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3134) SEEOP_ERASE 0x70,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3135) SEEOP_READ 0x60,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3136) SEEOP_WRITE 0x50,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3137) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3138) * The following four commands use special
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3139) * addresses for differentiation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3140) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3141) SEEOP_ERAL 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3142) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3143) mask SEEOP_EWEN 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3144) mask SEEOP_WALL 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3145) mask SEEOP_EWDS 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3146) field SEERST 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3147) field SEESTART 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3148) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3149) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3150)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3151) const SEEOP_ERAL_ADDR 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3152) const SEEOP_EWEN_ADDR 0xC0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3153) const SEEOP_WRAL_ADDR 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3154) const SEEOP_EWDS_ADDR 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3155)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3156) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3157) * SCB Counter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3158) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3159) register SCBCNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3160) address 0x0BF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3161) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3162) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3163) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3164) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3165)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3166) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3167) * Data FIFO Write Address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3168) * Pointer to the next QWD location to be written to the data FIFO.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3169) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3170) register DFWADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3171) address 0x0C0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3172) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3173) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3174) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3175) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3176) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3177)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3178) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3179) * DSP Filter Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3180) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3181) register DSPFLTRCTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3182) address 0x0C0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3183) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3184) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3185) field FLTRDISABLE 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3186) field EDGESENSE 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3187) field DSPFCNTSEL 0x0F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3188) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3189)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3190) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3191) * DSP Data Channel Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3192) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3193) register DSPDATACTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3194) address 0x0C1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3195) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3196) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3197) count 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3198) field BYPASSENAB 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3199) field DESQDIS 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3200) field RCVROFFSTDIS 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3201) field XMITOFFSTDIS 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3202) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3203) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3204)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3205) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3206) * Data FIFO Read Address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3207) * Pointer to the next QWD location to be read from the data FIFO.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3208) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3209) register DFRADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3210) address 0x0C2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3211) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3212) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3213) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3214) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3215)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3216) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3217) * DSP REQ Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3218) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3219) register DSPREQCTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3220) address 0x0C2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3221) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3222) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3223) field MANREQCTL 0xC0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3224) field MANREQDLY 0x3F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3225) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3226)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3227) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3228) * DSP ACK Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3229) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3230) register DSPACKCTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3231) address 0x0C3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3232) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3233) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3234) field MANACKCTL 0xC0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3235) field MANACKDLY 0x3F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3236) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3237)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3238) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3239) * Data FIFO Data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3240) * Read/Write byte port into the data FIFO. The read and write
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3241) * FIFO pointers increment with each read and write respectively
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3242) * to this port.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3243) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3244) register DFDAT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3245) address 0x0C4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3246) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3247) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3248) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3249) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3250)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3251) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3252) * DSP Channel Select
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3253) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3254) register DSPSELECT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3255) address 0x0C4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3256) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3257) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3258) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3259) field AUTOINCEN 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3260) field DSPSEL 0x1F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3261) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3262) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3263)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3264) const NUMDSPS 0x14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3265)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3266) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3267) * Write Bias Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3268) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3269) register WRTBIASCTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3270) address 0x0C5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3271) access_mode WO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3272) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3273) count 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3274) field AUTOXBCDIS 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3275) field XMITMANVAL 0x3F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3276) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3277) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3278)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3279) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3280) * Currently the WRTBIASCTL is the same as the default.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3281) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3282) const WRTBIASCTL_HP_DEFAULT 0x0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3283)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3284) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3285) * Receiver Bias Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3286) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3287) register RCVRBIOSCTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3288) address 0x0C6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3289) access_mode WO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3290) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3291) field AUTORBCDIS 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3292) field RCVRMANVAL 0x3F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3293) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3294)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3295) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3296) * Write Bias Calculator
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3297) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3298) register WRTBIASCALC {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3299) address 0x0C7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3300) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3301) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3302) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3303)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3304) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3305) * Data FIFO Pointers
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3306) * Contains the byte offset from DFWADDR and DWRADDR to the current
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3307) * FIFO write/read locations.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3308) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3309) register DFPTRS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3310) address 0x0C8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3311) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3312) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3313) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3314)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3315) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3316) * Receiver Bias Calculator
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3317) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3318) register RCVRBIASCALC {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3319) address 0x0C8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3320) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3321) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3322) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3323)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3324) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3325) * Data FIFO Backup Read Pointer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3326) * Contains the data FIFO address to be restored if the last
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3327) * data accessed from the data FIFO was not transferred successfully.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3328) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3329) register DFBKPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3330) address 0x0C9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3331) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3332) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3333) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3334) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3335)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3336) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3337) * Skew Calculator
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3338) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3339) register SKEWCALC {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3340) address 0x0C9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3341) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3342) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3343) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3344)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3345) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3346) * Data FIFO Debug Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3347) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3348) register DFDBCTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3349) address 0x0CB
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3350) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3351) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3352) field DFF_CIO_WR_RDY 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3353) field DFF_CIO_RD_RDY 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3354) field DFF_DIR_ERR 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3355) field DFF_RAMBIST_FAIL 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3356) field DFF_RAMBIST_DONE 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3357) field DFF_RAMBIST_EN 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3358) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3359)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3360) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3361) * Data FIFO Space Count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3362) * Number of FIFO locations that are free.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3363) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3364) register DFSCNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3365) address 0x0CC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3366) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3367) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3368) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3369) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3370)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3371) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3372) * Data FIFO Byte Count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3373) * Number of filled FIFO locations.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3374) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3375) register DFBCNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3376) address 0x0CE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3377) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3378) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3379) modes M_DFF0, M_DFF1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3380) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3381)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3382) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3383) * Sequencer Program Overlay Address.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3384) * Low address must be written prior to high address.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3385) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3386) register OVLYADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3387) address 0x0D4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3388) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3389) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3390) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3391) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3392)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3393) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3394) * Sequencer Control 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3395) * Error detection mode, speed configuration,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3396) * single step, breakpoints and program load.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3397) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3398) register SEQCTL0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3399) address 0x0D6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3400) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3401) count 11
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3402) field PERRORDIS 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3403) field PAUSEDIS 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3404) field FAILDIS 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3405) field FASTMODE 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3406) field BRKADRINTEN 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3407) field STEP 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3408) field SEQRESET 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3409) field LOADRAM 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3410) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3411)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3412) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3413) * Sequencer Control 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3414) * Instruction RAM Diagnostics
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3415) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3416) register SEQCTL1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3417) address 0x0D7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3418) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3419) field OVRLAY_DATA_CHK 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3420) field RAMBIST_DONE 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3421) field RAMBIST_FAIL 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3422) field RAMBIST_EN 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3423) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3424)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3425) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3426) * Sequencer Flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3427) * Zero and Carry state of the ALU.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3428) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3429) register FLAGS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3430) address 0x0D8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3431) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3432) count 23
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3433) field ZERO 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3434) field CARRY 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3435) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3436) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3437)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3438) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3439) * Sequencer Interrupt Control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3440) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3441) register SEQINTCTL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3442) address 0x0D9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3443) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3444) field INTVEC1DSL 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3445) field INT1_CONTEXT 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3446) field SCS_SEQ_INT1M1 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3447) field SCS_SEQ_INT1M0 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3448) field INTMASK2 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3449) field INTMASK1 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3450) field IRET 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3451) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3452)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3453) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3454) * Sequencer RAM Data Port
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3455) * Single byte window into the Sequencer Instruction Ram area starting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3456) * at the address specified by OVLYADDR. To write a full instruction word,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3457) * simply write four bytes in succession. OVLYADDR will increment after the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3458) * most significant instrution byte (the byte with the parity bit) is written.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3459) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3460) register SEQRAM {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3461) address 0x0DA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3462) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3463) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3464) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3465) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3466)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3467) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3468) * Sequencer Program Counter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3469) * Low byte must be written prior to high byte.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3470) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3471) register PRGMCNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3472) address 0x0DE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3473) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3474) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3475) count 5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3476) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3477) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3478)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3479) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3480) * Accumulator
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3481) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3482) register ACCUM {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3483) address 0x0E0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3484) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3485) accumulator
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3486) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3487) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3488)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3489) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3490) * Source Index Register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3491) * Incrementing index for reads of SINDIR and the destination (low byte only)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3492) * for any immediate operands passed in jmp, jc, jnc, call instructions.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3493) * Example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3494) * mvi 0xFF call some_routine;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3495) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3496) * Will set SINDEX[0] to 0xFF and call the routine "some_routine.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3497) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3498) register SINDEX {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3499) address 0x0E2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3500) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3501) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3502) sindex
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3503) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3504) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3505)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3506) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3507) * Destination Index Register
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3508) * Incrementing index for writes to DINDIR. Can be used as a scratch register.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3509) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3510) register DINDEX {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3511) address 0x0E4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3512) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3513) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3514) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3515) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3516)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3517) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3518) * Break Address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3519) * Sequencer instruction breakpoint address address.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3520) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3521) register BRKADDR0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3522) address 0x0E6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3523) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3524) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3525)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3526) register BRKADDR1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3527) address 0x0E6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3528) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3529) field BRKDIS 0x80 /* Disable Breakpoint */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3530) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3531)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3532) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3533) * All Ones
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3534) * All reads to this register return the value 0xFF.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3535) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3536) register ALLONES {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3537) address 0x0E8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3538) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3539) allones
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3540) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3541) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3542)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3543) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3544) * All Zeros
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3545) * All reads to this register return the value 0.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3546) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3547) register ALLZEROS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3548) address 0x0EA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3549) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3550) allzeros
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3551) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3552) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3553)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3554) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3555) * No Destination
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3556) * Writes to this register have no effect.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3557) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3558) register NONE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3559) address 0x0EA
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3560) access_mode WO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3561) none
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3562) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3563) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3564)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3565) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3566) * Source Index Indirect
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3567) * Reading this register is equivalent to reading (register_base + SINDEX) and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3568) * incrementing SINDEX by 1.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3569) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3570) register SINDIR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3571) address 0x0EC
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3572) access_mode RO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3573) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3574) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3575)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3576) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3577) * Destination Index Indirect
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3578) * Writing this register is equivalent to writing to (register_base + DINDEX)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3579) * and incrementing DINDEX by 1.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3580) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3581) register DINDIR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3582) address 0x0ED
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3583) access_mode WO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3584) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3585) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3586)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3587) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3588) * Function One
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3589) * 2's complement to bit value conversion. Write the 2's complement value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3590) * (0-7 only) to the top nibble and retrieve the bit indexed by that value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3591) * on the next read of this register.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3592) * Example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3593) * Write 0x60
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3594) * Read 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3595) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3596) register FUNCTION1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3597) address 0x0F0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3598) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3599) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3600)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3601) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3602) * Stack
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3603) * Window into the stack. Each stack location is 10 bits wide reported
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3604) * low byte followed by high byte. There are 8 stack locations.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3605) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3606) register STACK {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3607) address 0x0F2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3608) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3609) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3610) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3611)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3612) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3613) * Interrupt Vector 1 Address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3614) * Interrupt branch address for SCS SEQ_INT1 mode 0 and 1 interrupts.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3615) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3616) register INTVEC1_ADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3617) address 0x0F4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3618) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3619) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3620) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3621) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3622) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3623) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3624)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3625) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3626) * Current Address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3627) * Address of the SEQRAM instruction currently executing instruction.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3628) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3629) register CURADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3630) address 0x0F4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3631) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3632) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3633) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3634) count 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3635) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3636) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3637)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3638) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3639) * Interrupt Vector 2 Address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3640) * Interrupt branch address for HST_SEQ_INT2 interrupts.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3641) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3642) register INTVEC2_ADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3643) address 0x0F6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3644) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3645) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3646) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3647) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3648) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3649) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3650)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3651) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3652) * Last Address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3653) * Address of the SEQRAM instruction executed prior to the current instruction.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3654) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3655) register LASTADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3656) address 0x0F6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3657) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3658) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3659) modes M_SCSI
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3660) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3661)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3662) register AHD_PCI_CONFIG_BASE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3663) address 0x100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3664) access_mode RW
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3665) size 256
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3666) modes M_CFG
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3667) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3668)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3669) /* ---------------------- Scratch RAM Offsets ------------------------- */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3670) scratch_ram {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3671) /* Mode Specific */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3672) address 0x0A0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3673) size 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3674) modes 0, 1, 2, 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3675) REG0 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3676) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3677) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3678) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3679) REG1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3680) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3681) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3682) REG_ISR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3683) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3684) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3685) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3686) SG_STATE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3687) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3688) field SEGS_AVAIL 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3689) field LOADING_NEEDED 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3690) field FETCH_INPROG 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3691) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3692) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3693) * Track whether the transfer byte count for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3694) * the current data phase is odd.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3695) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3696) DATA_COUNT_ODD {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3697) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3698) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3699) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3700)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3701) scratch_ram {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3702) /* Mode Specific */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3703) address 0x0F8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3704) size 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3705) modes 0, 1, 2, 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3706) LONGJMP_ADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3707) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3708) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3709) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3710) ACCUM_SAVE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3711) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3712) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3713) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3714) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3715)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3716)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3717) scratch_ram {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3718) address 0x100
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3719) size 128
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3720) modes 0, 1, 2, 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3721) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3722) * Per "other-id" execution queues. We use an array of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3723) * tail pointers into lists of SCBs sorted by "other-id".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3724) * The execution head pointer threads the head SCBs for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3725) * each list.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3726) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3727) WAITING_SCB_TAILS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3728) size 32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3729) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3730) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3731) WAITING_TID_HEAD {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3732) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3733) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3734) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3735) WAITING_TID_TAIL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3736) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3737) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3738) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3739) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3740) * SCBID of the next SCB in the new SCB queue.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3741) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3742) NEXT_QUEUED_SCB_ADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3743) size 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3744) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3745) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3746) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3747) * head of list of SCBs that have
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3748) * completed but have not been
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3749) * put into the qoutfifo.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3750) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3751) COMPLETE_SCB_HEAD {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3752) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3753) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3754) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3755) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3756) * The list of completed SCBs in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3757) * the active DMA.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3758) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3759) COMPLETE_SCB_DMAINPROG_HEAD {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3760) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3761) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3762) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3763) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3764) * head of list of SCBs that have
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3765) * completed but need to be uploaded
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3766) * to the host prior to being completed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3767) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3768) COMPLETE_DMA_SCB_HEAD {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3769) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3770) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3771) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3772) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3773) * tail of list of SCBs that have
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3774) * completed but need to be uploaded
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3775) * to the host prior to being completed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3776) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3777) COMPLETE_DMA_SCB_TAIL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3778) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3779) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3780) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3781) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3782) * head of list of SCBs that have
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3783) * been uploaded to the host, but cannot
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3784) * be completed until the QFREEZE is in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3785) * full effect (i.e. no selections pending).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3786) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3787) COMPLETE_ON_QFREEZE_HEAD {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3788) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3789) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3790) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3791) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3792) * Counting semaphore to prevent new select-outs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3793) * The queue is frozen so long as the sequencer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3794) * and kernel freeze counts differ.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3795) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3796) QFREEZE_COUNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3797) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3798) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3799) KERNEL_QFREEZE_COUNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3800) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3801) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3802) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3803) * Mode to restore on legacy idle loop exit.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3804) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3805) SAVED_MODE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3806) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3807) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3808) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3809) * Single byte buffer used to designate the type or message
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3810) * to send to a target.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3811) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3812) MSG_OUT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3813) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3814) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3815) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3816) /* Parameters for DMA Logic */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3817) DMAPARAMS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3818) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3819) count 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3820) field PRELOADEN 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3821) field WIDEODD 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3822) field SCSIEN 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3823) field SDMAEN 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3824) field SDMAENACK 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3825) field HDMAEN 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3826) field HDMAENACK 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3827) field DIRECTION 0x04 /* Set indicates PCI->SCSI */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3828) field FIFOFLUSH 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3829) field FIFORESET 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3830) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3831) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3832) SEQ_FLAGS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3833) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3834) field NOT_IDENTIFIED 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3835) field NO_CDB_SENT 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3836) field TARGET_CMD_IS_TAGGED 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3837) field DPHASE 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3838) /* Target flags */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3839) field TARG_CMD_PENDING 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3840) field CMDPHASE_PENDING 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3841) field DPHASE_PENDING 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3842) field SPHASE_PENDING 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3843) field NO_DISCONNECT 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3844) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3845) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3846) * Temporary storage for the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3847) * target/channel/lun of a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3848) * reconnecting target
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3849) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3850) SAVED_SCSIID {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3851) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3852) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3853) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3854) SAVED_LUN {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3855) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3856) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3857) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3858) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3859) * The last bus phase as seen by the sequencer.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3860) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3861) LASTPHASE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3862) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3863) field CDI 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3864) field IOI 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3865) field MSGI 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3866) field P_BUSFREE 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3867) enum PHASE_MASK CDO|IOO|MSGO {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3868) P_DATAOUT 0x0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3869) P_DATAIN IOO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3870) P_DATAOUT_DT P_DATAOUT|MSGO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3871) P_DATAIN_DT P_DATAIN|MSGO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3872) P_COMMAND CDO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3873) P_MESGOUT CDO|MSGO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3874) P_STATUS CDO|IOO,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3875) P_MESGIN CDO|IOO|MSGO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3876) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3877) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3878) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3879) * Value to "or" into the SCBPTR[1] value to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3880) * indicate that an entry in the QINFIFO is valid.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3881) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3882) QOUTFIFO_ENTRY_VALID_TAG {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3883) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3884) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3885) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3886) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3887) * Kernel and sequencer offsets into the queue of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3888) * incoming target mode command descriptors. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3889) * queue is full when the KERNEL_TQINPOS == TQINPOS.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3890) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3891) KERNEL_TQINPOS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3892) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3893) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3894) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3895) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3896) TQINPOS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3897) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3898) count 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3899) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3900) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3901) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3902) * Base address of our shared data with the kernel driver in host
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3903) * memory. This includes the qoutfifo and target mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3904) * incoming command queue.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3905) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3906) SHARED_DATA_ADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3907) size 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3908) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3909) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3910) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3911) * Pointer to location in host memory for next
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3912) * position in the qoutfifo.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3913) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3914) QOUTFIFO_NEXT_ADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3915) size 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3916) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3917) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3918) ARG_1 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3919) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3920) mask SEND_MSG 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3921) mask SEND_SENSE 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3922) mask SEND_REJ 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3923) mask MSGOUT_PHASEMIS 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3924) mask EXIT_MSG_LOOP 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3925) mask CONT_MSG_LOOP_WRITE 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3926) mask CONT_MSG_LOOP_READ 0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3927) mask CONT_MSG_LOOP_TARG 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3928) alias RETURN_1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3929) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3930) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3931) ARG_2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3932) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3933) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3934) alias RETURN_2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3935) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3936) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3937)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3938) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3939) * Snapshot of MSG_OUT taken after each message is sent.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3940) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3941) LAST_MSG {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3942) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3943) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3944) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3945)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3946) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3947) * Sequences the kernel driver has okayed for us. This allows
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3948) * the driver to do things like prevent initiator or target
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3949) * operations.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3950) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3951) SCSISEQ_TEMPLATE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3952) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3953) count 7
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3954) field MANUALCTL 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3955) field ENSELI 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3956) field ENRSELI 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3957) field MANUALP 0x0C
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3958) field ENAUTOATNP 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3959) field ALTSTIM 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3960) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3961) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3962)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3963) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3964) * The initiator specified tag for this target mode transaction.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3965) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3966) INITIATOR_TAG {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3967) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3968) count 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3969) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3970) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3971)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3972) SEQ_FLAGS2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3973) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3974) field PENDING_MK_MESSAGE 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3975) field TARGET_MSG_PENDING 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3976) field SELECTOUT_QFROZEN 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3977) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3978)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3979) ALLOCFIFO_SCBPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3980) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3981) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3982) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3983)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3984) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3985) * The maximum amount of time to wait, when interrupt coalescing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3986) * is enabled, before issuing a CMDCMPLT interrupt for a completed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3987) * command.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3988) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3989) INT_COALESCING_TIMER {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3990) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3991) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3992) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3993)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3994) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3995) * The maximum number of commands to coalesce into a single interrupt.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3996) * Actually the 2's complement of that value to simplify sequencer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3997) * code.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3998) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3999) INT_COALESCING_MAXCMDS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4000) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4001) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4002) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4003)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4004) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4005) * The minimum number of commands still outstanding required
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4006) * to continue coalescing (2's complement of value).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4007) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4008) INT_COALESCING_MINCMDS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4009) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4010) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4011) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4012)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4013) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4014) * Number of commands "in-flight".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4015) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4016) CMDS_PENDING {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4017) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4018) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4019) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4020)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4021) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4022) * The count of commands that have been coalesced.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4023) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4024) INT_COALESCING_CMDCOUNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4025) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4026) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4027) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4028)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4029) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4030) * Since the HS_MAIBOX is self clearing, copy its contents to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4031) * this position in scratch ram every time it changes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4032) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4033) LOCAL_HS_MAILBOX {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4034) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4035) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4036) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4037) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4038) * Target-mode CDB type to CDB length table used
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4039) * in non-packetized operation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4040) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4041) CMDSIZE_TABLE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4042) size 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4043) count 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4044) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4045) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4046) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4047) * When an SCB with the MK_MESSAGE flag is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4048) * queued to the controller, it cannot enter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4049) * the waiting for selection list until the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4050) * selections for any previously queued
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4051) * commands to that target complete. During
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4052) * the wait, the MK_MESSAGE SCB is queued
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4053) * here.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4054) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4055) MK_MESSAGE_SCB {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4056) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4057) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4058) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4059) * Saved SCSIID of MK_MESSAGE_SCB to avoid
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4060) * an extra SCBPTR operation when deciding
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4061) * if the MK_MESSAGE_SCB can be run.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4062) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4063) MK_MESSAGE_SCSIID {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4064) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4065) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4066) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4067)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4068) /************************* Hardware SCB Definition ****************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4069) scb {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4070) address 0x180
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4071) size 64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4072) modes 0, 1, 2, 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4073) SCB_RESIDUAL_DATACNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4074) size 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4075) alias SCB_CDB_STORE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4076) alias SCB_HOST_CDB_PTR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4077) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4078) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4079) SCB_RESIDUAL_SGPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4080) size 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4081) field SG_ADDR_MASK 0xf8 /* In the last byte */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4082) field SG_OVERRUN_RESID 0x02 /* In the first byte */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4083) field SG_LIST_NULL 0x01 /* In the first byte */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4084) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4085) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4086) SCB_SCSI_STATUS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4087) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4088) alias SCB_HOST_CDB_LEN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4089) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4090) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4091) SCB_TARGET_PHASES {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4092) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4093) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4094) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4095) SCB_TARGET_DATA_DIR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4096) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4097) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4098) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4099) SCB_TARGET_ITAG {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4100) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4101) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4102) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4103) SCB_SENSE_BUSADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4104) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4105) * Only valid if CDB length is less than 13 bytes or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4106) * we are using a CDB pointer. Otherwise contains
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4107) * the last 4 bytes of embedded cdb information.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4108) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4109) size 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4110) alias SCB_NEXT_COMPLETE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4111) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4112) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4113) SCB_TAG {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4114) alias SCB_FIFO_USE_COUNT
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4115) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4116) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4117) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4118) SCB_CONTROL {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4119) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4120) field TARGET_SCB 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4121) field DISCENB 0x40
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4122) field TAG_ENB 0x20
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4123) field MK_MESSAGE 0x10
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4124) field STATUS_RCVD 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4125) field DISCONNECTED 0x04
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4126) field SCB_TAG_TYPE 0x03
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4127) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4128) SCB_SCSIID {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4129) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4130) field TID 0xF0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4131) field OID 0x0F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4132) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4133) SCB_LUN {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4134) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4135) field LID 0xff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4136) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4137) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4138) SCB_TASK_ATTRIBUTE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4139) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4140) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4141) * Overloaded field for non-packetized
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4142) * ignore wide residue message handling.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4143) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4144) field SCB_XFERLEN_ODD 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4145) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4146) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4147) SCB_CDB_LEN {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4148) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4149) field SCB_CDB_LEN_PTR 0x80 /* CDB in host memory */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4150) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4151) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4152) SCB_TASK_MANAGEMENT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4153) size 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4154) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4155) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4156) SCB_DATAPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4157) size 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4158) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4159) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4160) SCB_DATACNT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4161) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4162) * The last byte is really the high address bits for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4163) * the data address.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4164) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4165) size 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4166) field SG_LAST_SEG 0x80 /* In the fourth byte */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4167) field SG_HIGH_ADDR_BITS 0x7F /* In the fourth byte */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4168) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4169) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4170) SCB_SGPTR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4171) size 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4172) field SG_STATUS_VALID 0x04 /* In the first byte */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4173) field SG_FULL_RESID 0x02 /* In the first byte */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4174) field SG_LIST_NULL 0x01 /* In the first byte */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4175) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4176) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4177) SCB_BUSADDR {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4178) size 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4179) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4180) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4181) SCB_NEXT {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4182) alias SCB_NEXT_SCB_BUSADDR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4183) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4184) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4185) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4186) SCB_NEXT2 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4187) size 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4188) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4189) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4190) SCB_SPARE {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4191) size 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4192) alias SCB_PKT_LUN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4193) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4194) SCB_DISCONNECTED_LISTS {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4195) size 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4196) dont_generate_debug_code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4197) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4198) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4199)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4200) /*********************************** Constants ********************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4201) const MK_MESSAGE_BIT_OFFSET 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4202) const TID_SHIFT 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4203) const TARGET_CMD_CMPLT 0xfe
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4204) const INVALID_ADDR 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4205) #define SCB_LIST_NULL 0xff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4206) #define QOUTFIFO_ENTRY_VALID_TOGGLE 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4207)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4208) const CCSGADDR_MAX 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4209) const CCSCBADDR_MAX 0x80
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4210) const CCSGRAM_MAXSEGS 16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4211)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4212) /* Selection Timeout Timer Constants */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4213) const STIMESEL_SHIFT 3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4214) const STIMESEL_MIN 0x18
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4215) const STIMESEL_BUG_ADJ 0x8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4216)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4217) /* WDTR Message values */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4218) const BUS_8_BIT 0x00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4219) const BUS_16_BIT 0x01
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4220) const BUS_32_BIT 0x02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4221)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4222) /* Offset maximums */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4223) const MAX_OFFSET 0xfe
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4224) const MAX_OFFSET_PACED 0xfe
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4225) const MAX_OFFSET_PACED_BUG 0x7f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4226) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4227) * Some 160 devices incorrectly accept 0xfe as a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4228) * sync offset, but will overrun this value. Limit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4229) * to 0x7f for speed lower than U320 which will
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4230) * avoid the persistent sync offset overruns.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4231) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4232) const MAX_OFFSET_NON_PACED 0x7f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4233) const HOST_MSG 0xff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4234)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4235) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4236) * The size of our sense buffers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4237) * Sense buffer mapping can be handled in either of two ways.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4238) * The first is to allocate a dmamap for each transaction.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4239) * Depending on the architecture, dmamaps can be costly. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4240) * alternative is to statically map the buffers in much the same
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4241) * way we handle our scatter gather lists. The driver implements
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4242) * the later.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4243) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4244) const AHD_SENSE_BUFSIZE 256
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4245)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4246) /* Target mode command processing constants */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4247) const CMD_GROUP_CODE_SHIFT 0x05
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4248)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4249) const STATUS_BUSY 0x08
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4250) const STATUS_QUEUE_FULL 0x28
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4251) const STATUS_PKT_SENSE 0xFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4252) const TARGET_DATA_IN 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4253)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4254) const SCB_TRANSFER_SIZE_FULL_LUN 56
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4255) const SCB_TRANSFER_SIZE_1BYTE_LUN 48
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4256) /* PKT_OVERRUN_BUFSIZE must be a multiple of 256 less than 64K */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4257) const PKT_OVERRUN_BUFSIZE 512
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4258)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4259) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4260) * Timer parameters.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4261) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4262) const AHD_TIMER_US_PER_TICK 25
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4263) const AHD_TIMER_MAX_TICKS 0xFFFF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4264) const AHD_TIMER_MAX_US (AHD_TIMER_MAX_TICKS * AHD_TIMER_US_PER_TICK)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4265)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4266) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4267) * Downloaded (kernel inserted) constants
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4268) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4269) const SG_PREFETCH_CNT download
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4270) const SG_PREFETCH_CNT_LIMIT download
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4271) const SG_PREFETCH_ALIGN_MASK download
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4272) const SG_PREFETCH_ADDR_MASK download
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4273) const SG_SIZEOF download
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4274) const PKT_OVERRUN_BUFOFFSET download
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4275) const SCB_TRANSFER_SIZE download
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4276) const CACHELINE_MASK download
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4277)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4278) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4279) * BIOS SCB offsets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4280) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4281) const NVRAM_SCB_OFFSET 0x2C