Author: mav
Date: Tue Oct 20 10:16:03 2015
New Revision: 289622
URL: https://svnweb.freebsd.org/changeset/base/289622

Log:
  Zero mbox[0] for INIT_FIRMWARE to fix version 7.3 firmware.
  
  While there, add new fields to isp_icb_2400_t structure.

Modified:
  head/sys/dev/isp/isp.c
  head/sys/dev/isp/ispmbox.h

Modified: head/sys/dev/isp/isp.c
==============================================================================
--- head/sys/dev/isp/isp.c      Tue Oct 20 09:13:35 2015        (r289621)
+++ head/sys/dev/isp/isp.c      Tue Oct 20 10:16:03 2015        (r289622)
@@ -1954,6 +1954,7 @@ isp_fibre_init(ispsoftc_t *isp)
         * Init the firmware
         */
        MBSINIT(&mbs, MBOX_INIT_FIRMWARE, MBLOGALL, 30000000);
+       mbs.param[1] = 0;
        mbs.param[2] = DMA_WD1(fcp->isp_scdma);
        mbs.param[3] = DMA_WD0(fcp->isp_scdma);
        mbs.param[6] = DMA_WD3(fcp->isp_scdma);
@@ -2253,6 +2254,7 @@ isp_fibre_init_2400(ispsoftc_t *isp)
        } else {
                mbs.param[0] = MBOX_INIT_FIRMWARE;
        }
+       mbs.param[1] = 0;
        mbs.param[2] = DMA_WD1(fcp->isp_scdma);
        mbs.param[3] = DMA_WD0(fcp->isp_scdma);
        mbs.param[6] = DMA_WD3(fcp->isp_scdma);
@@ -7108,7 +7110,7 @@ static const uint32_t mbpfc[] = {
        ISP_FC_OPMAP(0x00, 0x00),       /* 0x45: */
        ISP_FC_OPMAP(0x00, 0x00),       /* 0x46: */
        ISP_FC_OPMAP(0xcf, 0x03),       /* 0x47: GET PORT_DATABASE ENHANCED */
-       ISP_FC_OPMAP(0xcd, 0x01),       /* 0x48: MBOX_INIT_FIRMWARE_MULTI_ID */
+       ISP_FC_OPMAP(0xcf, 0x0f),       /* 0x48: MBOX_INIT_FIRMWARE_MULTI_ID */
        ISP_FC_OPMAP(0xcd, 0x01),       /* 0x49: MBOX_GET_VP_DATABASE */
        ISP_FC_OPMAP_HALF(0x2, 0xcd, 0x0, 0x01),        /* 0x4a: 
MBOX_GET_VP_DATABASE_ENTRY */
        ISP_FC_OPMAP(0x00, 0x00),       /* 0x4b: */
@@ -7132,7 +7134,7 @@ static const uint32_t mbpfc[] = {
        ISP_FC_OPMAP(0x07, 0x03),       /* 0x5d: MBOX_GET_SET_DATA_RATE */
        ISP_FC_OPMAP(0x00, 0x00),       /* 0x5e: */
        ISP_FC_OPMAP(0x00, 0x00),       /* 0x5f: */
-       ISP_FC_OPMAP(0xcd, 0x01),       /* 0x60: MBOX_INIT_FIRMWARE */
+       ISP_FC_OPMAP(0xcf, 0x0f),       /* 0x60: MBOX_INIT_FIRMWARE */
        ISP_FC_OPMAP(0x00, 0x00),       /* 0x61: */
        ISP_FC_OPMAP(0x01, 0x01),       /* 0x62: MBOX_INIT_LIP */
        ISP_FC_OPMAP(0xcd, 0x03),       /* 0x63: MBOX_GET_FC_AL_POSITION_MAP */

Modified: head/sys/dev/isp/ispmbox.h
==============================================================================
--- head/sys/dev/isp/ispmbox.h  Tue Oct 20 09:13:35 2015        (r289621)
+++ head/sys/dev/isp/ispmbox.h  Tue Oct 20 10:16:03 2015        (r289622)
@@ -1055,8 +1055,10 @@ typedef struct {
        uint16_t        icb_prqstqlen;
        uint16_t        icb_rqstaddr[4];
        uint16_t        icb_respaddr[4];
-       uint16_t        icb_priaddr[4]; 
-       uint16_t        icb_reserved1[4];
+       uint16_t        icb_priaddr[4];
+       uint16_t        icb_msixresp;
+       uint16_t        icb_msixatio;
+       uint16_t        icb_reserved1[2];
        uint16_t        icb_atio_in;
        uint16_t        icb_atioqlen;
        uint16_t        icb_atioqaddr[4];
@@ -1065,7 +1067,11 @@ typedef struct {
        uint32_t        icb_fwoptions1;
        uint32_t        icb_fwoptions2;
        uint32_t        icb_fwoptions3;
-       uint16_t        icb_reserved2[12];
+       uint16_t        icb_qos;
+       uint16_t        icb_reserved2[3];
+       uint16_t        icb_enodemac[3];
+       uint16_t        icb_disctime;
+       uint16_t        icb_reserved3[4];
 } isp_icb_2400_t;
 
 #define        RQRSP_ADDR0015  0
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to