[BACK]Return to eeprom.h CVS log [TXT][DIR] Up to [local] / sys / arch / sparc / include

Annotation of sys/arch/sparc/include/eeprom.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: eeprom.h,v 1.11 2007/04/10 17:47:54 miod Exp $        */
        !             2:
        !             3: /*
        !             4:  * Copyright (c) 1995 Theo de Raadt
        !             5:  * All rights reserved.
        !             6:  * Portions Copyright (c) 1997, Jason Downs.  All rights reserved.
        !             7:  *
        !             8:  * Redistribution and use in source and binary forms, with or without
        !             9:  * modification, are permitted provided that the following conditions
        !            10:  * are met:
        !            11:  * 1. Redistributions of source code must retain the above copyright
        !            12:  *    notice, this list of conditions and the following disclaimer.
        !            13:  * 2. Redistributions in binary form must reproduce the above copyright
        !            14:  *    notice, this list of conditions and the following disclaimer in the
        !            15:  *    documentation and/or other materials provided with the distribution.
        !            16:  *
        !            17:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
        !            18:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        !            19:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
        !            20:  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
        !            21:  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
        !            22:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
        !            23:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
        !            24:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
        !            25:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
        !            26:  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        !            27:  */
        !            28:
        !            29: /*
        !            30:  * This structure defines the contents of the EEPROM for all Sun
        !            31:  * Workstations with the SunMon monitor.
        !            32:  *
        !            33:  * The EEPROM is divided into a diagnostic section, a reserved section,
        !            34:  * a ROM section, and a software section (defined in detail elsewhere).
        !            35:  */
        !            36:
        !            37: /*
        !            38:  * Note that most places where the PROM stores a "true/false" flag,
        !            39:  * the true value is 0x12 and false is the usual zero.  Such flags
        !            40:  * all take the values EE_TRUE or EE_FALSE so this file does not
        !            41:  * need to define so many value macros.
        !            42:  */
        !            43: #define EE_TRUE                0x12
        !            44: #define EE_FALSE       0x00
        !            45:
        !            46: struct ee_keymap {
        !            47:        u_char  keymap[128];    /* PROM/EEPROM are 7 bit */
        !            48: };
        !            49:
        !            50: #define PW_SIZE        8                       /* max size of a password entry */
        !            51:
        !            52: struct password_inf {
        !            53:        u_short bad_counter;            /* illegal password count */
        !            54:        char    pw_mode;                /* mode */
        !            55:        char    pw_bytes[PW_SIZE];      /* password */
        !            56: };
        !            57: #define NON_SECURE_MODE                0x00    /* non-secure */
        !            58: #define COMMAND_SECURE_MODE    0x01    /* command secure */
        !            59: #define FULLY_SECURE_MODE      0x5e    /* fully secure */
        !            60:                                        /* 0, 2-0x5d, 0x5f-0xff: non secure*/
        !            61:
        !            62:
        !            63: #define MAX_SLOTS      12
        !            64: #define CONFIG_SIZE    16      /* bytes of config data for each slot */
        !            65:
        !            66: struct eeprom {
        !            67:        struct ee_diag {
        !            68:                u_int   eed_test;       /* 0x000: diagnostic test write area */
        !            69:                u_short eed_wrcnt[3];   /* 0x004: diag area write count (3 copies) */
        !            70:                short   eed_nu1;
        !            71:
        !            72:                u_char  eed_chksum[3];  /* 0x00c: diag area checksum (3 copies) */
        !            73:                char    eed_nu2;
        !            74:                time_t  eed_hwupdate;   /* 0x010: date of last hardware update */
        !            75:
        !            76:                char    eed_memsize;    /* 0x014: MB's of memory in system */
        !            77:                char    eed_memtest;    /* 0x015: MB's of memory to test */
        !            78:
        !            79:                char    eed_scrsize;    /* 0x016: screen size */
        !            80: #define        EED_SCR_1152X900        0x00
        !            81: #define        EED_SCR_1024X1024       0x12
        !            82: #define EED_SCR_1600X1280      0x13
        !            83: #define EED_SCR_1440X1440      0x14
        !            84: #define EED_SCR_640X480                0x15
        !            85: #define EED_SCR_1280X1024      0x16
        !            86:
        !            87:                char    eed_dogaction;  /* 0x017: watchdog reset action */
        !            88: #define        EED_DOG_MONITOR         0x00    /* return to monitor command level */
        !            89: #define        EED_DOG_REBOOT          0x12    /* perform power on reset and reboot */
        !            90:
        !            91:                char    eed_defboot;    /* 0x018: default boot? */
        !            92: #define        EED_DEFBOOT             0x00    /* do default boot */
        !            93: #define        EED_NODEFBOOT           0x12    /* don't do default boot */
        !            94:
        !            95:                char    eed_bootdev[2]; /* 0x019: boot device name (e.g. xy, ie) */
        !            96:
        !            97:                u_char  eed_bootctrl;   /* 0x01b: controller number */
        !            98:                u_char  eed_bootunit;   /* 0x01c: unit number */
        !            99:                u_char  eed_bootpart;   /* 0x01d: partition number */
        !           100:
        !           101:                char    eed_kbdtype;    /* 0x01f: non-Sun keyboard type - for OEM's */
        !           102: #define        EED_KBD_SUN     0               /* one of the Sun keyboards */
        !           103:
        !           104:                char    eed_console;    /* 0x01f: console device */
        !           105: #define        EED_CONS_BW     0x00            /* use b&w monitor */
        !           106: #define        EED_CONS_TTYA   0x10            /* use tty A port */
        !           107: #define        EED_CONS_TTYB   0x11            /* use tty B port */
        !           108: #define        EED_CONS_COLOR  0x12            /* use color monitor */
        !           109: #define EED_CONS_P4    0x20            /* use the P4 monitor */
        !           110:
        !           111:                char    eed_showlogo;   /* 0x020: display Sun logo? */
        !           112: #define        EED_LOGO        0x00
        !           113: #define        EED_NOLOGO      0x12
        !           114:
        !           115:                char    eed_keyclick;   /* 0x021: keyboard click? */
        !           116: #define        EED_NOKEYCLICK  0x00
        !           117: #define        EED_KEYCLICK    0x12
        !           118:
        !           119:                char    eed_diagdev[2]; /* 0x022: boot device name (e.g. xy, ie) */
        !           120:                u_char  eed_diagctrl;   /* 0x024: controller number */
        !           121:                u_char  eed_diagunit;   /* 0x025: unit number */
        !           122:                u_char  eed_diagpart;   /* 0x026: partition number */
        !           123: #define        EED_WOB 0x12                    /* bring system up white on black */
        !           124:
        !           125:                u_char  eed_videobg;
        !           126:                char    eed_diagpath[40]; /* 0x028: boot path of diagnostic */
        !           127: #define EED_TERM_34x80 00
        !           128: #define EED_TERM_48x120        0x12            /* for large scrn size 1600x1280 */
        !           129:                u_char  eed_colsize;    /* 0x050: number of columns */
        !           130:                u_char  eed_rowsize;    /* 0x051: number of rows */
        !           131:
        !           132:                char    eed_nu5[6];
        !           133:
        !           134:                struct eed_tty_def {    /* 0x058: tty port defaults */
        !           135:                        char    eet_sel_baud;   /* user specifies baud rate */
        !           136: #define        EET_DEFBAUD     0x00
        !           137: #define        EET_SELBAUD     0x12
        !           138:                        u_char  eet_hi_baud;    /* upper byte of baud rate */
        !           139:                        u_char  eet_lo_baud;    /* lower byte of baud rate */
        !           140:                        u_char  eet_rtsdtr;     /* flag for dtr and rts */
        !           141: #define NO_RTSDTR      0x12
        !           142:                        char    eet_unused[4];
        !           143:                } eed_ttya_def, eed_ttyb_def;
        !           144:
        !           145:                char    eed_banner[80]; /* 0x068: replacement banner */
        !           146:                /* last two chars must be \r\n (XXX - why not \0?) */
        !           147:
        !           148:                u_short eed_pattern;    /* 0x0b8: test pattern - must contain 0xAA55 */
        !           149:                short   eed_nu6;
        !           150:                struct eed_conf {       /* 0x0bc: system configuration, by slot */
        !           151:                        union {
        !           152:                                struct eec_gen {
        !           153:                                        u_char  eec_type;       /* board type code */
        !           154:                                        char    eec_size[CONFIG_SIZE - 1];
        !           155:                                } eec_gen;
        !           156:
        !           157:                                char    conf_byte[CONFIG_SIZE];
        !           158:                                u_char  eec_type;       /* type of this board */
        !           159: #define        EEC_TYPE_NONE   0       /* no board this slot */
        !           160: #define        EEC_TYPE_CPU    0x01    /* cpu */
        !           161:                                struct eec_cpu {
        !           162:                                        u_char  eec_type;               /* board type */
        !           163:                                        u_char  eec_cpu_memsize;        /* MB's on cpu */
        !           164:                                        int     eec_cpu_unused:6;
        !           165:                                        int     eec_cpu_dcp:1;          /* dcp? */
        !           166:                                        int     eec_cpu_68881:1;        /* 68881? */
        !           167:                                        u_char  eec_cpu_cachesize;      /* KB's cache */
        !           168:                                } eec_cpu;
        !           169:                                struct eec_cpu_alt {
        !           170:                                        u_char  eec_type;       /* board type */
        !           171:                                        u_char  memsize;        /* MB's on cpu */
        !           172:                                        u_char  option; /* option flags */
        !           173: #define CPU_HAS_DCP    0x02
        !           174: #define CPU_HAS_68881  0x01
        !           175:                                        u_char  cachesize;      /* KB's in cache */
        !           176:                                } eec_cpu_alt;
        !           177:
        !           178: #define        EEC_TYPE_MEM    0x02    /* memory board */
        !           179:                                struct eec_mem {
        !           180:                                        u_char  eec_type;       /* board type */
        !           181:                                        u_char  eec_mem_size;   /* MB's on card */
        !           182:                                } eec_mem;
        !           183:
        !           184: #define        EEC_TYPE_COLOR  0x03    /* color frame buffer */
        !           185:                                struct eec_color {
        !           186:                                        u_char  eec_type;       /* board type */
        !           187:                                        char    eec_color_type;
        !           188: #define        EEC_COLOR_TYPE_CG2      2       /* cg2 color board */
        !           189: #define        EEC_COLOR_TYPE_CG3      3       /* cg3 color board */
        !           190: #define        EEC_COLOR_TYPE_CG5      5       /* cg5 color board */
        !           191:                                } eec_color;
        !           192:
        !           193: #define        EEC_TYPE_BW     0x04    /* b&w frame buffer */
        !           194:
        !           195: #define        EEC_TYPE_FPA    0x05    /* floating point accelerator */
        !           196:
        !           197: #define        EEC_TYPE_DISK   0x06    /* SMD disk controller */
        !           198:                                struct eec_disk {
        !           199:                                        u_char  eec_type;       /* board type */
        !           200:                                        char    eec_disk_type;  /* controller type */
        !           201: #define EEC_DISK_TYPE_X450     1
        !           202: #define EEC_DISK_TYPE_X451     2
        !           203:                                        char    eec_disk_ctlr;  /* controller number */
        !           204:                                        char    eec_disk_disks; /* number of disks */
        !           205:                                        char    eec_disk_cap[4];        /* capacity */
        !           206: #define EEC_DISK_NONE  0
        !           207: #define EEC_DISK_130   1
        !           208: #define EEC_DISK_280   2
        !           209: #define EEC_DISK_380   3
        !           210: #define EEC_DISK_575   4
        !           211: #define EEC_DISK_900   5
        !           212:                                } eec_disk;
        !           213:
        !           214: #define        EEC_TYPE_TAPE   0x07    /* 1/2" tape controller */
        !           215:                                struct eec_tape {
        !           216:                                        u_char  eec_type;       /* board type */
        !           217:                                        char    eec_tape_type;  /* controller type */
        !           218: #define        EEC_TAPE_TYPE_XT        1       /* Xylogics 472 */
        !           219: #define        EEC_TAPE_TYPE_MT        2       /* TapeMaster */
        !           220:                                        char    eec_tape_ctlr;  /* controller number */
        !           221:                                        char    eec_tape_drives;        /* number of drives */
        !           222:                                } eec_tape;
        !           223:
        !           224: #define        EEC_TYPE_ETHER  0x08    /* Ethernet controller */
        !           225:
        !           226: #define        EEC_TYPE_TTY    0x09    /* terminal multiplexer */
        !           227:                                struct eec_tty {
        !           228:                                        u_char  eec_type;       /* board type */
        !           229:                                        char    eec_tty_lines;  /* number of lines */
        !           230: #define MAX_TTY_LINES  16
        !           231:                                        char    manufacturer;   /* code for maker */
        !           232: #define EEC_TTY_UNKNOWN        0
        !           233: #define EEC_TTY_SYSTECH        1
        !           234: #define EEC_TTY_SUN    2
        !           235:                                } eec_tty;
        !           236:
        !           237: #define        EEC_TYPE_GP     0x0a    /* graphics processor/buffer */
        !           238:                                struct eec_gp {
        !           239:                                        u_char  eec_type;       /* board type */
        !           240:                                        char    eec_gp_type;
        !           241: #define EEC_GP_TYPE_GPPLUS     1       /* GP+ graphic processor board */
        !           242: #define EEC_GP_TYPE_GP2                2       /* GP2 graphic processor board */
        !           243:                                } eec_gp;
        !           244:
        !           245: #define        EEC_TYPE_DCP    0x0b    /* DCP ??? XXX */
        !           246:
        !           247: #define        EEC_TYPE_SCSI   0x0c    /* SCSI controller */
        !           248:                                struct eec_scsi {
        !           249:                                        u_char  eec_type;       /* board type */
        !           250:                                        char    eec_scsi_type;  /* host adaptor type */
        !           251: #define EEC_SCSI_SUN2  2
        !           252: #define EEC_SCSI_SUN3  3
        !           253:                                        char    eec_scsi_tapes; /* number of tapes */
        !           254:                                        char    eec_scsi_disks; /* number of disks */
        !           255:                                        char    eec_scsi_tape_type;
        !           256: #define EEC_SCSI_SYSG  1
        !           257: #define EEC_SCSI_MT02  2
        !           258:                                        char    eec_scsi_disk_type;
        !           259: #define EEC_SCSI_MD21  1
        !           260: #define EEC_SCSI_ADAPT 2
        !           261:                                        char    eec_scsi_driv_code[2];
        !           262: #define EEC_SCSI_D71   1
        !           263: #define EEC_SCSI_D141  2
        !           264: #define EEC_SCSI_D327  3
        !           265:                                } eec_scsi;
        !           266: #define EEC_TYPE_IPC   0x0d
        !           267:
        !           268: #define EEC_TYPE_GB    0x0e
        !           269:
        !           270: #define EEC_TYPE_SCSI375       0x0f
        !           271:
        !           272: #define EEC_TYPE_MAPKIT        0x10
        !           273:                                struct eec_mapkit {
        !           274:                                        u_char  eec_type;       /* board type */
        !           275:                                        char    eec_mapkit_hw;  /* whether INI */
        !           276: #define EEC_TYPE_MAPKIT_INI    1
        !           277:                                } eec_mapkit;
        !           278:
        !           279: #define EEC_TYPE_CHANNEL       0x11
        !           280: #define EEC_TYPE_ALM2          0x12
        !           281:
        !           282:
        !           283:                                struct eec_generic_net {
        !           284: #define EEC_TYPE_GENERIC_NET  0x13
        !           285:                                        u_char  eec_devtype;    /* board type */
        !           286:                                        u_char  eec_mem_type;   /* Memory type */
        !           287:                                        u_char  gn_nu1;
        !           288:                                        u_char  gn_nu2;
        !           289: #define ID_VME         0x0     /* Data buffers are in VME space(Shared) */
        !           290: #define ID_DVMA                0x1     /* or DVMA buffer memory type */
        !           291:                                        char    *dev_reg_ptr;
        !           292:                                } eec_generic_net;
        !           293:
        !           294:
        !           295: #define        EEC_TYPE_END    0xff    /* end of card cage */
        !           296:                        } eec_un;
        !           297:                } eed_conf[MAX_SLOTS + 1];
        !           298: #define EEPROM_TABLE  0x58     /* 1 indicates alternate key table. */
        !           299:                u_char  which_kbt;      /* 0x18C: which keytable? */
        !           300:
        !           301:                /*
        !           302:                 * Note. The following contains the full keyboard id
        !           303:                 * returned by the type4 transmit layout command. It is not
        !           304:                 * necessarily anything to do with locale of operation.
        !           305:                 */
        !           306:                u_char  ee_kb_type;
        !           307:                u_char  ee_kb_id;       /* 0x18E: keyboard id in case of EEPROM table */
        !           308: #define EEPROM_LOGO 0x12
        !           309:                u_char  otherlogo;      /* 0x18F: True if eeprom logo  needed */
        !           310:                struct ee_keymap ee_keytab_lc[1];       /* 0x190: */
        !           311:                struct ee_keymap ee_keytab_uc[1];       /* 0x210: */
        !           312:                u_char  ee_logo[64][8]; /* 0x290: A 64X64 bit space for custom/OEM designed logo icon */
        !           313:                struct password_inf ee_password_inf;    /* 0x490: reserved */
        !           314:                char    eed_resv[0x500 - 0x49c];        /* 0x49c: reserved */
        !           315:        } ee_diag;
        !           316:
        !           317:        struct ee_resv {        /* reserved area of EEPROM */
        !           318:                u_short eev_wrcnt[3];   /* 0x500: write count (3 copies) */
        !           319:                short   eev_nu1;
        !           320:                u_char  eev_chksum[3];  /* 0x508: reserved area checksum (3 copies) */
        !           321:                char    eev_nu2;
        !           322:                char    eev_resv[0x600 - 0x50c];        /* 0x50c: */
        !           323:        } ee_resv;
        !           324:
        !           325:        struct ee_rom {         /* ROM area of EEPROM */
        !           326:                u_short eer_wrcnt[3];   /* 0x600: write count (3 copies) */
        !           327:                short   eer_nu1;
        !           328:                u_char  eer_chksum[3];  /* 0x608: ROM area checksum (3 copies) */
        !           329:                char    eer_nu2;
        !           330:                char    eer_resv[0x700 - 0x60c];        /* 0x60c: */
        !           331:        } ee_rom;
        !           332:
        !           333:        /*
        !           334:         * The following area is reserved for software (i.e. UNIX).
        !           335:         * The actual contents of this area are defined elsewhere.
        !           336:         */
        !           337:        struct ee_softresv {    /* software area of EEPROM */
        !           338:                u_short ees_wrcnt[3];   /* 0x700: write count (3 copies) */
        !           339:                short   ees_nu1;
        !           340:                u_char  ees_chksum[3];  /* 0x708: software area checksum (3 copies) */
        !           341:                char    ees_nu2;
        !           342:                char    ees_resv[0x800 - 0x70c];        /* 0x70c: */
        !           343:        } ee_soft;
        !           344: };
        !           345:
        !           346: #define EEPROM_BASE     0xffd04000
        !           347:
        !           348: /*
        !           349:  * The size of the eeprom on machines with the old clock is 2k.  However,
        !           350:  * on machines with the new clock (and the `eeprom' in the nvram area)
        !           351:  * there are only 2040 bytes available. (???).  Since we really only
        !           352:  * care about the `diagnostic' area, we'll use its size when dealing
        !           353:  * with the eeprom in general.
        !           354:  */
        !           355: #define EEPROM_SIZE             0x500
        !           356:
        !           357: #ifdef _KERNEL
        !           358: extern char *eeprom_va;
        !           359: int    eeprom_uio(struct uio *);
        !           360:
        !           361: /*
        !           362:  * Compatibility defines with NetBSD's eeprom.h.
        !           363:  *
        !           364:  * The goal here is to provide enough compatibility for kernel drivers to
        !           365:  * compile without changes; not to make userland utilities compile.  Userland
        !           366:  * should use the native interface.
        !           367:  */
        !           368: #define EE_CONS_BW             EED_CONS_BW
        !           369: #define EE_CONS_TTYA           EED_CONS_TTYA
        !           370: #define EE_CONS_TTYB           EED_CONS_TTYB
        !           371: #define EE_CONS_COLOR          EED_CONS_COLOR
        !           372: #define EE_CONS_P4OPT          EED_CONS_P4
        !           373:
        !           374: #define        EE_SCR_1152X900         EED_SCR_1152X900
        !           375: #define        EE_SCR_1024X1024        EED_SCR_1024X1024
        !           376: #define EE_SCR_1600X1280       EED_SCR_1600X1280
        !           377: #define EE_SCR_1440X1440       EED_SCR_1440X1440
        !           378: #define EE_SCR_640X480         EED_SCR_640X480
        !           379: #define EE_SCR_1280X1024       EED_SCR_1280X1024
        !           380:
        !           381: #define eeConsole              ee_diag.eed_console
        !           382: #define eeTtyRows              ee_diag.eed_rowsize
        !           383: #define eeTtyCols              ee_diag.eed_colsize
        !           384: #define eeScreenSize           ee_diag.eed_scrsize
        !           385:
        !           386: #endif /* _KERNEL */

CVSweb