aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_mbx.c
diff options
context:
space:
mode:
authorSaurav Kashyap <saurav.kashyap@qlogic.com>2012-08-22 14:21:04 -0400
committerJames Bottomley <JBottomley@Parallels.com>2012-09-24 04:10:47 -0400
commit81178772b636a0effe65c98f85a50dc32427b436 (patch)
tree2997297358c3ee2b3964022b86d59d7949509e1e /drivers/scsi/qla2xxx/qla_mbx.c
parent7d613ac6acec8c29e7aa3f80e28e8e982977a151 (diff)
[SCSI] qla2xxx: Implemetation of mctp.
[jejb: fix up checkpatch errors] Signed-off-by: Saurav Kashyap <saurav.kashyap@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_mbx.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_mbx.c70
1 files changed, 57 insertions, 13 deletions
diff --git a/drivers/scsi/qla2xxx/qla_mbx.c b/drivers/scsi/qla2xxx/qla_mbx.c
index 1587b64b4bc3..691be37b8918 100644
--- a/drivers/scsi/qla2xxx/qla_mbx.c
+++ b/drivers/scsi/qla2xxx/qla_mbx.c
@@ -559,18 +559,16 @@ qla2x00_get_fw_version(scsi_qla_host_t *vha)
559 ha->phy_version[1] = mcp->mb[9] >> 8; 559 ha->phy_version[1] = mcp->mb[9] >> 8;
560 ha->phy_version[2] = mcp->mb[9] & 0xff; 560 ha->phy_version[2] = mcp->mb[9] & 0xff;
561 } 561 }
562 if (IS_QLA83XX(ha)) { 562 if (IS_FWI2_CAPABLE(ha)) {
563 if (mcp->mb[6] & BIT_15) { 563 ha->fw_attributes_h = mcp->mb[15];
564 ha->fw_attributes_h = mcp->mb[15]; 564 ha->fw_attributes_ext[0] = mcp->mb[16];
565 ha->fw_attributes_ext[0] = mcp->mb[16]; 565 ha->fw_attributes_ext[1] = mcp->mb[17];
566 ha->fw_attributes_ext[1] = mcp->mb[17]; 566 ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x1139,
567 ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x1139, 567 "%s: FW_attributes Upper: 0x%x, Lower: 0x%x.\n",
568 "%s: FW_attributes Upper: 0x%x, Lower: 0x%x.\n", 568 __func__, mcp->mb[15], mcp->mb[6]);
569 __func__, mcp->mb[15], mcp->mb[6]); 569 ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x112f,
570 } else 570 "%s: Ext_FwAttributes Upper: 0x%x, Lower: 0x%x.\n",
571 ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x112f, 571 __func__, mcp->mb[17], mcp->mb[16]);
572 "%s: FwAttributes [Upper] invalid, MB6:%04x\n",
573 __func__, mcp->mb[6]);
574 } 572 }
575 573
576failed: 574failed:
@@ -3408,7 +3406,6 @@ qla2x00_dump_ram(scsi_qla_host_t *vha, dma_addr_t req_dma, uint32_t addr,
3408 3406
3409 return rval; 3407 return rval;
3410} 3408}
3411
3412/* 84XX Support **************************************************************/ 3409/* 84XX Support **************************************************************/
3413 3410
3414struct cs84xx_mgmt_cmd { 3411struct cs84xx_mgmt_cmd {
@@ -4950,3 +4947,50 @@ qla83xx_access_control(scsi_qla_host_t *vha, uint16_t options,
4950 4947
4951 return rval; 4948 return rval;
4952} 4949}
4950
4951int
4952qla2x00_dump_mctp_data(scsi_qla_host_t *vha, dma_addr_t req_dma, uint32_t addr,
4953 uint32_t size)
4954{
4955 int rval;
4956 mbx_cmd_t mc;
4957 mbx_cmd_t *mcp = &mc;
4958
4959 if (!IS_MCTP_CAPABLE(vha->hw))
4960 return QLA_FUNCTION_FAILED;
4961
4962 ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x114f,
4963 "Entered %s.\n", __func__);
4964
4965 mcp->mb[0] = MBC_DUMP_RISC_RAM_EXTENDED;
4966 mcp->mb[1] = LSW(addr);
4967 mcp->mb[2] = MSW(req_dma);
4968 mcp->mb[3] = LSW(req_dma);
4969 mcp->mb[4] = MSW(size);
4970 mcp->mb[5] = LSW(size);
4971 mcp->mb[6] = MSW(MSD(req_dma));
4972 mcp->mb[7] = LSW(MSD(req_dma));
4973 mcp->mb[8] = MSW(addr);
4974 /* Setting RAM ID to valid */
4975 mcp->mb[10] |= BIT_7;
4976 /* For MCTP RAM ID is 0x40 */
4977 mcp->mb[10] |= 0x40;
4978
4979 mcp->out_mb |= MBX_10|MBX_8|MBX_7|MBX_6|MBX_5|MBX_4|MBX_3|MBX_2|MBX_1|
4980 MBX_0;
4981
4982 mcp->in_mb = MBX_0;
4983 mcp->tov = MBX_TOV_SECONDS;
4984 mcp->flags = 0;
4985 rval = qla2x00_mailbox_command(vha, mcp);
4986
4987 if (rval != QLA_SUCCESS) {
4988 ql_dbg(ql_dbg_mbx, vha, 0x114e,
4989 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
4990 } else {
4991 ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x114d,
4992 "Done %s.\n", __func__);
4993 }
4994
4995 return rval;
4996}