|
|
1.1 ! root 1: /*++ BUILD Version: 0001 // Increment this if a change has global effects ! 2: ! 3: Copyright (c) 1990 Microsoft Corporation ! 4: ! 5: Module Name: ! 6: ! 7: jazzdma.h ! 8: ! 9: Abstract: ! 10: ! 11: This module is the header file that describes the DMA control register ! 12: structure for the Jazz system. ! 13: ! 14: Author: ! 15: ! 16: David N. Cutler (davec) 13-Nov-1990 ! 17: ! 18: Revision History: ! 19: ! 20: --*/ ! 21: ! 22: #ifndef _JAZZDMA_ ! 23: #define _JAZZDMA_ ! 24: ! 25: // ! 26: // Define DMA register structure. ! 27: // ! 28: ! 29: typedef struct _DMA_REGISTER { ! 30: ULONG Long; ! 31: ULONG Fill; ! 32: } DMA_REGISTER, *PDMA_REGISTER; ! 33: ! 34: // ! 35: // Define DMA channel register structure. ! 36: // ! 37: ! 38: typedef struct _DMA_CHANNEL { ! 39: DMA_REGISTER Mode; ! 40: DMA_REGISTER Enable; ! 41: DMA_REGISTER ByteCount; ! 42: DMA_REGISTER Address; ! 43: } DMA_CHANNEL, *PDMA_CHANNEL; ! 44: ! 45: // ! 46: // Define DMA control register structure. ! 47: // ! 48: ! 49: typedef volatile struct _DMA_REGISTERS { ! 50: DMA_REGISTER Configuration; ! 51: DMA_REGISTER RevisionLevel; ! 52: DMA_REGISTER InvalidAddress; ! 53: DMA_REGISTER TranslationBase; ! 54: DMA_REGISTER TranslationLimit; ! 55: DMA_REGISTER TranslationInvalidate; ! 56: DMA_REGISTER CacheMaintenance; ! 57: DMA_REGISTER RemoteFailedAddress; ! 58: DMA_REGISTER MemoryFailedAddress; ! 59: DMA_REGISTER PhysicalTag; ! 60: DMA_REGISTER LogicalTag; ! 61: DMA_REGISTER ByteMask; ! 62: DMA_REGISTER BufferWindowLow; ! 63: DMA_REGISTER BufferWindowHigh; ! 64: DMA_REGISTER RemoteSpeed[16]; ! 65: DMA_REGISTER ParityDiagnosticLow; ! 66: DMA_REGISTER ParityDiagnosticHigh; ! 67: DMA_CHANNEL Channel[8]; ! 68: DMA_REGISTER InterruptSource; ! 69: DMA_REGISTER Errortype; ! 70: DMA_REGISTER RefreshRate; ! 71: DMA_REGISTER RefreshCounter; ! 72: DMA_REGISTER SystemSecurity; ! 73: DMA_REGISTER InterruptInterval; ! 74: DMA_REGISTER IntervalTimer; ! 75: DMA_REGISTER InterruptAcknowledge; ! 76: } DMA_REGISTERS, *PDMA_REGISTERS; ! 77: ! 78: // ! 79: // Define DMA channel mode register structure. ! 80: // ! 81: ! 82: typedef struct _DMA_CHANNEL_MODE { ! 83: ULONG AccessTime : 3; ! 84: ULONG TransferWidth : 2; ! 85: ULONG InterruptEnable : 1; ! 86: ULONG BurstMode : 1; ! 87: ULONG FastDmaCycle : 1; ! 88: ULONG Reserved1 : 24; ! 89: } DMA_CHANNEL_MODE, *PDMA_CHANNEL_MODE; ! 90: ! 91: // ! 92: // Define access time values. ! 93: // ! 94: ! 95: #define ACCESS_40NS 0x0 // 40ns access time ! 96: #define ACCESS_80NS 0x1 // 80ns access time ! 97: #define ACCESS_120NS 0x2 // 120ns access time ! 98: #define ACCESS_160NS 0x3 // 160ns access time ! 99: #define ACCESS_200NS 0x4 // 200ns access time ! 100: #define ACCESS_240NS 0x5 // 240ns access time ! 101: #define ACCESS_280NS 0x6 // 280ns access time ! 102: #define ACCESS_320NS 0x7 // 320ns access time ! 103: ! 104: // ! 105: // Define transfer width values. ! 106: // ! 107: ! 108: #define WIDTH_8BITS 0x1 // 8-bit transfer width ! 109: #define WIDTH_16BITS 0x2 // 16-bit transfer width ! 110: #define WIDTH_32BITS 0x3 // 32-bit transfer width ! 111: ! 112: // ! 113: // Define DMA channel enable register structure. ! 114: // ! 115: ! 116: typedef struct _DMA_CHANNEL_ENABLE { ! 117: ULONG ChannelEnable : 1; ! 118: ULONG TransferDirection : 1; ! 119: ULONG Reserved1 : 6; ! 120: ULONG TerminalCount : 1; ! 121: ULONG MemoryError : 1; ! 122: ULONG TranslationError : 1; ! 123: ULONG Reserved2 : 21; ! 124: } DMA_CHANNEL_ENABLE, *PDMA_CHANNEL_ENABLE; ! 125: ! 126: // ! 127: // Define transfer direction values. ! 128: // ! 129: ! 130: #define DMA_READ_OP 0x0 // read from device ! 131: #define DMA_WRITE_OP 0x1 // write to device ! 132: ! 133: // ! 134: // Define interrupt source register structure. ! 135: // ! 136: ! 137: typedef struct _DMA_INTERRUPT_SOURCE { ! 138: ULONG InterruptPending : 8; ! 139: ULONG MemoryParityError : 1; ! 140: ULONG R4000AddressError : 1; ! 141: ULONG IoCacheFlushError : 1; ! 142: ULONG reserved1 : 21; ! 143: } DMA_INTERRUPT_SOURCE, *PDMA_INTERRUPT_SOURCE; ! 144: ! 145: // ! 146: // Define translation table entry structure. ! 147: // ! 148: ! 149: typedef volatile struct _TRANSLATION_ENTRY { ! 150: ULONG PageFrame; ! 151: ULONG Fill; ! 152: } TRANSLATION_ENTRY, *PTRANSLATION_ENTRY; ! 153: ! 154: #endif // _JAZZDMA_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.