1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
/* $OpenBSD: iodc.h,v 1.1 1998/06/23 19:45:23 mickey Exp $ */
/*
* Copyright (c) 1990 mt Xinu, Inc. All rights reserved.
* Copyright (c) 1990,1991,1992,1994 University of Utah. All rights reserved.
*
* Permission to use, copy, modify and distribute this software is hereby
* granted provided that (1) source code retains these copyright, permission,
* and disclaimer notices, and (2) redistributions including binaries
* reproduce the notices in supporting documentation, and (3) all advertising
* materials mentioning features or use of this software display the following
* acknowledgement: ``This product includes software developed by the
* Computer Systems Laboratory at the University of Utah.''
*
* This file may be freely distributed in any form as long as
* this copyright notice is included.
* MTXINU, THE UNIVERSITY OF UTAH, AND CSL PROVIDE THIS SOFTWARE ``AS
* IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
* WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND
* FITNESS FOR A PARTICULAR PURPOSE.
*
* CSL requests users of this software to return to csl-dist@cs.utah.edu any
* improvements that they make and grant CSL redistribution rights.
*
* Utah $Hdr: iodc.h 1.6 94/12/14$
*/
/*
* Definitions for talking to IODC (I/O Dependent Code).
*
* The PDC is used to load I/O Dependent Code from a particular module.
* I/O Dependent Code is module-type dependent software which provides
* a uniform way to identify, initialize, and access a module (and in
* some cases, their devices).
*/
#ifndef _IODC_
#define _IODC_
#define MINIOSIZ 64 /* minimum buffer size for IODC call */
#define MAXIOSIZ (64 * 1024) /* maximum buffer size for IODC call */
/*
* IODC Entry Indices and their arguments...
*/
#define IODC_DATA 0 /* get the 16-byte IODC structure (see below) */
#define IODC_INIT 3 /* initialize (see options below) */
#define IODC_INIT_FIRST 2 /* find first device on module */
#define IODC_INIT_NEXT 3 /* find subsequent devices on module */
#define IODC_INIT_ALL 4 /* initialize module and device */
#define IODC_INIT_DEV 5 /* initialize device */
#define IODC_INIT_MOD 6 /* initialize module */
#define IODC_INIT_MSG 9 /* return error message(s) */
#define IODC_IO 4 /* perform I/O (see options below) */
#define IODC_IO_BOOTIN 0 /* read from boot device */
#define IODC_IO_BOOTOUT 1 /* write to boot device */
#define IODC_IO_CONSIN 2 /* read from console */
#define IODC_IO_CONSOUT 3 /* write to conosle */
#define IODC_IO_MSG 9 /* return error message(s) */
#define IODC_SPA 5 /* get extended SPA information */
#define IODC_SPA_DFLT 0 /* return SPA information */
#define IODC_TEST 8 /* perform self tests */
#define IODC_TEST_INFO 0 /* return test information */
#define IODC_TEST_STEP 1 /* execute a particular test */
#define IODC_TEST_TEST 2 /* describe a test section */
#define IODC_TEST_MSG 9 /* return error message(s) */
/*
* The following structure defines what a particular IODC returns when
* given the IODC_DATA argument.
*/
#if !defined(_LOCORE) && !defined(ASSEMBLER)
struct iodc_data {
u_int iodc_model: 8, /* hardware model number */
iodc_revision:8, /* software revision */
iodc_spa_io: 1, /* 0:memory, 1:device */
iodc_spa_pack:1, /* 1:packed multiplexor */
iodc_spa_enb:1, /* 1:has an spa */
iodc_spa_shift:5, /* power of two # bytes in SPA space */
iodc_more: 1, /* iodc_data is: 0:8-byte, 1:16-byte */
iodc_word: 1, /* io_dc_data is: 0:byte, 1:word */
iodc_pf: 1, /* 1:supports powerfail */
iodc_type: 5; /* see below */
u_int iodc_sv_rev: 4, /* software version revision number */
iodc_sv_model:20, /* software interface model # */
iodc_sv_opt: 8; /* type-specific options */
u_char iodc_rev; /* revision number of IODC code */
u_char iodc_dep; /* module-dependent information */
u_char iodc_rsv[2]; /* reserved */
u_short iodc_cksum; /* 16-bit checksum of whole IODC */
u_short iodc_length; /* number of entry points in IODC */
/* IODC entry points follow... */
};
#endif /* !(_LOCORE || ASSEMBLER) */
/* iodc_type */
#define IODC_TP_NPROC 0 /* native processor */
#define IODC_TP_MEMORY 1 /* memory */
#define IODC_TP_B_DMA 2 /* Type-B DMA (NIO Transit, Parallel, ... ) */
#define IODC_TP_B_DIRECT 3 /* Type-B Direct */
#define IODC_TP_A_DMA 4 /* Type-A DMA (NIO HPIB, LAN, ... ) */
#define IODC_TP_A_DIRECT 5 /* Type-A Direct (RS232, HIL, ... ) */
#define IODC_TP_OTHER 6 /* other */
#define IODC_TP_BCPORT 7 /* Bus Converter Port */
#define IODC_TP_CIO 8 /* CIO adapter */
#define IODC_TP_CONSOLE 9 /* console */
#define IODC_TP_FIO 10 /* foreign I/O module */
#define IODC_TP_BA 11 /* bus adaptor */
#define IODC_TP_MULTI 12 /* Multiple-Type I/O */
#define IODC_TP_FAULTY 31 /* broken */
/* iodc_sv_model (IODC_TP_MEMORY) */
#define SVMOD_MEM_ARCH 0x8 /* architected memory module */
#define SVMOD_MEM_PDEP 0x9 /* processor-dependent memory module */
/* iodc_sv_model (IODC_TP_OTHER) */
#define SVMOD_O_SPECFB 0x48 /* hp800 Spectograph frame buffer */
#define SVMOD_O_SPECCTL 0x49 /* hp800 Spectograph control */
/* iodc_sv_model (IODC_TP_BA) */
#define SVMOD_BA_ASP 0x70 /* hp700 Core Bus Adapter (ASP/Hardball) */
#define SVMOD_BA_EISA 0x76 /* hp700 EISA Bus Adapter */
#define SVMOD_BA_VME 0x78 /* hp700 VME Bus Adapter (unsupported) */
#define SVMOD_BA_LASI 0x81 /* hp700 712 Bus Adapter */
#define SVMOD_BA_WAX 0x8e /* hp700 ??? Bus Adapter (unsupported) */
/* iodc_sv_model (IODC_TP_FIO) */
#define SVMOD_FIO_SCSI 0x71 /* hp700 Core SCSI */
#define SVMOD_FIO_FWSCSI 0x7c /* hp700 Core FW SCSI */
#define SVMOD_FIO_LAN 0x72 /* hp700 Core LAN */
#define SVMOD_FIO_FDDI 0x7d /* hp700 Core FDDI (unsupported) */
#define SVMOD_FIO_HIL 0x73 /* hp700 Core HIL */
#define SVMOD_FIO_CENT 0x74 /* hp700 Core Centronics */
#define SVMOD_FIO_RS232 0x75 /* hp700 Core RS-232 */
#define SVMOD_FIO_SGC 0x77 /* hp700 SGC Graphics */
#define SVMOD_FIO_A1 0x7a /* hp700 Core audio (type 1) */
#define SVMOD_FIO_A1NB 0x7e /* hp700 Core audio (type 1, no beeper) */
#define SVMOD_FIO_A2 0x7f /* hp700 Core audio (type 2) */
#define SVMOD_FIO_A2NB 0x7b /* hp700 Core audio (type 2, no beeper) */
#define SVMOD_FIO_HPIB 0x80 /* hp700 Core HPIB (unsupported) */
#define SVMOD_FIO_GSCSI 0x82 /* hp712 Core SCSI */
#define SVMOD_FIO_GPCFD 0x83 /* hp712 PC floppy disk */
#define SVMOD_FIO_GPCIO 0x84 /* hp712 PC keyboard and mouse */
#define SVMOD_FIO_GGRF 0x85 /* hp712 SGC Graphics */
#define SVMOD_FIO_GLAN 0x8a /* hp712 Core LAN */
#define SVMOD_FIO_GRS232 0x8c /* hp712 Core RS232 */
#endif /* _IODC_ */
|