summaryrefslogblamecommitdiffstats
path: root/private/ntos/miniport/symbios/symc810/symscam.h
blob: 2b65c33d38b2c60abe02085bb3296a7132c96189 (plain) (tree)










































































































                                                                           
/************************************************************************
*                                                                       *
*         Copyright 1994 Symbios Logic Inc.  All rights reserved.       *
*                                                                       *
*   This file is confidential and a trade secret of Symbios Logic Inc.  *
*   The receipt of or possession of this file does not convey any       *
*   rights to reproduce or disclose its contents or to manufacture,     *
*   use, or sell anything is may describe, in whole, or in part,        *
*   without the specific written consent of Symbios Logic Inc.          *
*                                                                       *
************************************************************************/

/*+++HDR
 *
 *  Version History
 *  ---------------
 *
 *    Date    Who?  Description
 *  --------  ----  -------------------------------------------------------
 *
 *
---*/


#ifndef _SYMSCAM_
#define _SYMSCAM_





/************************/
/* SCAM data structures */
/************************/

/*                               TC1_TC2_VENDOR__VENDOR_UNIQUE________ */
static CHAR our_scam_id_str[]= {"\045\007SYM     SDMS SCAMCore - Alpha"};

typedef struct _SIOP_REG_STORE {   // storage to save/restore SIOP state
      UCHAR reg_st[21];            // used by AdapterState and SCAM
      ULONG long_st;
} SIOP_REG_STORE, *PSIOP_REG_STORE;

/************************/
/* SCAM definitions     */
/************************/

#define Ent_fragmovefirstin 0
#define Ent_fragmovelastin 8
#define INSTRUCT        1
#define ISOLATED        0
#define NOBODY_HOME     -1

#define QUINTET_MASK    0x1F
#define SCAM_SYNC       0x1F
#define SCAM_ASSIGN_ID  0x00
#define SCAM_SET_PRIO   0x01
#define SCAM_SET_ID_00  0x18
#define SCAM_SET_ID_01  0x11
#define SCAM_SET_ID_10  0x12
#define SCAM_SET_ID_11  0x0B

#define ASSIGNABLE_ID   0x80
#define DEFER           0x01
#define STOP            0x02

#define SCAM_ID_STRLEN  0x20
#define SCAM_DEFERRED   -1
#define SCAM_TERMINATED -2

#define MSG_NOOP        0x08
#define MSG_RESET       0x0C

#define ARB_IN_PROGRESS         0x10
#define CONNECTED               0x08

/* Timer value for HTH/SEL/GEN timers for short timeout */
/* 0x05 is 1.6mS which is comfortably between the 1 & 4 */
/* mS times for SCAM tolerant vs SCAM compliant.        */
#define SHORT_720_STO           0x05
#define DISABLE_720_STO         0x00

#define IO      0x01
#define CD      0x02
#define MSG     0x04
#define ATN     0x08
#define SEL     0x10
#define BSY     0x20
#define ACK     0x40
#define REQ     0x80

/* SBCL phases  */
#define PHASE_MASK     (MSG & CD & IO)
#define DATA__OUT      (~MSG & ~CD & ~IO)
#define DATA__IN       (~MSG & ~CD & IO)
#define COMMAND        (~MSG & CD & ~IO)
#define STATUS         (~MSG & CD & IO)
#define MESSAGE_OUT    (MSG & CD & ~IO)
#define MESSAGE_IN     (MSG & CD & IO)
#define PHASE          (READ_SIOP_UCHAR(SBCL) & PHASE_MASK)

#define DB5     0x20
#define DB6     0x40
#define DB7     0x80

#endif