/* Awaiting h/w semaphore to continue with version check.  */
static void bfa_ioc_sm_fwcheck(struct bfa_ioc_s *ioc, enum ioc_event event)
/* Awaiting h/w semaphore to continue with version check.  */
static void bfa_ioc_sm_fwcheck(struct bfa_ioc_s *ioc, enum ioc_event event)
{
	bfa_trc(ioc, event);
	switch (event) {
	case IOC_E_SEMLOCKED:
		if (bfa_ioc_firmware_lock(ioc)) {
			ioc->retry_count = 0;
			bfa_fsm_set_state(ioc, bfa_ioc_sm_hwinit);
		} else {
			bfa_ioc_hw_sem_release(ioc);
			bfa_fsm_set_state(ioc, bfa_ioc_sm_mismatch);
		}
		break;
	case IOC_E_DISABLE:
		bfa_ioc_disable_comp(ioc);
	case IOC_E_DETACH:
		bfa_ioc_hw_sem_get_cancel(ioc);
		bfa_fsm_set_state(ioc, bfa_ioc_sm_reset);
		break;
	case IOC_E_FWREADY:
		break;
	default:
		bfa_sm_fault(ioc, event);
	}
}