qla2xxx: Add serdes read/write support for ISP27XX
authorAndrew Vasquez <andrew.vasquez@qlogic.com>
Thu, 9 Apr 2015 19:00:02 +0000 (15:00 -0400)
committerJames Bottomley <JBottomley@Odin.com>
Fri, 10 Apr 2015 15:42:18 +0000 (08:42 -0700)
Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: Harish Zunjarrao <harish.zunjarrao@qlogic.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@qlogic.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: James Bottomley <JBottomley@Odin.com>
drivers/scsi/qla2xxx/qla_mbx.c

index 72971daa25520a6f9b2f897e2105ed7419129841..fe7b87d4ed86cc706d4492290b27ee23e9e0abda 100644 (file)
@@ -2838,7 +2838,7 @@ qla2x00_write_serdes_word(scsi_qla_host_t *vha, uint16_t addr, uint16_t data)
        mbx_cmd_t mc;
        mbx_cmd_t *mcp = &mc;
 
-       if (!IS_QLA2031(vha->hw))
+       if (!IS_QLA2031(vha->hw) && !IS_QLA27XX(vha->hw))
                return QLA_FUNCTION_FAILED;
 
        ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x1182,
@@ -2846,7 +2846,11 @@ qla2x00_write_serdes_word(scsi_qla_host_t *vha, uint16_t addr, uint16_t data)
 
        mcp->mb[0] = MBC_WRITE_SERDES;
        mcp->mb[1] = addr;
-       mcp->mb[2] = data & 0xff;
+       if (IS_QLA2031(vha->hw))
+               mcp->mb[2] = data & 0xff;
+       else
+               mcp->mb[2] = data;
+
        mcp->mb[3] = 0;
        mcp->out_mb = MBX_3|MBX_2|MBX_1|MBX_0;
        mcp->in_mb = MBX_0;
@@ -2872,7 +2876,7 @@ qla2x00_read_serdes_word(scsi_qla_host_t *vha, uint16_t addr, uint16_t *data)
        mbx_cmd_t mc;
        mbx_cmd_t *mcp = &mc;
 
-       if (!IS_QLA2031(vha->hw))
+       if (!IS_QLA2031(vha->hw) && !IS_QLA27XX(vha->hw))
                return QLA_FUNCTION_FAILED;
 
        ql_dbg(ql_dbg_mbx + ql_dbg_verbose, vha, 0x1185,
@@ -2887,7 +2891,10 @@ qla2x00_read_serdes_word(scsi_qla_host_t *vha, uint16_t addr, uint16_t *data)
        mcp->flags = 0;
        rval = qla2x00_mailbox_command(vha, mcp);
 
-       *data = mcp->mb[1] & 0xff;
+       if (IS_QLA2031(vha->hw))
+               *data = mcp->mb[1] & 0xff;
+       else
+               *data = mcp->mb[1];
 
        if (rval != QLA_SUCCESS) {
                ql_dbg(ql_dbg_mbx, vha, 0x1186,