Lines Matching refs:mb
95 * mb[MAX_MAILBOX_REGISTER_COUNT] = returned mailbox data.
161 mcp->mb[0] = MBS_LINK_DOWN_ERROR;
171 !is_rom_cmd(mcp->mb[0])) || ha->flags.eeh_busy) {
174 mcp->mb[0]);
188 mcp->mb[0]);
198 ha->flags.purge_mbox, ha->flags.eeh_busy, mcp->mb[0]);
208 "Prepare to issue mbox cmd=0x%x.\n", mcp->mb[0]);
228 iptr = mcp->mb;
229 command = mcp->mb[0];
383 mcp->mb[0] = MBS_LINK_DOWN_ERROR;
399 iptr2 = mcp->mb;
418 uint16_t mb[8];
423 mb[0] = rd_reg_word(®->isp24.mailbox0);
424 mb[1] = rd_reg_word(®->isp24.mailbox1);
425 mb[2] = rd_reg_word(®->isp24.mailbox2);
426 mb[3] = rd_reg_word(®->isp24.mailbox3);
427 mb[7] = rd_reg_word(®->isp24.mailbox7);
434 "mb[0-3]=[0x%x 0x%x 0x%x 0x%x] mb7 0x%x host_status 0x%x hccr 0x%x\n",
435 command, ictrl, jiffies, mb[0], mb[1], mb[2], mb[3],
436 mb[7], host_status, hccr);
440 mb[0] = RD_MAILBOX_REG(ha, ®->isp, 0);
444 "mb[0]=0x%x\n", command, ictrl, jiffies, mb[0]);
473 if (mcp->mb[0] != MBC_GEN_SYSTEM_ERROR)
494 mcp->mb[0] != MBC_GEN_SYSTEM_ERROR) {
515 "mb[0]=0x%x, eeh_busy=0x%x. Scheduling ISP "
516 "abort.\n", command, mcp->mb[0],
541 "mb[0]=0x%x. Scheduling ISP abort ",
542 command, mcp->mb[0]);
570 mcp->mb[0]);
580 printk(" mb[%u]=%x", i, mcp->mb[i]);
629 mcp->mb[0] = MBC_LOAD_RISC_RAM_EXTENDED;
630 mcp->mb[8] = MSW(risc_addr);
633 mcp->mb[0] = MBC_LOAD_RISC_RAM;
636 mcp->mb[1] = LSW(risc_addr);
637 mcp->mb[2] = MSW(req_dma);
638 mcp->mb[3] = LSW(req_dma);
639 mcp->mb[6] = MSW(MSD(req_dma));
640 mcp->mb[7] = LSW(MSD(req_dma));
643 mcp->mb[4] = MSW(risc_code_size);
644 mcp->mb[5] = LSW(risc_code_size);
647 mcp->mb[4] = LSW(risc_code_size);
658 "Failed=%x mb[0]=%x mb[1]=%x.\n",
659 rval, mcp->mb[0], mcp->mb[1]);
702 mcp->mb[0] = MBC_EXECUTE_FIRMWARE;
706 mcp->mb[1] = MSW(risc_addr);
707 mcp->mb[2] = LSW(risc_addr);
708 mcp->mb[3] = 0;
709 mcp->mb[4] = 0;
710 mcp->mb[11] = 0;
714 mcp->mb[4] = BIT_0;
716 mcp->mb[4] |=
721 mcp->mb[4] |= NVME_ENABLE_FLAG;
728 mcp->mb[4] |= BIT_4;
729 mcp->mb[11] |= nv->min_supported_speed & 0xF;
737 mcp->mb[11] |= BIT_4;
741 mcp->mb[4] |= ENABLE_EXTENDED_LOGIN;
744 mcp->mb[4] |= ENABLE_EXCHANGE_OFFLD;
747 mcp->mb[11] |= EXE_FW_FORCE_SEMAPHORE;
752 mcp->mb[1] = LSW(risc_addr);
755 mcp->mb[2] = 0;
766 mcp->mb[1] == 0x27 && retry) {
777 "Exe FW retry: mb[0]=%x retry[%d]\n", mcp->mb[0], retry);
781 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
789 ha->fw_ability_mask = mcp->mb[3] << 16 | mcp->mb[2];
792 ql_dbg(ql_dbg_mbx, vha, 0x1027, "exchanges=%x.\n", mcp->mb[1]);
794 ha->max_supported_speed = mcp->mb[2] & (BIT_0|BIT_1);
800 ha->min_supported_speed = mcp->mb[5] &
812 if (IS_QLA28XX(ha) && (mcp->mb[5] & EDIF_HW_SUPPORT)) {
852 memset(mcp->mb, 0 , sizeof(mcp->mb));
853 mcp->mb[0] = MBC_GET_MEM_OFFLOAD_CNTRL_STAT;
854 mcp->mb[1] = FETCH_XLOGINS_STAT;
864 *buf_sz = mcp->mb[4];
865 *ex_logins_cnt = mcp->mb[10];
869 mcp->mb[4], mcp->mb[10]);
909 memset(mcp->mb, 0 , sizeof(mcp->mb));
910 mcp->mb[0] = MBC_GET_MEM_OFFLOAD_CNTRL_STAT;
911 mcp->mb[1] = CONFIG_XLOGINS_MEM;
912 mcp->mb[2] = MSW(phys_addr);
913 mcp->mb[3] = LSW(phys_addr);
914 mcp->mb[6] = MSW(MSD(phys_addr));
915 mcp->mb[7] = LSW(MSD(phys_addr));
916 mcp->mb[8] = MSW(ha->exlogin_size);
917 mcp->mb[9] = LSW(ha->exlogin_size);
926 rval, mcp->mb[0], mcp->mb[11]);
962 memset(mcp->mb, 0 , sizeof(mcp->mb));
963 mcp->mb[0] = MBC_GET_MEM_OFFLOAD_CNTRL_STAT;
964 mcp->mb[1] = FETCH_XCHOFFLD_STAT;
974 *buf_sz = mcp->mb[4];
975 *ex_logins_cnt = mcp->mb[10];
979 mcp->mb[4], mcp->mb[10]);
1019 memset(mcp->mb, 0 , sizeof(mcp->mb));
1020 mcp->mb[0] = MBC_GET_MEM_OFFLOAD_CNTRL_STAT;
1021 mcp->mb[1] = CONFIG_XCHOFFLD_MEM;
1022 mcp->mb[2] = MSW(ha->exchoffld_buf_dma);
1023 mcp->mb[3] = LSW(ha->exchoffld_buf_dma);
1024 mcp->mb[6] = MSW(MSD(ha->exchoffld_buf_dma));
1025 mcp->mb[7] = LSW(MSD(ha->exchoffld_buf_dma));
1026 mcp->mb[8] = MSW(ha->exchoffld_size);
1027 mcp->mb[9] = LSW(ha->exchoffld_size);
1071 mcp->mb[0] = MBC_GET_FIRMWARE_VERSION;
1090 ha->fw_major_version = mcp->mb[1];
1091 ha->fw_minor_version = mcp->mb[2];
1092 ha->fw_subminor_version = mcp->mb[3];
1093 ha->fw_attributes = mcp->mb[6];
1097 ha->fw_memory_size = (mcp->mb[5] << 16) | mcp->mb[4];
1100 ha->mpi_version[0] = mcp->mb[10] & 0xff;
1101 ha->mpi_version[1] = mcp->mb[11] >> 8;
1102 ha->mpi_version[2] = mcp->mb[11] & 0xff;
1103 ha->mpi_capabilities = (mcp->mb[12] << 16) | mcp->mb[13];
1104 ha->phy_version[0] = mcp->mb[8] & 0xff;
1105 ha->phy_version[1] = mcp->mb[9] >> 8;
1106 ha->phy_version[2] = mcp->mb[9] & 0xff;
1110 ha->fw_attributes_h = mcp->mb[15];
1111 ha->fw_attributes_ext[0] = mcp->mb[16];
1112 ha->fw_attributes_ext[1] = mcp->mb[17];
1115 __func__, mcp->mb[15], mcp->mb[6]);
1118 __func__, mcp->mb[17], mcp->mb[16]);
1163 ha->serdes_version[0] = mcp->mb[7] & 0xff;
1164 ha->serdes_version[1] = mcp->mb[8] >> 8;
1165 ha->serdes_version[2] = mcp->mb[8] & 0xff;
1166 ha->mpi_version[0] = mcp->mb[10] & 0xff;
1167 ha->mpi_version[1] = mcp->mb[11] >> 8;
1168 ha->mpi_version[2] = mcp->mb[11] & 0xff;
1169 ha->pep_version[0] = mcp->mb[13] & 0xff;
1170 ha->pep_version[1] = mcp->mb[14] >> 8;
1171 ha->pep_version[2] = mcp->mb[14] & 0xff;
1172 ha->fw_shared_ram_start = (mcp->mb[19] << 16) | mcp->mb[18];
1173 ha->fw_shared_ram_end = (mcp->mb[21] << 16) | mcp->mb[20];
1174 ha->fw_ddr_ram_start = (mcp->mb[23] << 16) | mcp->mb[22];
1175 ha->fw_ddr_ram_end = (mcp->mb[25] << 16) | mcp->mb[24];
1177 if (mcp->mb[16] & BIT_10)
1239 mcp->mb[0] = MBC_GET_FIRMWARE_OPTION;
1250 fwopts[0] = mcp->mb[0];
1251 fwopts[1] = mcp->mb[1];
1252 fwopts[2] = mcp->mb[2];
1253 fwopts[3] = mcp->mb[3];
1287 mcp->mb[0] = MBC_SET_FIRMWARE_OPTION;
1288 mcp->mb[1] = fwopts[1];
1289 mcp->mb[2] = fwopts[2];
1290 mcp->mb[3] = fwopts[3];
1295 mcp->mb[10] = fwopts[10];
1298 mcp->mb[10] = fwopts[10];
1299 mcp->mb[11] = fwopts[11];
1300 mcp->mb[12] = 0; /* Undocumented, but used */
1307 fwopts[0] = mcp->mb[0];
1312 "Failed=%x (%x/%x).\n", rval, mcp->mb[0], mcp->mb[1]);
1347 mcp->mb[0] = MBC_MAILBOX_REGISTER_TEST;
1348 mcp->mb[1] = 0xAAAA;
1349 mcp->mb[2] = 0x5555;
1350 mcp->mb[3] = 0xAA55;
1351 mcp->mb[4] = 0x55AA;
1352 mcp->mb[5] = 0xA5A5;
1353 mcp->mb[6] = 0x5A5A;
1354 mcp->mb[7] = 0x2525;
1362 if (mcp->mb[1] != 0xAAAA || mcp->mb[2] != 0x5555 ||
1363 mcp->mb[3] != 0xAA55 || mcp->mb[4] != 0x55AA)
1365 if (mcp->mb[5] != 0xA5A5 || mcp->mb[6] != 0x5A5A ||
1366 mcp->mb[7] != 0x2525)
1408 mcp->mb[0] = MBC_VERIFY_CHECKSUM;
1412 mcp->mb[1] = MSW(risc_addr);
1413 mcp->mb[2] = LSW(risc_addr);
1417 mcp->mb[1] = LSW(risc_addr);
1429 (mcp->mb[2] << 16) | mcp->mb[1] : mcp->mb[1]);
1470 mcp->mb[0] = MBC_IOCB_COMMAND_A64;
1471 mcp->mb[1] = 0;
1472 mcp->mb[2] = MSW(LSD(phys_addr));
1473 mcp->mb[3] = LSW(LSD(phys_addr));
1474 mcp->mb[6] = MSW(MSD(phys_addr));
1475 mcp->mb[7] = LSW(MSD(phys_addr));
1555 mcp->mb[0] = MBC_ABORT_COMMAND;
1557 mcp->mb[1] = fcport->loop_id;
1559 mcp->mb[1] = fcport->loop_id << 8;
1560 mcp->mb[2] = (uint16_t)handle;
1561 mcp->mb[3] = (uint16_t)(handle >> 16);
1562 mcp->mb[6] = (uint16_t)cmd->device->lun;
1592 mcp->mb[0] = MBC_ABORT_TARGET;
1595 mcp->mb[1] = fcport->loop_id;
1596 mcp->mb[10] = 0;
1599 mcp->mb[1] = fcport->loop_id << 8;
1601 mcp->mb[2] = vha->hw->loop_reset_delay;
1602 mcp->mb[9] = vha->vp_idx;
1640 mcp->mb[0] = MBC_LUN_RESET;
1643 mcp->mb[1] = fcport->loop_id;
1645 mcp->mb[1] = fcport->loop_id << 8;
1646 mcp->mb[2] = (u32)l;
1647 mcp->mb[3] = 0;
1648 mcp->mb[9] = vha->vp_idx;
1703 mcp->mb[0] = MBC_GET_ADAPTER_LOOP_ID;
1704 mcp->mb[9] = vha->vp_idx;
1717 if (mcp->mb[0] == MBS_COMMAND_ERROR)
1719 else if (mcp->mb[0] == MBS_INVALID_COMMAND)
1723 *id = mcp->mb[1];
1724 *al_pa = LSB(mcp->mb[2]);
1725 *area = MSB(mcp->mb[2]);
1726 *domain = LSB(mcp->mb[3]);
1727 *top = mcp->mb[6];
1728 *sw_cap = mcp->mb[7];
1738 vha->fcoe_vlan_id = mcp->mb[9] & 0xfff;
1739 vha->fcoe_fcf_idx = mcp->mb[10];
1740 vha->fcoe_vn_port_mac[5] = mcp->mb[11] >> 8;
1741 vha->fcoe_vn_port_mac[4] = mcp->mb[11] & 0xff;
1742 vha->fcoe_vn_port_mac[3] = mcp->mb[12] >> 8;
1743 vha->fcoe_vn_port_mac[2] = mcp->mb[12] & 0xff;
1744 vha->fcoe_vn_port_mac[1] = mcp->mb[13] >> 8;
1745 vha->fcoe_vn_port_mac[0] = mcp->mb[13] & 0xff;
1749 if (mcp->mb[7] & BIT_14) {
1750 vha->port_name[0] = MSB(mcp->mb[16]);
1751 vha->port_name[1] = LSB(mcp->mb[16]);
1752 vha->port_name[2] = MSB(mcp->mb[17]);
1753 vha->port_name[3] = LSB(mcp->mb[17]);
1754 vha->port_name[4] = MSB(mcp->mb[18]);
1755 vha->port_name[5] = LSB(mcp->mb[18]);
1756 vha->port_name[6] = MSB(mcp->mb[19]);
1757 vha->port_name[7] = LSB(mcp->mb[19]);
1767 vha->bbcr = mcp->mb[15];
1768 if (mcp->mb[7] & SCM_EDC_ACC_RECEIVED) {
1771 mcp->mb[21]);
1773 if (mcp->mb[7] & SCM_RDF_ACC_RECEIVED) {
1779 mcp->mb[23]);
1814 mcp->mb[0] = MBC_GET_RETRY_COUNT;
1824 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
1827 *r_a_tov = mcp->mb[3] / 2;
1828 ratov = (mcp->mb[3]/2) / 10; /* mb[3] value is in 100ms */
1829 if (mcp->mb[1] * ratov > (*retry_cnt) * (*tov)) {
1831 *retry_cnt = (uint8_t)mcp->mb[1];
1836 "Done %s mb3=%d ratov=%d.\n", __func__, mcp->mb[3], ratov);
1875 mcp->mb[0] = MBC_MID_INITIALIZE_FIRMWARE;
1877 mcp->mb[0] = MBC_INITIALIZE_FIRMWARE;
1879 mcp->mb[1] = 0;
1880 mcp->mb[2] = MSW(ha->init_cb_dma);
1881 mcp->mb[3] = LSW(ha->init_cb_dma);
1882 mcp->mb[6] = MSW(MSD(ha->init_cb_dma));
1883 mcp->mb[7] = LSW(MSD(ha->init_cb_dma));
1886 mcp->mb[1] = BIT_0;
1887 mcp->mb[10] = MSW(ha->ex_init_cb_dma);
1888 mcp->mb[11] = LSW(ha->ex_init_cb_dma);
1889 mcp->mb[12] = MSW(MSD(ha->ex_init_cb_dma));
1890 mcp->mb[13] = LSW(MSD(ha->ex_init_cb_dma));
1891 mcp->mb[14] = sizeof(*ha->ex_init_cb);
1896 mcp->mb[1] |= BIT_1;
1897 mcp->mb[16] = MSW(ha->sf_init_cb_dma);
1898 mcp->mb[17] = LSW(ha->sf_init_cb_dma);
1899 mcp->mb[18] = MSW(MSD(ha->sf_init_cb_dma));
1900 mcp->mb[19] = LSW(MSD(ha->sf_init_cb_dma));
1901 mcp->mb[15] = sizeof(*ha->sf_init_cb);
1918 "Failed=%x mb[0]=%x, mb[1]=%x, mb[2]=%x, mb[3]=%x.\n",
1919 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2], mcp->mb[3]);
1932 if (mcp->mb[2] == 6 || mcp->mb[3] == 2)
1983 mcp->mb[0] = MBC_GET_PORT_DATABASE;
1985 mcp->mb[0] = MBC_ENHANCED_GET_PORT_DATABASE;
1986 mcp->mb[2] = MSW(pd_dma);
1987 mcp->mb[3] = LSW(pd_dma);
1988 mcp->mb[6] = MSW(MSD(pd_dma));
1989 mcp->mb[7] = LSW(MSD(pd_dma));
1990 mcp->mb[9] = vha->vp_idx;
1994 mcp->mb[1] = fcport->loop_id;
1995 mcp->mb[10] = opt;
1999 mcp->mb[1] = fcport->loop_id;
2000 mcp->mb[10] = opt;
2003 mcp->mb[1] = fcport->loop_id << 8 | opt;
2124 "Failed=%x mb[0]=%x mb[1]=%x.\n", rval,
2125 mcp->mb[0], mcp->mb[1]);
2155 mcp->mb[0] = MBC_GET_PORT_DATABASE;
2156 mcp->mb[1] = nport_handle;
2157 mcp->mb[2] = MSW(LSD(pdb_dma));
2158 mcp->mb[3] = LSW(LSD(pdb_dma));
2159 mcp->mb[6] = MSW(MSD(pdb_dma));
2160 mcp->mb[7] = LSW(MSD(pdb_dma));
2161 mcp->mb[9] = 0;
2162 mcp->mb[10] = 0;
2172 "Failed=%x mb[0]=%x mb[1]=%x.\n",
2173 rval, mcp->mb[0], mcp->mb[1]);
2215 mcp->mb[0] = MBC_GET_FIRMWARE_STATE;
2226 states[0] = mcp->mb[1];
2228 states[1] = mcp->mb[2];
2229 states[2] = mcp->mb[3]; /* SFP info */
2230 states[3] = mcp->mb[4];
2231 states[4] = mcp->mb[5];
2232 states[5] = mcp->mb[6]; /* DPORT status */
2240 if (mcp->mb[2] == 6 || mcp->mb[3] == 2)
2280 mcp->mb[0] = MBC_GET_PORT_NAME;
2281 mcp->mb[9] = vha->vp_idx;
2284 mcp->mb[1] = loop_id;
2285 mcp->mb[10] = opt;
2288 mcp->mb[1] = loop_id << 8 | opt;
2302 name[0] = MSB(mcp->mb[2]);
2303 name[1] = LSB(mcp->mb[2]);
2304 name[2] = MSB(mcp->mb[3]);
2305 name[3] = LSB(mcp->mb[3]);
2306 name[4] = MSB(mcp->mb[6]);
2307 name[5] = LSB(mcp->mb[6]);
2308 name[6] = MSB(mcp->mb[7]);
2309 name[7] = LSB(mcp->mb[7]);
2347 mcp->mb[0] = MBC_LINK_INITIALIZATION;
2348 mcp->mb[1] = BIT_4;
2350 mcp->mb[1] |= BIT_6;
2352 mcp->mb[1] |= BIT_5;
2353 mcp->mb[2] = 0;
2354 mcp->mb[3] = 0;
2398 mcp->mb[0] = MBC_LIP_FULL_LOGIN;
2399 mcp->mb[1] = BIT_1;
2400 mcp->mb[2] = 0;
2403 mcp->mb[0] = MBC_LIP_FULL_LOGIN;
2404 mcp->mb[1] = BIT_4;
2405 mcp->mb[2] = 0;
2406 mcp->mb[3] = vha->hw->loop_reset_delay;
2409 mcp->mb[0] = MBC_LIP_RESET;
2412 mcp->mb[1] = 0x00ff;
2413 mcp->mb[10] = 0;
2416 mcp->mb[1] = 0xff00;
2418 mcp->mb[2] = vha->hw->loop_reset_delay;
2419 mcp->mb[3] = 0;
2471 mcp->mb[0] = MBC_SEND_SNS_COMMAND;
2472 mcp->mb[1] = cmd_size;
2473 mcp->mb[2] = MSW(sns_phys_address);
2474 mcp->mb[3] = LSW(sns_phys_address);
2475 mcp->mb[6] = MSW(MSD(sns_phys_address));
2476 mcp->mb[7] = LSW(MSD(sns_phys_address));
2487 "Failed=%x mb[0]=%x mb[1]=%x.\n",
2488 rval, mcp->mb[0], mcp->mb[1]);
2500 uint8_t area, uint8_t al_pa, uint16_t *mb, uint8_t opt)
2559 mb[0] = MBS_PORT_ID_USED;
2560 mb[1] = LSW(iop[1]);
2563 mb[0] = MBS_LOOP_ID_USED;
2579 mb[0] = MBS_COMMAND_ERROR;
2588 mb[0] = MBS_COMMAND_COMPLETE;
2589 mb[1] = 0;
2592 mb[1] |= BIT_1;
2594 mb[1] = BIT_0;
2597 mb[10] = 0;
2599 mb[10] |= BIT_0; /* Class 2. */
2601 mb[10] |= BIT_1; /* Class 3. */
2603 mb[10] |= BIT_7; /* Confirmed Completion
2636 uint8_t area, uint8_t al_pa, uint16_t *mb, uint8_t opt)
2646 mcp->mb[0] = MBC_LOGIN_FABRIC_PORT;
2649 mcp->mb[1] = loop_id;
2650 mcp->mb[10] = opt;
2653 mcp->mb[1] = (loop_id << 8) | opt;
2655 mcp->mb[2] = domain;
2656 mcp->mb[3] = area << 8 | al_pa;
2664 if (mb != NULL) {
2665 mb[0] = mcp->mb[0];
2666 mb[1] = mcp->mb[1];
2667 mb[2] = mcp->mb[2];
2668 mb[6] = mcp->mb[6];
2669 mb[7] = mcp->mb[7];
2671 mb[10] = 0;
2681 if (mcp->mb[0] == 0x4001 || mcp->mb[0] == 0x4002 ||
2682 mcp->mb[0] == 0x4003 || mcp->mb[0] == 0x4005 ||
2683 mcp->mb[0] == 0x4006)
2688 "Failed=%x mb[0]=%x mb[1]=%x mb[2]=%x.\n",
2689 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2]);
2732 mcp->mb[0] = MBC_LOGIN_LOOP_PORT;
2734 mcp->mb[1] = fcport->loop_id;
2736 mcp->mb[1] = fcport->loop_id << 8;
2737 mcp->mb[2] = opt;
2746 mb_ret[0] = mcp->mb[0];
2747 mb_ret[1] = mcp->mb[1];
2748 mb_ret[6] = mcp->mb[6];
2749 mb_ret[7] = mcp->mb[7];
2759 if (mcp->mb[0] == 0x4005 || mcp->mb[0] == 0x4006)
2763 "Failed=%x mb[0]=%x mb[1]=%x mb[6]=%x mb[7]=%x.\n",
2764 rval, mcp->mb[0], mcp->mb[1], mcp->mb[6], mcp->mb[7]);
2860 mcp->mb[0] = MBC_LOGOUT_FABRIC_PORT;
2863 mcp->mb[1] = loop_id;
2864 mcp->mb[10] = 0;
2867 mcp->mb[1] = loop_id << 8;
2878 "Failed=%x mb[1]=%x.\n", rval, mcp->mb[1]);
2913 mcp->mb[0] = MBC_LIP_FULL_LOGIN;
2914 mcp->mb[1] = IS_FWI2_CAPABLE(vha->hw) ? BIT_4 : 0;
2915 mcp->mb[2] = 0;
2916 mcp->mb[3] = 0;
2961 mcp->mb[0] = MBC_GET_ID_LIST;
2964 mcp->mb[2] = MSW(id_list_dma);
2965 mcp->mb[3] = LSW(id_list_dma);
2966 mcp->mb[6] = MSW(MSD(id_list_dma));
2967 mcp->mb[7] = LSW(MSD(id_list_dma));
2968 mcp->mb[8] = 0;
2969 mcp->mb[9] = vha->vp_idx;
2972 mcp->mb[1] = MSW(id_list_dma);
2973 mcp->mb[2] = LSW(id_list_dma);
2974 mcp->mb[3] = MSW(MSD(id_list_dma));
2975 mcp->mb[6] = LSW(MSD(id_list_dma));
2987 *entries = mcp->mb[1];
3019 mcp->mb[0] = MBC_GET_RESOURCE_COUNTS;
3032 "Failed mb[0]=%x.\n", mcp->mb[0]);
3036 "mb11=%x mb12=%x.\n", __func__, mcp->mb[1], mcp->mb[2],
3037 mcp->mb[3], mcp->mb[6], mcp->mb[7], mcp->mb[10],
3038 mcp->mb[11], mcp->mb[12]);
3040 ha->orig_fw_tgt_xcb_count = mcp->mb[1];
3041 ha->cur_fw_tgt_xcb_count = mcp->mb[2];
3042 ha->cur_fw_xcb_count = mcp->mb[3];
3043 ha->orig_fw_xcb_count = mcp->mb[6];
3044 ha->cur_fw_iocb_count = mcp->mb[7];
3045 ha->orig_fw_iocb_count = mcp->mb[10];
3047 ha->max_npiv_vports = mcp->mb[11];
3049 ha->fw_max_fcf_count = mcp->mb[12];
3090 mcp->mb[0] = MBC_GET_FC_AL_POSITION_MAP;
3091 mcp->mb[2] = MSW(pmap_dma);
3092 mcp->mb[3] = LSW(pmap_dma);
3093 mcp->mb[6] = MSW(MSD(pmap_dma));
3094 mcp->mb[7] = LSW(MSD(pmap_dma));
3105 mcp->mb[0], mcp->mb[1], (unsigned)pmap[0]);
3153 mcp->mb[0] = MBC_GET_LINK_STATUS;
3154 mcp->mb[2] = MSW(LSD(stats_dma));
3155 mcp->mb[3] = LSW(LSD(stats_dma));
3156 mcp->mb[6] = MSW(MSD(stats_dma));
3157 mcp->mb[7] = LSW(MSD(stats_dma));
3161 mcp->mb[1] = loop_id;
3162 mcp->mb[4] = 0;
3163 mcp->mb[10] = 0;
3167 mcp->mb[1] = loop_id;
3168 mcp->mb[10] = 0;
3171 mcp->mb[1] = loop_id << 8;
3179 if (mcp->mb[0] != MBS_COMMAND_COMPLETE) {
3181 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
3212 mc.mb[0] = MBC_GET_LINK_PRIV_STATS;
3213 mc.mb[2] = MSW(LSD(stats_dma));
3214 mc.mb[3] = LSW(LSD(stats_dma));
3215 mc.mb[6] = MSW(MSD(stats_dma));
3216 mc.mb[7] = LSW(MSD(stats_dma));
3217 mc.mb[8] = dwords;
3218 mc.mb[9] = vha->vp_idx;
3219 mc.mb[10] = options;
3224 if (mcp->mb[0] != MBS_COMMAND_COMPLETE) {
3226 "Failed mb[0]=%x.\n", mcp->mb[0]);
3470 mcp->mb[0] = MBC_GEN_SYSTEM_ERROR;
3501 mcp->mb[0] = MBC_WRITE_SERDES;
3502 mcp->mb[1] = addr;
3504 mcp->mb[2] = data & 0xff;
3506 mcp->mb[2] = data;
3508 mcp->mb[3] = 0;
3517 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
3540 mcp->mb[0] = MBC_READ_SERDES;
3541 mcp->mb[1] = addr;
3542 mcp->mb[3] = 0;
3550 *data = mcp->mb[1] & 0xff;
3552 *data = mcp->mb[1];
3556 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
3578 mcp->mb[0] = MBC_SET_GET_ETH_SERDES_REG;
3579 mcp->mb[1] = HCS_WRITE_SERDES;
3580 mcp->mb[3] = LSW(addr);
3581 mcp->mb[4] = MSW(addr);
3582 mcp->mb[5] = LSW(data);
3583 mcp->mb[6] = MSW(data);
3592 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
3614 mcp->mb[0] = MBC_SET_GET_ETH_SERDES_REG;
3615 mcp->mb[1] = HCS_READ_SERDES;
3616 mcp->mb[3] = LSW(addr);
3617 mcp->mb[4] = MSW(addr);
3624 *data = mcp->mb[2] << 16 | mcp->mb[1];
3628 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
3657 mcp->mb[0] = MBC_SERDES_PARAMS;
3658 mcp->mb[1] = BIT_0;
3659 mcp->mb[2] = sw_em_1g | BIT_15;
3660 mcp->mb[3] = sw_em_2g | BIT_15;
3661 mcp->mb[4] = sw_em_4g | BIT_15;
3671 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
3694 mcp->mb[0] = MBC_STOP_FIRMWARE;
3695 mcp->mb[1] = 0;
3704 if (mcp->mb[0] == MBS_INVALID_COMMAND)
3731 mcp->mb[0] = MBC_TRACE_CONTROL;
3732 mcp->mb[1] = TC_EFT_ENABLE;
3733 mcp->mb[2] = LSW(eft_dma);
3734 mcp->mb[3] = MSW(eft_dma);
3735 mcp->mb[4] = LSW(MSD(eft_dma));
3736 mcp->mb[5] = MSW(MSD(eft_dma));
3737 mcp->mb[6] = buffers;
3738 mcp->mb[7] = TC_AEN_DISABLE;
3746 "Failed=%x mb[0]=%x mb[1]=%x.\n",
3747 rval, mcp->mb[0], mcp->mb[1]);
3772 mcp->mb[0] = MBC_TRACE_CONTROL;
3773 mcp->mb[1] = TC_EFT_DISABLE;
3781 "Failed=%x mb[0]=%x mb[1]=%x.\n",
3782 rval, mcp->mb[0], mcp->mb[1]);
3793 uint16_t buffers, uint16_t *mb, uint32_t *dwords)
3810 mcp->mb[0] = MBC_TRACE_CONTROL;
3811 mcp->mb[1] = TC_FCE_ENABLE;
3812 mcp->mb[2] = LSW(fce_dma);
3813 mcp->mb[3] = MSW(fce_dma);
3814 mcp->mb[4] = LSW(MSD(fce_dma));
3815 mcp->mb[5] = MSW(MSD(fce_dma));
3816 mcp->mb[6] = buffers;
3817 mcp->mb[7] = TC_AEN_DISABLE;
3818 mcp->mb[8] = 0;
3819 mcp->mb[9] = TC_FCE_DEFAULT_RX_SIZE;
3820 mcp->mb[10] = TC_FCE_DEFAULT_TX_SIZE;
3829 "Failed=%x mb[0]=%x mb[1]=%x.\n",
3830 rval, mcp->mb[0], mcp->mb[1]);
3835 if (mb)
3836 memcpy(mb, mcp->mb, 8 * sizeof(*mb));
3860 mcp->mb[0] = MBC_TRACE_CONTROL;
3861 mcp->mb[1] = TC_FCE_DISABLE;
3862 mcp->mb[2] = TC_FCE_DISABLE_TRACE;
3871 "Failed=%x mb[0]=%x mb[1]=%x.\n",
3872 rval, mcp->mb[0], mcp->mb[1]);
3878 *wr = (uint64_t) mcp->mb[5] << 48 |
3879 (uint64_t) mcp->mb[4] << 32 |
3880 (uint64_t) mcp->mb[3] << 16 |
3881 (uint64_t) mcp->mb[2];
3883 *rd = (uint64_t) mcp->mb[9] << 48 |
3884 (uint64_t) mcp->mb[8] << 32 |
3885 (uint64_t) mcp->mb[7] << 16 |
3886 (uint64_t) mcp->mb[6];
3894 uint16_t *port_speed, uint16_t *mb)
3906 mcp->mb[0] = MBC_PORT_PARAMS;
3907 mcp->mb[1] = loop_id;
3908 mcp->mb[2] = mcp->mb[3] = 0;
3909 mcp->mb[9] = vha->vp_idx;
3917 if (mb) {
3918 mb[0] = mcp->mb[0];
3919 mb[1] = mcp->mb[1];
3920 mb[3] = mcp->mb[3];
3929 *port_speed = mcp->mb[3];
3937 uint16_t port_speed, uint16_t *mb)
3949 mcp->mb[0] = MBC_PORT_PARAMS;
3950 mcp->mb[1] = loop_id;
3951 mcp->mb[2] = BIT_0;
3952 mcp->mb[3] = port_speed & 0x3F;
3953 mcp->mb[9] = vha->vp_idx;
3961 if (mb) {
3962 mb[0] = mcp->mb[0];
3963 mb[1] = mcp->mb[1];
3964 mb[3] = mcp->mb[3];
4327 mcp->mb[0] = MBC_SEND_CHANGE_REQUEST;
4328 mcp->mb[1] = format;
4329 mcp->mb[9] = vp_idx;
4337 if (mcp->mb[0] != MBS_COMMAND_COMPLETE) {
4358 mcp->mb[0] = MBC_DUMP_RISC_RAM_EXTENDED;
4359 mcp->mb[8] = MSW(addr);
4360 mcp->mb[10] = 0;
4363 mcp->mb[0] = MBC_DUMP_RISC_RAM;
4366 mcp->mb[1] = LSW(addr);
4367 mcp->mb[2] = MSW(req_dma);
4368 mcp->mb[3] = LSW(req_dma);
4369 mcp->mb[6] = MSW(MSD(req_dma));
4370 mcp->mb[7] = LSW(MSD(req_dma));
4373 mcp->mb[4] = MSW(size);
4374 mcp->mb[5] = LSW(size);
4377 mcp->mb[4] = LSW(size);
4388 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
4516 mcp->mb[0] = MBC_INITIALIZE_MULTIQ;
4517 mcp->mb[1] = req->options;
4518 mcp->mb[2] = MSW(LSD(req->dma));
4519 mcp->mb[3] = LSW(LSD(req->dma));
4520 mcp->mb[6] = MSW(MSD(req->dma));
4521 mcp->mb[7] = LSW(MSD(req->dma));
4522 mcp->mb[5] = req->length;
4524 mcp->mb[10] = req->rsp->id;
4525 mcp->mb[12] = req->qos;
4526 mcp->mb[11] = req->vp_idx;
4527 mcp->mb[13] = req->rid;
4529 mcp->mb[15] = 0;
4531 mcp->mb[4] = req->id;
4533 mcp->mb[8] = 0;
4535 mcp->mb[9] = *req->out_ptr = 0;
4562 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
4589 mcp->mb[0] = MBC_INITIALIZE_MULTIQ;
4590 mcp->mb[1] = rsp->options;
4591 mcp->mb[2] = MSW(LSD(rsp->dma));
4592 mcp->mb[3] = LSW(LSD(rsp->dma));
4593 mcp->mb[6] = MSW(MSD(rsp->dma));
4594 mcp->mb[7] = LSW(MSD(rsp->dma));
4595 mcp->mb[5] = rsp->length;
4596 mcp->mb[14] = rsp->msix->entry;
4597 mcp->mb[13] = rsp->rid;
4599 mcp->mb[15] = 0;
4601 mcp->mb[4] = rsp->id;
4603 mcp->mb[8] = *rsp->in_ptr = 0;
4605 mcp->mb[9] = 0;
4634 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
4644 qla81xx_idc_ack(scsi_qla_host_t *vha, uint16_t *mb)
4653 mcp->mb[0] = MBC_IDC_ACK;
4654 memcpy(&mcp->mb[1], mb, QLA_IDC_ACK_REGS * sizeof(uint16_t));
4663 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
4686 mcp->mb[0] = MBC_FLASH_ACCESS_CTRL;
4687 mcp->mb[1] = FAC_OPT_CMD_GET_SECTOR_SIZE;
4696 "Failed=%x mb[0]=%x mb[1]=%x.\n",
4697 rval, mcp->mb[0], mcp->mb[1]);
4701 *sector_size = mcp->mb[1];
4721 mcp->mb[0] = MBC_FLASH_ACCESS_CTRL;
4722 mcp->mb[1] = enable ? FAC_OPT_CMD_WRITE_ENABLE :
4732 "Failed=%x mb[0]=%x mb[1]=%x.\n",
4733 rval, mcp->mb[0], mcp->mb[1]);
4756 mcp->mb[0] = MBC_FLASH_ACCESS_CTRL;
4757 mcp->mb[1] = FAC_OPT_CMD_ERASE_SECTOR;
4758 mcp->mb[2] = LSW(start);
4759 mcp->mb[3] = MSW(start);
4760 mcp->mb[4] = LSW(finish);
4761 mcp->mb[5] = MSW(finish);
4770 "Failed=%x mb[0]=%x mb[1]=%x mb[2]=%x.\n",
4771 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2]);
4795 mcp->mb[0] = MBC_FLASH_ACCESS_CTRL;
4796 mcp->mb[1] = (lock ? FAC_OPT_CMD_LOCK_SEMAPHORE :
4806 "Failed=%x mb[0]=%x mb[1]=%x mb[2]=%x.\n",
4807 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2]);
4826 mcp->mb[0] = MBC_RESTART_MPI_FW;
4835 "Failed=%x mb[0]=%x mb[1]=%x.\n",
4836 rval, mcp->mb[0], mcp->mb[1]);
4865 mcp->mb[0] = MBC_SET_RNID_PARAMS;
4866 mcp->mb[1] = RNID_TYPE_SET_VERSION << 8;
4869 mcp->mb[i] = le16_to_cpup(str);
4873 mcp->mb[i] = 0;
4883 "Failed=%x mb[0]=%x,%x.\n", rval, mcp->mb[0], mcp->mb[1]);
4926 mcp->mb[0] = MBC_SET_RNID_PARAMS;
4927 mcp->mb[1] = RNID_TYPE_SET_VERSION << 8 | dwlen;
4928 mcp->mb[2] = MSW(LSD(str_dma));
4929 mcp->mb[3] = LSW(LSD(str_dma));
4930 mcp->mb[6] = MSW(MSD(str_dma));
4931 mcp->mb[7] = LSW(MSD(str_dma));
4940 "Failed=%x mb[0]=%x,%x.\n", rval, mcp->mb[0], mcp->mb[1]);
4966 mcp->mb[0] = MBC_GET_RNID_PARAMS;
4967 mcp->mb[1] = RNID_TYPE_PORT_LOGIN << 8;
4968 mcp->mb[2] = MSW(buf_dma);
4969 mcp->mb[3] = LSW(buf_dma);
4970 mcp->mb[6] = MSW(MSD(buf_dma));
4971 mcp->mb[7] = LSW(MSD(buf_dma));
4972 mcp->mb[8] = bufsiz/4;
4981 "Failed=%x mb[0]=%x,%x.\n", rval, mcp->mb[0], mcp->mb[1]);
5042 mcp->mb[0] = MBC_SET_RNID_PARAMS;
5043 mcp->mb[1] = RNID_TYPE_ELS_CMD << 8;
5044 mcp->mb[2] = MSW(LSD(els_cmd_map_dma));
5045 mcp->mb[3] = LSW(LSD(els_cmd_map_dma));
5046 mcp->mb[6] = MSW(MSD(els_cmd_map_dma));
5047 mcp->mb[7] = LSW(MSD(els_cmd_map_dma));
5057 "Failed=%x (%x,%x).\n", rval, mcp->mb[0], mcp->mb[1]);
5082 mcp->mb[0] = MBC_GET_RNID_PARAMS;
5083 mcp->mb[1] = RNID_TYPE_ASIC_TEMP << 8;
5089 *temp = mcp->mb[1];
5093 "Failed=%x mb[0]=%x,%x.\n", rval, mcp->mb[0], mcp->mb[1]);
5120 mcp->mb[0] = MBC_READ_SFP;
5121 mcp->mb[1] = dev;
5122 mcp->mb[2] = MSW(LSD(sfp_dma));
5123 mcp->mb[3] = LSW(LSD(sfp_dma));
5124 mcp->mb[6] = MSW(MSD(sfp_dma));
5125 mcp->mb[7] = LSW(MSD(sfp_dma));
5126 mcp->mb[8] = len;
5127 mcp->mb[9] = off;
5128 mcp->mb[10] = opt;
5136 *sfp = mcp->mb[1];
5140 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5141 if (mcp->mb[0] == MBS_COMMAND_ERROR && mcp->mb[1] == 0x22) {
5174 mcp->mb[0] = MBC_WRITE_SFP;
5175 mcp->mb[1] = dev;
5176 mcp->mb[2] = MSW(LSD(sfp_dma));
5177 mcp->mb[3] = LSW(LSD(sfp_dma));
5178 mcp->mb[6] = MSW(MSD(sfp_dma));
5179 mcp->mb[7] = LSW(MSD(sfp_dma));
5180 mcp->mb[8] = len;
5181 mcp->mb[9] = off;
5182 mcp->mb[10] = opt;
5191 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5214 mcp->mb[0] = MBC_GET_XGMAC_STATS;
5215 mcp->mb[2] = MSW(stats_dma);
5216 mcp->mb[3] = LSW(stats_dma);
5217 mcp->mb[6] = MSW(MSD(stats_dma));
5218 mcp->mb[7] = LSW(MSD(stats_dma));
5219 mcp->mb[8] = size_in_bytes >> 2;
5228 "Failed=%x mb[0]=%x mb[1]=%x mb[2]=%x.\n",
5229 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2]);
5235 *actual_size = mcp->mb[2] << 2;
5255 mcp->mb[0] = MBC_GET_DCBX_PARAMS;
5256 mcp->mb[1] = 0;
5257 mcp->mb[2] = MSW(tlv_dma);
5258 mcp->mb[3] = LSW(tlv_dma);
5259 mcp->mb[6] = MSW(MSD(tlv_dma));
5260 mcp->mb[7] = LSW(MSD(tlv_dma));
5261 mcp->mb[8] = size;
5270 "Failed=%x mb[0]=%x mb[1]=%x mb[2]=%x.\n",
5271 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2]);
5293 mcp->mb[0] = MBC_READ_RAM_EXTENDED;
5294 mcp->mb[1] = LSW(risc_addr);
5295 mcp->mb[8] = MSW(risc_addr);
5303 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5307 *data = mcp->mb[3] << 16 | mcp->mb[2];
5324 memset(mcp->mb, 0 , sizeof(mcp->mb));
5325 mcp->mb[0] = MBC_DIAGNOSTIC_LOOP_BACK;
5326 mcp->mb[1] = mreq->options | BIT_6; // BIT_6 specifies 64 bit addressing
5329 mcp->mb[10] = LSW(mreq->transfer_size);
5330 mcp->mb[11] = MSW(mreq->transfer_size);
5333 mcp->mb[14] = LSW(mreq->send_dma);
5334 mcp->mb[15] = MSW(mreq->send_dma);
5335 mcp->mb[20] = LSW(MSD(mreq->send_dma));
5336 mcp->mb[21] = MSW(MSD(mreq->send_dma));
5339 mcp->mb[16] = LSW(mreq->rcv_dma);
5340 mcp->mb[17] = MSW(mreq->rcv_dma);
5341 mcp->mb[6] = LSW(MSD(mreq->rcv_dma));
5342 mcp->mb[7] = MSW(MSD(mreq->rcv_dma));
5345 mcp->mb[18] = LSW(mreq->iteration_count);
5346 mcp->mb[19] = MSW(mreq->iteration_count);
5362 "Failed=%x mb[0]=%x mb[1]=%x mb[2]=%x mb[3]=%x mb[18]=%x "
5363 "mb[19]=%x.\n", rval, mcp->mb[0], mcp->mb[1], mcp->mb[2],
5364 mcp->mb[3], mcp->mb[18], mcp->mb[19]);
5371 memcpy( mresp, mcp->mb, 64);
5387 memset(mcp->mb, 0 , sizeof(mcp->mb));
5388 mcp->mb[0] = MBC_DIAGNOSTIC_ECHO;
5390 mcp->mb[1] = mreq->options | BIT_15 | BIT_6;
5392 mcp->mb[2] = vha->fcoe_fcf_idx;
5394 mcp->mb[16] = LSW(mreq->rcv_dma);
5395 mcp->mb[17] = MSW(mreq->rcv_dma);
5396 mcp->mb[6] = LSW(MSD(mreq->rcv_dma));
5397 mcp->mb[7] = MSW(MSD(mreq->rcv_dma));
5399 mcp->mb[10] = LSW(mreq->transfer_size);
5401 mcp->mb[14] = LSW(mreq->send_dma);
5402 mcp->mb[15] = MSW(mreq->send_dma);
5403 mcp->mb[20] = LSW(MSD(mreq->send_dma));
5404 mcp->mb[21] = MSW(MSD(mreq->send_dma));
5427 "Failed=%x mb[0]=%x mb[1]=%x.\n",
5428 rval, mcp->mb[0], mcp->mb[1]);
5435 memcpy(mresp, mcp->mb, 64);
5449 mcp->mb[0] = MBC_ISP84XX_RESET;
5450 mcp->mb[1] = enable_diagnostic;
5479 mcp->mb[0] = MBC_WRITE_RAM_WORD_EXTENDED;
5480 mcp->mb[1] = LSW(risc_addr);
5481 mcp->mb[2] = LSW(data);
5482 mcp->mb[3] = MSW(data);
5483 mcp->mb[8] = MSW(risc_addr);
5491 "Failed=%x mb[0]=%x mb[1]=%x.\n",
5492 rval, mcp->mb[0], mcp->mb[1]);
5502 qla81xx_write_mpi_register(scsi_qla_host_t *vha, uint16_t *mb)
5519 wrt_reg_word(®->mailbox1, mb[0]);
5520 wrt_reg_word(®->mailbox2, mb[1]);
5521 wrt_reg_word(®->mailbox3, mb[2]);
5522 wrt_reg_word(®->mailbox4, mb[3]);
5554 "Failed=%x mb[0]=%x.\n", rval, mb[0]);
5597 mcp->mb[0] = MBC_DATA_RATE;
5598 mcp->mb[1] = mode;
5599 mcp->mb[2] = val;
5610 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5612 if (mcp->mb[1] != 0x7)
5614 "Speed set:0x%x\n", mcp->mb[1]);
5637 mcp->mb[0] = MBC_DATA_RATE;
5638 mcp->mb[1] = QLA_GET_DATA_RATE;
5648 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5650 if (mcp->mb[1] != 0x7)
5651 ha->link_data_rate = mcp->mb[1];
5654 if (mcp->mb[4] & BIT_0)
5661 if (mcp->mb[1] != 0x7)
5662 ha->link_data_rate = mcp->mb[1];
5669 qla81xx_get_port_config(scsi_qla_host_t *vha, uint16_t *mb)
5682 mcp->mb[0] = MBC_GET_PORT_CONFIG;
5692 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5695 memcpy(mb, &mcp->mb[1], sizeof(uint16_t) * 4);
5704 qla81xx_set_port_config(scsi_qla_host_t *vha, uint16_t *mb)
5713 mcp->mb[0] = MBC_SET_PORT_CONFIG;
5715 memcpy(&mcp->mb[1], mb, sizeof(uint16_t) * 4);
5724 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5735 uint16_t *mb)
5748 mcp->mb[0] = MBC_PORT_PARAMS;
5749 mcp->mb[1] = loop_id;
5751 mcp->mb[2] = BIT_1;
5753 mcp->mb[2] = BIT_2;
5754 mcp->mb[4] = priority & 0xf;
5755 mcp->mb[9] = vha->vp_idx;
5761 if (mb != NULL) {
5762 mb[0] = mcp->mb[0];
5763 mb[1] = mcp->mb[1];
5764 mb[3] = mcp->mb[3];
5765 mb[4] = mcp->mb[4];
5840 mcp->mb[0] = MBC_TOGGLE_INTERRUPT;
5841 mcp->mb[1] = 1;
5851 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5875 mcp->mb[0] = MBC_TOGGLE_INTERRUPT;
5876 mcp->mb[1] = 0;
5886 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
5906 memset(mcp->mb, 0 , sizeof(mcp->mb));
5907 mcp->mb[0] = LSW(MBC_DIAGNOSTIC_MINIDUMP_TEMPLATE);
5908 mcp->mb[1] = MSW(MBC_DIAGNOSTIC_MINIDUMP_TEMPLATE);
5909 mcp->mb[2] = LSW(RQST_TMPLT_SIZE);
5910 mcp->mb[3] = MSW(RQST_TMPLT_SIZE);
5924 (mcp->mb[1] << 16) | mcp->mb[0],
5925 (mcp->mb[3] << 16) | mcp->mb[2]);
5929 ha->md_template_size = ((mcp->mb[3] << 16) | mcp->mb[2]);
5958 memset(mcp->mb, 0 , sizeof(mcp->mb));
5959 mcp->mb[0] = LSW(MBC_DIAGNOSTIC_MINIDUMP_TEMPLATE);
5960 mcp->mb[1] = MSW(MBC_DIAGNOSTIC_MINIDUMP_TEMPLATE);
5961 mcp->mb[2] = LSW(RQST_TMPLT);
5962 mcp->mb[3] = MSW(RQST_TMPLT);
5963 mcp->mb[4] = LSW(LSD(ha->md_tmplt_hdr_dma));
5964 mcp->mb[5] = MSW(LSD(ha->md_tmplt_hdr_dma));
5965 mcp->mb[6] = LSW(MSD(ha->md_tmplt_hdr_dma));
5966 mcp->mb[7] = MSW(MSD(ha->md_tmplt_hdr_dma));
5967 mcp->mb[8] = LSW(ha->md_template_size);
5968 mcp->mb[9] = MSW(ha->md_template_size);
5980 ((mcp->mb[1] << 16) | mcp->mb[0]),
5981 ((mcp->mb[3] << 16) | mcp->mb[2]));
6008 memset(mcp->mb, 0 , sizeof(mcp->mb));
6010 mcp->mb[0] = LSW(MBC_DIAGNOSTIC_MINIDUMP_TEMPLATE);
6011 mcp->mb[1] = MSW(MBC_DIAGNOSTIC_MINIDUMP_TEMPLATE);
6012 mcp->mb[2] = LSW(RQST_TMPLT);
6013 mcp->mb[3] = MSW(RQST_TMPLT);
6014 mcp->mb[4] = LSW(LSD(ha->md_tmplt_hdr_dma + offset));
6015 mcp->mb[5] = MSW(LSD(ha->md_tmplt_hdr_dma + offset));
6016 mcp->mb[6] = LSW(MSD(ha->md_tmplt_hdr_dma + offset));
6017 mcp->mb[7] = MSW(MSD(ha->md_tmplt_hdr_dma + offset));
6018 mcp->mb[8] = LSW(size);
6019 mcp->mb[9] = MSW(size);
6020 mcp->mb[10] = offset & 0x0000FFFF;
6021 mcp->mb[11] = offset & 0xFFFF0000;
6032 ((mcp->mb[1] << 16) | mcp->mb[0]),
6033 ((mcp->mb[3] << 16) | mcp->mb[2]));
6058 mcp->mb[0] = MBC_SET_LED_CONFIG;
6059 mcp->mb[1] = led_cfg[0];
6060 mcp->mb[2] = led_cfg[1];
6062 mcp->mb[3] = led_cfg[2];
6063 mcp->mb[4] = led_cfg[3];
6064 mcp->mb[5] = led_cfg[4];
6065 mcp->mb[6] = led_cfg[5];
6078 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6102 mcp->mb[0] = MBC_GET_LED_CONFIG;
6114 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6116 led_cfg[0] = mcp->mb[1];
6117 led_cfg[1] = mcp->mb[2];
6119 led_cfg[2] = mcp->mb[3];
6120 led_cfg[3] = mcp->mb[4];
6121 led_cfg[4] = mcp->mb[5];
6122 led_cfg[5] = mcp->mb[6];
6146 mcp->mb[0] = MBC_SET_LED_CONFIG;
6148 mcp->mb[7] = 0xE;
6150 mcp->mb[7] = 0xD;
6160 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6183 mcp->mb[0] = MBC_WRITE_REMOTE_REG;
6184 mcp->mb[1] = LSW(reg);
6185 mcp->mb[2] = MSW(reg);
6186 mcp->mb[3] = LSW(data);
6187 mcp->mb[4] = MSW(data);
6197 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6225 mcp->mb[0] = MBC_PORT_LOGOUT;
6226 mcp->mb[1] = fcport->loop_id;
6227 mcp->mb[10] = BIT_15;
6235 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6258 mcp->mb[0] = MBC_READ_REMOTE_REG;
6259 mcp->mb[1] = LSW(reg);
6260 mcp->mb[2] = MSW(reg);
6269 "Failed=%x mb[0]=%x mb[1]=%x.\n",
6270 rval, mcp->mb[0], mcp->mb[1]);
6272 *data = (mcp->mb[3] | (mcp->mb[4] << 16));
6307 mcp->mb[0] = MBC_RESTART_NIC_FIRMWARE;
6316 "Failed=%x mb[0]=%x mb[1]=%x.\n",
6317 rval, mcp->mb[0], mcp->mb[1]);
6341 mcp->mb[0] = MBC_SET_ACCESS_CONTROL;
6342 mcp->mb[1] = options;
6345 mcp->mb[2] = LSW(start_addr);
6346 mcp->mb[3] = MSW(start_addr);
6347 mcp->mb[4] = LSW(end_addr);
6348 mcp->mb[5] = MSW(end_addr);
6360 "Failed=%x mb[0]=%x mb[1]=%x mb[2]=%x mb[3]=%x mb[4]=%x.\n",
6361 rval, mcp->mb[0], mcp->mb[1], mcp->mb[2], mcp->mb[3],
6362 mcp->mb[4]);
6366 *sector_size = mcp->mb[1];
6369 "Driver-lock id=%x%x", mcp->mb[4], mcp->mb[3]);
6372 "Flash-lock id=%x%x", mcp->mb[4], mcp->mb[3]);
6394 mcp->mb[0] = MBC_DUMP_RISC_RAM_EXTENDED;
6395 mcp->mb[1] = LSW(addr);
6396 mcp->mb[2] = MSW(req_dma);
6397 mcp->mb[3] = LSW(req_dma);
6398 mcp->mb[4] = MSW(size);
6399 mcp->mb[5] = LSW(size);
6400 mcp->mb[6] = MSW(MSD(req_dma));
6401 mcp->mb[7] = LSW(MSD(req_dma));
6402 mcp->mb[8] = MSW(addr);
6405 mcp->mb[10] = BIT_7 | 0x40;
6417 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6451 mcp->mb[0] = MBC_DPORT_DIAGNOSTICS;
6452 mcp->mb[1] = options;
6453 mcp->mb[2] = MSW(LSD(dd_dma));
6454 mcp->mb[3] = LSW(LSD(dd_dma));
6455 mcp->mb[6] = MSW(MSD(dd_dma));
6456 mcp->mb[7] = LSW(MSD(dd_dma));
6457 mcp->mb[8] = size;
6500 mcp->mb[0] = MBC_DPORT_DIAGNOSTICS;
6501 mcp->mb[1] = options;
6502 mcp->mb[2] = MSW(LSD(dd_dma));
6503 mcp->mb[3] = LSW(LSD(dd_dma));
6504 mcp->mb[6] = MSW(MSD(dd_dma));
6505 mcp->mb[7] = LSW(MSD(dd_dma));
6506 mcp->mb[8] = size;
6557 sp->name = mb_to_str(mcp->mb[0]);
6561 memcpy(sp->u.iocb_cmd.u.mbx.out_mb, mcp->mb, SIZEOF_IOCB_MB_REG);
6575 memcpy(mcp->mb, sp->u.iocb_cmd.u.mbx.in_mb, SIZEOF_IOCB_MB_REG);
6623 mc.mb[0] = MBC_GET_PORT_DATABASE;
6624 mc.mb[1] = fcport->loop_id;
6625 mc.mb[2] = MSW(pd_dma);
6626 mc.mb[3] = LSW(pd_dma);
6627 mc.mb[6] = MSW(MSD(pd_dma));
6628 mc.mb[7] = LSW(MSD(pd_dma));
6629 mc.mb[9] = vha->vp_idx;
6630 mc.mb[10] = opt;
6741 mc.mb[0] = MBC_GET_ID_LIST;
6742 mc.mb[2] = MSW(id_list_dma);
6743 mc.mb[3] = LSW(id_list_dma);
6744 mc.mb[6] = MSW(MSD(id_list_dma));
6745 mc.mb[7] = LSW(MSD(id_list_dma));
6746 mc.mb[8] = 0;
6747 mc.mb[9] = vha->vp_idx;
6754 *entries = mc.mb[1];
6771 memset(mcp->mb, 0 , sizeof(mcp->mb));
6772 mcp->mb[0] = MBC_GET_SET_ZIO_THRESHOLD;
6773 mcp->mb[1] = 1;
6774 mcp->mb[2] = value;
6797 memset(mcp->mb, 0, sizeof(mcp->mb));
6798 mcp->mb[0] = MBC_GET_SET_ZIO_THRESHOLD;
6799 mcp->mb[1] = 0;
6807 *value = mc.mb[2];
6877 mc.mb[0] = MBC_GET_RESOURCE_COUNTS;
6885 memcpy(out_mb, mc.mb, out_mb_sz);
6887 memcpy(out_mb, mc.mb, SIZEOF_IOCB_MB_REG);
6904 mcp->mb[0] = MBC_SECURE_FLASH_UPDATE;
6905 mcp->mb[1] = opts;
6906 mcp->mb[2] = region;
6907 mcp->mb[3] = MSW(len);
6908 mcp->mb[4] = LSW(len);
6909 mcp->mb[5] = MSW(sfub_dma_addr);
6910 mcp->mb[6] = LSW(sfub_dma_addr);
6911 mcp->mb[7] = MSW(MSD(sfub_dma_addr));
6912 mcp->mb[8] = LSW(MSD(sfub_dma_addr));
6913 mcp->mb[9] = sfub_len;
6923 __func__, vha->host_no, rval, mcp->mb[0], mcp->mb[1],
6924 mcp->mb[2]);
6940 mcp->mb[0] = MBC_WRITE_REMOTE_REG;
6941 mcp->mb[1] = LSW(addr);
6942 mcp->mb[2] = MSW(addr);
6943 mcp->mb[3] = LSW(data);
6944 mcp->mb[4] = MSW(data);
6953 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
6972 mcp->mb[0] = MBC_READ_REMOTE_REG;
6973 mcp->mb[1] = LSW(addr);
6974 mcp->mb[2] = MSW(addr);
6981 *data = (uint32_t)((((uint32_t)mcp->mb[4]) << 16) | mcp->mb[3]);
6985 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
7008 mcp->mb[0] = MBC_SET_GET_FC_LED_CONFIG;
7009 mcp->mb[1] = options;
7014 mcp->mb[2] = led[2];
7018 mcp->mb[3] = led[0];
7022 mcp->mb[4] = led[1];
7032 ql_dbg(ql_dbg_mbx, vha, 0x7071, "Failed %s %x (mb=%x,%x)\n",
7033 __func__, rval, mcp->mb[0], mcp->mb[1]);
7041 led[2] = mcp->mb[2];
7042 led[0] = mcp->mb[3];
7043 led[1] = mcp->mb[4];
7065 mcp->mb[0] = 0; // noop cmd= 0
7087 memcpy(&mcp->mb, (char *)mbx_in, (32 * sizeof(uint16_t)));
7100 "Failed=%x mb[0]=%x.\n", rval, mcp->mb[0]);
7105 memcpy(mbx_out, &mcp->mb, 32 * sizeof(uint16_t));