📄 ciport.h
字号:
/* * @(#)ciport.h 4.3 (ULTRIX) 12/20/90 *//************************************************************************ * * * Copyright (c) 1988 - 1989 by * * Digital Equipment Corporation, Maynard, MA * * All rights reserved. * * * * This software is furnished under a license and may be used and * * copied only in accordance with the terms of such license and * * with the inclusion of the above copyright notice. This * * software or any other copies thereof may not be provided or * * otherwise made available to any other person. No title to and * * ownership of the software is hereby transferred. * * * * The information in this software is subject to change without * * notice and should not be construed as a commitment by Digital * * Equipment Corporation. * * * * Digital assumes no responsibility for the use or reliability * * of its software on equipment which is not supplied by Digital. * * * ************************************************************************ * * * Facility: Systems Communication Architecture * Computer Interconnect Port Driver * * Abstract: This module contains Computer Interconnect Port Driver( CI ) * constants, data structure definitions, port command * definitions, register definitions, and macros. * * Creator: Todd M. Katz Creation Date: April 22, 1985 * * Modification History: * * 19-Dec-1990 Pete Keilty * 1. Added support for NADP bit in Exp_mask, setckt, fcn_ext2 register * and new macro NADP_MASK( value ). * 2. Added new define CIXCD_XBE_TTO. * 3. Added 2 u_shorts to SETCKT/CKTSET structure for REV H of CI PORT. * VCD and RESEQ resources lower bounds. * * 16-Oct-1990 Pete Keilty * 1. Removed lk_cidevice, now define in cipccb structure cidevice_lk. * 2. Added locking around register accesses in the wait macros. * 3. The above was done beccuase of the CIXCD XMOV bug. * * 15-Jun-1990 Pete Keilty * Added temporary smp lock lk_cidevice for CIXCD because of XMOV bug. * * 06-Jun-1990 Pete Keilty * 1. Added six new severity codes for CIXCD, they are SE_INVPA, * SE_INVSN, SE_INVDDL, SE_IRESVCD, SE_IRESEQ, SE_DISCVCPKT. * 2. Added perliminary support for CIKMF and SHAC. * * 06-Feb-1990 Pete Keilty * Moved Get_pgrp macro here from gvp.h. * * 08-Dec-1989 Pete Keilty * 1. Changed a few XCD register offsets that where wrong. * 2. Added two new macros Cibx_wait_unin() & Cibx_wait_pic_clear() * used in cibx_start() routine. * * 19-Sep-1989 Pete Keilty * 1. Add XCD support, remove XCB. * 2. Add new Explicit command addressing ( Subnode ECO ). * * 17-Jan-1989 Todd M. Katz TMK0007 * 1. The macro Scaaddr_lol() has been renamed to Scaaddr_low(). It now * accesses only the low order word( instead of low order longword ) of * a SCA system address. * 2. Modify macros Ci7b_wait_mif() and Cibx_wait_mif(). Change the * manual interrupt checking interval from 1 msec to 10 msec to conform * to the granularity of the clock. * * 22-Sep-1988 Todd M. Katz TMK0006 * 1. Delete the console formatting code CF_RPORT( Remote port station * address logged ). It is now defined by the CI PPD. * 2. Console log SE_POWER severe error events depending upon the current * CI severity level. Formerly, such events were always logged to the * console irregardless of the current CI severity level. * * 17-Aug-1988 Todd M. Katz TMK0005 * 1. SCA event codes have been completely revised. Former CI path crash * codes are now divided into error events( NOCABLES, CLOSEDVC, * RPORTSTATE ) and severe error events( BMSE, INVRPKTSIZE, UNRECPKT, * OSEQMSG ). Former CI local port crash codes are now divided into * severe error events( POWER, POWERUP, INVBNAME, INVBSIZE, BACCVIO, * INVLPKTSIZE, INVDPORT, UNKCMD, ABORTPKT, UNKSTATUS, UNKOPCODE, * INVOPCODE, MSI, BIMSE, DSE, PARITY, BIPARITY, PORTERROR, BIERROR, * SANITYTIMER, MFQE ) and fatal error events( BADMAXPORT, BADUCODE, * NOCI ). The local port crash severity modifier is applied by * ci_crash_lport(). * 2. Redefine the following informational events( ES_I ) as warning * events( ES_W ): CABLE0_GB, CABLE1_GB, CABLES_UC, CABLE0_LBGB, * CABLE1_LBGB, UCODE_WARN, POWER, STRAY. * 3. Redefine the following informational events( ES_I ) as remote error * events( ES_RE ): RPORT_STATE. * 4. Redefine the following informational events( ES_I ) as error * events( ES_E ): UCODE_LOAD, UCODE_START. * 5. Redefine the following informational events( ES_I ) as fatal error * events( ES_FE ): INIT_NOUCODE, INIT_CPU, INIT_NOMEM, INIT_ZEROID, * INIT_UNKHPT, INIT_MISMTCH, NOCI. * 6. GVP event codes no longer occupy their own name space. They now * occupy part of and are defined with each ( appropriate ) port * drivers' name spaces. Therefore, add the following former GVP * severe error event codes: ICMDQ0, ICMDQ1, ICMDQ2, ICMDQ3, IDFREEQ, * IMFREEQ, RRSPQ, RDFREEQ, RMFREEQ. * 7. Define the informational events: LPORT_INIT and LPORT_REINIT, the * error event: NOMEM, the severe error event: BADPORTNUM, and the * fatal error event: PORTERROR. * 8. Rename the informational condition event mnemonic from IE -> I. * 9. Eliminate one of the reserved CI special console logging format * codes and re-number the remaining codes. Add CF_LPORT( local port * station address ), CF_CPU( CPU revision level ), and CF_INIT( * initial local port initialization information ) as console logging * format codes. * 10. Rename FE_INIT_CPU -> FE_CPU. * 11. Add macros Elcidattn(), and Elcicpurevlev(), delete macro Elci(), * and update macros Elciciregs(), Elcibiregs(), Elcixmiregs(), * Elcirevlev(), and Elciucode(). * * 23-Apr-1988 Todd M. Katz TMK0004 * 1. Create a single unified hierarchical set of naming conventions for * use within the CI port driver and describe them. Apply these * conventions to all names( routine, macro, constant, and data * structure ) used within the driver. Restructure the driver to * segregate most CI family and port type specific code into separate * routines. Such restructuring requires creation of new PCCB fields * and the corresponding shorthand notations( macros ) to refer to * them including: Mrltab, Dg_cache, Msg_cache, Start_port, * Disable_port, Load_ucode, Max_fn_level, Max_rom_level. * 2. Add support for the CIXCB hardware port type by defining * appropriate constants and macros. * 3. Add macros Cibx_onboard(), Ci7b_allram(), Ci7b_wait_mif(), and * Cibx_wait_mif() and shorthand notations Lpstatus, Pstatus, and * Rport_state; and, remove macros Flush_rspq(), Init_dattnopt(), and * Store_reg() and shorthand notation Bierr_int. * 4. Create cache size constants for each CI family as local port * internal free queue cache size varies from family to family. * 5. Move the CIBCA Device Type Register Port Revision Field Mask Bits * constants to ciadapter.h and remove the Adapter Type Code * constants. * 6. Update the current maximum RAM/functional and PROM/self-test * microcode revision levels for all hardware port types. * 7. Rename CF_PORT -> CF_RPORT and renumber all console logging format * codes to reflect additions to format codes used by the CI PPD. * 8. Eliminate the informational condition IE_INVHPT, renumber the * remaining informational condition codes, and add the informational * conditions IE_STRAY, IE_POWER, and IE_POWERUP. Also add the panic * PANIC_BADUNMAP. * 9. Add the Local Port Mapping Constants. * 10. Update many of the error log macros referencing various CI error * log packet fields to reflect changes in various field names. Also, * add macros Elcirevlev(), Elcipacket(), and Elciucode() while * removing macros Elcidattn(), Elcilpktopt(), and Elcilpkt(). * * 02-Apr-1988 Todd M. Katz TMK0003 * 1. Add support for the CIBCA-BA hardware port type and for onboard * CIBCA-BA port microcode. Differentiate CIBCA-BA from CIBCA-AA * hardware ports when necessary; otherwise, refer to both types as * just CIBCA ports. * 2. Delete the definition CI_CSZ_224. It is an illegal cluster size. * 3. Rename: * 1) MIN_CPU750_REV -> MIN_C750_REV * 2) CIBCA_RAM_ADDR -> CIBCA_FN_ADDR * 3) CIBCA_ROM_ADDR -> CIBCA_ST_ADDR * 4) CIBCA_AA_MAXRAM -> CIBCA_AA_MAXFN * 5) CIBCA_BA_MAXRAM -> CIBCA_BA_MAXFN * 6) Cibca_ram_level() -> Cibca_fn_level() * 7) Cibca_rom_level() -> Cibca_st_level() * 4. Add the definitions CIPANIC_REQLPC and CIPANIC_ONBOARD. * 5. Change the definitions CI_DG_CACHE and CI_MSG_CACHE from 3 -> 4. * This forces 4 datagrams and 4 messages to be allocated and inserted * onto the appropriate local port free queue whenever the port is * initialized. * 6. Add macro Elcicommon(). * * 16-Mar-1988 Todd M. Katz TMK0002 * Resolved a problem with the macro Cibca_ucode() which was incorrectly * determining whether or not a given instance of CI port microcode was * of a type appropriate for use by a CIBCA local CI port. * * 08-Jan-1988 Todd M. Katz TMK0001 * Formated module, revised comments, increased generality and * robustness, made CI PPD and GVP completely independent from underlying * port drivers, and added SMP support. *//* CI Port Driver Naming Conventions. * * There are currently six CI hardware port types. All six types are * sufficiently related to one another to allow their control by a single port * driver. Differences between the types also exist. Some of these * differences are trivial and may be coped with through appropriate special * casing. Others are not so minor and special casing is not sufficient in and * of itself to handle them. * * Major differences between hardware port types are ultimately based upon * discrepancies in port register formats. Fortunately, not all types possess * unique register formats. This allows the six hardware port types to be * grouped into two families based upon shared register formats: * * 1. The CI7B family consisting of CI750, CI780, and CIBCI hardware port * types. * 2. The CIBX family consisting of CIBCA-AA, CIBCA-BA, and CIXCD hardware port * types. * * It is this grouping into families which provides the basis for the CI port * driver naming conventions. These naming conventions affect routine, macro, * constant, and data structure names. They are listed below in the form of a * set of rules: * * 1. Global names( routines ) pertaining to all hardware ports are prefixed * with "ci_" as in the routine ci_probe(). * 2. Local names( constants, data structures, macros ) pertaining to all * hardware ports have no specific prefix as in the constant MAX_CABLES, the * macro Comp_loopback(), and the data structure VCD. * 3. Names pertaining to a specific family are prefaced with the family name * as in the routine ci7b_load(), the constant CI7B_DG_CACHE, the macro * Ci7b_allram(), and the data structure CI7B_UCODEH. * 4. Names pertaining to a specific hardware port type are are prefaced with * the specific port type itself as in the routine cibca_aa_load(), and the * constant CIXCD_MAXFN. * * There are two exceptions to rule 4 based upon hardware port types so * identical that the CI port driver almost never needs to distinguish between * them. The CI750 and CI780 are such a pair of identical ports. Routines, * data structures, and constants pertaining to them use the prefixes "ci780_", * "CI780_", and "CI780_" respectively when no need exists to distinguish * between them. The CIBCA-AA and CIBCA-BA are another pair of nearly * identical ports. They use the prefixes "cibca_" "CIBCA_", and "CIBCA_" when * no need to distinguish between them exists. *//* CI Constants. */ /* Cable Update Type Codes */#define CABLE_GB 1 /* Check good->bad transitions */#define CABLE_BG 2 /* Check bad->good transitions */#define CABLE_CROSSED 3 /* Check crossing transitions */#define CABLE_LB_GB 4 /* Chk loopback good->bad transitions*/#define CABLE_LB_BG 5 /* Chk loopback bad->good transitions*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -