amr(4): Sync with FreeBSD.
[dragonfly.git] / sys / dev / raid / amr / amr_tables.h
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