aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorAndrew Vasquez <andrew.vasquez@qlogic.com>2007-09-20 17:07:39 -0400
committerJames Bottomley <jejb@mulgrave.localdomain>2007-10-12 14:49:58 -0400
commitb58369273956775c3e8b7bbbe152593d52762099 (patch)
treecf08d6dffb751adb75a10550d92da9ee0a3f4368 /drivers/scsi
parentc3b058afaea11273835f59694f8645a89915be9c (diff)
[SCSI] qla2xxx: Query additional RISC registers during ISP25XX firmware dump.
Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r--drivers/scsi/qla2xxx/qla_dbg.c18
-rw-r--r--drivers/scsi/qla2xxx/qla_dbg.h2
-rw-r--r--drivers/scsi/qla2xxx/qla_fw.h2
3 files changed, 21 insertions, 1 deletions
diff --git a/drivers/scsi/qla2xxx/qla_dbg.c b/drivers/scsi/qla2xxx/qla_dbg.c
index 2defe0c21df4..ca7f70d6d6c0 100644
--- a/drivers/scsi/qla2xxx/qla_dbg.c
+++ b/drivers/scsi/qla2xxx/qla_dbg.c
@@ -1072,6 +1072,7 @@ qla25xx_fw_dump(scsi_qla_host_t *ha, int hardware_locked)
1072 } 1072 }
1073 fw = &ha->fw_dump->isp.isp25; 1073 fw = &ha->fw_dump->isp.isp25;
1074 qla2xxx_prep_dump(ha, ha->fw_dump); 1074 qla2xxx_prep_dump(ha, ha->fw_dump);
1075 ha->fw_dump->version = __constant_htonl(2);
1075 1076
1076 fw->host_status = htonl(RD_REG_DWORD(&reg->host_status)); 1077 fw->host_status = htonl(RD_REG_DWORD(&reg->host_status));
1077 1078
@@ -1080,6 +1081,23 @@ qla25xx_fw_dump(scsi_qla_host_t *ha, int hardware_locked)
1080 if (rval != QLA_SUCCESS) 1081 if (rval != QLA_SUCCESS)
1081 goto qla25xx_fw_dump_failed_0; 1082 goto qla25xx_fw_dump_failed_0;
1082 1083
1084 /* Host/Risc registers. */
1085 iter_reg = fw->host_risc_reg;
1086 iter_reg = qla24xx_read_window(reg, 0x7000, 16, iter_reg);
1087 qla24xx_read_window(reg, 0x7010, 16, iter_reg);
1088
1089 /* PCIe registers. */
1090 WRT_REG_DWORD(&reg->iobase_addr, 0x7C00);
1091 RD_REG_DWORD(&reg->iobase_addr);
1092 WRT_REG_DWORD(&reg->iobase_window, 0x01);
1093 dmp_reg = &reg->iobase_c4;
1094 fw->pcie_regs[0] = htonl(RD_REG_DWORD(dmp_reg++));
1095 fw->pcie_regs[1] = htonl(RD_REG_DWORD(dmp_reg++));
1096 fw->pcie_regs[2] = htonl(RD_REG_DWORD(dmp_reg));
1097 fw->pcie_regs[3] = htonl(RD_REG_DWORD(&reg->iobase_window));
1098 WRT_REG_DWORD(&reg->iobase_window, 0x00);
1099 RD_REG_DWORD(&reg->iobase_window);
1100
1083 /* Host interface registers. */ 1101 /* Host interface registers. */
1084 dmp_reg = &reg->flash_addr; 1102 dmp_reg = &reg->flash_addr;
1085 for (cnt = 0; cnt < sizeof(fw->host_reg) / 4; cnt++) 1103 for (cnt = 0; cnt < sizeof(fw->host_reg) / 4; cnt++)
diff --git a/drivers/scsi/qla2xxx/qla_dbg.h b/drivers/scsi/qla2xxx/qla_dbg.h
index cca4b0d8253e..a50ecf0b7c84 100644
--- a/drivers/scsi/qla2xxx/qla_dbg.h
+++ b/drivers/scsi/qla2xxx/qla_dbg.h
@@ -215,6 +215,8 @@ struct qla24xx_fw_dump {
215 215
216struct qla25xx_fw_dump { 216struct qla25xx_fw_dump {
217 uint32_t host_status; 217 uint32_t host_status;
218 uint32_t host_risc_reg[32];
219 uint32_t pcie_regs[4];
218 uint32_t host_reg[32]; 220 uint32_t host_reg[32];
219 uint32_t shadow_reg[11]; 221 uint32_t shadow_reg[11];
220 uint32_t risc_io_reg; 222 uint32_t risc_io_reg;
diff --git a/drivers/scsi/qla2xxx/qla_fw.h b/drivers/scsi/qla2xxx/qla_fw.h
index db63386f96b0..25364b1aaf12 100644
--- a/drivers/scsi/qla2xxx/qla_fw.h
+++ b/drivers/scsi/qla2xxx/qla_fw.h
@@ -942,7 +942,7 @@ struct device_reg_24xx {
942 uint16_t mailbox31; 942 uint16_t mailbox31;
943 943
944 uint32_t iobase_window; 944 uint32_t iobase_window;
945 uint32_t unused_4; /* Gap. */ 945 uint32_t iobase_c4;
946 uint32_t iobase_c8; 946 uint32_t iobase_c8;
947 uint32_t unused_4_1[6]; /* Gap. */ 947 uint32_t unused_4_1[6]; /* Gap. */
948 uint32_t iobase_q; 948 uint32_t iobase_q;