|
|
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: * PCI Control registers for Cmd646X chipset ! 24: * ! 25: */ ! 26: #define Ultra646CFR 0x50 /* Configuration */ ! 27: #define Ultra646CFR_DSA1 0x40 ! 28: #define Ultra646CFR_IDEIntPRI 0x04 ! 29: ! 30: #define Ultra646CNTRL 0x51 /* Drive 0/1 Control Register */ ! 31: #define Ultra646CNTRL_Drive1ReadAhead 0x80 ! 32: #define Ultra646CNTRL_Drive0ReadAhead 0x40 ! 33: #define Ultra646CNTRL_EnableSDY 0x08 ! 34: #define Ultra646CNTRL_EnablePRI 0x04 ! 35: ! 36: #define Ultra646CMDTIM 0x52 /* Task file timing (all drives) */ ! 37: #define Ultra646CMDTIM_Drive01CmdActive 0xF0 ! 38: #define Ultra646CMDTIM_Drive01CmdRecovery 0x0F ! 39: ! 40: #define Ultra646ARTTIM0 0x53 /* Drive 0 Address Setup */ ! 41: #define Ultra646ARTTIM0_Drive0AddrSetup 0xC0 ! 42: ! 43: #define Ultra646DRWTIM0 0x54 /* Drive 0 Data Read/Write - DACK Time */ ! 44: #define Ultra646DRWTIM0_Drive0DataActive 0xF0 ! 45: #define Ultra646DRWTIM0_Drive0DataRecovery 0x0F ! 46: ! 47: #define Ultra646ARTTIM1 0x55 /* Drive 1 Address Setup */ ! 48: #define Ultra646ARTTIM1_Drive1AddrSetup 0xC0 ! 49: ! 50: #define Ultra646DRWTIM1 0x56 /* Drive 1 Data Read/Write - DACK Time */ ! 51: #define Ultra646DRWTIM1_Drive1DataActive 0xF0 ! 52: #define Ultra646DRWTIM1_Drive1DataRecover 0x0F ! 53: ! 54: #define Ultra646ARTTIM23 0x57 /* Drive 2/3 Control/Status */ ! 55: #define Ultra646ARTTIM23_AddrSetup 0xC0 ! 56: #define Ultra646ARTTIM23_IDEIntSDY 0x10 ! 57: #define Ultra646ARTTIM23_Drive3ReadAhead 0x08 ! 58: #define Ultra646ARTTIM23_Drive2ReadAhead 0x04 ! 59: ! 60: #define Ultra646DRWTIM2 0x58 /* Drive 2 Read/Write - DACK Time */ ! 61: #define Ultra646DRWTIM2_Drive2DataActive 0xF0 ! 62: #define Ultra646DRWTIM2_Drive2DataRecovery 0x0F ! 63: ! 64: #define Ultra646BRST 0x59 /* Read Ahead Count */ ! 65: ! 66: #define Ultra646DRWTIM3 0x5B /* Drive 3 Read/Write - DACK Time */ ! 67: #define Ultra646DRWTIM3_Drive3DataActive 0xF0 ! 68: #define Ultra646DRWTIM3_Drive3DataRecover 0x0F ! 69: ! 70: #define Ultra646BMIDECR0 0x70 /* BusMaster Command Register - Primary */ ! 71: #define Ultra646BMIDECR0_PCIWritePRI 0x08 ! 72: #define Ultra646BMIDECR0_StartDMAPRI 0x01 ! 73: ! 74: #define Ultra646MRDMODE 0x71 /* DMA Master Read Mode Select */ ! 75: #define Ultra646MRDMODE_PCIReadMask 0x03 ! 76: #define Ultra646MRDMODE_PCIRead 0x00 ! 77: #define Ultra646MRDMODE_PCIReadMultiple 0x01 ! 78: #define Ultra646MRDMODE_IDEIntPRI 0x04 ! 79: #define Ultra646MRDMODE_IDEIntSDY 0x08 ! 80: #define Ultra646MRDMODE_IntEnablePRI 0x10 ! 81: #define Ultra646MRDMODE_IntEnableSDY 0x20 ! 82: #define Ultra646MRDMODE_ResetAll 0x40 ! 83: ! 84: #define Ultra646BMIDESR0 0x72 /* BusMaster Status Register - Primary */ ! 85: #define Ultra646BMIDESR0_Simplex 0x80 ! 86: #define Ultra646BMIDESR0_Drive1DMACap 0x40 ! 87: #define Ultra646BMIDESR0_Drive0DMACap 0x20 ! 88: #define Ultra646BMIDESR0_DMAIntPRI 0x04 ! 89: #define Ultra646BMIDESR0_DMAErrorPRI 0x02 ! 90: #define Ultra646BMIDESR0_DMAActivePRI 0x01 ! 91: ! 92: #define Ultra646UDIDETCR0 0x73 /* Ultra DMA Timing Control Register - Primary */ ! 93: #define Ultra646UDIDETCR0_Drive1UDMACycleTime 0xC0 ! 94: #define Ultra646UDIDETCR0_Drive0UDMACycleTime 0x30 ! 95: #define Ultra646UDIDETCR0_Drive1UDMAEnable 0x02 ! 96: #define Ultra646UDIDETCR0_Drive0UDMAEnable 0x01 ! 97: ! 98: #define Ultra646DTPR0 0x74 /* Descriptor Table Pointer - Primary */ ! 99: ! 100: #define Ultra646BMIDECR1 0x78 /* BusMaster Command Register - Secondary */ ! 101: #define Ultra646BMIDECR1_PCIWriteSDY 0x08 ! 102: #define Ultra646BMIDECR1_StartDMASDY 0x01 ! 103: ! 104: #define Ultra646BMIDESR1 0x7A /* BusMaster Status Register - Secondary */ ! 105: #define Ultra646BMIDESR1_Simplex 0x80 ! 106: #define Ultra646BMIDESR1_Drive3DMACap 0x40 ! 107: #define Ultra646BMIDESR1_Drive2DMACap 0x20 ! 108: #define Ultra646BMIDESR1_DMAIntSDY 0x04 ! 109: #define Ultra646BMIDESR1_DMAErrorSDY 0x02 ! 110: #define Ultra646BMIDESR1_DMAActiveSDY 0x01 ! 111: ! 112: #define Ultra646UDIDETCR1 0x7B /* Ultra DMA Timing Control Register - Secondary */ ! 113: #define Ultra646UDIDETCR1_Drive3UDMACycleTime 0xC0 ! 114: #define Ultra646UDIDETCR1_Drive2UDMACycleTime 0x30 ! 115: #define Ultra646UDIDETCR1_Drive3UDMAEnable 0x02 ! 116: #define Ultra646UDIDETCR1_Drive2UDMAEnable 0x01 ! 117: ! 118: #define Ultra646DTPR1 0x7C /* Descriptor Table Pointer - Primary */ ! 119: ! 120: typedef struct ! 121: { ! 122: UInt32 cntrlReg; ! 123: UInt32 arttimReg; ! 124: UInt32 cmdtimReg; ! 125: UInt32 drwtimRegPIO; ! 126: UInt32 drwtimRegDMA; ! 127: UInt32 udidetcrReg; ! 128: } Ultra646Regs; ! 129: ! 130: ! 131: typedef struct ! 132: { ! 133: UInt32 start; ! 134: UInt32 length; ! 135: } Ultra646Descriptor; ! 136: ! 137: ! 138: #define IDE_SYSCLK_NS 30
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.