diff options
author | Saurav Kashyap <saurav.kashyap@qlogic.com> | 2012-08-22 14:21:04 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2012-09-24 04:10:47 -0400 |
commit | 81178772b636a0effe65c98f85a50dc32427b436 (patch) | |
tree | 2997297358c3ee2b3964022b86d59d7949509e1e /drivers/scsi/qla2xxx/qla_mbx.c | |
parent | 7d613ac6acec8c29e7aa3f80e28e8e982977a151 (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.c | 70 |
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 | ||
576 | failed: | 574 | failed: |
@@ -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 | ||
3414 | struct cs84xx_mgmt_cmd { | 3411 | struct 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 | |||
4951 | int | ||
4952 | qla2x00_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 | } | ||