Annotation of sys/arch/mvmeppc/include/prom.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: prom.h,v 1.5 2004/01/24 21:10:31 miod Exp $ */
2: /*
3: * Copyright (c) 2001 Steve Murphree, Jr.
4: * All rights reserved.
5: *
6: * Redistribution and use in source and binary forms, with or without
7: * modification, are permitted provided that the following conditions
8: * are met:
9: * 1. Redistributions of source code must retain the above copyright
10: * notice, this list of conditions and the following disclaimer.
11: * 2. Redistributions in binary form must reproduce the above copyright
12: * notice, this list of conditions and the following disclaimer in the
13: * documentation and/or other materials provided with the distribution.
14: *
15: * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16: * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18: * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20: * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21: * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22: * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23: * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24: * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25: */
26: #ifndef __MACHINE_PROM_H__
27: #define __MACHINE_PROM_H__
28:
29: #define MVMEPROM_INCHR 0x0000
30: #define MVMEPROM_INSTAT 0x0001
31: #define MVMEPROM_INLN 0x0002
32: #define MVMEPROM_READSTR 0x0003
33: #define MVMEPROM_READLN 0x0004
34: #define MVMEPROM_CHKBRK 0x0005
35: #define MVMEPROM_DSKRD 0x0010
36: #define MVMEPROM_DSKWR 0x0011
37: #define MVMEPROM_DSKCFIG 0x0012
38: #define MVMEPROM_DSKFMT 0x0014
39: #define MVMEPROM_DSKCTRL 0x0015
40: #define MVMEPROM_NETRD 0x0018
41: #define MVMEPROM_NETWR 0x0019
42: #define MVMEPROM_NETCFIG 0x001a
43: #define MVMEPROM_NETFOPEN 0x001b
44: #define MVMEPROM_NETFREAD 0x001c
45: #define MVMEPROM_NETCTRL 0x001d
46: #define MVMEPROM_OUTCHR 0x0020
47: #define MVMEPROM_OUTSTR 0x0021
48: #define MVMEPROM_OUTLN 0x0022
49: #define MVMEPROM_WRITE 0x0023
50: #define MVMEPROM_WRITELN 0x0024
51: #define MVMEPROM_WRITDLN 0x0025
52: #define MVMEPROM_PCRLF 0x0026
53: #define MVMEPROM_ERASLN 0x0027
54: #define MVMEPROM_WRITD 0x0028
55: #define MVMEPROM_SNDBRK 0x0029
56: #define MVMEPROM_DELAY 0x0043
57: #define MVMEPROM_RTC_TM 0x0050
58: #define MVMEPROM_RTC_DT 0x0051
59: #define MVMEPROM_RTC_DSP 0x0052
60: #define MVMEPROM_RTC_RD 0x0053
61: #define MVMEPROM_REDIR 0x0060
62: #define MVMEPROM_REDIR_I 0x0061
63: #define MVMEPROM_REDIR_O 0x0062
64: #define MVMEPROM_EXIT 0x0063
65: #define MVMEPROM_RETURN MVMEPROM_EXIT
66: #define MVMEPROM_BINDEC 0x0064
67: #define MVMEPROM_CHANGEV 0x0067
68: #define MVMEPROM_STRCMP 0x0068
69: #define MVMEPROM_MUL32 0x0069
70: #define MVMEPROM_DIV32 0x006a
71: #define MVMEPROM_CHKSUM 0x006b
72: #define MVMEPROM_BRD_ID 0x0070
73: #define MVMEPROM_ENVIRON 0x0071
74: #define MVMEPROM_PFLASH 0x0073
75: #define MVMEPROM_DIAGFCN 0x0074
76: #define MVMEPROM_SIOPEPS 0x0090
77: #define MVMEPROM_FORKMPU 0x0100
78: #define MVMEPROM_FORKMPUR 0x0101
79: #define MVMEPROM_IDELMPU 0x0110
80: #define MVMEPROM_IOINQ 0x0120
81: #define MVMEPROM_IOINFORM 0x0124
82: #define MVMEPROM_IOCONFIG 0x0128
83: #define MVMEPROM_IODELETE 0x012c
84: #define MVMEPROM_SYMBOLTA 0x0130
85: #define MVMEPROM_SYMBOLTD 0x0131
86:
87: #define NETCTRLCMD_GETETHER 1
88: #define ENVIRONCMD_WRITE 1
89: #define ENVIRONCMD_READ 2
90: #define ENVIRONTYPE_EOL 0
91: #define ENVIRONTYPE_START 1
92: #define ENVIRONTYPE_DISKBOOT 2
93: #define ENVIRONTYPE_ROMBOOT 3
94: #define ENVIRONTYPE_NETBOOT 4
95: #define ENVIRONTYPE_MEMSIZE 5
96:
97: #define NETSTATUS_SUCCESS 0x00
98: #define NETSTATUS_MISALNG 0x01
99: #define NETSTATUS_BUFFLMT 0x02
100: #define NETSTATUS_BADLEN 0x03
101: #define NETSTATUS_INITABRT 0x04
102: #define NETSTATUS_TXABRT 0x05
103: #define NETSTATUS_PCIADDRERR 0x06
104: #define NETSTATUS_NOPORT 0x07
105: #define NETSTATUS_ILLIPL 0x08
106: #define NETSTATUS_USERABRT 0x09
107: #define NETSTATUS_TIMEOUT 0x0A
108: #define NETSTATUS_SYSERR 0x10
109: #define NETSTATUS_TXBABBLE 0x11
110: #define NETSTATUS_TXCOL 0x12
111: #define NETSTATUS_TXSTOPPED 0x13
112: #define NETSTATUS_TXUNDERFL 0x14
113: #define NETSTATUS_TXLATECOL 0x15
114: #define NETSTATUS_TXLOSTCARR 0x16
115: #define NETSTATUS_TXLINKFAIL 0x17
116: #define NETSTATUS_TXNOCARR 0x18
117: #define NETSTATUS_TXTOPHY 0x19
118: #define NETSTATUS_RXCRCERR 0x20
119: #define NETSTATUS_RXOVERFL 0x21
120: #define NETSTATUS_RXFRAMEERR 0x22
121: #define NETSTATUS_RXLDFNS 0x23
122: #define NETSTATUS_RXFDCOL 0x24
123: #define NETSTATUS_RXRUNTFRAME 0x25
124: #define NETSTATUS_TXTONORM 0x28
125: #define NETSTATUS_TXTOSETUP 0x29
126: #define NETSTATUS_SROMERR 0x30
127:
128: #define NETCTRLCMD_INIT 0
129: #define NETCTRLCMD_GETETHER 1
130: #define NETCTRLCMD_TX 2
131: #define NETCTRLCMD_RX 3
132: #define NETCTRLCMD_FLUSH 4
133: #define NETCTRLCMD_RESET 5
134:
135: #define NETCFG_FLAG_RD 0
136: #define NETCFG_FLAG_WR 1
137: #define NETCFG_FLAG_WRNV 2
138:
139: #ifndef LOCORE
140: extern struct bugenviron bugenviron;
141: extern int bugenv_init;
142:
143: #define BUG_ENV_END 0
144: #define BUG_STARTUP_PARAM 1
145: struct bug_startup {
146: char s_mode;
147: char s_menu;
148: char s_remotestart;
149: char s_probe;
150: char s_negsysfail;
151: char s_resetscsi;
152: char s_nocfblk;
153: char s_scsisync;
154: };
155:
156: #define BUG_AUTOBOOT_INFO 2
157: struct bug_autoboot {
158: char b_enable;
159: char b_poweruponly;
160: char b_clun;
161: char b_dlun;
162: char b_delay;
163: char b_string[22]; /* 0x15 + 0x1 */
164: };
165:
166: #define BUG_ROMBOOT_INFO 3
167: struct bug_romboot {
168: char r_enable;
169: char r_poweruponly;
170: char r_bootvme;
171: char r_delay;
172: unsigned r_start;
173: unsigned r_end;
174: };
175:
176: #define BUG_NETBOOT_INFO 4
177: struct bug_netboot {
178: char n_enable;
179: char n_poweruponly;
180: char n_clun;
181: char n_dlun;
182: char n_delay;
183: char *n_param;
184: };
185:
186: #define BUG_MEMORY_INFO 5
187: struct bug_memory {
188: char m_sizeenable;
189: unsigned m_start;
190: unsigned m_end;
191: };
192:
193: struct bugenviron {
194: struct bug_startup s;
195: struct bug_autoboot b;
196: struct bug_romboot r;
197: struct bug_netboot n;
198: struct bug_memory m;
199: };
200:
201: #define bug_localmemsize() (bugenviron.m.m_end - bugenviron.m.m_start)
202: #define bug_localmemstart() (bugenviron.m.m_start)
203: #define bug_localmemend() (bugenviron.m.m_end)
204:
205: struct mvmeprom_netio {
206: u_char clun;
207: u_char dlun;
208: u_short status;
209: void *addr;
210: u_long tlen;
211: u_long offset;
212: u_long ttime;
213: u_long tbytes;
214: char filename[64];
215: };
216:
217: struct mvmeprom_netfopen {
218: u_char clun;
219: u_char dlun;
220: u_short status;
221: char filename[64];
222: };
223:
224: struct mvmeprom_netfread {
225: u_char clun;
226: u_char dlun;
227: u_short status;
228: void *addr;
229: u_short bytes;
230: u_short blk;
231: u_long timeout;
232: };
233:
234: struct mvmeprom_netctrl {
235: u_char clun;
236: u_char dlun;
237: u_short status;
238: u_long cmd;
239: void *addr;
240: u_long len;
241: u_long flags;
242: };
243:
244: struct mvmeprom_netparam {
245: u_long ver;
246: void * nodeaddr;
247: void * loadaddr;
248: void * execaddr;
249: u_long delay;
250: u_long length;
251: u_long offset;
252: void * traceaddr;
253: u_long client_ip;
254: u_long server_ip;
255: u_long subnet;
256: u_long bcast;
257: u_long gateway_ip;
258: u_char rarp_retry;
259: u_char tftp_retry;
260: u_char rarp_cntl;
261: u_char update_cntl;
262: char filename[64];
263: char args[64];
264: };
265:
266: struct mvmeprom_netcfg {
267: u_char clun;
268: u_char dlun;
269: u_short status;
270: struct mvmeprom_netparam *netparam;
271: u_long flag;
272: };
273:
274: struct prom_environ_hdr {
275: u_char type;
276: u_char len;
277: };
278:
279: struct mvmeprom_brdid {
280: u_long eye_catcher; /* "BDID" */
281: u_char rev;
282: u_char month;
283: u_char day;
284: u_char year;
285: u_short size; /* BID packet length */
286: u_short rsv1;
287: u_short model; /* e.g. 1603, 1604 */
288: u_short suffix; /* e.g. AT */
289: u_long options; /* Board options */
290: u_short ctrlun; /* boot clun */
291: u_short devlun; /* boot dlun */
292: u_short devtype; /* boot device type */
293: u_short devnum; /* boot device number */
294: u_long opt2; /* reserved */
295: u_char version[4];
296: /* the folowing are CNFG values */
297: u_char board_serial[12]; /* SBC serial number */
298: u_char board_id[16]; /* SBC id */
299: u_char pwa_id[16]; /* printed wiring assembly id */
300: u_char old_speed[4]; /* old cpu speed field */
301: u_char etheraddr[6]; /* mac address, all zero if no ether */
302: u_char fill[2];
303: u_char scsi_id[2]; /* local SCSI id */
304: u_char speed[3]; /* cpu speed */
305: u_char bus_speed[3]; /* pci bus speed */
306: u_char sys_serial[16]; /* system serial (user)*/
307: u_char sys_id[31]; /* system id (user)*/
308: u_char license_id[9]; /* license ID (for AIX)*/
309: };
310:
311: struct mvmeprom_time {
312: u_char year_BCD;
313: u_char month_BCD;
314: u_char day_BCD;
315: u_char wday_BCD;
316: u_char hour_BCD;
317: u_char min_BCD;
318: u_char sec_BCD;
319: u_char cal_BCD;
320: };
321:
322: struct mvmeprom_dskio {
323: u_char ctrl_lun;
324: u_char dev_lun;
325: u_short status;
326: void *pbuffer;
327: u_long blk_num;
328: u_short blk_cnt;
329: u_char flag;
330: #define BUG_FILE_MARK 0x80
331: #define IGNORE_FILENUM 0x02
332: #define END_OF_FILE 0x01
333: u_char addr_mod;
334: };
335: #define MVMEPROM_BLOCK_SIZE 256
336:
337: struct mvmeprom_args {
338: u_int dev_lun;
339: u_int ctrl_lun;
340: u_int flags;
341: u_int ctrl_addr;
342: u_int entry;
343: u_int conf_blk;
344: char *arg_start;
345: char *arg_end;
346: char *nbarg_start;
347: char *nbarg_end;
348: u_int cputyp;
349: };
350:
351: #endif
352:
353: #define MVMEPROM_REG_CTRLLUN "3"
354: #define MVMEPROM_REG_DEVLUN "4"
355: #define MVMEPROM_REG_SCSUPP "5"
356: #define MVMEPROM_REG_CTRLADDR "6"
357: #define MVMEPROM_REG_ENTRY "7"
358: #define MVMEPROM_REG_IPA "8"
359: #define MVMEPROM_REG_ARGSTART "9"
360: #define MVMEPROM_REG_ARGEND "10"
361: #define MVMEPROM_REG_NBARGSTART "11"
362: #define MVMEPROM_REG_NBARGEND "12"
363:
364: #ifndef RB_NOSYM
365: #define RB_NOSYM 0x4000
366: #endif
367: #endif /* __MACHINE_PROM_H__ */
CVSweb