|
|
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) 1992 NeXT Computer, Inc. ! 27: * ! 28: * 8237A DMA Controller definitions. ! 29: * ! 30: * HISTORY ! 31: * ! 32: * 30 May 1992 ? at NeXT ! 33: * Created. ! 34: */ ! 35: ! 36: /* ! 37: * Command register. ! 38: */ ! 39: typedef struct { ! 40: unsigned char ! 41: :2, ! 42: chip_disbl :1, ! 43: :1, ! 44: priority :1, ! 45: #define DMA_PRIO_FIXED 0 ! 46: #define DMA_PRIO_ROTATING 1 ! 47: :1, ! 48: dreq_sense :1, ! 49: #define DMA_DREQ_ACT_HIGH 0 ! 50: #define DMA_DREQ_ACT_LOW 1 ! 51: dack_sense :1; ! 52: #define DMA_DACK_ACT_LOW 0 ! 53: #define DMA_DACK_ACT_HIGH 1 ! 54: } dma_cmd_reg_t; ! 55: ! 56: /* ! 57: * Mode register. ! 58: */ ! 59: typedef struct { ! 60: unsigned char ! 61: chan_sel :2, ! 62: #define DMA_CHAN0_SEL 0 ! 63: #define DMA_CHAN1_SEL 1 ! 64: #define DMA_CHAN2_SEL 2 ! 65: #define DMA_CHAN3_SEL 3 ! 66: xfer_dir :2, ! 67: #define DMA_XFER_VERIFY 0 ! 68: #define DMA_XFER_WRITE 1 ! 69: #define DMA_XFER_READ 2 ! 70: autoinit :1, ! 71: adrs_dir :1, ! 72: #define DMA_ADRS_INCR 0 ! 73: #define DMA_ADRS_DECR 1 ! 74: xfer_mode :2; ! 75: #define DMA_MODE_DEMAND 0 ! 76: #define DMA_MODE_SINGLE 1 ! 77: #define DMA_MODE_BLOCK 2 ! 78: #define DMA_MODE_CASCADE 3 ! 79: } dma_mode_reg_t; ! 80: ! 81: /* ! 82: * Request register. ! 83: */ ! 84: typedef struct { ! 85: unsigned char ! 86: chan_sel :2, ! 87: req :1, ! 88: #define DMA_REQ_RESET 0 ! 89: #define DMA_REQ_SET 1 ! 90: :5; ! 91: } dma_req_reg_t; ! 92: ! 93: /* ! 94: * Mask register. ! 95: */ ! 96: typedef struct { ! 97: unsigned char ! 98: chan_sel :2, ! 99: mask :1, ! 100: #define DMA_MASK_CLEAR 0 ! 101: #define DMA_MASK_SET 1 ! 102: :5; ! 103: } dma_mask_reg_t; ! 104: ! 105: /* ! 106: * Status register. ! 107: */ ! 108: typedef struct { ! 109: unsigned char ! 110: chan0_done :1, ! 111: chan1_done :1, ! 112: chan2_done :1, ! 113: chan3_done :1, ! 114: chan0_req :1, ! 115: chan1_req :1, ! 116: chan2_req :1, ! 117: chan3_req :1; ! 118: } dma_status_reg_t; ! 119: ! 120: /* ! 121: * Extended mode register (EISA only). ! 122: */ ! 123: typedef struct { ! 124: unsigned char ! 125: chan_sel :2, ! 126: xfer_width :2, ! 127: #define DMA_XFR_8_BIT 0 ! 128: #define DMA_XFR_16_BIT_WORD 1 ! 129: #define DMA_XFR_32_BIT 2 ! 130: #define DMA_XFR_16_BIT_BYTE 3 ! 131: ! 132: dma_timing :2, ! 133: #define DMA_TIMING_COMPAT 0 ! 134: #define DMA_TIMING_A 1 ! 135: #define DMA_TIMING_B 2 ! 136: #define DMA_TIMING_BURST 3 ! 137: ! 138: eop_io :1, ! 139: #define DMA_EOP_OUT 0 ! 140: #define DMA_EOP_IN 1 ! 141: stop_enable :1; ! 142: #define DMA_STOP_DISABLE 0 ! 143: #define DMA_STOP_ENABLE 1 ! 144: ! 145: } dma_extend_mode_reg_t; ! 146: ! 147: /* ! 148: * DMA I/O Ports. ! 149: */ ! 150: ! 151: /* ! 152: * Master device. ! 153: */ ! 154: #define DMA_CHAN0_ADDR_PORT 0x0000 ! 155: #define DMA_CHAN0_COUNT_PORT 0x0001 ! 156: #define DMA_CHAN1_ADDR_PORT 0x0002 ! 157: #define DMA_CHAN1_COUNT_PORT 0x0003 ! 158: #define DMA_CHAN2_ADDR_PORT 0x0004 ! 159: #define DMA_CHAN2_COUNT_PORT 0x0005 ! 160: #define DMA_CHAN3_ADDR_PORT 0x0006 ! 161: #define DMA_CHAN3_COUNT_PORT 0x0007 ! 162: ! 163: #define DMA_CHAN0_PAGE_PORT 0x0087 ! 164: #define DMA_CHAN1_PAGE_PORT 0x0083 ! 165: #define DMA_CHAN2_PAGE_PORT 0x0081 ! 166: #define DMA_CHAN3_PAGE_PORT 0x0082 ! 167: ! 168: // HICOUNT (bits 23:16): EISA Only ! 169: #define DMA_CHAN0_HICOUNT_PORT 0x0401 ! 170: #define DMA_CHAN1_HICOUNT_PORT 0x0403 ! 171: #define DMA_CHAN2_HICOUNT_PORT 0x0405 ! 172: #define DMA_CHAN3_HICOUNT_PORT 0x0407 ! 173: ! 174: // HIPAGE (bits 31:24): EISA Only ! 175: #define DMA_CHAN0_HIPAGE_PORT 0x0487 ! 176: #define DMA_CHAN1_HIPAGE_PORT 0x0483 ! 177: #define DMA_CHAN2_HIPAGE_PORT 0x0481 ! 178: #define DMA_CHAN3_HIPAGE_PORT 0x0482 ! 179: ! 180: #define DMA_CMD_STATUS_PORT 0x0008 ! 181: #define DMA_REQ_PORT 0x0009 ! 182: #define DMA_MASK_PORT 0x000A ! 183: #define DMA_MODE_PORT 0x000B ! 184: #define DMA_CLEAR_FF_PORT 0x000C ! 185: #define DMA_MASTER_RESET_PORT 0x000D ! 186: #define DMA_EXTEND_MODE_PORT 0x040B ! 187: ! 188: /* ! 189: * Slave device. ! 190: */ ! 191: #define DMA2_CHAN0_ADDR_PORT 0x00C0 ! 192: #define DMA2_CHAN0_COUNT_PORT 0x00C2 ! 193: #define DMA2_CHAN1_ADDR_PORT 0x00C4 ! 194: #define DMA2_CHAN1_COUNT_PORT 0x00C6 ! 195: #define DMA2_CHAN2_ADDR_PORT 0x00C8 ! 196: #define DMA2_CHAN2_COUNT_PORT 0x00CA ! 197: #define DMA2_CHAN3_ADDR_PORT 0x00CC ! 198: #define DMA2_CHAN3_COUNT_PORT 0x00CE ! 199: ! 200: #define DMA2_CHAN1_PAGE_PORT 0x008B ! 201: #define DMA2_CHAN2_PAGE_PORT 0x0089 ! 202: #define DMA2_CHAN3_PAGE_PORT 0x008A ! 203: ! 204: // HICOUNT (bits 23:16): EISA Only ! 205: #define DMA2_CHAN1_HICOUNT_PORT 0x04C6 ! 206: #define DMA2_CHAN2_HICOUNT_PORT 0x04CA ! 207: #define DMA2_CHAN3_HICOUNT_PORT 0x04CE ! 208: ! 209: // HIPAGE (bits 31:24): EISA Only ! 210: #define DMA2_CHAN1_HIPAGE_PORT 0x048B ! 211: #define DMA2_CHAN2_HIPAGE_PORT 0x0489 ! 212: #define DMA2_CHAN3_HIPAGE_PORT 0x048A ! 213: ! 214: #define DMA2_CMD_STATUS_PORT 0x00D0 ! 215: #define DMA2_REQ_PORT 0x00D2 ! 216: #define DMA2_MASK_PORT 0x00D4 ! 217: #define DMA2_MODE_PORT 0x00D6 ! 218: #define DMA2_CLEAR_FF_PORT 0x00D8 ! 219: #define DMA2_MASTER_RESET_PORT 0x00DA ! 220: #define DMA2_EXTEND_MODE_PORT 0x04D6
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.