int pqisrc_force_sis(pqisrc_softstate_t *softs) { int ret = PQI_STATUS_SUCCESS; if (SIS_IS_KERNEL_PANIC(softs)) { DBG_INFO("Controller FW is not runnning"); return PQI_STATUS_FAILURE; } if (PQI_GET_CTRL_MODE(softs) == CTRL_SIS_MODE) { return ret; } if (SIS_IS_KERNEL_UP(softs)) { PQI_SAVE_CTRL_MODE(softs, CTRL_SIS_MODE); return ret; } /* Disable interrupts ? */ sis_disable_msix(softs); /* reset pqi, this will delete queues */ ret = pqi_reset(softs); if (ret) { return ret; } /* Re enable SIS */ ret = pqisrc_reenable_sis(softs); if (ret) { return ret; } PQI_SAVE_CTRL_MODE(softs, CTRL_SIS_MODE); return ret; }
void sis_disable_interrupt(pqisrc_softstate_t *softs) { DBG_FUNC("IN"); switch(softs->intr_type) { case INTR_TYPE_FIXED: pqisrc_configure_legacy_intx(softs,false); sis_disable_intx(softs); break; case INTR_TYPE_MSI: case INTR_TYPE_MSIX: sis_disable_msix(softs); break; default: DBG_ERR("Inerrupt mode none!\n"); break; } DBG_FUNC("OUT"); }