Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/ic Define the Symbios Logic and Tekram NVRAM contents.



details:   https://anonhg.NetBSD.org/src/rev/431329aa3170
branches:  trunk
changeset: 525856:431329aa3170
user:      thorpej <thorpej%NetBSD.org@localhost>
date:      Thu Apr 18 21:08:43 2002 +0000

description:
Define the Symbios Logic and Tekram NVRAM contents.

diffstat:

 sys/dev/ic/siopreg.h |  129 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 128 insertions(+), 1 deletions(-)

diffs (140 lines):

diff -r 57de28c6e461 -r 431329aa3170 sys/dev/ic/siopreg.h
--- a/sys/dev/ic/siopreg.h      Thu Apr 18 21:05:22 2002 +0000
+++ b/sys/dev/ic/siopreg.h      Thu Apr 18 21:08:43 2002 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: siopreg.h,v 1.8 2001/03/12 10:00:50 bouyer Exp $       */
+/*     $NetBSD: siopreg.h,v 1.9 2002/04/18 21:08:43 thorpej Exp $      */
 
 /*
  * Copyright (c) 2000 Manuel Bouyer.
@@ -376,3 +376,130 @@
 #define SIOP_SCRATCHJ  0x7c /* Scratch register J, R/W, 875-only */
 
 #define SIOP_DFBC      0xf0 /* DMA fifo byte count, RO */
