1386
1387 if (mpt->m_MPI25)
1388 mptsas_uflash25((pMpi25FWDownloadRequest)memp,
1389 mpt->m_acc_req_frame_hdl, size, type, flsh_cookie);
1390 else
1391 mptsas_uflash2((pMpi2FWDownloadRequest)memp,
1392 mpt->m_acc_req_frame_hdl, size, type, flsh_cookie);
1393
1394 /*
1395 * Start command
1396 */
1397 (void) ddi_dma_sync(mpt->m_dma_req_frame_hdl, 0, 0,
1398 DDI_DMA_SYNC_FORDEV);
1399 request_desc = (cmd->cmd_slot << 16) +
1400 MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE;
1401 cmd->cmd_rfm = NULL;
1402 MPTSAS_START_CMD(mpt, request_desc);
1403
1404 rvalue = 0;
1405 (void) cv_reltimedwait(&mpt->m_fw_cv, &mpt->m_mutex,
1406 drv_usectohz(60 * MICROSEC), TR_CLOCK_TICK);
1407 if (!(cmd->cmd_flags & CFLAG_FINISHED)) {
1408 mpt->m_softstate &= ~MPTSAS_SS_MSG_UNIT_RESET;
1409 if ((mptsas_restart_ioc(mpt)) == DDI_FAILURE) {
1410 mptsas_log(mpt, CE_WARN, "mptsas_restart_ioc failed");
1411 }
1412 rvalue = -1;
1413 }
1414 mptsas_remove_cmd(mpt, cmd);
1415 mptsas_dma_addr_destroy(&flsh_dma_handle, &flsh_accessp);
1416
1417 return (rvalue);
1418 }
1419
1420 static int
1421 mptsas_sasdevpage_0_cb(mptsas_t *mpt, caddr_t page_memp,
1422 ddi_acc_handle_t accessp, uint16_t iocstatus, uint32_t iocloginfo,
1423 va_list ap)
1424 {
1425 #ifndef __lock_lint
1426 _NOTE(ARGUNUSED(ap))
|
1386
1387 if (mpt->m_MPI25)
1388 mptsas_uflash25((pMpi25FWDownloadRequest)memp,
1389 mpt->m_acc_req_frame_hdl, size, type, flsh_cookie);
1390 else
1391 mptsas_uflash2((pMpi2FWDownloadRequest)memp,
1392 mpt->m_acc_req_frame_hdl, size, type, flsh_cookie);
1393
1394 /*
1395 * Start command
1396 */
1397 (void) ddi_dma_sync(mpt->m_dma_req_frame_hdl, 0, 0,
1398 DDI_DMA_SYNC_FORDEV);
1399 request_desc = (cmd->cmd_slot << 16) +
1400 MPI2_REQ_DESCRIPT_FLAGS_DEFAULT_TYPE;
1401 cmd->cmd_rfm = NULL;
1402 MPTSAS_START_CMD(mpt, request_desc);
1403
1404 rvalue = 0;
1405 (void) cv_reltimedwait(&mpt->m_fw_cv, &mpt->m_mutex,
1406 drv_sectohz(60), TR_CLOCK_TICK);
1407 if (!(cmd->cmd_flags & CFLAG_FINISHED)) {
1408 mpt->m_softstate &= ~MPTSAS_SS_MSG_UNIT_RESET;
1409 if ((mptsas_restart_ioc(mpt)) == DDI_FAILURE) {
1410 mptsas_log(mpt, CE_WARN, "mptsas_restart_ioc failed");
1411 }
1412 rvalue = -1;
1413 }
1414 mptsas_remove_cmd(mpt, cmd);
1415 mptsas_dma_addr_destroy(&flsh_dma_handle, &flsh_accessp);
1416
1417 return (rvalue);
1418 }
1419
1420 static int
1421 mptsas_sasdevpage_0_cb(mptsas_t *mpt, caddr_t page_memp,
1422 ddi_acc_handle_t accessp, uint16_t iocstatus, uint32_t iocloginfo,
1423 va_list ap)
1424 {
1425 #ifndef __lock_lint
1426 _NOTE(ARGUNUSED(ap))
|