Lines Matching +full:hb +full:- +full:pll +full:- +full:clock

2  * Copyright (c) 2005-2010 Brocade Communications Systems, Inc.
61 * If bios boot (flash based) -- do not increment usage count in bfa_ioc_ct_firmware_lock()
67 bfa_ioc_sem_get(ioc->ioc_regs.ioc_usage_sem_reg); in bfa_ioc_ct_firmware_lock()
68 usecnt = readl(ioc->ioc_regs.ioc_usage_reg); in bfa_ioc_ct_firmware_lock()
74 writel(1, ioc->ioc_regs.ioc_usage_reg); in bfa_ioc_ct_firmware_lock()
75 readl(ioc->ioc_regs.ioc_usage_sem_reg); in bfa_ioc_ct_firmware_lock()
76 writel(1, ioc->ioc_regs.ioc_usage_sem_reg); in bfa_ioc_ct_firmware_lock()
77 writel(0, ioc->ioc_regs.ioc_fail_sync); in bfa_ioc_ct_firmware_lock()
82 ioc_fwstate = readl(ioc->ioc_regs.ioc_fwstate); in bfa_ioc_ct_firmware_lock()
86 * Use count cannot be non-zero and chip in uninitialized state. in bfa_ioc_ct_firmware_lock()
95 readl(ioc->ioc_regs.ioc_usage_sem_reg); in bfa_ioc_ct_firmware_lock()
96 writel(1, ioc->ioc_regs.ioc_usage_sem_reg); in bfa_ioc_ct_firmware_lock()
105 writel(usecnt, ioc->ioc_regs.ioc_usage_reg); in bfa_ioc_ct_firmware_lock()
106 readl(ioc->ioc_regs.ioc_usage_sem_reg); in bfa_ioc_ct_firmware_lock()
107 writel(1, ioc->ioc_regs.ioc_usage_sem_reg); in bfa_ioc_ct_firmware_lock()
118 * If bios boot (flash based) -- do not decrement usage count in bfa_ioc_ct_firmware_unlock()
127 bfa_ioc_sem_get(ioc->ioc_regs.ioc_usage_sem_reg); in bfa_ioc_ct_firmware_unlock()
128 usecnt = readl(ioc->ioc_regs.ioc_usage_reg); in bfa_ioc_ct_firmware_unlock()
131 usecnt--; in bfa_ioc_ct_firmware_unlock()
132 writel(usecnt, ioc->ioc_regs.ioc_usage_reg); in bfa_ioc_ct_firmware_unlock()
135 readl(ioc->ioc_regs.ioc_usage_sem_reg); in bfa_ioc_ct_firmware_unlock()
136 writel(1, ioc->ioc_regs.ioc_usage_sem_reg); in bfa_ioc_ct_firmware_unlock()
140 * Notify other functions on HB failure.
146 writel(__FW_INIT_HALT_P, ioc->ioc_regs.ll_halt); in bfa_ioc_ct_notify_fail()
147 writel(__FW_INIT_HALT_P, ioc->ioc_regs.alt_ll_halt); in bfa_ioc_ct_notify_fail()
149 readl(ioc->ioc_regs.ll_halt); in bfa_ioc_ct_notify_fail()
150 readl(ioc->ioc_regs.alt_ll_halt); in bfa_ioc_ct_notify_fail()
152 writel(~0U, ioc->ioc_regs.err_set); in bfa_ioc_ct_notify_fail()
153 readl(ioc->ioc_regs.err_set); in bfa_ioc_ct_notify_fail()
168 * Host <-> LPU mailbox command/status registers - port 0
178 * Host <-> LPU mailbox command/status registers - port 1
205 ioc->ioc_regs.hfn_mbox = rb + ct_fnreg[pcifn].hfn_mbox; in bfa_ioc_ct_reg_init()
206 ioc->ioc_regs.lpu_mbox = rb + ct_fnreg[pcifn].lpu_mbox; in bfa_ioc_ct_reg_init()
207 ioc->ioc_regs.host_page_num_fn = rb + ct_fnreg[pcifn].hfn_pgn; in bfa_ioc_ct_reg_init()
209 if (ioc->port_id == 0) { in bfa_ioc_ct_reg_init()
210 ioc->ioc_regs.heartbeat = rb + BFA_IOC0_HBEAT_REG; in bfa_ioc_ct_reg_init()
211 ioc->ioc_regs.ioc_fwstate = rb + BFA_IOC0_STATE_REG; in bfa_ioc_ct_reg_init()
212 ioc->ioc_regs.alt_ioc_fwstate = rb + BFA_IOC1_STATE_REG; in bfa_ioc_ct_reg_init()
213 ioc->ioc_regs.hfn_mbox_cmd = rb + ct_p0reg[pcifn].hfn; in bfa_ioc_ct_reg_init()
214 ioc->ioc_regs.lpu_mbox_cmd = rb + ct_p0reg[pcifn].lpu; in bfa_ioc_ct_reg_init()
215 ioc->ioc_regs.ll_halt = rb + FW_INIT_HALT_P0; in bfa_ioc_ct_reg_init()
216 ioc->ioc_regs.alt_ll_halt = rb + FW_INIT_HALT_P1; in bfa_ioc_ct_reg_init()
218 ioc->ioc_regs.heartbeat = (rb + BFA_IOC1_HBEAT_REG); in bfa_ioc_ct_reg_init()
219 ioc->ioc_regs.ioc_fwstate = (rb + BFA_IOC1_STATE_REG); in bfa_ioc_ct_reg_init()
220 ioc->ioc_regs.alt_ioc_fwstate = rb + BFA_IOC0_STATE_REG; in bfa_ioc_ct_reg_init()
221 ioc->ioc_regs.hfn_mbox_cmd = rb + ct_p1reg[pcifn].hfn; in bfa_ioc_ct_reg_init()
222 ioc->ioc_regs.lpu_mbox_cmd = rb + ct_p1reg[pcifn].lpu; in bfa_ioc_ct_reg_init()
223 ioc->ioc_regs.ll_halt = rb + FW_INIT_HALT_P1; in bfa_ioc_ct_reg_init()
224 ioc->ioc_regs.alt_ll_halt = rb + FW_INIT_HALT_P0; in bfa_ioc_ct_reg_init()
230 ioc->ioc_regs.pss_ctl_reg = (rb + PSS_CTL_REG); in bfa_ioc_ct_reg_init()
231 ioc->ioc_regs.pss_err_status_reg = (rb + PSS_ERR_STATUS_REG); in bfa_ioc_ct_reg_init()
232 ioc->ioc_regs.app_pll_fast_ctl_reg = (rb + APP_PLL_LCLK_CTL_REG); in bfa_ioc_ct_reg_init()
233 ioc->ioc_regs.app_pll_slow_ctl_reg = (rb + APP_PLL_SCLK_CTL_REG); in bfa_ioc_ct_reg_init()
238 ioc->ioc_regs.ioc_sem_reg = (rb + HOST_SEM0_REG); in bfa_ioc_ct_reg_init()
239 ioc->ioc_regs.ioc_usage_sem_reg = (rb + HOST_SEM1_REG); in bfa_ioc_ct_reg_init()
240 ioc->ioc_regs.ioc_init_sem_reg = (rb + HOST_SEM2_REG); in bfa_ioc_ct_reg_init()
241 ioc->ioc_regs.ioc_usage_reg = (rb + BFA_FW_USE_COUNT); in bfa_ioc_ct_reg_init()
242 ioc->ioc_regs.ioc_fail_sync = (rb + BFA_IOC_FAIL_SYNC); in bfa_ioc_ct_reg_init()
247 ioc->ioc_regs.smem_page_start = (rb + PSS_SMEM_PAGE_START); in bfa_ioc_ct_reg_init()
248 ioc->ioc_regs.smem_pg0 = BFI_IOC_SMEM_PG0_CT; in bfa_ioc_ct_reg_init()
251 * err set reg : for notification of hb failure in fcmode in bfa_ioc_ct_reg_init()
253 ioc->ioc_regs.err_set = (rb + ERR_SET_REG); in bfa_ioc_ct_reg_init()
264 ioc->ioc_regs.hfn_mbox = rb + ct2_reg[port].hfn_mbox; in bfa_ioc_ct2_reg_init()
265 ioc->ioc_regs.lpu_mbox = rb + ct2_reg[port].lpu_mbox; in bfa_ioc_ct2_reg_init()
266 ioc->ioc_regs.host_page_num_fn = rb + ct2_reg[port].hfn_pgn; in bfa_ioc_ct2_reg_init()
267 ioc->ioc_regs.hfn_mbox_cmd = rb + ct2_reg[port].hfn; in bfa_ioc_ct2_reg_init()
268 ioc->ioc_regs.lpu_mbox_cmd = rb + ct2_reg[port].lpu; in bfa_ioc_ct2_reg_init()
269 ioc->ioc_regs.lpu_read_stat = rb + ct2_reg[port].lpu_read; in bfa_ioc_ct2_reg_init()
272 ioc->ioc_regs.heartbeat = rb + CT2_BFA_IOC0_HBEAT_REG; in bfa_ioc_ct2_reg_init()
273 ioc->ioc_regs.ioc_fwstate = rb + CT2_BFA_IOC0_STATE_REG; in bfa_ioc_ct2_reg_init()
274 ioc->ioc_regs.alt_ioc_fwstate = rb + CT2_BFA_IOC1_STATE_REG; in bfa_ioc_ct2_reg_init()
275 ioc->ioc_regs.ll_halt = rb + FW_INIT_HALT_P0; in bfa_ioc_ct2_reg_init()
276 ioc->ioc_regs.alt_ll_halt = rb + FW_INIT_HALT_P1; in bfa_ioc_ct2_reg_init()
278 ioc->ioc_regs.heartbeat = (rb + CT2_BFA_IOC1_HBEAT_REG); in bfa_ioc_ct2_reg_init()
279 ioc->ioc_regs.ioc_fwstate = (rb + CT2_BFA_IOC1_STATE_REG); in bfa_ioc_ct2_reg_init()
280 ioc->ioc_regs.alt_ioc_fwstate = rb + CT2_BFA_IOC0_STATE_REG; in bfa_ioc_ct2_reg_init()
281 ioc->ioc_regs.ll_halt = rb + FW_INIT_HALT_P1; in bfa_ioc_ct2_reg_init()
282 ioc->ioc_regs.alt_ll_halt = rb + FW_INIT_HALT_P0; in bfa_ioc_ct2_reg_init()
288 ioc->ioc_regs.pss_ctl_reg = (rb + PSS_CTL_REG); in bfa_ioc_ct2_reg_init()
289 ioc->ioc_regs.pss_err_status_reg = (rb + PSS_ERR_STATUS_REG); in bfa_ioc_ct2_reg_init()
290 ioc->ioc_regs.app_pll_fast_ctl_reg = (rb + CT2_APP_PLL_LCLK_CTL_REG); in bfa_ioc_ct2_reg_init()
291 ioc->ioc_regs.app_pll_slow_ctl_reg = (rb + CT2_APP_PLL_SCLK_CTL_REG); in bfa_ioc_ct2_reg_init()
296 ioc->ioc_regs.ioc_sem_reg = (rb + CT2_HOST_SEM0_REG); in bfa_ioc_ct2_reg_init()
297 ioc->ioc_regs.ioc_usage_sem_reg = (rb + CT2_HOST_SEM1_REG); in bfa_ioc_ct2_reg_init()
298 ioc->ioc_regs.ioc_init_sem_reg = (rb + CT2_HOST_SEM2_REG); in bfa_ioc_ct2_reg_init()
299 ioc->ioc_regs.ioc_usage_reg = (rb + CT2_BFA_FW_USE_COUNT); in bfa_ioc_ct2_reg_init()
300 ioc->ioc_regs.ioc_fail_sync = (rb + CT2_BFA_IOC_FAIL_SYNC); in bfa_ioc_ct2_reg_init()
305 ioc->ioc_regs.smem_page_start = (rb + PSS_SMEM_PAGE_START); in bfa_ioc_ct2_reg_init()
306 ioc->ioc_regs.smem_pg0 = BFI_IOC_SMEM_PG0_CT; in bfa_ioc_ct2_reg_init()
309 * err set reg : for notification of hb failure in fcmode in bfa_ioc_ct2_reg_init()
311 ioc->ioc_regs.err_set = (rb + ERR_SET_REG); in bfa_ioc_ct2_reg_init()
322 void __iomem *rb = ioc->pcidev.pci_bar_kva; in bfa_ioc_ct_map_port()
330 ioc->port_id = (r32 & __F0_PORT_MAP_MK) >> __F0_PORT_MAP_SH; in bfa_ioc_ct_map_port()
333 bfa_trc(ioc, ioc->port_id); in bfa_ioc_ct_map_port()
339 void __iomem *rb = ioc->pcidev.pci_bar_kva; in bfa_ioc_ct2_map_port()
343 ioc->port_id = ((r32 & __FC_LL_PORT_MAP__MK) >> __FC_LL_PORT_MAP__SH); in bfa_ioc_ct2_map_port()
346 bfa_trc(ioc, ioc->port_id); in bfa_ioc_ct2_map_port()
355 void __iomem *rb = ioc->pcidev.pci_bar_kva; in bfa_ioc_ct_isr_mode_set()
387 r32 = readl(ioc->ioc_regs.lpu_read_stat); in bfa_ioc_ct2_lpu_read_stat()
389 writel(1, ioc->ioc_regs.lpu_read_stat); in bfa_ioc_ct2_lpu_read_stat()
404 bfa_ioc_sem_get(ioc->ioc_regs.ioc_usage_sem_reg); in bfa_ioc_ct_ownership_reset()
405 writel(0, ioc->ioc_regs.ioc_usage_reg); in bfa_ioc_ct_ownership_reset()
406 readl(ioc->ioc_regs.ioc_usage_sem_reg); in bfa_ioc_ct_ownership_reset()
407 writel(1, ioc->ioc_regs.ioc_usage_sem_reg); in bfa_ioc_ct_ownership_reset()
415 readl(ioc->ioc_regs.ioc_sem_reg); in bfa_ioc_ct_ownership_reset()
416 writel(1, ioc->ioc_regs.ioc_sem_reg); in bfa_ioc_ct_ownership_reset()
422 uint32_t r32 = readl(ioc->ioc_regs.ioc_fail_sync); in bfa_ioc_ct_sync_start()
433 writel(0, ioc->ioc_regs.ioc_fail_sync); in bfa_ioc_ct_sync_start()
434 writel(1, ioc->ioc_regs.ioc_usage_reg); in bfa_ioc_ct_sync_start()
435 writel(BFI_IOC_UNINIT, ioc->ioc_regs.ioc_fwstate); in bfa_ioc_ct_sync_start()
436 writel(BFI_IOC_UNINIT, ioc->ioc_regs.alt_ioc_fwstate); in bfa_ioc_ct_sync_start()
449 uint32_t r32 = readl(ioc->ioc_regs.ioc_fail_sync); in bfa_ioc_ct_sync_join()
452 writel((r32 | sync_pos), ioc->ioc_regs.ioc_fail_sync); in bfa_ioc_ct_sync_join()
458 uint32_t r32 = readl(ioc->ioc_regs.ioc_fail_sync); in bfa_ioc_ct_sync_leave()
462 writel((r32 & ~sync_msk), ioc->ioc_regs.ioc_fail_sync); in bfa_ioc_ct_sync_leave()
468 uint32_t r32 = readl(ioc->ioc_regs.ioc_fail_sync); in bfa_ioc_ct_sync_ack()
471 ioc->ioc_regs.ioc_fail_sync); in bfa_ioc_ct_sync_ack()
477 uint32_t r32 = readl(ioc->ioc_regs.ioc_fail_sync); in bfa_ioc_ct_sync_complete()
498 ioc->ioc_regs.ioc_fail_sync); in bfa_ioc_ct_sync_complete()
499 writel(BFI_IOC_FAIL, ioc->ioc_regs.ioc_fwstate); in bfa_ioc_ct_sync_complete()
500 writel(BFI_IOC_FAIL, ioc->ioc_regs.alt_ioc_fwstate); in bfa_ioc_ct_sync_complete()
510 writel((r32 | sync_ackd), ioc->ioc_regs.ioc_fail_sync); in bfa_ioc_ct_sync_complete()
521 hwif->ioc_firmware_lock = bfa_ioc_ct_firmware_lock; in bfa_ioc_set_ctx_hwif()
522 hwif->ioc_firmware_unlock = bfa_ioc_ct_firmware_unlock; in bfa_ioc_set_ctx_hwif()
523 hwif->ioc_notify_fail = bfa_ioc_ct_notify_fail; in bfa_ioc_set_ctx_hwif()
524 hwif->ioc_ownership_reset = bfa_ioc_ct_ownership_reset; in bfa_ioc_set_ctx_hwif()
525 hwif->ioc_sync_start = bfa_ioc_ct_sync_start; in bfa_ioc_set_ctx_hwif()
526 hwif->ioc_sync_join = bfa_ioc_ct_sync_join; in bfa_ioc_set_ctx_hwif()
527 hwif->ioc_sync_leave = bfa_ioc_ct_sync_leave; in bfa_ioc_set_ctx_hwif()
528 hwif->ioc_sync_ack = bfa_ioc_ct_sync_ack; in bfa_ioc_set_ctx_hwif()
529 hwif->ioc_sync_complete = bfa_ioc_ct_sync_complete; in bfa_ioc_set_ctx_hwif()
544 ioc->ioc_hwif = &hwif_ct; in bfa_ioc_set_ct_hwif()
560 ioc->ioc_hwif = &hwif_ct2; in bfa_ioc_set_ct2_hwif()
564 * Workaround for MSI-X resource allocation for catapult-2 with no asic block
576 void __iomem *rb = ioc->pcidev.pci_bar_kva; in bfa_ioc_ct2_poweron()
586 writel(__MSIX_VT_NUMVT_(HOSTFN_MSIX_DEFAULT - 1) | in bfa_ioc_ct2_poweron()
665 * put s_clk PLL and PLL FSM in reset in bfa_ioc_ct2_sclk_init()
674 * Ignore mode and program for the max clock (which is FC16) in bfa_ioc_ct2_sclk_init()
675 * Firmware/NFC will do the PLL init appropiately in bfa_ioc_ct2_sclk_init()
682 * while doing PLL init dont clock gate ethernet subsystem in bfa_ioc_ct2_sclk_init()
710 * put l_clk PLL and PLL FSM in reset in bfa_ioc_ct2_lclk_init()
796 * Initialize PLL if not already done by NFC in bfa_ioc_ct2_pll_init()