summaryrefslogtreecommitdiff
path: root/sys/arch/mvme88k/machine/prom.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch/mvme88k/machine/prom.h')
-rw-r--r--sys/arch/mvme88k/machine/prom.h157
1 files changed, 157 insertions, 0 deletions
diff --git a/sys/arch/mvme88k/machine/prom.h b/sys/arch/mvme88k/machine/prom.h
new file mode 100644
index 00000000000..7ee08f47ea0
--- /dev/null
+++ b/sys/arch/mvme88k/machine/prom.h
@@ -0,0 +1,157 @@
+/* $NetBSD$ */
+
+/*
+ * Copyright (c) 1996 Nivas Madhur
+ * Copyright (c) 1995 Theo de Raadt
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Theo de Raadt
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#define MVMEPROM_INCHR 0x00
+#define MVMEPROM_INSTAT 0x01
+#define MVMEPROM_INLN 0x02
+#define MVMEPROM_READSTR 0x03
+#define MVMEPROM_READLN 0x04
+#define MVMEPROM_OUTCHR 0x20
+#define MVMEPROM_OUTSTR 0x21
+#define MVMEPROM_DSKRD 0x10
+#define MVMEPROM_DSKWR 0x11
+#define MVMEPROM_DSKCFIG 0x12
+#define MVMEPROM_DSKFMT 0x14
+#define MVMEPROM_DSKCTRL 0x15
+#define MVMEPROM_NETCTRL 0x1d
+#define MVMEPROM_OUTSTRCRLF 0x22
+#define MVMEPROM_WRITE 0x23
+#define MVMEPROM_WRITELN 0x24
+#define MVMEPROM_DELAY 0x43
+#define MVMEPROM_RTC_RD 0x53
+#define MVMEPROM_EXIT 0x63
+#define MVMEPROM_GETBRDID 0x70
+#define MVMEPROM_ENVIRON 0x71
+
+#define NETCTRLCMD_GETETHER 1
+
+#define ENVIRONCMD_WRITE 1
+#define ENVIRONCMD_READ 2
+#define ENVIRONTYPE_EOL 0
+#define ENVIRONTYPE_START 1
+#define ENVIRONTYPE_DISKBOOT 2
+#define ENVIRONTYPE_ROMBOOT 3
+#define ENVIRONTYPE_NETBOOT 4
+#define ENVIRONTYPE_MEMSIZE 5
+
+#ifndef LOCORE
+struct prom_netctrl {
+ u_char dev;
+ u_char ctrl;
+ u_short status;
+ u_long cmd;
+ u_long addr;
+ u_long len;
+ u_long flags;
+};
+
+struct prom_environ_hdr {
+ u_char type;
+ u_char len;
+};
+
+struct mvmeprom_brdid {
+ u_long eye_catcher;
+ u_char rev;
+ u_char month;
+ u_char day;
+ u_char year;
+ u_short size;
+ u_short rsv1;
+ u_short model;
+ u_short suffix;
+ u_short options;
+ u_char family;
+ u_char cpu;
+ u_short ctrlun;
+ u_short devlun;
+ u_short devtype;
+ u_short devnum;
+ u_long bug;
+
+ /*
+ * XXX: I have seen no documentation for these!
+ *
+ * The following (appears to) exist only on the MVME162 and
+ * upwards. We should figure out what the other fields are.
+ */
+ u_char xx1[16];
+ u_char xx2[4];
+ u_char longname[12];
+ u_char xx3[16];
+ u_char speed[4];
+ u_char xx4[12];
+};
+
+struct mvmeprom_time {
+ u_char year_BCD;
+ u_char month_BCD;
+ u_char day_BCD;
+ u_char wday_BCD;
+ u_char hour_BCD;
+ u_char min_BCD;
+ u_char sec_BCD;
+ u_char cal_BCD;
+};
+
+struct mvmeprom_dskio {
+ u_char ctrl_lun;
+ u_char dev_lun;
+ u_short status;
+ void *pbuffer;
+ u_long blk_num;
+ u_short blk_cnt;
+ u_char flag;
+#define BUG_FILE_MARK 0x80
+#define IGNORE_FILENUM 0x02
+#define END_OF_FILE 0x01
+ u_char addr_mod;
+};
+#define MVMEPROM_BLOCK_SIZE 256
+
+struct mvmeprom_args {
+ u_int dev_lun;
+ u_int ctrl_lun;
+ u_int flags;
+ u_int ctrl_addr;
+ u_int entry;
+ u_int conf_blk;
+ char *arg_start;
+ char *arg_end;
+};
+
+#endif
+
+#define MVMEPROM_CALL(x) \
+ asm volatile ( __CONCAT("or r9,r0,",__STRING(x)) ); \
+ asm volatile ("tb0 0,r0,496");