|
|
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-1999 Apple Computer, Inc. All rights reserved. ! 24: * ! 25: * Keylargo Audio Hardware Registers and DAC3550 Hardware Registers ! 26: * ! 27: */ ! 28: ! 29: #ifndef _DACA_HW_H ! 30: #define _DACA_HW_H ! 31: ! 32: /* ! 33: * I2S registers: ! 34: */ ! 35: ! 36: #define kI2S0BaseOffset 0x10000 ! 37: #define kI2S1BaseOffset 0x11000 ! 38: ! 39: #define kI2SClockOffset 0x0003C ! 40: #define kI2S0ClockEnable (UInt32)(0x00000001<<12) ! 41: #define kI2S1ClockEnable (UInt32)(0x00000001<<19) ! 42: #define kI2S0InterfaceEnable (UInt32)(0x00000001<<13) ! 43: #define kI2S1InterfaceEnable (UInt32)(0x00000001<<20) ! 44: ! 45: #define kI2SIntCtlOffset 0x0000 ! 46: #define kI2SSerialFormatOffset 0x0010 ! 47: #define kI2SCodecMsgOutOffset 0x0020 ! 48: #define kI2SCodecMsgInOffset 0x0030 ! 49: #define kI2SFrameCountOffset 0x0040 ! 50: #define kI2SFrameMatchOffset 0x0050 ! 51: #define kI2SDataWordSizesOffset 0x0060 ! 52: #define kI2SPeakLevelSelOffset 0x0070 ! 53: #define kI2SPeakLevelIn0Offset 0x0080 ! 54: #define kI2SPeakLevelIn1Offset 0x0090 ! 55: ! 56: /* ! 57: * Status register: ! 58: */ ! 59: #define kGPio12 0x00064 ! 60: #define kHeadphoneBit 0x02 ! 61: ! 62: /* ! 63: * interrupt control register definitions ! 64: */ ! 65: enum { ! 66: kFrameCountEnable = (1<<31), // enable frame count interrupt ! 67: kFrameCountPending = (1<<30), // frame count interrupt pending ! 68: kMsgFlagEnable = (1<<29), // enable message flag interrupt ! 69: kMsgFlagPending = (1<<28), // message flag interrupt pending ! 70: kNewPeakEnable = (1<<27), // enable new peak interrupt ! 71: kNewPeakPending = (1<<26), // new peak interrupt pending ! 72: kClocksStoppedEnable = (1<<25), // enable clocks stopped interrupt ! 73: kClocksStoppedPending = (1<<24),// clocks stopped interrupt pending ! 74: kExtSyncErrorEnable = (1<<23), // enable external sync error interrupt ! 75: kExtSyncErrorPending = (1<<22), // external sync error interrupt pending ! 76: kExtSyncOKEnable = (1<<21), // enable external sync OK interrupt ! 77: kExtSyncOKPending = (1<<20), // external sync OK interrupt pending ! 78: kNewSampleRateEnable = (1<<19), // enable new sample rate interrupt ! 79: kNewSampleRatePending = (1<<18),// new sample rate interrupt pending ! 80: kStatusFlagEnable = (1<<17), // enable status flag interrupt ! 81: kStatusFlagPending = (1<<16) // status flag interrupt pending ! 82: }; ! 83: ! 84: // serial format register definitions ! 85: enum { ! 86: kClockSourceMask = (3<<30), // mask off clock sources ! 87: kClockSource18MHz = (0<<30), // select 18 MHz clock base ! 88: kClockSource45MHz = (1<<30), // select 45 MHz clock base ! 89: kClockSource49MHz = (2<<30), // select 49 MHz clock base ! 90: kMClkDivisorShift = 24, // shift to position value in MClk divisor field ! 91: kMClkDivisorMask = (0x1F<<24),// mask MClk divisor field ! 92: kMClkDivisor1 = (0x14<<24), // MClk == clock source ! 93: kMClkDivisor3 = (0x13<<24), // MClk == clock source/3 ! 94: kMClkDivisor5 = (0x12<<24), // MClk == clock source/5 ! 95: kSClkDivisorShift = 20, // shift to position value in SClk divisor field ! 96: kSClkDivisorMask = (0xF<<20), // mask SClk divisor field ! 97: kSClkDivisor1 = (8<<20), // SClk == MClk ! 98: kSClkDivisor3 = (9<<20), // SClk == MClk/3 ! 99: kSClkMaster = (1<<19), // SClk in master mode ! 100: kSClkSlave = (0<<19), // SClk in slave mode ! 101: kSerialFormatShift = 16, // shift to position value in I2S serial format field ! 102: kSerialFormatMask = (7<<16), // mask serial format field ! 103: kSerialFormatSony = (0<<16), // Sony mode ! 104: kSerialFormat64x = (1<<16), // I2S 64x mode ! 105: kSerialFormat32x = (2<<16), // I2S 32x mode ! 106: kSerialFormatDAV = (4<<16), // DAV mode ! 107: kSerialFormatSiliLabs = (5<<16), // Silicon Labs mode ! 108: kExtSampleFreqIntShift = 12, // shift to position for external sample frequency interrupt ! 109: kExtSampleFreqIntMask = (0xF<<12), // mask external sample frequency interrupt field ! 110: kExtSampleFreqMask = 0xFFF // mask for external sample frequency ! 111: }; ! 112: ! 113: // codec mesage in and out registers are not supported ! 114: // data word sizes ! 115: enum { ! 116: kNumChannelsInShift = 24, // shift to get to num channels in ! 117: kNumChannelsInMask = (0x1F<<24), // mask num channels in field ! 118: kDataInSizeShift = 16, // shift to get to data in size ! 119: kDataInSizeMask = (3<<16), // mask data in size ! 120: kDataIn16 = (0<<16), // 16 bit audio data in ! 121: kDataIn24 = (3<<16), // 24 bit audio data in ! 122: kNumChannelsOutShift = 8, // shift to get to num channels out ! 123: kNumChannelsOutMask = (0x1F<<8), // mask num channels out field ! 124: kDataOutSizeShift = 0, // shift to get to data out size ! 125: kDataOutSizeMask = (3<<0), // mask data out size ! 126: kDataOut16 = (0<<0), // 16 bit audio data out ! 127: kDataOut24 = (3<<0) // 24 bit audio data out ! 128: }; ! 129: ! 130: // peak level subframe select register is not supported ! 131: // peak level in meter registers ! 132: enum { ! 133: kNewPeakInShift = 31, // shift to get to new peak in ! 134: kNewPeakInMask = (1<<31), // mask new peak in bit ! 135: kHoldPeakInShift = 30, // shift to get to peak hold ! 136: kHoldPeakInMask = (1<<30), // mask hold peak value ! 137: kHoldPeakInEnable = (0<<30), // enable the hold peak register ! 138: kHoldPeakInDisable = (1<<30), // disable the hold peak register (from updating) ! 139: kPeakValueMask = 0x00FFFFFF // mask to get peak value ! 140: }; ! 141: ! 142: enum { ! 143: // 12c bus address for the chip and sub-addresses for registers ! 144: i2cBusAddrDAC3550A = 0x4d, ! 145: i2cBusSubAddrSR_REG = 0x01, ! 146: i2cBusSubAddrAVOL = 0x02, ! 147: i2cBusSubaddrGCFG = 0x03, ! 148: ! 149: // Sample Rate Control, 8 bit register ! 150: kPowerOnDefaultSR_REG = 0x00, ! 151: ! 152: kLeftLRSelSR_REG = 0x00, // left channel default ! 153: kRightLRSelSR_REG = 0x10, // right channel ! 154: kLRSelSR_REGMask = 0x10, ! 155: ! 156: kNoDelaySPSelSR_REG = 0x00, // default ! 157: k1BitDelaySPSelSR_REG = 0x08, ! 158: kDelaySPSelSR_REGMask = 0x08, ! 159: ! 160: kSRC_48SR_REG = 0x00, // 32 - 48 KHz default ! 161: kSRC_32SR_REG = 0x01, // 26 - 32 KHz ! 162: kSRC_24SR_REG = 0x02, // 20 - 26 KHz ! 163: kSRC_16SR_REG = 0x03, // 14 - 20 KHz ! 164: kSRC_12SR_REG = 0x04, // 10 - 14 KHz ! 165: kSRC_8SR_REG = 0x05, // 8 - 10 KHz ! 166: kSRC_Auto_REG = 0x06, // autoselect ! 167: kSampleRateControlMask = 0x07, ! 168: ! 169: // Analog Volume, 16 bit register ! 170: kMuteVolumeLevel_VOL = 0x00, // Mute ! 171: kMinVolumeLevel_VOL = 0x01, // -75 dB ! 172: kMaxVolumeLevel_VOL = 0x38, // 18 dB ! 173: kVolumeRangeLevel_VOL = kMaxVolumeLevel_VOL - kMinVolumeLevel_VOL, ! 174: ! 175: kPowerOnDefaultAVOL = 0x2C2C, // 0 dB ! 176: kLeftAVOLShift = 8, ! 177: kRightAVOLShift = 0, ! 178: kRightAVOLMask = 0x003F, // range -75 to +18 dB, default 0 dB ! 179: kLeftAVOLMask = 0x3F00, // range -75 to +18 dB, default 0 dB ! 180: ! 181: // Global Configuration, 8 bit register ! 182: kPowerOnDefaultGCFG = 0x04, ! 183: ! 184: kInvertRightAmpGCFG = 0x01, // 0 -> right power amplifier not inverted (default) ! 185: kMonoGCFG = 0x02, // 0 -> stereo (default), 1 -> mono ! 186: kDACOnGCFG = 0x04, // 1 -> DAC on (default) ! 187: kAuxOneGCFG = 0x08, // 0 -> AUX1 off (default) ! 188: kAuxTwoGCFG = 0x10, // 0 -> AUX2 off (default) ! 189: kLowPowerGCFG = 0x20, // 0 -> normal power (default), 1 -> low power ! 190: kSelect5VoltGCFG = 0x40, // 0 -> 3 Volt (default), 1 -> 5 Volt ! 191: ! 192: kNoChangeMask = 0x00 ! 193: }; ! 194: ! 195: #endif // _DACA_HW_H ! 196:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.