|
|
1.1 ! root 1: /* @(#)eeprom.h 1.1 86/02/03 SMI */ ! 2: ! 3: /* ! 4: * Copyright (c) 1985 by Sun Microsystems, Inc. ! 5: */ ! 6: ! 7: /* ! 8: * The EEPROM consists of one 2816 type EEPROM providing 2K bytes ! 9: * of electically erasable storage. To modify the EEPROM, each ! 10: * byte must be written separately. After writing each byte ! 11: * a 10 millisecond pause must be observed before the EEPROM can ! 12: * read or written again. The majority of the EEPROM is diagnostic ! 13: * and is defined in ../mon/eeprom.h. The software specific ! 14: * information (struct ee_soft) is defined here. This structure ! 15: * is 0x100 bytes big. ! 16: */ ! 17: ! 18: struct ee_soft { ! 19: u_short ees_wrcnt[3]; /* write count (3 copies) */ ! 20: u_short ees_nu1; /* not used */ ! 21: u_char ees_chksum[3]; /* software area checksum (3 copies) */ ! 22: u_char ees_nu2; /* not used */ ! 23: u_char ees_resv[0x100-0xc]; /* XXX - figure this out sometime */ ! 24: }; ! 25: ! 26: #define EE_SOFT_DEFINED /* tells ../mon/eeprom.h to use this ee_soft */ ! 27: ! 28: #ifdef KERNEL ! 29: /* @(#)eeprom.h 1.3 85/10/11 SMI */ ! 30: ! 31: /* ! 32: * Copyright (c) 1985 by Sun Microsystems, Inc. ! 33: */ ! 34: ! 35: /* ! 36: * This structure defines the contents to the EEPROM for the Sun-3. ! 37: * It is divided into a diagnostic section, a reserved section, ! 38: * a ROM section, and a software section (defined in detail ! 39: * elsewhere). ! 40: */ ! 41: #ifndef _EPROM_ ! 42: #define _EPROM_ ! 43: ! 44: struct eeprom { ! 45: struct ee_diag { /* diagnostic's area of EEPROM */ ! 46: /* 0x000 */ u_int eed_test; /* diagnostic test write area */ ! 47: /* 0x004 */ u_short eed_wrcnt[3]; /* diag area write count (3 copies) */ ! 48: short eed_nu1; /* not used */ ! 49: /* 0x00c */ u_char eed_chksum[3]; /* diag area checksum (3 copies) */ ! 50: char eed_nu2; /* not used */ ! 51: /* 0x010 */ time_t eed_hwupdate; /* date of last hardware update */ ! 52: /* 0x014 */ char eed_memsize; /* MB's of memory in system */ ! 53: /* 0x015 */ char eed_memtest; /* MB's of memory to test on powerup */ ! 54: /* 0x016 */ char eed_scrsize; /* screen size, in pixels */ ! 55: #define EED_SCR_1152X900 0x00 ! 56: #define EED_SCR_1024X1024 0x12 ! 57: /* 0x017 */ char eed_dogaction; /* action to take on watchdog reset */ ! 58: #define EED_DOG_MONITOR 0x00 /* return to monitor command level */ ! 59: #define EED_DOG_REBOOT 0x12 /* perform power on reset and reboot */ ! 60: /* 0x018 */ char eed_defboot; /* default boot? */ ! 61: #define EED_DEFBOOT 0x00 /* do default boot */ ! 62: #define EED_NODEFBOOT 0x12 /* don't do default boot */ ! 63: /* 0x019 */ char eed_bootdev[2]; /* name of boot device (e.g. xy, ie) */ ! 64: /* 0x01b */ char eed_bootctrl; /* controller number to boot from */ ! 65: /* 0x01c */ char eed_bootunit; /* unit number to boot from */ ! 66: /* 0x01d */ char eed_bootpart; /* partition number to boot from */ ! 67: /* 0x01e */ char eed_kbdtype; /* non-Sun keyboard type - for OEM's */ ! 68: #define EED_KBD_SUN 0 /* one of the Sun keyboards */ ! 69: /* 0x01f */ char eed_console; /* device to use for console */ ! 70: #define EED_CONS_BW 0x00 /* use b&w monitor for console */ ! 71: #define EED_CONS_TTYA 0x10 /* use tty A port for console */ ! 72: #define EED_CONS_TTYB 0x11 /* use tty B port for console */ ! 73: #define EED_CONS_COLOR 0x12 /* use color monitor for console */ ! 74: /* 0x020 */ char eed_showlogo; /* display Sun logo? */ ! 75: #define EED_LOGO 0x00 ! 76: #define EED_NOLOGO 0x12 ! 77: /* 0x021 */ char eed_keyclick; /* keyboard click? */ ! 78: #define EED_NOKEYCLICK 0x00 ! 79: #define EED_KEYCLICK 0x12 ! 80: /* 0x022 */ char eed_diagdev[2]; /* name of boot device (e.g. xy, ie) */ ! 81: /* 0x024 */ char eed_diagctrl; /* controller number to boot from */ ! 82: /* 0x025 */ char eed_diagunit; /* unit number to boot from */ ! 83: /* 0x026 */ char eed_diagpart; /* partition number to boot from */ ! 84: /* 0x027 */ char eed_diagnu; /* not used */ ! 85: /* 0x028 */ char eed_diagpath[40]; /* boot path of diagnostic */ ! 86: /* 0x050 */ char eed_nu5[8]; /* not used */ ! 87: /* 0x058 */ struct eed_tty_def { /* tty port defaults */ ! 88: char eet_unused[8]; ! 89: } eed_ttya_def, eed_ttyb_def; ! 90: /* 0x068 */ char eed_banner[80]; /* banner if not displaying Sun logo */ ! 91: /* last two chars must be \r\n (XXX - why not \0?) */ ! 92: /* 0x0b8 */ u_short eed_pattern; /* test pattern - must contain 0xAA55 */ ! 93: /* 0x0ba */ short eed_nu6; /* not used */ ! 94: /* 0x0bc */ struct eed_conf { /* system configuration, by slot */ ! 95: union { ! 96: struct eec_gen { ! 97: char eec_type; /* type of this board */ ! 98: char eec_size[7]; /* size of each entry */ ! 99: } eec_gen; ! 100: ! 101: #define EEC_TYPE_CPU 0x01 /* cpu */ ! 102: struct eec_cpu { ! 103: char eec_type; /* type of this board */ ! 104: char eec_cpu_memsize; /* MB's on cpu */ ! 105: int eec_cpu_unused:6; ! 106: int eec_cpu_dcp:1; /* dcp? */ ! 107: int eec_cpu_68881:1; /* 68881? */ ! 108: char eec_cpu_cachesize; /* KB's in cache */ ! 109: } eec_cpu; ! 110: ! 111: #define EEC_TYPE_MEM 0x02 /* memory board */ ! 112: struct eec_mem { ! 113: char eec_type; /* type of this board */ ! 114: char eec_mem_size; /* MB's on card */ ! 115: } eec_mem; ! 116: ! 117: #define EEC_TYPE_COLOR 0x03 /* color frame buffer */ ! 118: struct eec_color { ! 119: char eec_type; /* type of this board */ ! 120: char eec_color_type; ! 121: #define EEC_COLOR_TYPE_CG2 2 /* cg2 color board */ ! 122: #define EEC_COLOR_TYPE_CG3 3 /* cg3 color board */ ! 123: } eec_color; ! 124: ! 125: #define EEC_TYPE_BW 0x04 /* b&w frame buffer */ ! 126: ! 127: #define EEC_TYPE_FPA 0x05 /* floating point accelerator */ ! 128: ! 129: #define EEC_TYPE_DISK 0x06 /* SMD disk controller */ ! 130: struct eec_disk { ! 131: char eec_type; /* type of this board */ ! 132: char eec_disk_type; /* controller type */ ! 133: char eec_disk_ctlr; /* controller number */ ! 134: char eec_disk_disks; /* number of disks */ ! 135: } eec_disk; ! 136: ! 137: #define EEC_TYPE_TAPE 0x07 /* 1/2" tape controller */ ! 138: struct eec_tape { ! 139: char eec_type; /* type of this board */ ! 140: char eec_tape_type; /* controller type */ ! 141: #define EEC_TAPE_TYPE_XT 1 /* Xylogics 472 */ ! 142: #define EEC_TAPE_TYPE_MT 2 /* TapeMaster */ ! 143: char eec_tape_ctlr; /* controller number */ ! 144: char eec_tape_drives;/* number of drives */ ! 145: } eec_tape; ! 146: ! 147: #define EEC_TYPE_ETHER 0x08 /* Ethernet controller */ ! 148: ! 149: #define EEC_TYPE_TTY 0x09 /* terminal multiplexer */ ! 150: struct eec_tty { ! 151: char eec_type; /* type of this board */ ! 152: char eec_tty_lines; /* number of lines */ ! 153: } eec_tty; ! 154: ! 155: #define EEC_TYPE_GPGB 0x0a /* graphics processor/buffer */ ! 156: ! 157: #define EEC_TYPE_DCP 0x0b /* DCP ??? XXX */ ! 158: ! 159: #define EEC_TYPE_SCSI 0x0c /* SCSI controller */ ! 160: struct eec_scsi { ! 161: char eec_type; /* type of this board */ ! 162: char eec_scsi_type; /* controller type */ ! 163: char eec_scsi_tapes; /* number of tapes */ ! 164: char eec_scsi_disks; /* number of disks */ ! 165: } eec_scsi; ! 166: ! 167: #define EEC_TYPE_END 0xff /* end of card cage */ ! 168: } eec_un; ! 169: } eed_conf[13]; ! 170: /* 0x124 */ char eed_resv[0x500-0x124]; /* reserved */ ! 171: } ee_diag; ! 172: ! 173: struct ee_resv { /* reserved area of EEPROM */ ! 174: /* 0x500 */ u_short eev_wrcnt[3]; /* write count (3 copies) */ ! 175: short eev_nu1; /* not used */ ! 176: /* 0x508 */ u_char eev_chksum[3]; /* reserved area checksum (3 copies) */ ! 177: char eev_nu2; /* not used */ ! 178: /* 0x50c */ char eev_resv[0x600-0x50c]; ! 179: } ee_resv; ! 180: ! 181: struct ee_rom { /* ROM area of EEPROM */ ! 182: /* 0x600 */ u_short eer_wrcnt[3]; /* write count (3 copies) */ ! 183: short eer_nu1; /* not used */ ! 184: /* 0x608 */ u_char eer_chksum[3]; /* ROM area checksum (3 copies) */ ! 185: char eer_nu2; /* not used */ ! 186: /* 0x60c */ char eer_resv[0x700-0x60c]; ! 187: } ee_rom; ! 188: ! 189: /* ! 190: * The following area is reserved for software (i.e. UNIX). ! 191: * The actual contents of this area are defined elsewhere. ! 192: */ ! 193: #ifndef EE_SOFT_DEFINED ! 194: struct ee_softresv { /* software area of EEPROM */ ! 195: /* 0x700 */ u_short ees_wrcnt[3]; /* write count (3 copies) */ ! 196: short ees_nu1; /* not used */ ! 197: /* 0x708 */ u_char ees_chksum[3]; /* software area checksum (3 copies) */ ! 198: char ees_nu2; /* not used */ ! 199: /* 0x70c */ char ees_resv[0x800-0x70c]; ! 200: } ee_soft; ! 201: #else ! 202: struct ee_soft ee_soft; ! 203: #endif ! 204: }; ! 205: #endif !_EPROM_ ! 206: #endif ! 207: ! 208: #define EEPROM_SIZE 0x800 /* size of eeprom in bytes */ ! 209: #define OBIO_EEPROM_ADDR 0x40000 /* address of eeprom in obio space */ ! 210: ! 211: #define EEPROM_ADDR 0x0FFE0000 /* virtual address we map eeprom to */ ! 212: ! 213: #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.