|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights ! 7: * Reserved. This file contains Original Code and/or Modifications of ! 8: * Original Code as defined in and that are subject to the Apple Public ! 9: * Source License Version 1.1 (the "License"). You may not use this file ! 10: * except in compliance with the License. Please obtain a copy of the ! 11: * License at http://www.apple.com/publicsource and read it before using ! 12: * this file. ! 13: * ! 14: * The Original Code and all software distributed under the License are ! 15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 19: * License for the specific language governing rights and limitations ! 20: * under the License. ! 21: * ! 22: * @APPLE_LICENSE_HEADER_END@ ! 23: */ ! 24: ! 25: /** ! 26: * Copyright (c) 1994-1996 NeXT Software, Inc. All rights reserved. ! 27: * Copyright 1997 Apple Computer Inc. All Rights Reserved. ! 28: * @author Martin Minow mailto:[email protected] ! 29: * @revision 1997.02.13 Initial conversion from AMDPCSCSIDriver sources. ! 30: * ! 31: * Set tabs every 4 characters. ! 32: * ! 33: * ! 34: * AppleMeshHardwarePrivate.h - Architecture-specific methods for Apple Mesh SCSI driver. ! 35: * Apple96SCSI is closely based on Doug Mitchell's AMD 53C974/79C974 driver. ! 36: * ! 37: * Edit History ! 38: * 1997.02.13 MM Initial conversion from AMDPCSCSIDriver sources. ! 39: */ ! 40: ! 41: #import "Apple96SCSI.h" ! 42: ! 43: /* ! 44: * These macros are used to access words (32 bit) and bytes (8 bit) in the channel ! 45: * command area. They may be used as source or destination. CCLDescriptor is ! 46: * aligned to a descriptor start, CCLAddress is just an address pointer. ! 47: */ ! 48: #define CCLAddress(offset) (((UInt8 *) gChannelCommandArea) + (offset)) ! 49: #define CCLDescriptor(offset) ((DBDMADescriptor *) CCLAddress(offset)) ! 50: #define CCLWord(offset) (*((UInt32 *) CCLAddress(offset))) ! 51: #define CCLByte(offset) (*((UInt8 *) CCLAddress(offset))) ! 52: ! 53: @interface Apple96_SCSI (HardwarePrivate) ! 54: ! 55: /** ! 56: * Perform one-time-only memory allocation. ! 57: * @return IO_R_SUCCESS If successful. ! 58: * IO_R_NO_MEMORY Can't allocate memory (fatal) ! 59: */ ! 60: - (IOReturn) hardwareAllocateHardwareAndChannelMemory ! 61: : deviceDescription; ! 62: ! 63: /** ! 64: * When a (legitimate) data phase starts, this method is called to configure ! 65: * the DBDMA Channel Command list. Autosense is simple (as we "cannot" be ! 66: * called more than once), while ordinary data transfers are arbitrarily complex. ! 67: */ ! 68: - (IOReturn) hardwareInitializeCCL; ! 69: ! 70: /** ! 71: * Initialize the data transfer channel command list for a normal SCSI command. ! 72: * This is not an optimal implementation, but it simplifies maintaining a ! 73: * common code base with the NuBus Curio/AMIC hardware interface. ! 74: * Note that the last DBDMA command must be INPUT_LAST or OUTPUT_LAST to handle ! 75: * synchronous transfer odd-byte disconnect. ! 76: */ ! 77: - (IOReturn) hardwareInitializeRequestCCL; ! 78: ! 79: /** ! 80: * Start a request after the CCL has been initialized ! 81: * by either hardwareInitializeSCSIRequest or ! 82: * hardwareInitializeAutosense. ! 83: */ ! 84: - (void) hardwareStartSCSIRequest; ! 85: ! 86: /** ! 87: * Clear the volatile results field in the channel command list. ! 88: * Don't touch the permanent data. ! 89: */ ! 90: - (void) clearChannelCommandResults; ! 91: ! 92: /** ! 93: * Perform one-time-only channel command program. ! 94: */ ! 95: - (void) initializeChannelProgram; ! 96: ! 97: /** ! 98: * Debug log channel command area ! 99: */ ! 100: - (void) logChannelCommandArea ! 101: : (const char *) reason; ! 102: ! 103: /** ! 104: * Debug log the current IOMemoryDescriptor ! 105: */ ! 106: - (void) logIOMemoryDescriptor ! 107: : (const char *) info; ! 108: ! 109: @end ! 110:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.