1 /*- 2 * Copyright (c) 2000 Michael Smith 3 * Copyright (c) 2000 BSDi 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25 * SUCH DAMAGE. 26 * 27 * Copyright (c) 2002 Eric Moore 28 * Copyright (c) 2002 LSI Logic Corporation 29 * All rights reserved. 30 * 31 * Redistribution and use in source and binary forms, with or without 32 * modification, are permitted provided that the following conditions 33 * are met: 34 * 1. Redistributions of source code must retain the above copyright 35 * notice, this list of conditions and the following disclaimer. 36 * 2. Redistributions in binary form must reproduce the above copyright 37 * notice, this list of conditions and the following disclaimer in the 38 * documentation and/or other materials provided with the distribution. 39 * 3. The party using or redistributing the source code and binary forms 40 * agrees to the disclaimer below and the terms and conditions set forth 41 * herein. 42 * 43 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 44 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 45 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 46 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 47 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 48 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 49 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 50 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 51 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 52 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 53 * SUCH DAMAGE. 54 * 55 * 56 * $FreeBSD: src/sys/dev/amr/amr_tables.h,v 1.3 2002/10/30 22:00:11 emoore Exp $ 57 */ 58 59 /* 60 * Lookup table for code-to-text translations. 61 */ 62 struct amr_code_lookup { 63 char *string; 64 u_int32_t code; 65 }; 66 67 extern char *amr_describe_code(struct amr_code_lookup *table, u_int32_t code); 68 69 #ifndef AMR_DEFINE_TABLES 70 extern struct amr_code_lookup amr_table_qinit[]; 71 extern struct amr_code_lookup amr_table_sinit[]; 72 extern struct amr_code_lookup amr_table_drvstate[]; 73 74 #else /* AMR_DEFINE_TABLES */ 75 76 /******************************************************************************** 77 * Look up a text description of a numeric code and return a pointer to same. 78 */ 79 char * 80 amr_describe_code(struct amr_code_lookup *table, u_int32_t code) 81 { 82 int i; 83 84 for (i = 0; table[i].string != NULL; i++) 85 if (table[i].code == code) 86 return(table[i].string); 87 return(table[i+1].string); 88 } 89 90 struct amr_code_lookup amr_table_qinit[] = { 91 {"init scanning drives", AMR_QINIT_SCAN}, 92 {"init scanning initialising", AMR_QINIT_SCANINIT}, 93 {"init firmware initing", AMR_QINIT_FIRMWARE}, 94 {"init in progress", AMR_QINIT_INPROG}, 95 {"init spinning drives", AMR_QINIT_SPINUP}, 96 {"insufficient memory", AMR_QINIT_NOMEM}, 97 {"init flushing cache", AMR_QINIT_CACHEFLUSH}, 98 {"init successfully done", AMR_QINIT_DONE}, 99 {NULL, 0}, 100 {"unknown init code", 0} 101 }; 102 103 struct amr_code_lookup amr_table_sinit[] = { 104 {"init abnormal terminated", AMR_SINIT_ABEND}, 105 {"insufficient memory", AMR_SINIT_NOMEM}, 106 {"firmware flushing cache", AMR_SINIT_CACHEFLUSH}, 107 {"init in progress", AMR_SINIT_INPROG}, 108 {"firmware spinning drives", AMR_SINIT_SPINUP}, 109 {"init successfully done", AMR_SINIT_DONE}, 110 {NULL, 0}, 111 {"unknown init code", 0} 112 }; 113 114 struct amr_code_lookup amr_table_drvstate[] = { 115 {"offline", AMR_DRV_OFFLINE}, 116 {"degraded", AMR_DRV_DEGRADED}, 117 {"optimal", AMR_DRV_OPTIMAL}, 118 {"online", AMR_DRV_ONLINE}, 119 {"failed", AMR_DRV_FAILED}, 120 {"rebuild", AMR_DRV_REBUILD}, 121 {"hot spare", AMR_DRV_HOTSPARE}, 122 {NULL, 0}, 123 {"unknown", 0} 124 }; 125 126 struct amr_code_lookup amr_table_adaptertype[] = { 127 {"Series 431", AMR_SIG_431}, 128 {"Series 438", AMR_SIG_438}, 129 {"Series 762", AMR_SIG_762}, 130 {"Integrated HP NetRAID (T5)", AMR_SIG_T5}, 131 {"Series 466", AMR_SIG_466}, 132 {"Series 467", AMR_SIG_467}, 133 {"Integrated HP NetRAID (T7)", AMR_SIG_T7}, 134 {"Series 490", AMR_SIG_490}, 135 {NULL, 0}, 136 {"unknown adapter", 0} 137 }; 138 139 #endif 140