2
* Copyright (C) 2004,2005 Heinz Mauelshagen, Red Hat GmbH.
5
* See file DISCLAIMER at the top of this source tree for license information.
15
/* VIA metadata and data offsets. */
16
#define VIA_CONFIGOFFSET ((di->sectors - 1) << 9)
17
#define VIA_DATAOFFSET 0
19
#define VIA_MAX_DISKS 8
22
uint16_t bootable:1; /* BIOS boot */
23
uint16_t enable_enhanced:1; /* Unused */
24
uint16_t in_disk_array:1; /* Used/Spare */
29
#define VIA_T_RAID01 9
30
#define VIA_RAID_TYPE(x) ((x)->array.disk.raid_type)
31
uint16_t array_index:3;
32
#define VIA_ARRAY_INDEX(x) ((x)->array.disk.array_index)
33
uint16_t raid_type_info:5;
35
#define VIA_T_RAID_INDEX(x) ((x)->array.disk.raid_type_info & 0x7)
38
#define VIA_T_RAID1_SOURCE(x) (((x)->array.disk.raid_type_info & 0x3) == 0)
39
#define VIA_T_RAID1_SPARE(x) (((x)->array.disk.raid_type_info & 0x3) == 1)
40
#define VIA_T_RAID1_MIRROR(x) (((x)->array.disk.raid_type_info & 0x3) == 2)
41
#define VIA_T_RAID1_DIRTY(x) (((x)->array.disk.raid_type_info & 0x4) >> 2)
44
// #define VIA_T_RAID01_INDEX(x) VIA_T_RAID_INDEX(x)
45
#define VIA_T_RAID01_MIRROR(x) (((x)->array.disk.raid_type_info & 0x8) >> 3)
46
#define VIA_T_RAID01_DIRTY(x) (((x)->array.disk.raid_type_info & 0x10) >> 4)
49
#define VIA_T_SPAN_INDEX(x) ((x)->array.disk.raid_type_info & 0x7)
51
} __attribute__ ((packed));
55
uint8_t disk_array_ex;
56
#define VIA_RAID_DISKS(x) ((x)->array.disk_array_ex & 0x7)
57
#define VIA_BROKEN(x) (((x)->array.disk_array_ex & 0x8) >> 4)
58
#define VIA_STRIDE(x) (8 << (((x)->array.disk_array_ex & 0xF0) >> 4))
59
uint32_t capacity_low;
60
uint32_t capacity_high;
61
uint32_t serial_checksum;
62
} __attribute__ ((packed));
66
#define VIA_SIGNATURE 0xAA55
67
uint8_t version_number;
69
uint32_t serial_checksum[8];
71
} __attribute__ ((packed));
74
/* Prototype of the register function for this metadata format handler */
75
int register_via(struct lib_context *lc);