1 /*-
2  * Copyright (c) 2000,2001 S�ren Schmidt <sos@FreeBSD.org>
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer,
10  *    without modification, immediately at the beginning of the file.
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  * 3. The name of the author may not be used to endorse or promote products
15  *    derived from this software without specific prior written permission.
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 struct highpoint_raid_conf
31 {
32        int8_t  filler1[32];
33        u_int32_t       magic;
34 #define HPT_MAGIC_OK   0x5a7816f0
35 #define HPT_MAGIC_BAD  0x5a7816fd
36 
37        u_int32_t       magic_0;
38        u_int32_t       magic_1;
39        u_int32_t       order;
40 #define HPT_O_MIRROR   0x01
41 #define HPT_O_STRIPE   0x02
42 #define HPT_O_OK       0x04
43 
44        u_int8_t        raid_disks;
45        u_int8_t        raid0_shift;
46        u_int8_t        type;
47 #define HPT_T_RAID_0   0x00
48 #define HPT_T_RAID_1   0x01
49 #define HPT_T_RAID_01_RAID_0   0x02
50 #define HPT_T_SPAN             0x03
51 #define HPT_T_RAID_3           0x04
52 #define HPT_T_RAID_5           0x05
53 #define HPT_T_SINGLEDISK       0x06
54 #define HPT_T_RAID_01_RAID_1   0x07
55 
56        u_int8_t        disk_number;
57        u_int32_t       total_secs;
58        u_int32_t       disk_mode;
59        u_int32_t       boot_mode;
60        u_int8_t        boot_disk;
61        u_int8_t        boot_protect;
62        u_int8_t        error_log_entries;
63        u_int8_t        error_log_index;
64        struct
65        {
66                u_int32_t       timestamp;
67                u_int8_t        reason;
68 #define HPT_R_REMOVED          0xfe
69 #define HPT_R_BROKEN           0xff
70 
71                u_int8_t        disk;
72                u_int8_t        status;
73                u_int8_t        sectors;
74                u_int32_t       lba;
75        } errorlog[32];
76        u_int8_t        filler[60];
77 };
78