+#define HPT37X_CONFIG_OFF 0x1200
+#define HPT37X_MAGIC_OK 0x5a7816f0
+#define HPT37X_MAGIC_BAD 0x5a7816fd
+static int probe_highpoint_ataraid(struct volume_id *id, __u64 off)
+{
+ struct hpt37x {
+ __u8 filler1[32];
+ __u32 magic;
+ __u32 magic_0;
+ __u32 magic_1;
+ } __attribute__((packed)) *hpt;
+
+ const __u8 *buf;
+
+ buf = get_buffer(id, off + HPT37X_CONFIG_OFF, 0x200);
+ if (buf == NULL)
+ return -1;
+
+ hpt = (struct hpt37x *) buf;
+
+ if (hpt->magic != HPT37X_MAGIC_OK && hpt->magic != HPT37X_MAGIC_BAD)
+ return -1;
+
+ id->usage_id = VOLUME_ID_RAID;
+ id->type_id = VOLUME_ID_HPTRAID;
+ id->type = "hpt_ataraid_member";
+
+ return 0;
+}
+