|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1993 NeXT Computer, Inc. ! 3: * ! 4: * AHAControllerPrivate.h - Adaptec 1542 SCSI controller private typedefs. ! 5: * ! 6: * HISTORY ! 7: * ! 8: * 13 Apr 1993 Doug Mitchell at NeXT ! 9: * Created. ! 10: */ ! 11: ! 12: #import <machkit/NXLock.h> ! 13: #import <mach/mach_types.h> ! 14: #import <mach/message.h> ! 15: #import <driverkit/interruptMsg.h> ! 16: #import "AHAController.h" ! 17: #import "AHATypes.h" ! 18: #import <driverkit/debugging.h> ! 19: ! 20: /* ! 21: * Command to be executed by I/O thread. ! 22: */ ! 23: typedef enum { ! 24: AO_Execute, // execute IOSCSIRequest ! 25: AO_Reset, // reset bus ! 26: AO_Abort // abort I/O thread ! 27: } AHAOp; ! 28: ! 29: /* ! 30: * Command struct passed from exported methods (executeRequest and ! 31: * resetSCSIBus) to the I/O thread. This struct is passed via commandQ. ! 32: */ ! 33: typedef struct { ! 34: AHAOp op; // AO_Execute, etc. ! 35: ! 36: /* ! 37: * The following 3 fields are only valid if op == AH_Execute. ! 38: */ ! 39: IOSCSIRequest *scsiReq; ! 40: void *buffer; ! 41: vm_task_t client; ! 42: ! 43: sc_status_t result; // status upon completion ! 44: NXConditionLock *cmdLock; // client waits on this ! 45: queue_chain_t link; // for enqueueing on commandQ ! 46: } AHACommandBuf; ! 47: ! 48: /* ! 49: * Condition variable states for AHACommandBuf.cmdLock. ! 50: */ ! 51: #define CMD_PENDING 0 ! 52: #define CMD_COMPLETE 1 ! 53: ! 54: /* ! 55: * DDM masks and macros. ! 56: */ ! 57: /* ! 58: * The index into IODDMMasks[]. ! 59: */ ! 60: #define AHA_DDM_INDEX 2 ! 61: ! 62: #define DDM_EXPORTED 0x00000001 // exported methods ! 63: #define DDM_IOTHREAD 0x00000002 // I/O thread methods ! 64: #define DDM_INIT 0x00000004 // Initialization ! 65: ! 66: #define ddm_exp(x, a, b, c, d, e) \ ! 67: IODEBUG(AHA_DDM_INDEX, DDM_EXPORTED, x, a, b, c, d, e) ! 68: ! 69: #define ddm_thr(x, a, b, c, d, e) \ ! 70: IODEBUG(AHA_DDM_INDEX, DDM_IOTHREAD, x, a, b, c, d, e) ! 71: ! 72: #define ddm_init(x, a, b, c, d, e) \ ! 73: IODEBUG(AHA_DDM_INDEX, DDM_INIT, x, a, b, c, d, e) ! 74: ! 75: ! 76: /* ! 77: * Public low-level routines in AHARoutines.m. ! 78: */ ! 79: extern void aha_reset_board(unsigned short base, ! 80: unsigned char aha_board_id); ! 81: boolean_t aha_setup_mb_area(unsigned short base, ! 82: struct aha_mb_area *aha_mb_area, ! 83: struct ccb *aha_ccb); ! 84: extern void aha_start_scsi(unsigned short base); ! 85: extern void aha_unlock_mb(unsigned short base); ! 86: extern boolean_t aha_cmd(unsigned short base, ! 87: unsigned char cmd, ! 88: unsigned char *args, ! 89: int arglen, ! 90: unsigned char *reply, ! 91: int replylen, ! 92: boolean_t polled ! 93: ); ! 94: extern boolean_t aha_probe_cmd( ! 95: unsigned short base, ! 96: unsigned char cmd, ! 97: unsigned char *args, ! 98: int arglen, ! 99: unsigned char *reply, ! 100: int replylen, ! 101: boolean_t polled ! 102: ); ! 103:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.