|
|
researchv9-SUN3(old)
/* @(#)eeprom.h 1.1 86/02/03 SMI */
/*
* Copyright (c) 1985 by Sun Microsystems, Inc.
*/
/*
* The EEPROM consists of one 2816 type EEPROM providing 2K bytes
* of electically erasable storage. To modify the EEPROM, each
* byte must be written separately. After writing each byte
* a 10 millisecond pause must be observed before the EEPROM can
* read or written again. The majority of the EEPROM is diagnostic
* and is defined in ../mon/eeprom.h. The software specific
* information (struct ee_soft) is defined here. This structure
* is 0x100 bytes big.
*/
struct ee_soft {
u_short ees_wrcnt[3]; /* write count (3 copies) */
u_short ees_nu1; /* not used */
u_char ees_chksum[3]; /* software area checksum (3 copies) */
u_char ees_nu2; /* not used */
u_char ees_resv[0x100-0xc]; /* XXX - figure this out sometime */
};
#define EE_SOFT_DEFINED /* tells ../mon/eeprom.h to use this ee_soft */
#ifdef KERNEL
/* @(#)eeprom.h 1.3 85/10/11 SMI */
/*
* Copyright (c) 1985 by Sun Microsystems, Inc.
*/
/*
* This structure defines the contents to the EEPROM for the Sun-3.
* It is divided into a diagnostic section, a reserved section,
* a ROM section, and a software section (defined in detail
* elsewhere).
*/
#ifndef _EPROM_
#define _EPROM_
struct eeprom {
struct ee_diag { /* diagnostic's area of EEPROM */
/* 0x000 */ u_int eed_test; /* diagnostic test write area */
/* 0x004 */ u_short eed_wrcnt[3]; /* diag area write count (3 copies) */
short eed_nu1; /* not used */
/* 0x00c */ u_char eed_chksum[3]; /* diag area checksum (3 copies) */
char eed_nu2; /* not used */
/* 0x010 */ time_t eed_hwupdate; /* date of last hardware update */
/* 0x014 */ char eed_memsize; /* MB's of memory in system */
/* 0x015 */ char eed_memtest; /* MB's of memory to test on powerup */
/* 0x016 */ char eed_scrsize; /* screen size, in pixels */
#define EED_SCR_1152X900 0x00
#define EED_SCR_1024X1024 0x12
/* 0x017 */ char eed_dogaction; /* action to take on watchdog reset */
#define EED_DOG_MONITOR 0x00 /* return to monitor command level */
#define EED_DOG_REBOOT 0x12 /* perform power on reset and reboot */
/* 0x018 */ char eed_defboot; /* default boot? */
#define EED_DEFBOOT 0x00 /* do default boot */
#define EED_NODEFBOOT 0x12 /* don't do default boot */
/* 0x019 */ char eed_bootdev[2]; /* name of boot device (e.g. xy, ie) */
/* 0x01b */ char eed_bootctrl; /* controller number to boot from */
/* 0x01c */ char eed_bootunit; /* unit number to boot from */
/* 0x01d */ char eed_bootpart; /* partition number to boot from */
/* 0x01e */ char eed_kbdtype; /* non-Sun keyboard type - for OEM's */
#define EED_KBD_SUN 0 /* one of the Sun keyboards */
/* 0x01f */ char eed_console; /* device to use for console */
#define EED_CONS_BW 0x00 /* use b&w monitor for console */
#define EED_CONS_TTYA 0x10 /* use tty A port for console */
#define EED_CONS_TTYB 0x11 /* use tty B port for console */
#define EED_CONS_COLOR 0x12 /* use color monitor for console */
/* 0x020 */ char eed_showlogo; /* display Sun logo? */
#define EED_LOGO 0x00
#define EED_NOLOGO 0x12
/* 0x021 */ char eed_keyclick; /* keyboard click? */
#define EED_NOKEYCLICK 0x00
#define EED_KEYCLICK 0x12
/* 0x022 */ char eed_diagdev[2]; /* name of boot device (e.g. xy, ie) */
/* 0x024 */ char eed_diagctrl; /* controller number to boot from */
/* 0x025 */ char eed_diagunit; /* unit number to boot from */
/* 0x026 */ char eed_diagpart; /* partition number to boot from */
/* 0x027 */ char eed_diagnu; /* not used */
/* 0x028 */ char eed_diagpath[40]; /* boot path of diagnostic */
/* 0x050 */ char eed_nu5[8]; /* not used */
/* 0x058 */ struct eed_tty_def { /* tty port defaults */
char eet_unused[8];
} eed_ttya_def, eed_ttyb_def;
/* 0x068 */ char eed_banner[80]; /* banner if not displaying Sun logo */
/* last two chars must be \r\n (XXX - why not \0?) */
/* 0x0b8 */ u_short eed_pattern; /* test pattern - must contain 0xAA55 */
/* 0x0ba */ short eed_nu6; /* not used */
/* 0x0bc */ struct eed_conf { /* system configuration, by slot */
union {
struct eec_gen {
char eec_type; /* type of this board */
char eec_size[7]; /* size of each entry */
} eec_gen;
#define EEC_TYPE_CPU 0x01 /* cpu */
struct eec_cpu {
char eec_type; /* type of this board */
char eec_cpu_memsize; /* MB's on cpu */
int eec_cpu_unused:6;
int eec_cpu_dcp:1; /* dcp? */
int eec_cpu_68881:1; /* 68881? */
char eec_cpu_cachesize; /* KB's in cache */
} eec_cpu;
#define EEC_TYPE_MEM 0x02 /* memory board */
struct eec_mem {
char eec_type; /* type of this board */
char eec_mem_size; /* MB's on card */
} eec_mem;
#define EEC_TYPE_COLOR 0x03 /* color frame buffer */
struct eec_color {
char eec_type; /* type of this board */
char eec_color_type;
#define EEC_COLOR_TYPE_CG2 2 /* cg2 color board */
#define EEC_COLOR_TYPE_CG3 3 /* cg3 color board */
} eec_color;
#define EEC_TYPE_BW 0x04 /* b&w frame buffer */
#define EEC_TYPE_FPA 0x05 /* floating point accelerator */
#define EEC_TYPE_DISK 0x06 /* SMD disk controller */
struct eec_disk {
char eec_type; /* type of this board */
char eec_disk_type; /* controller type */
char eec_disk_ctlr; /* controller number */
char eec_disk_disks; /* number of disks */
} eec_disk;
#define EEC_TYPE_TAPE 0x07 /* 1/2" tape controller */
struct eec_tape {
char eec_type; /* type of this board */
char eec_tape_type; /* controller type */
#define EEC_TAPE_TYPE_XT 1 /* Xylogics 472 */
#define EEC_TAPE_TYPE_MT 2 /* TapeMaster */
char eec_tape_ctlr; /* controller number */
char eec_tape_drives;/* number of drives */
} eec_tape;
#define EEC_TYPE_ETHER 0x08 /* Ethernet controller */
#define EEC_TYPE_TTY 0x09 /* terminal multiplexer */
struct eec_tty {
char eec_type; /* type of this board */
char eec_tty_lines; /* number of lines */
} eec_tty;
#define EEC_TYPE_GPGB 0x0a /* graphics processor/buffer */
#define EEC_TYPE_DCP 0x0b /* DCP ??? XXX */
#define EEC_TYPE_SCSI 0x0c /* SCSI controller */
struct eec_scsi {
char eec_type; /* type of this board */
char eec_scsi_type; /* controller type */
char eec_scsi_tapes; /* number of tapes */
char eec_scsi_disks; /* number of disks */
} eec_scsi;
#define EEC_TYPE_END 0xff /* end of card cage */
} eec_un;
} eed_conf[13];
/* 0x124 */ char eed_resv[0x500-0x124]; /* reserved */
} ee_diag;
struct ee_resv { /* reserved area of EEPROM */
/* 0x500 */ u_short eev_wrcnt[3]; /* write count (3 copies) */
short eev_nu1; /* not used */
/* 0x508 */ u_char eev_chksum[3]; /* reserved area checksum (3 copies) */
char eev_nu2; /* not used */
/* 0x50c */ char eev_resv[0x600-0x50c];
} ee_resv;
struct ee_rom { /* ROM area of EEPROM */
/* 0x600 */ u_short eer_wrcnt[3]; /* write count (3 copies) */
short eer_nu1; /* not used */
/* 0x608 */ u_char eer_chksum[3]; /* ROM area checksum (3 copies) */
char eer_nu2; /* not used */
/* 0x60c */ char eer_resv[0x700-0x60c];
} ee_rom;
/*
* The following area is reserved for software (i.e. UNIX).
* The actual contents of this area are defined elsewhere.
*/
#ifndef EE_SOFT_DEFINED
struct ee_softresv { /* software area of EEPROM */
/* 0x700 */ u_short ees_wrcnt[3]; /* write count (3 copies) */
short ees_nu1; /* not used */
/* 0x708 */ u_char ees_chksum[3]; /* software area checksum (3 copies) */
char ees_nu2; /* not used */
/* 0x70c */ char ees_resv[0x800-0x70c];
} ee_soft;
#else
struct ee_soft ee_soft;
#endif
};
#endif !_EPROM_
#endif
#define EEPROM_SIZE 0x800 /* size of eeprom in bytes */
#define OBIO_EEPROM_ADDR 0x40000 /* address of eeprom in obio space */
#define EEPROM_ADDR 0x0FFE0000 /* virtual address we map eeprom to */
#define EEPROM ((struct eeprom *)EEPROM_ADDR)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.