2 * Copyright (c) 1998-2000 Apple Computer, Inc. All rights reserved.
4 * @APPLE_LICENSE_HEADER_START@
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.
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
20 * @APPLE_LICENSE_HEADER_END@
23 * PCI Control registers for Cmd646X chipset
26 enum Ultra646RegsValues
28 kUltra646CFR
= 0x50, /* Configuration */
29 kUltra646CFR_DSA1
= 0x40,
30 kUltra646CFR_IDEIntPRI
= 0x04,
32 kUltra646CNTRL
= 0x51, /* Drive 0/1 Control Register */
33 kUltra646CNTRL_Drive1ReadAhead
= 0x80,
34 kUltra646CNTRL_Drive0ReadAhead
= 0x40,
35 kUltra646CNTRL_EnableSDY
= 0x08,
36 kUltra646CNTRL_EnablePRI
= 0x04,
38 kUltra646CMDTIM
= 0x52, /* Task file timing (all drives) */
39 kUltra646CMDTIM_Drive01CmdActive
= 0xF0,
40 kUltra646CMDTIM_Drive01CmdRecovery
= 0x0F,
42 kUltra646ARTTIM0
= 0x53, /* Drive 0 Address Setup */
43 kUltra646ARTTIM0_Drive0AddrSetup
= 0xC0,
45 kUltra646DRWTIM0
= 0x54, /* Drive 0 Data Read/Write - DACK Time */
46 kUltra646DRWTIM0_Drive0DataActive
= 0xF0,
47 kUltra646DRWTIM0_Drive0DataRecovery
= 0x0F,
49 kUltra646ARTTIM1
= 0x55, /* Drive 1 Address Setup */
50 kUltra646ARTTIM1_Drive1AddrSetup
= 0xC0,
52 kUltra646DRWTIM1
= 0x56, /* Drive 1 Data Read/Write - DACK Time */
53 kUltra646DRWTIM1_Drive1DataActive
= 0xF0,
54 kUltra646DRWTIM1_Drive1DataRecover
= 0x0F,
56 kUltra646ARTTIM23
= 0x57, /* Drive 2/3 Control/Status */
57 kUltra646ARTTIM23_AddrSetup
= 0xC0,
58 kUltra646ARTTIM23_IDEIntSDY
= 0x10,
59 kUltra646ARTTIM23_Drive3ReadAhead
= 0x08,
60 kUltra646ARTTIM23_Drive2ReadAhead
= 0x04,
62 kUltra646DRWTIM2
= 0x58, /* Drive 2 Read/Write - DACK Time */
63 kUltra646DRWTIM2_Drive2DataActive
= 0xF0,
64 kUltra646DRWTIM2_Drive2DataRecovery
= 0x0F,
66 kUltra646BRST
= 0x59, /* Read Ahead Count */
68 kUltra646DRWTIM3
= 0x5B, /* Drive 3 Read/Write - DACK Time */
69 kUltra646DRWTIM3_Drive3DataActive
= 0xF0,
70 kUltra646DRWTIM3_Drive3DataRecover
= 0x0F,
72 kUltra646BMIDECR0
= 0x70, /* BusMaster Command Register - Primary */
73 kUltra646BMIDECR0_PCIWritePRI
= 0x08,
74 kUltra646BMIDECR0_StartDMAPRI
= 0x01,
76 kUltra646MRDMODE
= 0x71, /* DMA Master Read Mode Select */
77 kUltra646MRDMODE_PCIReadMask
= 0x03,
78 kUltra646MRDMODE_PCIRead
= 0x00,
79 kUltra646MRDMODE_PCIReadMultiple
= 0x01,
80 kUltra646MRDMODE_IDEIntPRI
= 0x04,
81 kUltra646MRDMODE_IDEIntSDY
= 0x08,
82 kUltra646MRDMODE_IntEnablePRI
= 0x10,
83 kUltra646MRDMODE_IntEnableSDY
= 0x20,
84 kUltra646MRDMODE_ResetAll
= 0x40,
86 kUltra646BMIDESR0
= 0x72, /* BusMaster Status Register - Primary */
87 kUltra646BMIDESR0_Simplex
= 0x80,
88 kUltra646BMIDESR0_Drive1DMACap
= 0x40,
89 kUltra646BMIDESR0_Drive0DMACap
= 0x20,
90 kUltra646BMIDESR0_DMAIntPRI
= 0x04,
91 kUltra646BMIDESR0_DMAErrorPRI
= 0x02,
92 kUltra646BMIDESR0_DMAActivePRI
= 0x01,
94 kUltra646UDIDETCR0
= 0x73, /* Ultra DMA Timing Control Register - Primary */
95 kUltra646UDIDETCR0_Drive1UDMACycleTime
= 0xC0,
96 kUltra646UDIDETCR0_Drive0UDMACycleTime
= 0x30,
97 kUltra646UDIDETCR0_Drive1UDMAEnable
= 0x02,
98 kUltra646UDIDETCR0_Drive0UDMAEnable
= 0x01,
100 kUltra646DTPR0
= 0x74, /* Descriptor Table Pointer - Primary */
102 kUltra646BMIDECR1
= 0x78, /* BusMaster Command Register - Secondary */
103 kUltra646BMIDECR1_PCIWriteSDY
= 0x08,
104 kUltra646BMIDECR1_StartDMASDY
= 0x01,
106 kUltra646BMIDESR1
= 0x7A, /* BusMaster Status Register - Secondary */
107 kUltra646BMIDESR1_Simplex
= 0x80,
108 kUltra646BMIDESR1_Drive3DMACap
= 0x40,
109 kUltra646BMIDESR1_Drive2DMACap
= 0x20,
110 kUltra646BMIDESR1_DMAIntSDY
= 0x04,
111 kUltra646BMIDESR1_DMAErrorSDY
= 0x02,
112 kUltra646BMIDESR1_DMAActiveSDY
= 0x01,
114 kUltra646UDIDETCR1
= 0x7B, /* Ultra DMA Timing Control Register - Secondary */
115 kUltra646UDIDETCR1_Drive3UDMACycleTime
= 0xC0,
116 kUltra646UDIDETCR1_Drive2UDMACycleTime
= 0x30,
117 kUltra646UDIDETCR1_Drive3UDMAEnable
= 0x02,
118 kUltra646UDIDETCR1_Drive2UDMAEnable
= 0x01,
120 kUltra646DTPR1
= 0x7C, /* Descriptor Table Pointer - Secondary */
138 } Ultra646Descriptor
;
141 #define IDE_SYSCLK_NS 30