|
@@ -67,6 +67,14 @@ BFA_TRC_FILE(CNA, IOC);
|
|
|
((__ioc)->ioc_hwif->ioc_sync_ack(__ioc))
|
|
|
#define bfa_ioc_sync_complete(__ioc) \
|
|
|
((__ioc)->ioc_hwif->ioc_sync_complete(__ioc))
|
|
|
+#define bfa_ioc_set_cur_ioc_fwstate(__ioc, __fwstate) \
|
|
|
+ ((__ioc)->ioc_hwif->ioc_set_fwstate(__ioc, __fwstate))
|
|
|
+#define bfa_ioc_get_cur_ioc_fwstate(__ioc) \
|
|
|
+ ((__ioc)->ioc_hwif->ioc_get_fwstate(__ioc))
|
|
|
+#define bfa_ioc_set_alt_ioc_fwstate(__ioc, __fwstate) \
|
|
|
+ ((__ioc)->ioc_hwif->ioc_set_alt_fwstate(__ioc, __fwstate))
|
|
|
+#define bfa_ioc_get_alt_ioc_fwstate(__ioc) \
|
|
|
+ ((__ioc)->ioc_hwif->ioc_get_alt_fwstate(__ioc))
|
|
|
|
|
|
#define bfa_ioc_mbox_cmd_pending(__ioc) \
|
|
|
(!list_empty(&((__ioc)->mbox_mod.cmd_q)) || \
|
|
@@ -698,7 +706,7 @@ bfa_iocpf_sm_fwcheck_entry(struct bfa_iocpf_s *iocpf)
|
|
|
}
|
|
|
|
|
|
/* h/w sem init */
|
|
|
- fwstate = readl(iocpf->ioc->ioc_regs.ioc_fwstate);
|
|
|
+ fwstate = bfa_ioc_get_cur_ioc_fwstate(iocpf->ioc);
|
|
|
if (fwstate == BFI_IOC_UNINIT) {
|
|
|
writel(1, iocpf->ioc->ioc_regs.ioc_init_sem_reg);
|
|
|
goto sem_get;
|
|
@@ -725,8 +733,8 @@ bfa_iocpf_sm_fwcheck_entry(struct bfa_iocpf_s *iocpf)
|
|
|
|
|
|
bfa_trc(iocpf->ioc, fwstate);
|
|
|
bfa_trc(iocpf->ioc, swab32(fwhdr.exec));
|
|
|
- writel(BFI_IOC_UNINIT, iocpf->ioc->ioc_regs.ioc_fwstate);
|
|
|
- writel(BFI_IOC_UNINIT, iocpf->ioc->ioc_regs.alt_ioc_fwstate);
|
|
|
+ bfa_ioc_set_cur_ioc_fwstate(iocpf->ioc, BFI_IOC_UNINIT);
|
|
|
+ bfa_ioc_set_alt_ioc_fwstate(iocpf->ioc, BFI_IOC_UNINIT);
|
|
|
|
|
|
/*
|
|
|
* Unlock the hw semaphore. Should be here only once per boot.
|
|
@@ -1037,7 +1045,7 @@ bfa_iocpf_sm_disabling(struct bfa_iocpf_s *iocpf, enum iocpf_event event)
|
|
|
*/
|
|
|
|
|
|
case IOCPF_E_TIMEOUT:
|
|
|
- writel(BFI_IOC_FAIL, ioc->ioc_regs.ioc_fwstate);
|
|
|
+ bfa_ioc_set_cur_ioc_fwstate(ioc, BFI_IOC_FAIL);
|
|
|
bfa_fsm_set_state(iocpf, bfa_iocpf_sm_disabling_sync);
|
|
|
break;
|
|
|
|
|
@@ -1138,7 +1146,7 @@ bfa_iocpf_sm_initfail_sync(struct bfa_iocpf_s *iocpf, enum iocpf_event event)
|
|
|
case IOCPF_E_SEMLOCKED:
|
|
|
bfa_ioc_notify_fail(ioc);
|
|
|
bfa_ioc_sync_leave(ioc);
|
|
|
- writel(BFI_IOC_FAIL, ioc->ioc_regs.ioc_fwstate);
|
|
|
+ bfa_ioc_set_cur_ioc_fwstate(ioc, BFI_IOC_FAIL);
|
|
|
writel(1, ioc->ioc_regs.ioc_sem_reg);
|
|
|
bfa_fsm_set_state(iocpf, bfa_iocpf_sm_initfail);
|
|
|
break;
|
|
@@ -1227,7 +1235,7 @@ bfa_iocpf_sm_fail_sync(struct bfa_iocpf_s *iocpf, enum iocpf_event event)
|
|
|
bfa_ioc_notify_fail(ioc);
|
|
|
if (!iocpf->auto_recover) {
|
|
|
bfa_ioc_sync_leave(ioc);
|
|
|
- writel(BFI_IOC_FAIL, ioc->ioc_regs.ioc_fwstate);
|
|
|
+ bfa_ioc_set_cur_ioc_fwstate(ioc, BFI_IOC_FAIL);
|
|
|
writel(1, ioc->ioc_regs.ioc_sem_reg);
|
|
|
bfa_fsm_set_state(iocpf, bfa_iocpf_sm_fail);
|
|
|
} else {
|
|
@@ -1519,7 +1527,7 @@ bfa_ioc_hwinit(struct bfa_ioc_s *ioc, bfa_boolean_t force)
|
|
|
u32 boot_type;
|
|
|
u32 boot_env;
|
|
|
|
|
|
- ioc_fwstate = readl(ioc->ioc_regs.ioc_fwstate);
|
|
|
+ ioc_fwstate = bfa_ioc_get_cur_ioc_fwstate(ioc);
|
|
|
|
|
|
if (force)
|
|
|
ioc_fwstate = BFI_IOC_UNINIT;
|
|
@@ -2006,11 +2014,11 @@ bfa_ioc_boot(struct bfa_ioc_s *ioc, u32 boot_type, u32 boot_env)
|
|
|
* Initialize IOC state of all functions on a chip reset.
|
|
|
*/
|
|
|
if (boot_type == BFI_FWBOOT_TYPE_MEMTEST) {
|
|
|
- writel(BFI_IOC_MEMTEST, ioc->ioc_regs.ioc_fwstate);
|
|
|
- writel(BFI_IOC_MEMTEST, ioc->ioc_regs.alt_ioc_fwstate);
|
|
|
+ bfa_ioc_set_cur_ioc_fwstate(ioc, BFI_IOC_MEMTEST);
|
|
|
+ bfa_ioc_set_alt_ioc_fwstate(ioc, BFI_IOC_MEMTEST);
|
|
|
} else {
|
|
|
- writel(BFI_IOC_INITING, ioc->ioc_regs.ioc_fwstate);
|
|
|
- writel(BFI_IOC_INITING, ioc->ioc_regs.alt_ioc_fwstate);
|
|
|
+ bfa_ioc_set_cur_ioc_fwstate(ioc, BFI_IOC_INITING);
|
|
|
+ bfa_ioc_set_alt_ioc_fwstate(ioc, BFI_IOC_INITING);
|
|
|
}
|
|
|
|
|
|
bfa_ioc_msgflush(ioc);
|
|
@@ -2038,7 +2046,7 @@ bfa_ioc_is_operational(struct bfa_ioc_s *ioc)
|
|
|
bfa_boolean_t
|
|
|
bfa_ioc_is_initialized(struct bfa_ioc_s *ioc)
|
|
|
{
|
|
|
- u32 r32 = readl(ioc->ioc_regs.ioc_fwstate);
|
|
|
+ u32 r32 = bfa_ioc_get_cur_ioc_fwstate(ioc);
|
|
|
|
|
|
return ((r32 != BFI_IOC_UNINIT) &&
|
|
|
(r32 != BFI_IOC_INITING) &&
|
|
@@ -2430,12 +2438,12 @@ bfa_ioc_adapter_is_disabled(struct bfa_ioc_s *ioc)
|
|
|
if (!bfa_fsm_cmp_state(ioc, bfa_ioc_sm_disabled))
|
|
|
return BFA_FALSE;
|
|
|
|
|
|
- ioc_state = readl(ioc->ioc_regs.ioc_fwstate);
|
|
|
+ ioc_state = bfa_ioc_get_cur_ioc_fwstate(ioc);
|
|
|
if (!bfa_ioc_state_disabled(ioc_state))
|
|
|
return BFA_FALSE;
|
|
|
|
|
|
if (ioc->pcidev.device_id != BFA_PCI_DEVICE_ID_FC_8G1P) {
|
|
|
- ioc_state = readl(ioc->ioc_regs.alt_ioc_fwstate);
|
|
|
+ ioc_state = bfa_ioc_get_cur_ioc_fwstate(ioc);
|
|
|
if (!bfa_ioc_state_disabled(ioc_state))
|
|
|
return BFA_FALSE;
|
|
|
}
|
|
@@ -2449,8 +2457,8 @@ bfa_ioc_adapter_is_disabled(struct bfa_ioc_s *ioc)
|
|
|
void
|
|
|
bfa_ioc_reset_fwstate(struct bfa_ioc_s *ioc)
|
|
|
{
|
|
|
- writel(BFI_IOC_UNINIT, ioc->ioc_regs.ioc_fwstate);
|
|
|
- writel(BFI_IOC_UNINIT, ioc->ioc_regs.alt_ioc_fwstate);
|
|
|
+ bfa_ioc_set_cur_ioc_fwstate(ioc, BFI_IOC_UNINIT);
|
|
|
+ bfa_ioc_set_alt_ioc_fwstate(ioc, BFI_IOC_UNINIT);
|
|
|
}
|
|
|
|
|
|
#define BFA_MFG_NAME "Brocade"
|
|
@@ -2917,7 +2925,7 @@ bfa_iocpf_sem_timeout(void *ioc_arg)
|
|
|
static void
|
|
|
bfa_ioc_poll_fwinit(struct bfa_ioc_s *ioc)
|
|
|
{
|
|
|
- u32 fwstate = readl(ioc->ioc_regs.ioc_fwstate);
|
|
|
+ u32 fwstate = bfa_ioc_get_cur_ioc_fwstate(ioc);
|
|
|
|
|
|
bfa_trc(ioc, fwstate);
|
|
|
|