+
+/*
+ * Non-volatile configuration settings stored in the EEPROM.  There
+ * are at least two known formats: Symbios Logic format and Tekram format.
+ */
+
+#define        SIOP_NVRAM_SYM_SIZE             368
+#define        SIOP_NVRAM_SYM_ADDRESS          0x100
+
+struct nvram_symbios {
+       /* Header (6 bytes) */
+       u_int16_t       type;           /* 0x0000 */
+       u_int16_t       byte_count;     /* excluding header/trailer */
+       u_int16_t       checksum;
+
+       /* Adapter configuration (20 bytes) */
+       u_int8_t        v_major;
+       u_int8_t        v_minor;
+       u_int32_t       boot_crc;
+       u_int16_t       flags;
+#define        NVRAM_SYM_F_SCAM_ENABLE         0x0001
+#define        NVRAM_SYM_F_PARITY_ENABLE       0x0002
+#define        NVRAM_SYM_F_VERBOSE_MESSAGES    0x0004
+#define        NVRAM_SYM_F_CHS_MAPPING         0x0008
+       u_int16_t       flags1;
+#define        NVRAM_SYM_F1_SCAN_HI_LO         0x0001
+       u_int16_t       term_state;
+#define        NVRAM_SYM_TERM_CANT_PROGRAM     0
+#define        NVRAM_SYM_TERM_ENABLED          1
+#define        NVRAM_SYM_TERM_DISABLED         2
+       u_int16_t       rmvbl_flags;
+#define        NVRAM_SYM_RMVBL_NO_SUPPORT      0
+#define        NVRAM_SYM_RMVBL_BOOT_DEVICE     1
+#define        NVRAM_SYM_RMVBL_MEDIA_INSTALLED 2
+       u_int8_t        host_id;
+       u_int8_t        num_hba;
+       u_int8_t        num_devices;
+       u_int8_t        max_scam_devices;
+       u_int8_t        num_valid_scam_devices;
+       u_int8_t        rsvd;
+
+       /* Boot order (14 bytes x 4) */
+       struct nvram_symbios_host {
+               u_int16_t       type;           /* 4 - 8xx */
+               u_int16_t       device_id;      /* PCI device ID */
+               u_int16_t       vendor_id;      /* PCI vendor ID */
+               u_int8_t        bus_nr;         /* PCI bus number */
+               u_int8_t        device_fn;      /* PCI device/func # << 3 */
+               u_int16_t       word8;
+               u_int16_t       flags;
+#define        NVRAM_SYM_HOST_F_SCAN_AT_BOOT   0x0001
+               u_int16_t       io_port;        /* PCI I/O address */
+       } __attribute__((__packed__)) host[4];
+
+       /* Targets (8 bytes x 16) */
+       struct nvram_symbios_target {
+               u_int8_t        flags;
+#define        NVRAM_SYM_TARG_F_DISCONNECT_EN  0x0001
+#define        NVRAM_SYM_TARG_F_SCAN_AT_BOOT   0x0002
+#define        NVRAM_SYM_TARG_F_SCAN_LUNS      0x0004
+#define        NVRAM_SYM_TARG_F_TQ_EN          0x0008
+               u_int8_t        rsvd;
+               u_int8_t        bus_width;
+               u_int8_t        sync_offset;    /* 8, 16, etc. */
+               u_int16_t       sync_period;    /* 4 * factor */
+               u_int16_t       timeout;
+       } __attribute__((__packed__)) target[16];
+
+       /* SCAM table (8 bytes x 4) */
+       struct nvram_symbios_scam {
+               u_int16_t       id;
+               u_int16_t       method;
+#define        NVRAM_SYM_SCAM_DEFAULT_METHOD   0
+#define        NVRAM_SYM_SCAM_DONT_ASSIGN      1
+#define        NVRAM_SYM_SCAM_SET_SPECIFIC_ID  2
+#define        NVRAM_SYM_SCAM_USE_ORDER_GIVEN  3
+               u_int16_t       status;
+#define        NVRAM_SYM_SCAM_UNKNOWN          0
+#define        NVRAM_SYM_SCAM_DEVICE_NOT_FOUND 1
+#define        NVRAM_SYM_SCAM_ID_NOT_SET       2
+#define        NVRAM_SYM_SCAM_ID_VALID         3
+               u_int8_t                target_id;
+               u_int8_t                rsvd;
+       } __attribute__((__packed__)) scam[4];
+
+       u_int8_t        spare_devices[15 * 8];
+       u_int8_t        trailer[6];     /* 0xfe 0xfe 0x00 0x00 0x00 0x00 */
+} __attribute__((__packed__));
+
+#define        SIOP_NVRAM_TEK_SIZE             64
+#define        SIOP_NVRAM_TEK_93c46_ADDRESS    0
+#define        SIOP_NVRAM_TEK_24c16_ADDRESS    0x40
+
+static const u_int8_t tekram_sync_table[16] __attribute__((__unused__)) = {
+       25, 31, 37,  43,
+       50, 62, 75, 125,
+       12, 15, 18,  21,
+        6,  7,  9,  10,
+};
+
+struct nvram_tekram {
+       struct nvram_tekram_target {
+               u_int8_t        flags;
+#define        NVRAM_TEK_TARG_F_PARITY_CHECK   0x01
+#define        NVRAM_TEK_TARG_F_SYNC_NEGO      0x02
+#define        NVRAM_TEK_TARG_F_DISCONNECT_EN  0x04
+#define        NVRAM_TEK_TARG_F_START_CMD      0x08
+#define        NVRAM_TEK_TARG_F_TQ_EN          0x10
+#define        NVRAM_TEK_TARG_F_WIDE_NEGO      0x20
+               u_int8_t        sync_index;
+               u_int16_t       word2;
+       } __attribute__((__packed__)) target[16];
+       u_int8_t        host_id;
+       u_int8_t        flags;
+#define        NVRAM_TEK_F_MORE_THAN_2_DRIVES  0x01
+#define        NVRAM_TEK_F_DRIVES_SUP_1G       0x02
+#define        NVRAM_TEK_F_RESET_ON_POWER_ON   0x04
+#define        NVRAM_TEK_F_ACTIVE_NEGATION     0x08
+#define        NVRAM_TEK_F_IMMEDIATE_SEEK      0x10
+#define        NVRAM_TEK_F_SCAN_LUNS           0x20
+#define        NVRAM_TEK_F_REMOVABLE_FLAGS     0xc0    /* 0 dis, 1 boot, 2 all */
+       u_int8_t        boot_delay_index;
+       u_int8_t        max_tags_index;
+       u_int16_t       flags1;
+#define        NVRAM_TEK_F_F2_F6_ENABLED       0x0001
+       u_int16_t       spare[29];
+} __attribute__((__packed__));



Home | Main Index | Thread Index | Old Index