Module Name: src
Committed By: mlelstv
Date: Sat Nov 9 12:06:22 UTC 2024
Modified Files:
src/sys/dev/scsipi: scsipi_all.h
Log Message:
Add VPD descriptor definitions.
To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 src/sys/dev/scsipi/scsipi_all.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/scsipi/scsipi_all.h
diff -u src/sys/dev/scsipi/scsipi_all.h:1.33 src/sys/dev/scsipi/scsipi_all.h:1.34
--- src/sys/dev/scsipi/scsipi_all.h:1.33 Tue Dec 25 18:33:42 2007
+++ src/sys/dev/scsipi/scsipi_all.h Sat Nov 9 12:06:22 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: scsipi_all.h,v 1.33 2007/12/25 18:33:42 perry Exp $ */
+/* $NetBSD: scsipi_all.h,v 1.34 2024/11/09 12:06:22 mlelstv Exp $ */
/*
* SCSI and SCSI-like general interface description
@@ -59,7 +59,9 @@
struct scsipi_inquiry {
u_int8_t opcode;
u_int8_t byte2;
- u_int8_t unused[2];
+#define SINQ_EVPD 0x01
+ u_int8_t pagecode;
+ u_int8_t length_hi; /* upper byte of length */
u_int8_t length;
u_int8_t control;
} __packed;
@@ -165,4 +167,83 @@ struct scsipi_inquiry_data {
#define SCSIPI_INQUIRY_LENGTH_SCSI3 74
} __packed; /* 74 Bytes */
+/* Vital product data when SINQ_EVPD is set */
+
+struct scsipi_inquiry_evpd_header {
+/* 1*/ u_int8_t device;
+/* 2*/ u_int8_t pagecode;
+/* 3*/ u_int8_t length[2];
+};
+
+#define SINQ_VPD_PAGES 0x00
+#define SINQ_VPD_UNIT_SERIAL 0x80
+#define SINQ_VPD_DEVICE_ID 0x83
+#define SINQ_VPD_SOFTWARE_ID 0x84
+#define SINQ_VPD_MN_ADDRESS 0x85
+#define SINQ_VPD_INQUIRY 0x86
+#define SINQ_VPD_MP_POLICY 0x87
+#define SINQ_VPD_PORTS 0x88
+#define SINQ_VPD_POWER_COND 0x8a
+#define SINQ_VPD_CONSTITUENTS 0x8b
+#define SINQ_VPD_CFA_PROFILE 0x8c
+#define SINQ_VPD_CONSUMPTION 0x8d
+#define SINQ_VPD_BLOCK_LIMITS 0xb0
+#define SINQ_VPD_BLOCK_CHARS 0xb1
+#define SINQ_VPD_LOGICAL_PROV 0xb2
+#define SINQ_VPD_REFERRASLS 0xb3
+#define SINQ_VPD_SUPPORTED 0xb4
+#define SINQ_VPD_BLOCK_CHARSX 0xb5
+#define SINQ_VPD_BLOCK_ZONED 0xb6
+#define SINQ_VPD_BLOCK_LIMITSX 0xb7
+#define SINQ_VPD_FIRMWARE_NUM 0xc0
+#define SINQ_VPD_JUMPERS 0xc2
+#define SINQ_VPD_BEHAVIOUR 0xc3
+
+#define SINQ_VPD_DATE_CODE 0xc1
+struct scsipi_inquiry_evpd_date_code {
+/* 1*/ u_int8_t etf_log_date[8]; /* MMDDYYYY */
+/* 9*/ u_int8_t compile_date[8]; /* MMDDYYYY */
+/*17*/ u_int8_t spindown_count[2];
+/*19*/ u_int8_t spindown_time[6]; /* HHMMSS */
+} __packed;
+
+#define SINQ_VPD_SERIAL 0x80
+struct scsipi_inquiry_evpd_serial {
+/* 1*/ u_int8_t serial_number[251];
+} __packed;
+
+#define SINQ_VPD_DEVICE_ID 0x83
+struct scsipi_inquiry_evpd_device_id {
+/* 1*/ u_int8_t pc;
+#define SINQ_DEVICE_ID_PROTOCOL 0xf0
+#define SINQ_DEVICE_ID_PROTOCOL_FC 0x00
+#define SINQ_DEVICE_ID_PROTOCOL_SSA 0x20
+#define SINQ_DEVICE_ID_PROTOCOL_IEEE1394 0x30
+#define SINQ_DEVICE_ID_PROTOCOL_RDMA 0x40
+#define SINQ_DEVICE_ID_PROTOCOL_ISCSI 0x50
+#define SINQ_DEVICE_ID_PROTOCOL_SAS 0x60
+#define SINQ_DEVICE_ID_CODESET 0x0f
+#define SINQ_DEVICE_ID_CODESET_BINARY 0x01
+#define SINQ_DEVICE_ID_CODESET_ASCII 0x02
+#define SINQ_DEVICE_ID_CODESET_UTF8 0x03
+/* 2*/ u_int8_t flags;
+#define SINQ_DEVICE_ID_PIV 0x80
+#define SINQ_DEVICE_ID_ASSOCIATION 0x30
+#define SINQ_DEVICE_ID_ASSOCIATION_DEVICE 0x00
+#define SINQ_DEVICE_ID_ASSOCIATION_PORT 0x10
+#define SINQ_DEVICE_ID_ASSOCIATION_TARGET 0x20
+#define SINQ_DEVICE_ID_TYPE 0x0f
+#define SINQ_DEVICE_ID_TYPE_UNASSIGNED 0x00
+#define SINQ_DEVICE_ID_TYPE_VENDOR 0x01
+#define SINQ_DEVICE_ID_TYPE_EUI64 0x02
+#define SINQ_DEVICE_ID_TYPE_FC 0x03
+#define SINQ_DEVICE_ID_TYPE_PORTNUMBER1 0x04
+#define SINQ_DEVICE_ID_TYPE_PORTNUMBER2 0x05
+#define SINQ_DEVICE_ID_TYPE_PORTNUMBER3 0x06
+#define SINQ_DEVICE_ID_TYPE_MD5 0x07
+/* 3*/ u_int8_t reserved;
+/* 4*/ u_int8_t designator_length;
+/* 5*/ u_int8_t designator[1];
+} __packed;
+
#endif /* _DEV_SCSIPI_SCSIPI_ALL_H_ */