Lines Matching refs:ioc

30 static bfa_boolean_t bfa_ioc_cb_firmware_lock(struct bfa_ioc_s *ioc);
31 static void bfa_ioc_cb_firmware_unlock(struct bfa_ioc_s *ioc);
32 static void bfa_ioc_cb_reg_init(struct bfa_ioc_s *ioc);
33 static void bfa_ioc_cb_map_port(struct bfa_ioc_s *ioc);
34 static void bfa_ioc_cb_isr_mode_set(struct bfa_ioc_s *ioc, bfa_boolean_t msix);
35 static void bfa_ioc_cb_notify_fail(struct bfa_ioc_s *ioc);
36 static void bfa_ioc_cb_ownership_reset(struct bfa_ioc_s *ioc);
37 static bfa_boolean_t bfa_ioc_cb_sync_start(struct bfa_ioc_s *ioc);
38 static void bfa_ioc_cb_sync_join(struct bfa_ioc_s *ioc);
39 static void bfa_ioc_cb_sync_leave(struct bfa_ioc_s *ioc);
40 static void bfa_ioc_cb_sync_ack(struct bfa_ioc_s *ioc);
41 static bfa_boolean_t bfa_ioc_cb_sync_complete(struct bfa_ioc_s *ioc);
43 struct bfa_ioc_s *ioc, enum bfi_ioc_state fwstate);
44 static enum bfi_ioc_state bfa_ioc_cb_get_cur_ioc_fwstate(struct bfa_ioc_s *ioc);
46 struct bfa_ioc_s *ioc, enum bfi_ioc_state fwstate);
47 static enum bfi_ioc_state bfa_ioc_cb_get_alt_ioc_fwstate(struct bfa_ioc_s *ioc);
55 bfa_ioc_set_cb_hwif(struct bfa_ioc_s *ioc) in bfa_ioc_set_cb_hwif() argument
75 ioc->ioc_hwif = &hwif_cb; in bfa_ioc_set_cb_hwif()
82 bfa_ioc_cb_firmware_lock(struct bfa_ioc_s *ioc) in bfa_ioc_cb_firmware_lock() argument
87 cur_fwstate = bfa_ioc_cb_get_cur_ioc_fwstate(ioc); in bfa_ioc_cb_firmware_lock()
88 bfa_trc(ioc, cur_fwstate); in bfa_ioc_cb_firmware_lock()
89 alt_fwstate = bfa_ioc_cb_get_alt_ioc_fwstate(ioc); in bfa_ioc_cb_firmware_lock()
90 bfa_trc(ioc, alt_fwstate); in bfa_ioc_cb_firmware_lock()
100 bfa_ioc_fwver_get(ioc, &fwhdr); in bfa_ioc_cb_firmware_lock()
101 if (!bfa_ioc_fwver_cmp(ioc, &fwhdr) && in bfa_ioc_cb_firmware_lock()
103 bfa_trc(ioc, alt_fwstate); in bfa_ioc_cb_firmware_lock()
111 bfa_ioc_cb_firmware_unlock(struct bfa_ioc_s *ioc) in bfa_ioc_cb_firmware_unlock() argument
119 bfa_ioc_cb_notify_fail(struct bfa_ioc_s *ioc) in bfa_ioc_cb_notify_fail() argument
121 writel(~0U, ioc->ioc_regs.err_set); in bfa_ioc_cb_notify_fail()
122 readl(ioc->ioc_regs.err_set); in bfa_ioc_cb_notify_fail()
143 bfa_ioc_cb_reg_init(struct bfa_ioc_s *ioc) in bfa_ioc_cb_reg_init() argument
146 int pcifn = bfa_ioc_pcifn(ioc); in bfa_ioc_cb_reg_init()
148 rb = bfa_ioc_bar0(ioc); in bfa_ioc_cb_reg_init()
150 ioc->ioc_regs.hfn_mbox = rb + iocreg_fnreg[pcifn].hfn_mbox; in bfa_ioc_cb_reg_init()
151 ioc->ioc_regs.lpu_mbox = rb + iocreg_fnreg[pcifn].lpu_mbox; in bfa_ioc_cb_reg_init()
152 ioc->ioc_regs.host_page_num_fn = rb + iocreg_fnreg[pcifn].hfn_pgn; in bfa_ioc_cb_reg_init()
154 if (ioc->port_id == 0) { in bfa_ioc_cb_reg_init()
155 ioc->ioc_regs.heartbeat = rb + BFA_IOC0_HBEAT_REG; in bfa_ioc_cb_reg_init()
156 ioc->ioc_regs.ioc_fwstate = rb + BFA_IOC0_STATE_REG; in bfa_ioc_cb_reg_init()
157 ioc->ioc_regs.alt_ioc_fwstate = rb + BFA_IOC1_STATE_REG; in bfa_ioc_cb_reg_init()
159 ioc->ioc_regs.heartbeat = (rb + BFA_IOC1_HBEAT_REG); in bfa_ioc_cb_reg_init()
160 ioc->ioc_regs.ioc_fwstate = (rb + BFA_IOC1_STATE_REG); in bfa_ioc_cb_reg_init()
161 ioc->ioc_regs.alt_ioc_fwstate = (rb + BFA_IOC0_STATE_REG); in bfa_ioc_cb_reg_init()
167 ioc->ioc_regs.hfn_mbox_cmd = rb + iocreg_mbcmd[pcifn].hfn; in bfa_ioc_cb_reg_init()
168 ioc->ioc_regs.lpu_mbox_cmd = rb + iocreg_mbcmd[pcifn].lpu; in bfa_ioc_cb_reg_init()
173 ioc->ioc_regs.pss_ctl_reg = (rb + PSS_CTL_REG); in bfa_ioc_cb_reg_init()
174 ioc->ioc_regs.pss_err_status_reg = (rb + PSS_ERR_STATUS_REG); in bfa_ioc_cb_reg_init()
175 ioc->ioc_regs.app_pll_fast_ctl_reg = (rb + APP_PLL_LCLK_CTL_REG); in bfa_ioc_cb_reg_init()
176 ioc->ioc_regs.app_pll_slow_ctl_reg = (rb + APP_PLL_SCLK_CTL_REG); in bfa_ioc_cb_reg_init()
181 ioc->ioc_regs.ioc_sem_reg = (rb + HOST_SEM0_REG); in bfa_ioc_cb_reg_init()
182 ioc->ioc_regs.ioc_init_sem_reg = (rb + HOST_SEM2_REG); in bfa_ioc_cb_reg_init()
187 ioc->ioc_regs.smem_page_start = (rb + PSS_SMEM_PAGE_START); in bfa_ioc_cb_reg_init()
188 ioc->ioc_regs.smem_pg0 = BFI_IOC_SMEM_PG0_CB; in bfa_ioc_cb_reg_init()
193 ioc->ioc_regs.err_set = (rb + ERR_SET_REG); in bfa_ioc_cb_reg_init()
201 bfa_ioc_cb_map_port(struct bfa_ioc_s *ioc) in bfa_ioc_cb_map_port() argument
206 ioc->port_id = bfa_ioc_pcifn(ioc); in bfa_ioc_cb_map_port()
208 bfa_trc(ioc, ioc->port_id); in bfa_ioc_cb_map_port()
215 bfa_ioc_cb_isr_mode_set(struct bfa_ioc_s *ioc, bfa_boolean_t msix) in bfa_ioc_cb_isr_mode_set() argument
223 bfa_ioc_cb_sync_start(struct bfa_ioc_s *ioc) in bfa_ioc_cb_sync_start() argument
225 u32 ioc_fwstate = readl(ioc->ioc_regs.ioc_fwstate); in bfa_ioc_cb_sync_start()
234 writel(BFI_IOC_UNINIT, ioc->ioc_regs.ioc_fwstate); in bfa_ioc_cb_sync_start()
235 writel(BFI_IOC_UNINIT, ioc->ioc_regs.alt_ioc_fwstate); in bfa_ioc_cb_sync_start()
239 return bfa_ioc_cb_sync_complete(ioc); in bfa_ioc_cb_sync_start()
246 bfa_ioc_cb_ownership_reset(struct bfa_ioc_s *ioc) in bfa_ioc_cb_ownership_reset() argument
254 readl(ioc->ioc_regs.ioc_sem_reg); in bfa_ioc_cb_ownership_reset()
255 writel(1, ioc->ioc_regs.ioc_sem_reg); in bfa_ioc_cb_ownership_reset()
262 bfa_ioc_cb_sync_join(struct bfa_ioc_s *ioc) in bfa_ioc_cb_sync_join() argument
264 u32 r32 = readl(ioc->ioc_regs.ioc_fwstate); in bfa_ioc_cb_sync_join()
265 u32 join_pos = bfa_ioc_cb_join_pos(ioc); in bfa_ioc_cb_sync_join()
267 writel((r32 | join_pos), ioc->ioc_regs.ioc_fwstate); in bfa_ioc_cb_sync_join()
271 bfa_ioc_cb_sync_leave(struct bfa_ioc_s *ioc) in bfa_ioc_cb_sync_leave() argument
273 u32 r32 = readl(ioc->ioc_regs.ioc_fwstate); in bfa_ioc_cb_sync_leave()
274 u32 join_pos = bfa_ioc_cb_join_pos(ioc); in bfa_ioc_cb_sync_leave()
276 writel((r32 & ~join_pos), ioc->ioc_regs.ioc_fwstate); in bfa_ioc_cb_sync_leave()
280 bfa_ioc_cb_set_cur_ioc_fwstate(struct bfa_ioc_s *ioc, in bfa_ioc_cb_set_cur_ioc_fwstate() argument
283 u32 r32 = readl(ioc->ioc_regs.ioc_fwstate); in bfa_ioc_cb_set_cur_ioc_fwstate()
286 ioc->ioc_regs.ioc_fwstate); in bfa_ioc_cb_set_cur_ioc_fwstate()
290 bfa_ioc_cb_get_cur_ioc_fwstate(struct bfa_ioc_s *ioc) in bfa_ioc_cb_get_cur_ioc_fwstate() argument
292 return (enum bfi_ioc_state)(readl(ioc->ioc_regs.ioc_fwstate) & in bfa_ioc_cb_get_cur_ioc_fwstate()
297 bfa_ioc_cb_set_alt_ioc_fwstate(struct bfa_ioc_s *ioc, in bfa_ioc_cb_set_alt_ioc_fwstate() argument
300 u32 r32 = readl(ioc->ioc_regs.alt_ioc_fwstate); in bfa_ioc_cb_set_alt_ioc_fwstate()
303 ioc->ioc_regs.alt_ioc_fwstate); in bfa_ioc_cb_set_alt_ioc_fwstate()
307 bfa_ioc_cb_get_alt_ioc_fwstate(struct bfa_ioc_s *ioc) in bfa_ioc_cb_get_alt_ioc_fwstate() argument
309 return (enum bfi_ioc_state)(readl(ioc->ioc_regs.alt_ioc_fwstate) & in bfa_ioc_cb_get_alt_ioc_fwstate()
314 bfa_ioc_cb_sync_ack(struct bfa_ioc_s *ioc) in bfa_ioc_cb_sync_ack() argument
316 bfa_ioc_cb_set_cur_ioc_fwstate(ioc, BFI_IOC_FAIL); in bfa_ioc_cb_sync_ack()
320 bfa_ioc_cb_sync_complete(struct bfa_ioc_s *ioc) in bfa_ioc_cb_sync_complete() argument
323 fwstate = bfa_ioc_cb_get_cur_ioc_fwstate(ioc); in bfa_ioc_cb_sync_complete()
351 alt_fwstate = bfa_ioc_cb_get_alt_ioc_fwstate(ioc); in bfa_ioc_cb_sync_complete()