• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/scsi/bfa/

Lines Matching defs:ioc

33 static bfa_status_t bfa_ioc_ct_pll_init(struct bfa_ioc_s *ioc);
34 static bfa_boolean_t bfa_ioc_ct_firmware_lock(struct bfa_ioc_s *ioc);
35 static void bfa_ioc_ct_firmware_unlock(struct bfa_ioc_s *ioc);
36 static void bfa_ioc_ct_reg_init(struct bfa_ioc_s *ioc);
37 static void bfa_ioc_ct_map_port(struct bfa_ioc_s *ioc);
38 static void bfa_ioc_ct_isr_mode_set(struct bfa_ioc_s *ioc, bfa_boolean_t msix);
39 static void bfa_ioc_ct_notify_hbfail(struct bfa_ioc_s *ioc);
40 static void bfa_ioc_ct_ownership_reset(struct bfa_ioc_s *ioc);
48 bfa_ioc_set_ct_hwif(struct bfa_ioc_s *ioc)
59 ioc->ioc_hwif = &hwif_ct;
66 bfa_ioc_ct_firmware_lock(struct bfa_ioc_s *ioc)
75 if (!ioc->cna)
81 if (bfi_image_get_size(BFA_IOC_FWIMG_TYPE(ioc)) < BFA_IOC_FWIMG_MINSZ)
84 bfa_ioc_sem_get(ioc->ioc_regs.ioc_usage_sem_reg);
85 usecnt = bfa_reg_read(ioc->ioc_regs.ioc_usage_reg);
91 bfa_reg_write(ioc->ioc_regs.ioc_usage_reg, 1);
92 bfa_ioc_sem_release(ioc->ioc_regs.ioc_usage_sem_reg);
93 bfa_trc(ioc, usecnt);
97 ioc_fwstate = bfa_reg_read(ioc->ioc_regs.ioc_fwstate);
98 bfa_trc(ioc, ioc_fwstate);
108 bfa_ioc_fwver_get(ioc, &fwhdr);
109 if (!bfa_ioc_fwver_cmp(ioc, &fwhdr)) {
110 bfa_ioc_sem_release(ioc->ioc_regs.ioc_usage_sem_reg);
111 bfa_trc(ioc, usecnt);
119 bfa_reg_write(ioc->ioc_regs.ioc_usage_reg, usecnt);
120 bfa_ioc_sem_release(ioc->ioc_regs.ioc_usage_sem_reg);
121 bfa_trc(ioc, usecnt);
126 bfa_ioc_ct_firmware_unlock(struct bfa_ioc_s *ioc)
133 if (!ioc->cna)
139 if (bfi_image_get_size(BFA_IOC_FWIMG_TYPE(ioc)) < BFA_IOC_FWIMG_MINSZ)
145 bfa_ioc_sem_get(ioc->ioc_regs.ioc_usage_sem_reg);
146 usecnt = bfa_reg_read(ioc->ioc_regs.ioc_usage_reg);
150 bfa_reg_write(ioc->ioc_regs.ioc_usage_reg, usecnt);
151 bfa_trc(ioc, usecnt);
153 bfa_ioc_sem_release(ioc->ioc_regs.ioc_usage_sem_reg);
160 bfa_ioc_ct_notify_hbfail(struct bfa_ioc_s *ioc)
162 if (ioc->cna) {
163 bfa_reg_write(ioc->ioc_regs.ll_halt, __FW_INIT_HALT_P);
165 bfa_reg_read(ioc->ioc_regs.ll_halt);
167 bfa_reg_write(ioc->ioc_regs.err_set, __PSS_ERR_STATUS_SET);
168 bfa_reg_read(ioc->ioc_regs.err_set);
203 bfa_ioc_ct_reg_init(struct bfa_ioc_s *ioc)
206 int pcifn = bfa_ioc_pcifn(ioc);
208 rb = bfa_ioc_bar0(ioc);
210 ioc->ioc_regs.hfn_mbox = rb + iocreg_fnreg[pcifn].hfn_mbox;
211 ioc->ioc_regs.lpu_mbox = rb + iocreg_fnreg[pcifn].lpu_mbox;
212 ioc->ioc_regs.host_page_num_fn = rb + iocreg_fnreg[pcifn].hfn_pgn;
214 if (ioc->port_id == 0) {
215 ioc->ioc_regs.heartbeat = rb + BFA_IOC0_HBEAT_REG;
216 ioc->ioc_regs.ioc_fwstate = rb + BFA_IOC0_STATE_REG;
217 ioc->ioc_regs.hfn_mbox_cmd = rb + iocreg_mbcmd_p0[pcifn].hfn;
218 ioc->ioc_regs.lpu_mbox_cmd = rb + iocreg_mbcmd_p0[pcifn].lpu;
219 ioc->ioc_regs.ll_halt = rb + FW_INIT_HALT_P0;
221 ioc->ioc_regs.heartbeat = (rb + BFA_IOC1_HBEAT_REG);
222 ioc->ioc_regs.ioc_fwstate = (rb + BFA_IOC1_STATE_REG);
223 ioc->ioc_regs.hfn_mbox_cmd = rb + iocreg_mbcmd_p1[pcifn].hfn;
224 ioc->ioc_regs.lpu_mbox_cmd = rb + iocreg_mbcmd_p1[pcifn].lpu;
225 ioc->ioc_regs.ll_halt = rb + FW_INIT_HALT_P1;
231 ioc->ioc_regs.pss_ctl_reg = (rb + PSS_CTL_REG);
232 ioc->ioc_regs.pss_err_status_reg = (rb + PSS_ERR_STATUS_REG);
233 ioc->ioc_regs.app_pll_fast_ctl_reg = (rb + APP_PLL_425_CTL_REG);
234 ioc->ioc_regs.app_pll_slow_ctl_reg = (rb + APP_PLL_312_CTL_REG);
239 ioc->ioc_regs.ioc_sem_reg = (rb + HOST_SEM0_REG);
240 ioc->ioc_regs.ioc_usage_sem_reg = (rb + HOST_SEM1_REG);
241 ioc->ioc_regs.ioc_init_sem_reg = (rb + HOST_SEM2_REG);
242 ioc->ioc_regs.ioc_usage_reg = (rb + BFA_FW_USE_COUNT);
247 ioc->ioc_regs.smem_page_start = (rb + PSS_SMEM_PAGE_START);
248 ioc->ioc_regs.smem_pg0 = BFI_IOC_SMEM_PG0_CT;
253 ioc->ioc_regs.err_set = (rb + ERR_SET_REG);
262 bfa_ioc_ct_map_port(struct bfa_ioc_s *ioc)
264 bfa_os_addr_t rb = ioc->pcidev.pci_bar_kva;
271 r32 >>= FNC_PERS_FN_SHIFT(bfa_ioc_pcifn(ioc));
272 ioc->port_id = (r32 & __F0_PORT_MAP_MK) >> __F0_PORT_MAP_SH;
274 bfa_trc(ioc, bfa_ioc_pcifn(ioc));
275 bfa_trc(ioc, ioc->port_id);
282 bfa_ioc_ct_isr_mode_set(struct bfa_ioc_s *ioc, bfa_boolean_t msix)
284 bfa_os_addr_t rb = ioc->pcidev.pci_bar_kva;
288 bfa_trc(ioc, r32);
290 mode = (r32 >> FNC_PERS_FN_SHIFT(bfa_ioc_pcifn(ioc))) &
304 r32 &= ~(__F0_INTX_STATUS << FNC_PERS_FN_SHIFT(bfa_ioc_pcifn(ioc)));
305 r32 |= (mode << FNC_PERS_FN_SHIFT(bfa_ioc_pcifn(ioc)));
306 bfa_trc(ioc, r32);
312 bfa_ioc_ct_pll_init(struct bfa_ioc_s *ioc)
314 bfa_os_addr_t rb = ioc->pcidev.pci_bar_kva;
320 bfa_ioc_sem_get(ioc->ioc_regs.ioc_init_sem_reg);
334 if (ioc->fcmode) {
341 ioc->pllinit = BFA_TRUE;
357 bfa_reg_write(ioc->ioc_regs.app_pll_slow_ctl_reg, pll_sclk |
359 bfa_reg_write(ioc->ioc_regs.app_pll_fast_ctl_reg, pll_fclk |
361 bfa_reg_write(ioc->ioc_regs.app_pll_slow_ctl_reg, pll_sclk |
363 bfa_reg_write(ioc->ioc_regs.app_pll_fast_ctl_reg, pll_fclk |
374 bfa_reg_write(ioc->ioc_regs.app_pll_slow_ctl_reg, pll_sclk |
376 bfa_reg_write(ioc->ioc_regs.app_pll_fast_ctl_reg, pll_fclk |
383 if (ioc->cna) {
393 if (ioc->cna) {
401 bfa_trc(ioc, r32);
411 bfa_ioc_sem_release(ioc->ioc_regs.ioc_init_sem_reg);
420 bfa_ioc_ct_ownership_reset(struct bfa_ioc_s *ioc)
423 if (ioc->cna) {
424 bfa_ioc_sem_get(ioc->ioc_regs.ioc_usage_sem_reg);
425 bfa_reg_write(ioc->ioc_regs.ioc_usage_reg, 0);
426 bfa_ioc_sem_release(ioc->ioc_regs.ioc_usage_sem_reg);
434 bfa_reg_read(ioc->ioc_regs.ioc_sem_reg);
435 bfa_ioc_hw_sem_release(ioc);