summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_bsg.h
diff options
context:
space:
mode:
authorJoe Carnuccio <joe.carnuccio@qlogic.com>2011-08-16 11:31:52 -0700
committerJames Bottomley <JBottomley@Parallels.com>2011-08-29 00:14:57 -0700
commit697a4bc69159c3396035b0506ffa55c4b2d0b1f4 (patch)
treeb57e6964f7b631ba47f5d8eaba78832727d450e6 /drivers/scsi/qla2xxx/qla_bsg.h
parent1fedd80f9c2e1da9e6c2fa6a1b75ad077c70f291 (diff)
downloadlinux-697a4bc69159c3396035b0506ffa55c4b2d0b1f4.tar.gz
linux-697a4bc69159c3396035b0506ffa55c4b2d0b1f4.tar.bz2
linux-697a4bc69159c3396035b0506ffa55c4b2d0b1f4.zip
[SCSI] qla2xxx: Provide method for updating I2C attached VPD.
Provide bsg interface for updating VPD attached on the I2C serial bus. Signed-off-by: Joe Carnuccio <joe.carnuccio@qlogic.com> Signed-off-by: Chad Dupuis <chad.dupuis@qlogic.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_bsg.h')
-rw-r--r--drivers/scsi/qla2xxx/qla_bsg.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/drivers/scsi/qla2xxx/qla_bsg.h b/drivers/scsi/qla2xxx/qla_bsg.h
index 0f0f54e35f06..70caa63a8930 100644
--- a/drivers/scsi/qla2xxx/qla_bsg.h
+++ b/drivers/scsi/qla2xxx/qla_bsg.h
@@ -16,6 +16,16 @@
#define QL_VND_FCP_PRIO_CFG_CMD 0x06
#define QL_VND_READ_FLASH 0x07
#define QL_VND_UPDATE_FLASH 0x08
+#define QL_VND_SET_FRU_VERSION 0x0B
+#define QL_VND_READ_FRU_STATUS 0x0C
+#define QL_VND_WRITE_FRU_STATUS 0x0D
+
+/* BSG Vendor specific subcode returns */
+#define EXT_STATUS_OK 0
+#define EXT_STATUS_ERR 1
+#define EXT_STATUS_INVALID_PARAM 6
+#define EXT_STATUS_MAILBOX 11
+#define EXT_STATUS_NO_MEMORY 17
/* BSG definations for interpreting CommandSent field */
#define INT_DEF_LB_LOOPBACK_CMD 0
@@ -141,4 +151,36 @@ struct qla_port_param {
uint16_t mode;
uint16_t speed;
} __attribute__ ((packed));
+
+
+/* FRU VPD */
+
+#define MAX_FRU_SIZE 36
+
+struct qla_field_address {
+ uint16_t offset;
+ uint16_t device;
+ uint16_t option;
+} __packed;
+
+struct qla_field_info {
+ uint8_t version[MAX_FRU_SIZE];
+} __packed;
+
+struct qla_image_version {
+ struct qla_field_address field_address;
+ struct qla_field_info field_info;
+} __packed;
+
+struct qla_image_version_list {
+ uint32_t count;
+ struct qla_image_version version[0];
+} __packed;
+
+struct qla_status_reg {
+ struct qla_field_address field_address;
+ uint8_t status_reg;
+ uint8_t reserved[7];
+} __packed;
+
#endif