Annotation of XNU/iokit/Drivers/audio/drvPPCDACA/PPCDACA_inlined.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      6:  * The contents of this file constitute Original Code as defined in and
                      7:  * are subject to the Apple Public Source License Version 1.1 (the
                      8:  * "License").  You may not use this file except in compliance with the
                      9:  * License.  Please obtain a copy of the License at
                     10:  * http://www.apple.com/publicsource and read it before using this file.
                     11:  * 
                     12:  * This Original Code and all software distributed under the License are
                     13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
                     14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
                     15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
                     16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
                     17:  * License for the specific language governing rights and limitations
                     18:  * under the License.
                     19:  * 
                     20:  * @APPLE_LICENSE_HEADER_END@
                     21:  */
                     22: /*
                     23:  * Copyright (c) 1998 Apple Computer, Inc.  All rights reserved.
                     24:  *
                     25:  * INLINEd functions for the DAC 3550A audio Controller these
                     26:  * methods are all private, so I like them better in this separate
                     27:  * header rather than in the main header where the interface
                     28:  * definition lays.
                     29:  *
                     30:  * HISTORY
                     31:  *
                     32:  */
                     33: 
                     34: #ifndef _PPCDACA_INLINED_H
                     35: #define _PPCDACA_INLINED_H
                     36: 
                     37: #include "PPCDACA.h"
                     38: 
                     39: // In debug mode we may wish to step trough the INLINEd methods, so:
                     40: #ifdef DEBUGMODE
                     41: #define INLINE
                     42: #else
                     43: #define INLINE inline
                     44: #endif
                     45: 
                     46: // Generic INLINEd methods to access to registers:
                     47: // ===============================================
                     48: INLINE UInt32
                     49: PPCDACA::ReadWordLittleEndian(void *address, UInt32 offset)
                     50: {
                     51:     UInt32 *realAddress = (UInt32*)(address) + offset;
                     52:     UInt32 value = *realAddress;
                     53:     UInt32 newValue =
                     54:         ((value & 0x000000FF) << 24) |
                     55:         ((value & 0x0000FF00) << 8) |
                     56:         ((value & 0x00FF0000) >> 8) |
                     57:         ((value & 0xFF000000) >> 24);
                     58: 
                     59:     return (newValue);
                     60: }
                     61: 
                     62: INLINE void
                     63: PPCDACA::WriteWordLittleEndian(void *address, UInt32 offset, UInt32 value)
                     64: {
                     65:     UInt32 *realAddress = (UInt32*)(address) + offset;
                     66:     UInt32 newValue =
                     67:         ((value & 0x000000FF) << 24) |
                     68:         ((value & 0x0000FF00) << 8) |
                     69:         ((value & 0x00FF0000) >> 8) |
                     70:         ((value & 0xFF000000) >> 24);
                     71: 
                     72:     *realAddress = newValue;
                     73: }
                     74: 
                     75: // INLINEd methods to access to all the I2S registers:
                     76: // ===================================================
                     77: INLINE UInt32
                     78: PPCDACA::I2SGetIntCtlReg()
                     79: {
                     80:     return ReadWordLittleEndian(soundConfigSpace, kI2SIntCtlOffset);
                     81: }
                     82: 
                     83: INLINE void
                     84: PPCDACA::I2SSetIntCtlReg(UInt32 value)
                     85: {
                     86:     WriteWordLittleEndian(soundConfigSpace, kI2SIntCtlOffset, value);
                     87: }
                     88: 
                     89: INLINE UInt32
                     90: PPCDACA::I2SGetSerialFormatReg()
                     91: {
                     92:     return ReadWordLittleEndian(soundConfigSpace, kI2SSerialFormatOffset);
                     93: }
                     94: 
                     95: INLINE void
                     96: PPCDACA::I2SSetSerialFormatReg(UInt32 value)
                     97: {
                     98:     WriteWordLittleEndian(soundConfigSpace, kI2SSerialFormatOffset, value);
                     99: }
                    100: 
                    101: INLINE UInt32
                    102: PPCDACA::I2SGetCodecMsgOutReg()
                    103: {
                    104:     return ReadWordLittleEndian(soundConfigSpace, kI2SCodecMsgOutOffset);
                    105: }
                    106: 
                    107: INLINE void
                    108: PPCDACA::I2SSetCodecMsgOutReg(UInt32 value)
                    109: {
                    110:     WriteWordLittleEndian(soundConfigSpace, kI2SCodecMsgOutOffset, value);
                    111: }
                    112: 
                    113: INLINE UInt32
                    114: PPCDACA::I2SGetCodecMsgInReg()
                    115: {
                    116:     return ReadWordLittleEndian(soundConfigSpace, kI2SCodecMsgInOffset);
                    117: }
                    118: 
                    119: INLINE void
                    120: PPCDACA::I2SSetCodecMsgInReg(UInt32 value)
                    121: {
                    122:     WriteWordLittleEndian(soundConfigSpace, kI2SCodecMsgInOffset, value);
                    123: }
                    124: 
                    125: INLINE UInt32
                    126: PPCDACA::I2SGetFrameCountReg()
                    127: {
                    128:     return ReadWordLittleEndian(soundConfigSpace, kI2SFrameCountOffset);
                    129: }
                    130: 
                    131: INLINE void
                    132: PPCDACA::I2SSetFrameCountReg(UInt32 value)
                    133: {
                    134:     WriteWordLittleEndian(soundConfigSpace, kI2SFrameCountOffset, value);
                    135: }
                    136: 
                    137: INLINE UInt32
                    138: PPCDACA::I2SGetFrameMatchReg()
                    139: {
                    140:     return ReadWordLittleEndian(soundConfigSpace, kI2SFrameMatchOffset);
                    141: }
                    142: 
                    143: INLINE void
                    144: PPCDACA::I2SSetFrameMatchReg(UInt32 value)
                    145: {
                    146:     WriteWordLittleEndian(soundConfigSpace, kI2SFrameMatchOffset, value);
                    147: }
                    148: 
                    149: INLINE UInt32
                    150: PPCDACA::I2SGetDataWordSizesReg()
                    151: {
                    152:     return ReadWordLittleEndian(soundConfigSpace, kI2SDataWordSizesOffset);
                    153: }
                    154: 
                    155: INLINE void
                    156: PPCDACA::I2SSetDataWordSizesReg(UInt32 value)
                    157: {
                    158:     WriteWordLittleEndian(soundConfigSpace, kI2SDataWordSizesOffset, value);
                    159: }
                    160: 
                    161: INLINE UInt32
                    162: PPCDACA::I2SGetPeakLevelSelReg()
                    163: {
                    164:     return ReadWordLittleEndian(soundConfigSpace, kI2SPeakLevelSelOffset);
                    165: }
                    166: 
                    167: INLINE void
                    168: PPCDACA::I2SSetPeakLevelSelReg(UInt32 value)
                    169: {
                    170:     WriteWordLittleEndian(soundConfigSpace, kI2SPeakLevelSelOffset, value);
                    171: }
                    172: 
                    173: INLINE UInt32
                    174: PPCDACA::I2SGetPeakLevelIn0Reg()
                    175: {
                    176:     return ReadWordLittleEndian(soundConfigSpace, kI2SPeakLevelIn0Offset);
                    177: }
                    178: 
                    179: INLINE void
                    180: PPCDACA::I2SSetPeakLevelIn0Reg(UInt32 value)
                    181: {
                    182:     WriteWordLittleEndian(soundConfigSpace, kI2SPeakLevelIn0Offset, value);
                    183: }
                    184: 
                    185: INLINE UInt32
                    186: PPCDACA::I2SGetPeakLevelIn1Reg()
                    187: {
                    188:     return ReadWordLittleEndian(soundConfigSpace, kI2SPeakLevelIn1Offset);
                    189: }
                    190: 
                    191: INLINE void
                    192: PPCDACA::I2SSetPeakLevelIn1Reg(UInt32 value)
                    193: {
                    194:     WriteWordLittleEndian(soundConfigSpace, kI2SPeakLevelIn1Offset, value);
                    195: }
                    196: 
                    197: INLINE UInt32
                    198: PPCDACA::I2SCounterReg()
                    199: {
                    200:     return ((UInt32)(soundConfigSpace) + kI2SFrameCountOffset);
                    201: }
                    202: 
                    203: // Access to Keylargo registers:
                    204: INLINE void
                    205: PPCDACA::KLSetRegister(void *klRegister, UInt32 value)
                    206: {
                    207:     UInt32 *reg = (UInt32*)klRegister;
                    208:     *reg = value;
                    209: }
                    210: 
                    211: INLINE UInt32
                    212: PPCDACA::KLGetRegister(void *klRegister)
                    213: {
                    214:     UInt32 *reg = (UInt32*)klRegister;
                    215:     return (*reg);
                    216: }
                    217: 
                    218: 
                    219: #endif // _PPCDACA_INLINED_H

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.