Lines Matching refs:mb

95  *	mb[MAX_MAILBOX_REGISTER_COUNT] = returned mailbox data.
161 mcp->mb[0] = MBS_LINK_DOWN_ERROR;
172 !is_rom_cmd(mcp->mb[0])) {
175 mcp->mb[0]);
189 mcp->mb[0]);
204 "Prepare to issue mbox cmd=0x%x.\n", mcp->mb[0]);
224 iptr = mcp->mb;
225 command = mcp->mb[0];
372 mcp->mb[0] = MBS_LINK_DOWN_ERROR;
388 iptr2 = mcp->mb;
407 uint16_t mb[8];
412 mb[0] = rd_reg_word(&reg->isp24.mailbox0);
413 mb[1] = rd_reg_word(&reg->isp24.mailbox1);
414 mb[2] = rd_reg_word(&reg->isp24.mailbox2);
415 mb[3] = rd_reg_word(&reg->isp24.mailbox3);
416 mb[7] = rd_reg_word(&reg->isp24.mailbox7);
423 "mb[0-3]=[0x%x 0x%x 0x%x 0x%x] mb7 0x%x host_status 0x%x hccr 0x%x\n",
424 command, ictrl, jiffies, mb[0], mb[1], mb[2], mb[3],
425 mb[7], host_status, hccr);
428 mb[0] = RD_MAILBOX_REG(ha, &reg->isp, 0);
432 "mb[0]=0x%x\n", command, ictrl, jiffies, mb[0]);
460 if (mcp->mb[0] != MBC_GEN_SYSTEM_ERROR)
481 mcp->mb[0] != MBC_GEN_SYSTEM_ERROR) {
502 "mb[0]=0x%x, eeh_busy=0x%x. Scheduling ISP "
503 "abort.\n", command, mcp->mb[0],
527 "mb[0]=0x%x. Scheduling ISP abort ",
528 command, mcp->mb[0]);
554 mcp->mb[0]);
564 printk(" mb[%u]=%x", i, mcp->mb[i]);
602 mcp->mb[0] = MBC_LOAD_RISC_RAM_EXTENDED;
603 mcp->mb[8] = MSW(risc_addr);
606 mcp->mb[0] = MBC_LOAD_RISC_RAM;
609 mcp->mb[1] = LSW(risc_addr);
610 mcp->mb[2] = MSW(req_dma);
611 mcp->mb[3] = LSW(req_dma);
612 mcp->mb[6] = MSW(MSD(req_dma));
613 mcp->mb[7] = LSW(MSD(req_dma));
616 mcp->mb[4] = MSW(risc_code_size);
617 mcp->mb[5] = LSW(risc_code_size);
620 mcp->mb[4] = LSW(risc_code_size);
631 "Failed=%x mb[0]=%x mb[1]=%x.\n",
632 rval, mcp->mb[0], mcp->mb[1]);
673 mcp->mb[0] = MBC_EXECUTE_FIRMWARE;
677 mcp->mb[1] = MSW(risc_addr);
678 mcp->mb[2] = LSW(risc_addr);
679 mcp->mb[3] = 0;
680 mcp->mb[4] = 0;
681 mcp->mb[11] = 0;
685 mcp->mb[4] = BIT_0;
687 mcp->mb[4] |=
692 mcp->mb[4] |= NVME_ENABLE_FLAG;
699 mcp->mb[4] |= BIT_4;
700 mcp->mb[11] |= nv->min_supported_speed & 0xF;
708 mcp->mb[11] |= BIT_4;
712 mcp->mb[4] |= ENABLE_EXTENDED_LOGIN;
715 mcp->mb[4] |= ENABLE_EXCHANGE_OFFLD;
718 mcp->mb[11] |= EXE_FW_FORCE_SEMAPHORE;
723 mcp->mb[1] = LSW(risc_addr);
726 mcp->mb[2] = 0;
737 mcp->mb[1] == 0x27 && retry) {
746 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
753 ha->fw_ability_mask = mcp->mb[3] << 16 | mcp->mb[2];
756 ql_dbg(ql_dbg_mbx, vha, 0x1027, "exchanges=%x.\n", mcp->mb[1]);
758 ha->max_supported_speed = mcp->mb[2] & (BIT_0|BIT_1);
764 ha->min_supported_speed = mcp->mb[5] &
810 memset(mcp->mb, 0 , sizeof(mcp->mb));
811 mcp->mb[0] = MBC_GET_MEM_OFFLOAD_CNTRL_STAT;
812 mcp->mb[1] = FETCH_XLOGINS_STAT;
822 *buf_sz = mcp->mb[4];
823 *ex_logins_cnt = mcp->mb[10];
827 mcp->mb[4], mcp->mb[10]);
867 memset(mcp->mb, 0 , sizeof(mcp->mb));
868 mcp->mb[0] = MBC_GET_MEM_OFFLOAD_CNTRL_STAT;
869 mcp->mb[1] = CONFIG_XLOGINS_MEM;
870 mcp->mb[2] = MSW(phys_addr);
871 mcp->mb[3] = LSW(phys_addr);
872 mcp->mb[6] = MSW(MSD(phys_addr));
873 mcp->mb[7] = LSW(MSD(phys_addr));
874 mcp->mb[8] = MSW(ha->exlogin_size);
875 mcp->mb[9] = LSW(ha->exlogin_size);
884 rval, mcp->mb[0], mcp->mb[11]);
920 memset(mcp->mb, 0 , sizeof(mcp->mb));
921 mcp->mb[0] = MBC_GET_MEM_OFFLOAD_CNTRL_STAT;
922 mcp->mb[1] = FETCH_XCHOFFLD_STAT;
932 *buf_sz = mcp->mb[4];
933 *ex_logins_cnt = mcp->mb[10];
937 mcp->mb[4], mcp->mb[10]);
977 memset(mcp->mb, 0 , sizeof(mcp->mb));
978 mcp->mb[0] = MBC_GET_MEM_OFFLOAD_CNTRL_STAT;
979 mcp->mb[1] = CONFIG_XCHOFFLD_MEM;
980 mcp->mb[2] = MSW(ha->exchoffld_buf_dma);
981 mcp->mb[3] = LSW(ha->exchoffld_buf_dma);
982 mcp->mb[6] = MSW(MSD(ha->exchoffld_buf_dma));
983 mcp->mb[7] = LSW(MSD(ha->exchoffld_buf_dma));
984 mcp->mb[8] = MSW(ha->exchoffld_size);
985 mcp->mb[9] = LSW(ha->exchoffld_size);
1029 mcp->mb[0] = MBC_GET_FIRMWARE_VERSION;
1048 ha->fw_major_version = mcp->mb[1];
1049 ha->fw_minor_version = mcp->mb[2];
1050 ha->fw_subminor_version = mcp->mb[3];
1051 ha->fw_attributes = mcp->mb[6];
1055 ha->fw_memory_size = (mcp->mb[5] << 16) | mcp->mb[4];
1058 ha->mpi_version[0] = mcp->mb[10] & 0xff;
1059 ha->mpi_version[1] = mcp->mb[11] >> 8;
1060 ha->mpi_version[2] = mcp->mb[11] & 0xff;
1061 ha->mpi_capabilities = (mcp->mb[12] << 16) | mcp->mb[13];
1062 ha->phy_version[0] = mcp->mb[8] & 0xff;
1063 ha->phy_version[1] = mcp->mb[9] >> 8;
1064 ha->phy_version[2] = mcp->mb[9] & 0xff;
1068 ha->fw_attributes_h = mcp->mb[15];
1069 ha->fw_attributes_ext[0] = mcp->mb[16];
1070 ha->fw_attributes_ext[1] = mcp->mb[17];
1073 __func__, mcp->mb[15], mcp->mb[6]);
1076 __func__, mcp->mb[17], mcp->mb[16]);
1114 ha->serdes_version[0] = mcp->mb[7] & 0xff;
1115 ha->serdes_version[1] = mcp->mb[8] >> 8;
1116 ha->serdes_version[2] = mcp->mb[8] & 0xff;
1117 ha->mpi_version[0] = mcp->mb[10] & 0xff;
1118 ha->mpi_version[1] = mcp->mb[11] >> 8;
1119 ha->mpi_version[2] = mcp->mb[11] & 0xff;
1120 ha->pep_version[0] = mcp->mb[13] & 0xff;
1121 ha->pep_version[1] = mcp->mb[14] >> 8;
1122 ha->pep_version[2] = mcp->mb[14] & 0xff;
1123 ha->fw_shared_ram_start = (mcp->mb[19] << 16) | mcp->mb[18];
1124 ha->fw_shared_ram_end = (mcp->mb[21] << 16) | mcp->mb[20];
1125 ha->fw_ddr_ram_start = (mcp->mb[23] << 16) | mcp->mb[22];
1126 ha->fw_ddr_ram_end = (mcp->mb[25] << 16) | mcp->mb[24];
1128 if (mcp->mb[16] & BIT_10)
1190 mcp->mb[0] = MBC_GET_FIRMWARE_OPTION;
1201 fwopts[0] = mcp->mb[0];
1202 fwopts[1] = mcp->mb[1];
1203 fwopts[2] = mcp->mb[2];
1204 fwopts[3] = mcp->mb[3];
1238 mcp->mb[0] = MBC_SET_FIRMWARE_OPTION;
1239 mcp->mb[1] = fwopts[1];
1240 mcp->mb[2] = fwopts[2];
1241 mcp->mb[3] = fwopts[3];
1246 mcp->mb[10] = fwopts[10];
1249 mcp->mb[10] = fwopts[10];
1250 mcp->mb[11] = fwopts[11];
1251 mcp->mb[12] = 0; /* Undocumented, but used */
1258 fwopts[0] = mcp->mb[0];
1263 "Failed=%x (%x/%x).\n", rval, mcp->mb[0], mcp->mb[1]);
1298 mcp->mb[0] = MBC_MAILBOX_REGISTER_TEST;
1299 mcp->mb[1] = 0xAAAA;
1300 mcp->mb[2] = 0x5555;
1301 mcp->mb[3] = 0xAA55;
1302 mcp->mb[4] = 0x55AA;
1303 mcp->mb[5] = 0xA5A5;
1304 mcp->mb[6] = 0x5A5A;
1305 mcp->mb[7] = 0x2525;
1313 if (mcp->mb[1] != 0xAAAA || mcp->mb[2] != 0x5555 ||
1314 mcp->mb[3] != 0xAA55 || mcp->mb[4] != 0x55AA)
1316 if (mcp->mb[5] != 0xA5A5 || mcp->mb[6] != 0x5A5A ||
1317 mcp->mb[7] != 0x2525)
1358 mcp->mb[0] = MBC_VERIFY_CHECKSUM;
1362 mcp->mb[1] = MSW(risc_addr);
1363 mcp->mb[2] = LSW(risc_addr);
1367 mcp->mb[1] = LSW(risc_addr);
1379 (mcp->mb[2] << 16) | mcp->mb[1] : mcp->mb[1]);
1420 mcp->mb[0] = MBC_IOCB_COMMAND_A64;
1421 mcp->mb[1] = 0;
1422 mcp->mb[2] = MSW(LSD(phys_addr));
1423 mcp->mb[3] = LSW(LSD(phys_addr));
1424 mcp->mb[6] = MSW(MSD(phys_addr));
1425 mcp->mb[7] = LSW(MSD(phys_addr));
1505 mcp->mb[0] = MBC_ABORT_COMMAND;
1507 mcp->mb[1] = fcport->loop_id;
1509 mcp->mb[1] = fcport->loop_id << 8;
1510 mcp->mb[2] = (uint16_t)handle;
1511 mcp->mb[3] = (uint16_t)(handle >> 16);
1512 mcp->mb[6] = (uint16_t)cmd->device->lun;
1542 mcp->mb[0] = MBC_ABORT_TARGET;
1545 mcp->mb[1] = fcport->loop_id;
1546 mcp->mb[10] = 0;
1549 mcp->mb[1] = fcport->loop_id << 8;
1551 mcp->mb[2] = vha->hw->loop_reset_delay;
1552 mcp->mb[9] = vha->vp_idx;
1590 mcp->mb[0] = MBC_LUN_RESET;
1593 mcp->mb[1] = fcport->loop_id;
1595 mcp->mb[1] = fcport->loop_id << 8;
1596 mcp->mb[2] = (u32)l;
1597 mcp->mb[3] = 0;
1598 mcp->mb[9] = vha->vp_idx;
1653 mcp->mb[0] = MBC_GET_ADAPTER_LOOP_ID;
1654 mcp->mb[9] = vha->vp_idx;
1667 if (mcp->mb[0] == MBS_COMMAND_ERROR)
1669 else if (mcp->mb[0] == MBS_INVALID_COMMAND)
1673 *id = mcp->mb[1];
1674 *al_pa = LSB(mcp->mb[2]);
1675 *area = MSB(mcp->mb[2]);
1676 *domain = LSB(mcp->mb[3]);
1677 *top = mcp->mb[6];
1678 *sw_cap = mcp->mb[7];
1688 vha->fcoe_vlan_id = mcp->mb[9] & 0xfff;
1689 vha->fcoe_fcf_idx = mcp->mb[10];
1690 vha->fcoe_vn_port_mac[5] = mcp->mb[11] >> 8;
1691 vha->fcoe_vn_port_mac[4] = mcp->mb[11] & 0xff;
1692 vha->fcoe_vn_port_mac[3] = mcp->mb[12] >> 8;
1693 vha->fcoe_vn_port_mac[2] = mcp->mb[12] & 0xff;
1694 vha->fcoe_vn_port_mac[1] = mcp->mb[13] >> 8;
1695 vha->fcoe_vn_port_mac[0] = mcp->mb[13] & 0xff;
1699 if (mcp->mb[7] & BIT_14) {
1700 vha->port_name[0] = MSB(mcp->mb[16]);
1701 vha->port_name[1] = LSB(mcp->mb[16]);
1702 vha->port_name[2] = MSB(mcp->mb[17]);
1703 vha->port_name[3] = LSB(mcp->mb[17]);
1704 vha->port_name[4] = MSB(mcp->mb[18]);
1705 vha->port_name[5] = LSB(mcp->mb[18]);
1706 vha->port_name[6] = MSB(mcp->mb[19]);
1707 vha->port_name[7] = LSB(mcp->mb[19]);
1717 vha->bbcr = mcp->mb[15];
1718 if (mcp->mb[7] & SCM_EDC_ACC_RECEIVED) {
1721 mcp->mb[21]);
1723 if (mcp->mb[7] & SCM_RDF_ACC_RECEIVED) {
1729 mcp->mb[23]);
1764 mcp->mb[0] = MBC_GET_RETRY_COUNT;
1774 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
1777 *r_a_tov = mcp->mb[3] / 2;
1778 ratov = (mcp->mb[3]/2) / 10; /* mb[3] value is in 100ms */
1779 if (mcp->mb[1] * ratov > (*retry_cnt) * (*tov)) {
1781 *retry_cnt = (uint8_t)mcp->mb[1];
1786 "Done %s mb3=%d ratov=%d.\n", __func__, mcp->mb[3], ratov);
1825 mcp->mb[0] = MBC_MID_INITIALIZE_FIRMWARE;
1827 mcp->mb[0] = MBC_INITIALIZE_FIRMWARE;
1829 mcp->mb[1] = 0;
1830 mcp->mb[2] = MSW(ha->init_cb_dma);
1831 mcp->mb[3] = LSW(ha->init_cb_dma);
1832 mcp->mb[6] = MSW(MSD(ha->init_cb_dma));
1833 mcp->mb[7] = LSW(MSD(ha->init_cb_dma));
1836 mcp->mb[1] = BIT_0;
1837 mcp->mb[10] = MSW(ha->ex_init_cb_dma);
1838 mcp->mb[11] = LSW(ha->ex_init_cb_dma);
1839 mcp->mb[12] = MSW(MSD(ha->ex_init_cb_dma));
1840 mcp->mb[13] = LSW(MSD(ha->ex_init_cb_dma));
1841 mcp->mb[14] = sizeof(*ha->ex_init_cb);
1846 mcp->mb[1] |= BIT_1;
1847 mcp->mb[16] = MSW(ha->sf_init_cb_dma);
1848 mcp->mb[17] = LSW(ha->sf_init_cb_dma);
1849 mcp->mb[18] = MSW(MSD(ha->sf_init_cb_dma));
1850 mcp->mb[19] = LSW(MSD(ha->sf_init_cb_dma));
1851 mcp->mb[15] = sizeof(*ha->sf_init_cb);
1868 "Failed=%x mb[0]=%x, mb[1]=%x, mb[2]=%x, mb[3]=%x.\n",
1869 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2], mcp->mb[3]);
1882 if (mcp->mb[2] == 6 || mcp->mb[3] == 2)
1933 mcp->mb[0] = MBC_GET_PORT_DATABASE;
1935 mcp->mb[0] = MBC_ENHANCED_GET_PORT_DATABASE;
1936 mcp->mb[2] = MSW(pd_dma);
1937 mcp->mb[3] = LSW(pd_dma);
1938 mcp->mb[6] = MSW(MSD(pd_dma));
1939 mcp->mb[7] = LSW(MSD(pd_dma));
1940 mcp->mb[9] = vha->vp_idx;
1944 mcp->mb[1] = fcport->loop_id;
1945 mcp->mb[10] = opt;
1949 mcp->mb[1] = fcport->loop_id;
1950 mcp->mb[10] = opt;
1953 mcp->mb[1] = fcport->loop_id << 8 | opt;
2074 "Failed=%x mb[0]=%x mb[1]=%x.\n", rval,
2075 mcp->mb[0], mcp->mb[1]);
2105 mcp->mb[0] = MBC_GET_PORT_DATABASE;
2106 mcp->mb[1] = nport_handle;
2107 mcp->mb[2] = MSW(LSD(pdb_dma));
2108 mcp->mb[3] = LSW(LSD(pdb_dma));
2109 mcp->mb[6] = MSW(MSD(pdb_dma));
2110 mcp->mb[7] = LSW(MSD(pdb_dma));
2111 mcp->mb[9] = 0;
2112 mcp->mb[10] = 0;
2122 "Failed=%x mb[0]=%x mb[1]=%x.\n",
2123 rval, mcp->mb[0], mcp->mb[1]);
2162 mcp->mb[0] = MBC_GET_FIRMWARE_STATE;
2173 states[0] = mcp->mb[1];
2175 states[1] = mcp->mb[2];
2176 states[2] = mcp->mb[3]; /* SFP info */
2177 states[3] = mcp->mb[4];
2178 states[4] = mcp->mb[5];
2179 states[5] = mcp->mb[6]; /* DPORT status */
2187 if (mcp->mb[2] == 6 || mcp->mb[3] == 2)
2227 mcp->mb[0] = MBC_GET_PORT_NAME;
2228 mcp->mb[9] = vha->vp_idx;
2231 mcp->mb[1] = loop_id;
2232 mcp->mb[10] = opt;
2235 mcp->mb[1] = loop_id << 8 | opt;
2249 name[0] = MSB(mcp->mb[2]);
2250 name[1] = LSB(mcp->mb[2]);
2251 name[2] = MSB(mcp->mb[3]);
2252 name[3] = LSB(mcp->mb[3]);
2253 name[4] = MSB(mcp->mb[6]);
2254 name[5] = LSB(mcp->mb[6]);
2255 name[6] = MSB(mcp->mb[7]);
2256 name[7] = LSB(mcp->mb[7]);
2294 mcp->mb[0] = MBC_LINK_INITIALIZATION;
2295 mcp->mb[1] = BIT_4;
2297 mcp->mb[1] |= BIT_6;
2299 mcp->mb[1] |= BIT_5;
2300 mcp->mb[2] = 0;
2301 mcp->mb[3] = 0;
2345 mcp->mb[0] = MBC_LIP_FULL_LOGIN;
2346 mcp->mb[1] = BIT_1;
2347 mcp->mb[2] = 0;
2350 mcp->mb[0] = MBC_LIP_FULL_LOGIN;
2351 mcp->mb[1] = BIT_4;
2352 mcp->mb[2] = 0;
2353 mcp->mb[3] = vha->hw->loop_reset_delay;
2356 mcp->mb[0] = MBC_LIP_RESET;
2359 mcp->mb[1] = 0x00ff;
2360 mcp->mb[10] = 0;
2363 mcp->mb[1] = 0xff00;
2365 mcp->mb[2] = vha->hw->loop_reset_delay;
2366 mcp->mb[3] = 0;
2418 mcp->mb[0] = MBC_SEND_SNS_COMMAND;
2419 mcp->mb[1] = cmd_size;
2420 mcp->mb[2] = MSW(sns_phys_address);
2421 mcp->mb[3] = LSW(sns_phys_address);
2422 mcp->mb[6] = MSW(MSD(sns_phys_address));
2423 mcp->mb[7] = LSW(MSD(sns_phys_address));
2434 "Failed=%x mb[0]=%x mb[1]=%x.\n",
2435 rval, mcp->mb[0], mcp->mb[1]);
2447 uint8_t area, uint8_t al_pa, uint16_t *mb, uint8_t opt)
2506 mb[0] = MBS_PORT_ID_USED;
2507 mb[1] = LSW(iop[1]);
2510 mb[0] = MBS_LOOP_ID_USED;
2526 mb[0] = MBS_COMMAND_ERROR;
2535 mb[0] = MBS_COMMAND_COMPLETE;
2536 mb[1] = 0;
2539 mb[1] |= BIT_1;
2541 mb[1] = BIT_0;
2544 mb[10] = 0;
2546 mb[10] |= BIT_0; /* Class 2. */
2548 mb[10] |= BIT_1; /* Class 3. */
2550 mb[10] |= BIT_7; /* Confirmed Completion
2583 uint8_t area, uint8_t al_pa, uint16_t *mb, uint8_t opt)
2593 mcp->mb[0] = MBC_LOGIN_FABRIC_PORT;
2596 mcp->mb[1] = loop_id;
2597 mcp->mb[10] = opt;
2600 mcp->mb[1] = (loop_id << 8) | opt;
2602 mcp->mb[2] = domain;
2603 mcp->mb[3] = area << 8 | al_pa;
2611 if (mb != NULL) {
2612 mb[0] = mcp->mb[0];
2613 mb[1] = mcp->mb[1];
2614 mb[2] = mcp->mb[2];
2615 mb[6] = mcp->mb[6];
2616 mb[7] = mcp->mb[7];
2618 mb[10] = 0;
2628 if (mcp->mb[0] == 0x4001 || mcp->mb[0] == 0x4002 ||
2629 mcp->mb[0] == 0x4003 || mcp->mb[0] == 0x4005 ||
2630 mcp->mb[0] == 0x4006)
2635 "Failed=%x mb[0]=%x mb[1]=%x mb[2]=%x.\n",
2636 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2]);
2679 mcp->mb[0] = MBC_LOGIN_LOOP_PORT;
2681 mcp->mb[1] = fcport->loop_id;
2683 mcp->mb[1] = fcport->loop_id << 8;
2684 mcp->mb[2] = opt;
2693 mb_ret[0] = mcp->mb[0];
2694 mb_ret[1] = mcp->mb[1];
2695 mb_ret[6] = mcp->mb[6];
2696 mb_ret[7] = mcp->mb[7];
2706 if (mcp->mb[0] == 0x4005 || mcp->mb[0] == 0x4006)
2710 "Failed=%x mb[0]=%x mb[1]=%x mb[6]=%x mb[7]=%x.\n",
2711 rval, mcp->mb[0], mcp->mb[1], mcp->mb[6], mcp->mb[7]);
2807 mcp->mb[0] = MBC_LOGOUT_FABRIC_PORT;
2810 mcp->mb[1] = loop_id;
2811 mcp->mb[10] = 0;
2814 mcp->mb[1] = loop_id << 8;
2825 "Failed=%x mb[1]=%x.\n", rval, mcp->mb[1]);
2860 mcp->mb[0] = MBC_LIP_FULL_LOGIN;
2861 mcp->mb[1] = IS_FWI2_CAPABLE(vha->hw) ? BIT_4 : 0;
2862 mcp->mb[2] = 0;
2863 mcp->mb[3] = 0;
2908 mcp->mb[0] = MBC_GET_ID_LIST;
2911 mcp->mb[2] = MSW(id_list_dma);
2912 mcp->mb[3] = LSW(id_list_dma);
2913 mcp->mb[6] = MSW(MSD(id_list_dma));
2914 mcp->mb[7] = LSW(MSD(id_list_dma));
2915 mcp->mb[8] = 0;
2916 mcp->mb[9] = vha->vp_idx;
2919 mcp->mb[1] = MSW(id_list_dma);
2920 mcp->mb[2] = LSW(id_list_dma);
2921 mcp->mb[3] = MSW(MSD(id_list_dma));
2922 mcp->mb[6] = LSW(MSD(id_list_dma));
2934 *entries = mcp->mb[1];
2966 mcp->mb[0] = MBC_GET_RESOURCE_COUNTS;
2979 "Failed mb[0]=%x.\n", mcp->mb[0]);
2983 "mb11=%x mb12=%x.\n", __func__, mcp->mb[1], mcp->mb[2],
2984 mcp->mb[3], mcp->mb[6], mcp->mb[7], mcp->mb[10],
2985 mcp->mb[11], mcp->mb[12]);
2987 ha->orig_fw_tgt_xcb_count = mcp->mb[1];
2988 ha->cur_fw_tgt_xcb_count = mcp->mb[2];
2989 ha->cur_fw_xcb_count = mcp->mb[3];
2990 ha->orig_fw_xcb_count = mcp->mb[6];
2991 ha->cur_fw_iocb_count = mcp->mb[7];
2992 ha->orig_fw_iocb_count = mcp->mb[10];
2994 ha->max_npiv_vports = mcp->mb[11];
2996 ha->fw_max_fcf_count = mcp->mb[12];
3037 mcp->mb[0] = MBC_GET_FC_AL_POSITION_MAP;
3038 mcp->mb[2] = MSW(pmap_dma);
3039 mcp->mb[3] = LSW(pmap_dma);
3040 mcp->mb[6] = MSW(MSD(pmap_dma));
3041 mcp->mb[7] = LSW(MSD(pmap_dma));
3052 mcp->mb[0], mcp->mb[1], (unsigned)pmap[0]);
3100 mcp->mb[0] = MBC_GET_LINK_STATUS;
3101 mcp->mb[2] = MSW(LSD(stats_dma));
3102 mcp->mb[3] = LSW(LSD(stats_dma));
3103 mcp->mb[6] = MSW(MSD(stats_dma));
3104 mcp->mb[7] = LSW(MSD(stats_dma));
3108 mcp->mb[1] = loop_id;
3109 mcp->mb[4] = 0;
3110 mcp->mb[10] = 0;
3114 mcp->mb[1] = loop_id;
3115 mcp->mb[10] = 0;
3118 mcp->mb[1] = loop_id << 8;
3126 if (mcp->mb[0] != MBS_COMMAND_COMPLETE) {
3128 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
3159 mc.mb[0] = MBC_GET_LINK_PRIV_STATS;
3160 mc.mb[2] = MSW(LSD(stats_dma));
3161 mc.mb[3] = LSW(LSD(stats_dma));
3162 mc.mb[6] = MSW(MSD(stats_dma));
3163 mc.mb[7] = LSW(MSD(stats_dma));
3164 mc.mb[8] = dwords;
3165 mc.mb[9] = vha->vp_idx;
3166 mc.mb[10] = options;
3171 if (mcp->mb[0] != MBS_COMMAND_COMPLETE) {
3173 "Failed mb[0]=%x.\n", mcp->mb[0]);
3411 mcp->mb[0] = MBC_GEN_SYSTEM_ERROR;
3442 mcp->mb[0] = MBC_WRITE_SERDES;
3443 mcp->mb[1] = addr;
3445 mcp->mb[2] = data & 0xff;
3447 mcp->mb[2] = data;
3449 mcp->mb[3] = 0;
3458 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
3481 mcp->mb[0] = MBC_READ_SERDES;
3482 mcp->mb[1] = addr;
3483 mcp->mb[3] = 0;
3491 *data = mcp->mb[1] & 0xff;
3493 *data = mcp->mb[1];
3497 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
3519 mcp->mb[0] = MBC_SET_GET_ETH_SERDES_REG;
3520 mcp->mb[1] = HCS_WRITE_SERDES;
3521 mcp->mb[3] = LSW(addr);
3522 mcp->mb[4] = MSW(addr);
3523 mcp->mb[5] = LSW(data);
3524 mcp->mb[6] = MSW(data);
3533 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
3555 mcp->mb[0] = MBC_SET_GET_ETH_SERDES_REG;
3556 mcp->mb[1] = HCS_READ_SERDES;
3557 mcp->mb[3] = LSW(addr);
3558 mcp->mb[4] = MSW(addr);
3565 *data = mcp->mb[2] << 16 | mcp->mb[1];
3569 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
3598 mcp->mb[0] = MBC_SERDES_PARAMS;
3599 mcp->mb[1] = BIT_0;
3600 mcp->mb[2] = sw_em_1g | BIT_15;
3601 mcp->mb[3] = sw_em_2g | BIT_15;
3602 mcp->mb[4] = sw_em_4g | BIT_15;
3612 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
3635 mcp->mb[0] = MBC_STOP_FIRMWARE;
3636 mcp->mb[1] = 0;
3645 if (mcp->mb[0] == MBS_INVALID_COMMAND)
3672 mcp->mb[0] = MBC_TRACE_CONTROL;
3673 mcp->mb[1] = TC_EFT_ENABLE;
3674 mcp->mb[2] = LSW(eft_dma);
3675 mcp->mb[3] = MSW(eft_dma);
3676 mcp->mb[4] = LSW(MSD(eft_dma));
3677 mcp->mb[5] = MSW(MSD(eft_dma));
3678 mcp->mb[6] = buffers;
3679 mcp->mb[7] = TC_AEN_DISABLE;
3687 "Failed=%x mb[0]=%x mb[1]=%x.\n",
3688 rval, mcp->mb[0], mcp->mb[1]);
3713 mcp->mb[0] = MBC_TRACE_CONTROL;
3714 mcp->mb[1] = TC_EFT_DISABLE;
3722 "Failed=%x mb[0]=%x mb[1]=%x.\n",
3723 rval, mcp->mb[0], mcp->mb[1]);
3734 uint16_t buffers, uint16_t *mb, uint32_t *dwords)
3751 mcp->mb[0] = MBC_TRACE_CONTROL;
3752 mcp->mb[1] = TC_FCE_ENABLE;
3753 mcp->mb[2] = LSW(fce_dma);
3754 mcp->mb[3] = MSW(fce_dma);
3755 mcp->mb[4] = LSW(MSD(fce_dma));
3756 mcp->mb[5] = MSW(MSD(fce_dma));
3757 mcp->mb[6] = buffers;
3758 mcp->mb[7] = TC_AEN_DISABLE;
3759 mcp->mb[8] = 0;
3760 mcp->mb[9] = TC_FCE_DEFAULT_RX_SIZE;
3761 mcp->mb[10] = TC_FCE_DEFAULT_TX_SIZE;
3770 "Failed=%x mb[0]=%x mb[1]=%x.\n",
3771 rval, mcp->mb[0], mcp->mb[1]);
3776 if (mb)
3777 memcpy(mb, mcp->mb, 8 * sizeof(*mb));
3801 mcp->mb[0] = MBC_TRACE_CONTROL;
3802 mcp->mb[1] = TC_FCE_DISABLE;
3803 mcp->mb[2] = TC_FCE_DISABLE_TRACE;
3812 "Failed=%x mb[0]=%x mb[1]=%x.\n",
3813 rval, mcp->mb[0], mcp->mb[1]);
3819 *wr = (uint64_t) mcp->mb[5] << 48 |
3820 (uint64_t) mcp->mb[4] << 32 |
3821 (uint64_t) mcp->mb[3] << 16 |
3822 (uint64_t) mcp->mb[2];
3824 *rd = (uint64_t) mcp->mb[9] << 48 |
3825 (uint64_t) mcp->mb[8] << 32 |
3826 (uint64_t) mcp->mb[7] << 16 |
3827 (uint64_t) mcp->mb[6];
3835 uint16_t *port_speed, uint16_t *mb)
3847 mcp->mb[0] = MBC_PORT_PARAMS;
3848 mcp->mb[1] = loop_id;
3849 mcp->mb[2] = mcp->mb[3] = 0;
3850 mcp->mb[9] = vha->vp_idx;
3858 if (mb) {
3859 mb[0] = mcp->mb[0];
3860 mb[1] = mcp->mb[1];
3861 mb[3] = mcp->mb[3];
3870 *port_speed = mcp->mb[3];
3878 uint16_t port_speed, uint16_t *mb)
3890 mcp->mb[0] = MBC_PORT_PARAMS;
3891 mcp->mb[1] = loop_id;
3892 mcp->mb[2] = BIT_0;
3893 mcp->mb[3] = port_speed & 0x3F;
3894 mcp->mb[9] = vha->vp_idx;
3902 if (mb) {
3903 mb[0] = mcp->mb[0];
3904 mb[1] = mcp->mb[1];
3905 mb[3] = mcp->mb[3];
4255 mcp->mb[0] = MBC_SEND_CHANGE_REQUEST;
4256 mcp->mb[1] = format;
4257 mcp->mb[9] = vp_idx;
4265 if (mcp->mb[0] != MBS_COMMAND_COMPLETE) {
4286 mcp->mb[0] = MBC_DUMP_RISC_RAM_EXTENDED;
4287 mcp->mb[8] = MSW(addr);
4288 mcp->mb[10] = 0;
4291 mcp->mb[0] = MBC_DUMP_RISC_RAM;
4294 mcp->mb[1] = LSW(addr);
4295 mcp->mb[2] = MSW(req_dma);
4296 mcp->mb[3] = LSW(req_dma);
4297 mcp->mb[6] = MSW(MSD(req_dma));
4298 mcp->mb[7] = LSW(MSD(req_dma));
4301 mcp->mb[4] = MSW(size);
4302 mcp->mb[5] = LSW(size);
4305 mcp->mb[4] = LSW(size);
4316 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
4444 mcp->mb[0] = MBC_INITIALIZE_MULTIQ;
4445 mcp->mb[1] = req->options;
4446 mcp->mb[2] = MSW(LSD(req->dma));
4447 mcp->mb[3] = LSW(LSD(req->dma));
4448 mcp->mb[6] = MSW(MSD(req->dma));
4449 mcp->mb[7] = LSW(MSD(req->dma));
4450 mcp->mb[5] = req->length;
4452 mcp->mb[10] = req->rsp->id;
4453 mcp->mb[12] = req->qos;
4454 mcp->mb[11] = req->vp_idx;
4455 mcp->mb[13] = req->rid;
4457 mcp->mb[15] = 0;
4459 mcp->mb[4] = req->id;
4461 mcp->mb[8] = 0;
4463 mcp->mb[9] = *req->out_ptr = 0;
4490 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
4517 mcp->mb[0] = MBC_INITIALIZE_MULTIQ;
4518 mcp->mb[1] = rsp->options;
4519 mcp->mb[2] = MSW(LSD(rsp->dma));
4520 mcp->mb[3] = LSW(LSD(rsp->dma));
4521 mcp->mb[6] = MSW(MSD(rsp->dma));
4522 mcp->mb[7] = LSW(MSD(rsp->dma));
4523 mcp->mb[5] = rsp->length;
4524 mcp->mb[14] = rsp->msix->entry;
4525 mcp->mb[13] = rsp->rid;
4527 mcp->mb[15] = 0;
4529 mcp->mb[4] = rsp->id;
4531 mcp->mb[8] = *rsp->in_ptr = 0;
4533 mcp->mb[9] = 0;
4562 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
4572 qla81xx_idc_ack(scsi_qla_host_t *vha, uint16_t *mb)
4581 mcp->mb[0] = MBC_IDC_ACK;
4582 memcpy(&mcp->mb[1], mb, QLA_IDC_ACK_REGS * sizeof(uint16_t));
4591 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
4614 mcp->mb[0] = MBC_FLASH_ACCESS_CTRL;
4615 mcp->mb[1] = FAC_OPT_CMD_GET_SECTOR_SIZE;
4624 "Failed=%x mb[0]=%x mb[1]=%x.\n",
4625 rval, mcp->mb[0], mcp->mb[1]);
4629 *sector_size = mcp->mb[1];
4649 mcp->mb[0] = MBC_FLASH_ACCESS_CTRL;
4650 mcp->mb[1] = enable ? FAC_OPT_CMD_WRITE_ENABLE :
4660 "Failed=%x mb[0]=%x mb[1]=%x.\n",
4661 rval, mcp->mb[0], mcp->mb[1]);
4684 mcp->mb[0] = MBC_FLASH_ACCESS_CTRL;
4685 mcp->mb[1] = FAC_OPT_CMD_ERASE_SECTOR;
4686 mcp->mb[2] = LSW(start);
4687 mcp->mb[3] = MSW(start);
4688 mcp->mb[4] = LSW(finish);
4689 mcp->mb[5] = MSW(finish);
4698 "Failed=%x mb[0]=%x mb[1]=%x mb[2]=%x.\n",
4699 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2]);
4723 mcp->mb[0] = MBC_FLASH_ACCESS_CTRL;
4724 mcp->mb[1] = (lock ? FAC_OPT_CMD_LOCK_SEMAPHORE :
4734 "Failed=%x mb[0]=%x mb[1]=%x mb[2]=%x.\n",
4735 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2]);
4754 mcp->mb[0] = MBC_RESTART_MPI_FW;
4763 "Failed=%x mb[0]=%x mb[1]=%x.\n",
4764 rval, mcp->mb[0], mcp->mb[1]);
4793 mcp->mb[0] = MBC_SET_RNID_PARAMS;
4794 mcp->mb[1] = RNID_TYPE_SET_VERSION << 8;
4797 mcp->mb[i] = le16_to_cpup(str);
4801 mcp->mb[i] = 0;
4811 "Failed=%x mb[0]=%x,%x.\n", rval, mcp->mb[0], mcp->mb[1]);
4854 mcp->mb[0] = MBC_SET_RNID_PARAMS;
4855 mcp->mb[1] = RNID_TYPE_SET_VERSION << 8 | dwlen;
4856 mcp->mb[2] = MSW(LSD(str_dma));
4857 mcp->mb[3] = LSW(LSD(str_dma));
4858 mcp->mb[6] = MSW(MSD(str_dma));
4859 mcp->mb[7] = LSW(MSD(str_dma));
4868 "Failed=%x mb[0]=%x,%x.\n", rval, mcp->mb[0], mcp->mb[1]);
4894 mcp->mb[0] = MBC_GET_RNID_PARAMS;
4895 mcp->mb[1] = RNID_TYPE_PORT_LOGIN << 8;
4896 mcp->mb[2] = MSW(buf_dma);
4897 mcp->mb[3] = LSW(buf_dma);
4898 mcp->mb[6] = MSW(MSD(buf_dma));
4899 mcp->mb[7] = LSW(MSD(buf_dma));
4900 mcp->mb[8] = bufsiz/4;
4909 "Failed=%x mb[0]=%x,%x.\n", rval, mcp->mb[0], mcp->mb[1]);
4959 mcp->mb[0] = MBC_SET_RNID_PARAMS;
4960 mcp->mb[1] = RNID_TYPE_ELS_CMD << 8;
4961 mcp->mb[2] = MSW(LSD(els_cmd_map_dma));
4962 mcp->mb[3] = LSW(LSD(els_cmd_map_dma));
4963 mcp->mb[6] = MSW(MSD(els_cmd_map_dma));
4964 mcp->mb[7] = LSW(MSD(els_cmd_map_dma));
4974 "Failed=%x (%x,%x).\n", rval, mcp->mb[0], mcp->mb[1]);
4999 mcp->mb[0] = MBC_GET_RNID_PARAMS;
5000 mcp->mb[1] = RNID_TYPE_ASIC_TEMP << 8;
5006 *temp = mcp->mb[1];
5010 "Failed=%x mb[0]=%x,%x.\n", rval, mcp->mb[0], mcp->mb[1]);
5037 mcp->mb[0] = MBC_READ_SFP;
5038 mcp->mb[1] = dev;
5039 mcp->mb[2] = MSW(LSD(sfp_dma));
5040 mcp->mb[3] = LSW(LSD(sfp_dma));
5041 mcp->mb[6] = MSW(MSD(sfp_dma));
5042 mcp->mb[7] = LSW(MSD(sfp_dma));
5043 mcp->mb[8] = len;
5044 mcp->mb[9] = off;
5045 mcp->mb[10] = opt;
5053 *sfp = mcp->mb[1];
5057 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5058 if (mcp->mb[0] == MBS_COMMAND_ERROR && mcp->mb[1] == 0x22) {
5091 mcp->mb[0] = MBC_WRITE_SFP;
5092 mcp->mb[1] = dev;
5093 mcp->mb[2] = MSW(LSD(sfp_dma));
5094 mcp->mb[3] = LSW(LSD(sfp_dma));
5095 mcp->mb[6] = MSW(MSD(sfp_dma));
5096 mcp->mb[7] = LSW(MSD(sfp_dma));
5097 mcp->mb[8] = len;
5098 mcp->mb[9] = off;
5099 mcp->mb[10] = opt;
5108 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5131 mcp->mb[0] = MBC_GET_XGMAC_STATS;
5132 mcp->mb[2] = MSW(stats_dma);
5133 mcp->mb[3] = LSW(stats_dma);
5134 mcp->mb[6] = MSW(MSD(stats_dma));
5135 mcp->mb[7] = LSW(MSD(stats_dma));
5136 mcp->mb[8] = size_in_bytes >> 2;
5145 "Failed=%x mb[0]=%x mb[1]=%x mb[2]=%x.\n",
5146 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2]);
5152 *actual_size = mcp->mb[2] << 2;
5172 mcp->mb[0] = MBC_GET_DCBX_PARAMS;
5173 mcp->mb[1] = 0;
5174 mcp->mb[2] = MSW(tlv_dma);
5175 mcp->mb[3] = LSW(tlv_dma);
5176 mcp->mb[6] = MSW(MSD(tlv_dma));
5177 mcp->mb[7] = LSW(MSD(tlv_dma));
5178 mcp->mb[8] = size;
5187 "Failed=%x mb[0]=%x mb[1]=%x mb[2]=%x.\n",
5188 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2]);
5210 mcp->mb[0] = MBC_READ_RAM_EXTENDED;
5211 mcp->mb[1] = LSW(risc_addr);
5212 mcp->mb[8] = MSW(risc_addr);
5220 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5224 *data = mcp->mb[3] << 16 | mcp->mb[2];
5241 memset(mcp->mb, 0 , sizeof(mcp->mb));
5242 mcp->mb[0] = MBC_DIAGNOSTIC_LOOP_BACK;
5243 mcp->mb[1] = mreq->options | BIT_6; // BIT_6 specifies 64 bit addressing
5246 mcp->mb[10] = LSW(mreq->transfer_size);
5247 mcp->mb[11] = MSW(mreq->transfer_size);
5250 mcp->mb[14] = LSW(mreq->send_dma);
5251 mcp->mb[15] = MSW(mreq->send_dma);
5252 mcp->mb[20] = LSW(MSD(mreq->send_dma));
5253 mcp->mb[21] = MSW(MSD(mreq->send_dma));
5256 mcp->mb[16] = LSW(mreq->rcv_dma);
5257 mcp->mb[17] = MSW(mreq->rcv_dma);
5258 mcp->mb[6] = LSW(MSD(mreq->rcv_dma));
5259 mcp->mb[7] = MSW(MSD(mreq->rcv_dma));
5262 mcp->mb[18] = LSW(mreq->iteration_count);
5263 mcp->mb[19] = MSW(mreq->iteration_count);
5279 "Failed=%x mb[0]=%x mb[1]=%x mb[2]=%x mb[3]=%x mb[18]=%x "
5280 "mb[19]=%x.\n", rval, mcp->mb[0], mcp->mb[1], mcp->mb[2],
5281 mcp->mb[3], mcp->mb[18], mcp->mb[19]);
5288 memcpy( mresp, mcp->mb, 64);
5304 memset(mcp->mb, 0 , sizeof(mcp->mb));
5305 mcp->mb[0] = MBC_DIAGNOSTIC_ECHO;
5307 mcp->mb[1] = mreq->options | BIT_15 | BIT_6;
5309 mcp->mb[2] = vha->fcoe_fcf_idx;
5311 mcp->mb[16] = LSW(mreq->rcv_dma);
5312 mcp->mb[17] = MSW(mreq->rcv_dma);
5313 mcp->mb[6] = LSW(MSD(mreq->rcv_dma));
5314 mcp->mb[7] = MSW(MSD(mreq->rcv_dma));
5316 mcp->mb[10] = LSW(mreq->transfer_size);
5318 mcp->mb[14] = LSW(mreq->send_dma);
5319 mcp->mb[15] = MSW(mreq->send_dma);
5320 mcp->mb[20] = LSW(MSD(mreq->send_dma));
5321 mcp->mb[21] = MSW(MSD(mreq->send_dma));
5344 "Failed=%x mb[0]=%x mb[1]=%x.\n",
5345 rval, mcp->mb[0], mcp->mb[1]);
5352 memcpy(mresp, mcp->mb, 64);
5366 mcp->mb[0] = MBC_ISP84XX_RESET;
5367 mcp->mb[1] = enable_diagnostic;
5396 mcp->mb[0] = MBC_WRITE_RAM_WORD_EXTENDED;
5397 mcp->mb[1] = LSW(risc_addr);
5398 mcp->mb[2] = LSW(data);
5399 mcp->mb[3] = MSW(data);
5400 mcp->mb[8] = MSW(risc_addr);
5408 "Failed=%x mb[0]=%x mb[1]=%x.\n",
5409 rval, mcp->mb[0], mcp->mb[1]);
5419 qla81xx_write_mpi_register(scsi_qla_host_t *vha, uint16_t *mb)
5436 wrt_reg_word(&reg->mailbox1, mb[0]);
5437 wrt_reg_word(&reg->mailbox2, mb[1]);
5438 wrt_reg_word(&reg->mailbox3, mb[2]);
5439 wrt_reg_word(&reg->mailbox4, mb[3]);
5471 "Failed=%x mb[0]=%x.\n", rval, mb[0]);
5514 mcp->mb[0] = MBC_DATA_RATE;
5515 mcp->mb[1] = mode;
5516 mcp->mb[2] = val;
5527 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5529 if (mcp->mb[1] != 0x7)
5531 "Speed set:0x%x\n", mcp->mb[1]);
5554 mcp->mb[0] = MBC_DATA_RATE;
5555 mcp->mb[1] = QLA_GET_DATA_RATE;
5565 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5567 if (mcp->mb[1] != 0x7)
5568 ha->link_data_rate = mcp->mb[1];
5571 if (mcp->mb[4] & BIT_0)
5578 if (mcp->mb[1] != 0x7)
5579 ha->link_data_rate = mcp->mb[1];
5586 qla81xx_get_port_config(scsi_qla_host_t *vha, uint16_t *mb)
5599 mcp->mb[0] = MBC_GET_PORT_CONFIG;
5609 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5612 memcpy(mb, &mcp->mb[1], sizeof(uint16_t) * 4);
5621 qla81xx_set_port_config(scsi_qla_host_t *vha, uint16_t *mb)
5630 mcp->mb[0] = MBC_SET_PORT_CONFIG;
5632 memcpy(&mcp->mb[1], mb, sizeof(uint16_t) * 4);
5641 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5652 uint16_t *mb)
5665 mcp->mb[0] = MBC_PORT_PARAMS;
5666 mcp->mb[1] = loop_id;
5668 mcp->mb[2] = BIT_1;
5670 mcp->mb[2] = BIT_2;
5671 mcp->mb[4] = priority & 0xf;
5672 mcp->mb[9] = vha->vp_idx;
5678 if (mb != NULL) {
5679 mb[0] = mcp->mb[0];
5680 mb[1] = mcp->mb[1];
5681 mb[3] = mcp->mb[3];
5682 mb[4] = mcp->mb[4];
5757 mcp->mb[0] = MBC_TOGGLE_INTERRUPT;
5758 mcp->mb[1] = 1;
5768 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5792 mcp->mb[0] = MBC_TOGGLE_INTERRUPT;
5793 mcp->mb[1] = 0;
5803 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5823 memset(mcp->mb, 0 , sizeof(mcp->mb));
5824 mcp->mb[0] = LSW(MBC_DIAGNOSTIC_MINIDUMP_TEMPLATE);
5825 mcp->mb[1] = MSW(MBC_DIAGNOSTIC_MINIDUMP_TEMPLATE);
5826 mcp->mb[2] = LSW(RQST_TMPLT_SIZE);
5827 mcp->mb[3] = MSW(RQST_TMPLT_SIZE);
5841 (mcp->mb[1] << 16) | mcp->mb[0],
5842 (mcp->mb[3] << 16) | mcp->mb[2]);
5846 ha->md_template_size = ((mcp->mb[3] << 16) | mcp->mb[2]);
5875 memset(mcp->mb, 0 , sizeof(mcp->mb));
5876 mcp->mb[0] = LSW(MBC_DIAGNOSTIC_MINIDUMP_TEMPLATE);
5877 mcp->mb[1] = MSW(MBC_DIAGNOSTIC_MINIDUMP_TEMPLATE);
5878 mcp->mb[2] = LSW(RQST_TMPLT);
5879 mcp->mb[3] = MSW(RQST_TMPLT);
5880 mcp->mb[4] = LSW(LSD(ha->md_tmplt_hdr_dma));
5881 mcp->mb[5] = MSW(LSD(ha->md_tmplt_hdr_dma));
5882 mcp->mb[6] = LSW(MSD(ha->md_tmplt_hdr_dma));
5883 mcp->mb[7] = MSW(MSD(ha->md_tmplt_hdr_dma));
5884 mcp->mb[8] = LSW(ha->md_template_size);
5885 mcp->mb[9] = MSW(ha->md_template_size);
5897 ((mcp->mb[1] << 16) | mcp->mb[0]),
5898 ((mcp->mb[3] << 16) | mcp->mb[2]));
5925 memset(mcp->mb, 0 , sizeof(mcp->mb));
5927 mcp->mb[0] = LSW(MBC_DIAGNOSTIC_MINIDUMP_TEMPLATE);
5928 mcp->mb[1] = MSW(MBC_DIAGNOSTIC_MINIDUMP_TEMPLATE);
5929 mcp->mb[2] = LSW(RQST_TMPLT);
5930 mcp->mb[3] = MSW(RQST_TMPLT);
5931 mcp->mb[4] = LSW(LSD(ha->md_tmplt_hdr_dma + offset));
5932 mcp->mb[5] = MSW(LSD(ha->md_tmplt_hdr_dma + offset));
5933 mcp->mb[6] = LSW(MSD(ha->md_tmplt_hdr_dma + offset));
5934 mcp->mb[7] = MSW(MSD(ha->md_tmplt_hdr_dma + offset));
5935 mcp->mb[8] = LSW(size);
5936 mcp->mb[9] = MSW(size);
5937 mcp->mb[10] = offset & 0x0000FFFF;
5938 mcp->mb[11] = offset & 0xFFFF0000;
5949 ((mcp->mb[1] << 16) | mcp->mb[0]),
5950 ((mcp->mb[3] << 16) | mcp->mb[2]));
5975 mcp->mb[0] = MBC_SET_LED_CONFIG;
5976 mcp->mb[1] = led_cfg[0];
5977 mcp->mb[2] = led_cfg[1];
5979 mcp->mb[3] = led_cfg[2];
5980 mcp->mb[4] = led_cfg[3];
5981 mcp->mb[5] = led_cfg[4];
5982 mcp->mb[6] = led_cfg[5];
5995 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6019 mcp->mb[0] = MBC_GET_LED_CONFIG;
6031 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6033 led_cfg[0] = mcp->mb[1];
6034 led_cfg[1] = mcp->mb[2];
6036 led_cfg[2] = mcp->mb[3];
6037 led_cfg[3] = mcp->mb[4];
6038 led_cfg[4] = mcp->mb[5];
6039 led_cfg[5] = mcp->mb[6];
6063 mcp->mb[0] = MBC_SET_LED_CONFIG;
6065 mcp->mb[7] = 0xE;
6067 mcp->mb[7] = 0xD;
6077 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6100 mcp->mb[0] = MBC_WRITE_REMOTE_REG;
6101 mcp->mb[1] = LSW(reg);
6102 mcp->mb[2] = MSW(reg);
6103 mcp->mb[3] = LSW(data);
6104 mcp->mb[4] = MSW(data);
6114 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6142 mcp->mb[0] = MBC_PORT_LOGOUT;
6143 mcp->mb[1] = fcport->loop_id;
6144 mcp->mb[10] = BIT_15;
6152 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6175 mcp->mb[0] = MBC_READ_REMOTE_REG;
6176 mcp->mb[1] = LSW(reg);
6177 mcp->mb[2] = MSW(reg);
6186 "Failed=%x mb[0]=%x mb[1]=%x.\n",
6187 rval, mcp->mb[0], mcp->mb[1]);
6189 *data = (mcp->mb[3] | (mcp->mb[4] << 16));
6224 mcp->mb[0] = MBC_RESTART_NIC_FIRMWARE;
6233 "Failed=%x mb[0]=%x mb[1]=%x.\n",
6234 rval, mcp->mb[0], mcp->mb[1]);
6258 mcp->mb[0] = MBC_SET_ACCESS_CONTROL;
6259 mcp->mb[1] = options;
6262 mcp->mb[2] = LSW(start_addr);
6263 mcp->mb[3] = MSW(start_addr);
6264 mcp->mb[4] = LSW(end_addr);
6265 mcp->mb[5] = MSW(end_addr);
6277 "Failed=%x mb[0]=%x mb[1]=%x mb[2]=%x mb[3]=%x mb[4]=%x.\n",
6278 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2], mcp->mb[3],
6279 mcp->mb[4]);
6283 *sector_size = mcp->mb[1];
6286 "Driver-lock id=%x%x", mcp->mb[4], mcp->mb[3]);
6289 "Flash-lock id=%x%x", mcp->mb[4], mcp->mb[3]);
6311 mcp->mb[0] = MBC_DUMP_RISC_RAM_EXTENDED;
6312 mcp->mb[1] = LSW(addr);
6313 mcp->mb[2] = MSW(req_dma);
6314 mcp->mb[3] = LSW(req_dma);
6315 mcp->mb[4] = MSW(size);
6316 mcp->mb[5] = LSW(size);
6317 mcp->mb[6] = MSW(MSD(req_dma));
6318 mcp->mb[7] = LSW(MSD(req_dma));
6319 mcp->mb[8] = MSW(addr);
6322 mcp->mb[10] = BIT_7 | 0x40;
6334 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6368 mcp->mb[0] = MBC_DPORT_DIAGNOSTICS;
6369 mcp->mb[1] = options;
6370 mcp->mb[2] = MSW(LSD(dd_dma));
6371 mcp->mb[3] = LSW(LSD(dd_dma));
6372 mcp->mb[6] = MSW(MSD(dd_dma));
6373 mcp->mb[7] = LSW(MSD(dd_dma));
6374 mcp->mb[8] = size;
6422 sp->name = mb_to_str(mcp->mb[0]);
6430 memcpy(sp->u.iocb_cmd.u.mbx.out_mb, mcp->mb, SIZEOF_IOCB_MB_REG);
6446 memcpy(mcp->mb, sp->u.iocb_cmd.u.mbx.in_mb, SIZEOF_IOCB_MB_REG);
6493 mc.mb[0] = MBC_GET_PORT_DATABASE;
6494 mc.mb[1] = fcport->loop_id;
6495 mc.mb[2] = MSW(pd_dma);
6496 mc.mb[3] = LSW(pd_dma);
6497 mc.mb[6] = MSW(MSD(pd_dma));
6498 mc.mb[7] = LSW(MSD(pd_dma));
6499 mc.mb[9] = vha->vp_idx;
6500 mc.mb[10] = opt;
6605 mc.mb[0] = MBC_GET_ID_LIST;
6606 mc.mb[2] = MSW(id_list_dma);
6607 mc.mb[3] = LSW(id_list_dma);
6608 mc.mb[6] = MSW(MSD(id_list_dma));
6609 mc.mb[7] = LSW(MSD(id_list_dma));
6610 mc.mb[8] = 0;
6611 mc.mb[9] = vha->vp_idx;
6618 *entries = mc.mb[1];
6635 memset(mcp->mb, 0 , sizeof(mcp->mb));
6636 mcp->mb[0] = MBC_GET_SET_ZIO_THRESHOLD;
6637 mcp->mb[1] = 1;
6638 mcp->mb[2] = value;
6661 memset(mcp->mb, 0, sizeof(mcp->mb));
6662 mcp->mb[0] = MBC_GET_SET_ZIO_THRESHOLD;
6663 mcp->mb[1] = 0;
6671 *value = mc.mb[2];
6741 mc.mb[0] = MBC_GET_RESOURCE_COUNTS;
6749 memcpy(out_mb, mc.mb, out_mb_sz);
6751 memcpy(out_mb, mc.mb, SIZEOF_IOCB_MB_REG);
6768 mcp->mb[0] = MBC_SECURE_FLASH_UPDATE;
6769 mcp->mb[1] = opts;
6770 mcp->mb[2] = region;
6771 mcp->mb[3] = MSW(len);
6772 mcp->mb[4] = LSW(len);
6773 mcp->mb[5] = MSW(sfub_dma_addr);
6774 mcp->mb[6] = LSW(sfub_dma_addr);
6775 mcp->mb[7] = MSW(MSD(sfub_dma_addr));
6776 mcp->mb[8] = LSW(MSD(sfub_dma_addr));
6777 mcp->mb[9] = sfub_len;
6787 __func__, vha->host_no, rval, mcp->mb[0], mcp->mb[1],
6788 mcp->mb[2]);
6804 mcp->mb[0] = MBC_WRITE_REMOTE_REG;
6805 mcp->mb[1] = LSW(addr);
6806 mcp->mb[2] = MSW(addr);
6807 mcp->mb[3] = LSW(data);
6808 mcp->mb[4] = MSW(data);
6817 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6836 mcp->mb[0] = MBC_READ_REMOTE_REG;
6837 mcp->mb[1] = LSW(addr);
6838 mcp->mb[2] = MSW(addr);
6845 *data = (uint32_t)((((uint32_t)mcp->mb[4]) << 16) | mcp->mb[3]);
6849 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6872 mcp->mb[0] = MBC_SET_GET_FC_LED_CONFIG;
6873 mcp->mb[1] = options;
6878 mcp->mb[2] = led[2];
6882 mcp->mb[3] = led[0];
6886 mcp->mb[4] = led[1];
6896 ql_dbg(ql_dbg_mbx, vha, 0x7071, "Failed %s %x (mb=%x,%x)\n",
6897 __func__, rval, mcp->mb[0], mcp->mb[1]);
6905 led[2] = mcp->mb[2];
6906 led[0] = mcp->mb[3];
6907 led[1] = mcp->mb[4];