summaryrefslogtreecommitdiff
path: root/sys/dev/ic/silireg.h
diff options
context:
space:
mode:
authorDavid Gwynne <dlg@cvs.openbsd.org>2007-04-05 02:38:29 +0000
committerDavid Gwynne <dlg@cvs.openbsd.org>2007-04-05 02:38:29 +0000
commit6501fcf2db4af847fe1f000d966816a2fa97208c (patch)
tree88f98f672d6e1e102dddcbfd9a2b0b6b9c60d796 /sys/dev/ic/silireg.h
parent4ebdb07e2ec778ec16055f4302c871def204a23e (diff)
start defining the scatter/gather bits and the port request blocks (PRBs).
Diffstat (limited to 'sys/dev/ic/silireg.h')
-rw-r--r--sys/dev/ic/silireg.h51
1 files changed, 50 insertions, 1 deletions
diff --git a/sys/dev/ic/silireg.h b/sys/dev/ic/silireg.h
index e050dcbc717..754abc97827 100644
--- a/sys/dev/ic/silireg.h
+++ b/sys/dev/ic/silireg.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: silireg.h,v 1.14 2007/04/04 11:38:35 dlg Exp $ */
+/* $OpenBSD: silireg.h,v 1.15 2007/04/05 02:38:28 dlg Exp $ */
/*
* Copyright (c) 2007 David Gwynne <dlg@openbsd.org>
@@ -133,3 +133,52 @@
#define SILI_MAX_CMDS 31
+
+
+struct sili_sge {
+ u_int32_t addr_lo;
+ u_int32_t addr_hi;
+ u_int32_t data_count;
+ u_int32_t flags;
+#define SILI_SGE_TRM (1<<31)
+#define SILI_SGE_LNK (1<<30)
+#define SILI_SGE_DRD (1<<29)
+#define SILI_SGE_XCF (1<<28)
+} __packed;
+
+struct sili_prb_ata {
+ u_int16_t control;
+ u_int16_t protocol_override;
+ u_int32_t rx_count;
+
+ u_int8_t fis[ATA_FIS_LENGTH];
+
+ u_int32_t reserved;
+
+ struct sili_sge sgl[2];
+} __packed;
+
+struct sili_prb_packet {
+ u_int16_t control;
+ u_int16_t protocol_override;
+ u_int32_t rx_count;
+
+ u_int8_t fis[ATA_FIS_LENGTH];
+
+ u_int32_t reserved;
+
+ u_int8_t cdb[16];
+
+ struct sili_sge sgl[1];
+} __packed;
+
+struct sili_prb_softreset {
+ u_int16_t control;
+ u_int16_t reserved1;
+ u_int32_t reserved2;
+
+ u_int8_t fis[ATA_FIS_LENGTH];
+
+ u_int32_t reserved3[9];
+} __packed;
+