|
|
1.1 root 1: /*++
2:
3: Copyright (c) 1993 Microsoft Corporation
4:
5: Module Name:
6:
7: mips\atd_plat.h
8:
9: Abstract:
10:
11: This file includes mips platform-dependent declarations for the AT
12: disk (aka ST506 and ISA standard hard disk) driver for NT.
13:
14: If this driver is ported to a different platform, this file (and
15: atd_conf.h) will need to be modified extensively. The build
16: procedure should make sure that the proper version of this file is
17: available as atd_plat.h (which is included by atdisk.c) when
18: building for a specific platform.
19:
20: Author:
21:
22: Chad Schwitters (chads) 21-Feb-1991.
23: Mike Glass (mglass) 5-April-1993
24:
25: Environment:
26:
27: Kernel mode only.
28:
29: Notes:
30:
31: Revision History:
32:
33: --*/
34:
35: //
36: // Macros to access the controller, which on the ix86 is in I/O space.
37: //
38:
39: #define READ_CONTROLLER( Address ) \
40: READ_PORT_UCHAR( (Address) )
41:
42: #define READ_CONTROLLER_BUFFER( Address, Value, Length ) \
43: READ_PORT_BUFFER_USHORT( \
44: ( PUSHORT )(Address), \
45: ( PUSHORT )(Value), \
46: ( ULONG )(Length) / 2 )
47:
48: #define WRITE_CONTROLLER( Address, Value ) \
49: WRITE_PORT_UCHAR( (Address), ( UCHAR )(Value) )
50:
51: #define WRITE_CONTROLLER_BUFFER( Address, Value, Length ) \
52: WRITE_PORT_BUFFER_USHORT( \
53: ( PUSHORT )(Address), \
54: ( PUSHORT )(Value), \
55: ( ULONG )(Length) / 2 )
56:
57: //
58: // ST506 register definitions, as offsets from a base (which should be
59: // passed in by configuration management).
60: //
61:
62: #define DATA_REGISTER 0
63: #define WRITE_PRECOMP_REGISTER 1
64: #define ERROR_REGISTER 1
65: #define SECTOR_COUNT_REGISTER 2
66: #define SECTOR_NUMBER_REGISTER 3
67: #define CYLINDER_LOW_REGISTER 4
68: #define CYLINDER_HIGH_REGISTER 5
69: #define DRIVE_HEAD_REGISTER 6
70: #define COMMAND_REGISTER 7
71: #define STATUS_REGISTER 7
72:
73: //
74: // In addition to I/O space access to the controller registers, ISA defines
75: // a separate "drive control" register. Here's commands to send to that
76: // register.
77: //
78:
79: #define RESET_CONTROLLER 0x04
80: #define ENABLE_INTERRUPTS 0x00
81:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.