|
|
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: /* Sym8xxMisc.m created by russb2 on Sat 30-May-1998 */ ! 26: ! 27: #import "Sym8xxController.h" ! 28: ! 29: @implementation Sym8xxController ! 30: @end ! 31: ! 32: /* ! 33: * Miscellaneous IO worker routines ! 34: */ ! 35: ! 36: u_int32_t Sym8xxReadRegs( volatile u_int8_t *chipRegs, u_int32_t regOffset, u_int32_t regSize ) ! 37: { ! 38: if ( regSize == 1 ) ! 39: { ! 40: return chipRegs[regOffset]; ! 41: } ! 42: if ( regSize == 2 ) ! 43: { ! 44: return EndianSwap16( *(volatile u_int16_t *)&chipRegs[regOffset] ); ! 45: } ! 46: else if (regSize == 4 ) ! 47: { ! 48: return EndianSwap32( *(volatile u_int32_t *)&chipRegs[regOffset] ); ! 49: } ! 50: else ! 51: { ! 52: kprintf("SCSI(SymBios875): Sym8xxReadRegs incorrect regSize\n\r" ); ! 53: return 0; ! 54: } ! 55: } ! 56: ! 57: void Sym8xxWriteRegs( volatile u_int8_t *chipRegs, u_int32_t regOffset, u_int32_t regSize, u_int32_t regValue ) ! 58: { ! 59: if ( regSize == 1 ) ! 60: { ! 61: chipRegs[regOffset] = regValue; ! 62: } ! 63: else if ( regSize == 2 ) ! 64: { ! 65: volatile u_int16_t *p = (volatile u_int16_t *)&chipRegs[regOffset]; ! 66: *p = EndianSwap16( regValue ); ! 67: } ! 68: else if ( regSize == 4 ) ! 69: { ! 70: volatile u_int32_t *p = (volatile u_int32_t *)&chipRegs[regOffset]; ! 71: *p = EndianSwap32( regValue ); ! 72: } ! 73: else ! 74: { ! 75: kprintf("SCSI(SymBios875): Sym8xxWriteRegs incorrect regSize\n\r" ); ! 76: } ! 77: eieio(); ! 78: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.