| /* |
| * Copyright (c) 2005-2010 Brocade Communications Systems, Inc. |
| * All rights reserved |
| * www.brocade.com |
| * |
| * Linux driver for Brocade Fibre Channel Host Bus Adapter. |
| * |
| * This program is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License (GPL) Version 2 as |
| * published by the Free Software Foundation |
| * |
| * This program is distributed in the hope that it will be useful, but |
| * WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * General Public License for more details. |
| */ |
| |
| #include "bfa_modules.h" |
| |
| /* |
| * BFA module list terminated by NULL |
| */ |
| struct bfa_module_s *hal_mods[] = { |
| &hal_mod_sgpg, |
| &hal_mod_fcport, |
| &hal_mod_fcxp, |
| &hal_mod_lps, |
| &hal_mod_uf, |
| &hal_mod_rport, |
| &hal_mod_fcpim, |
| NULL |
| }; |
| |
| /* |
| * Message handlers for various modules. |
| */ |
| bfa_isr_func_t bfa_isrs[BFI_MC_MAX] = { |
| bfa_isr_unhandled, /* NONE */ |
| bfa_isr_unhandled, /* BFI_MC_IOC */ |
| bfa_isr_unhandled, /* BFI_MC_DIAG */ |
| bfa_isr_unhandled, /* BFI_MC_FLASH */ |
| bfa_isr_unhandled, /* BFI_MC_CEE */ |
| bfa_fcport_isr, /* BFI_MC_FCPORT */ |
| bfa_isr_unhandled, /* BFI_MC_IOCFC */ |
| bfa_isr_unhandled, /* BFI_MC_LL */ |
| bfa_uf_isr, /* BFI_MC_UF */ |
| bfa_fcxp_isr, /* BFI_MC_FCXP */ |
| bfa_lps_isr, /* BFI_MC_LPS */ |
| bfa_rport_isr, /* BFI_MC_RPORT */ |
| bfa_itnim_isr, /* BFI_MC_ITNIM */ |
| bfa_isr_unhandled, /* BFI_MC_IOIM_READ */ |
| bfa_isr_unhandled, /* BFI_MC_IOIM_WRITE */ |
| bfa_isr_unhandled, /* BFI_MC_IOIM_IO */ |
| bfa_ioim_isr, /* BFI_MC_IOIM */ |
| bfa_ioim_good_comp_isr, /* BFI_MC_IOIM_IOCOM */ |
| bfa_tskim_isr, /* BFI_MC_TSKIM */ |
| bfa_isr_unhandled, /* BFI_MC_SBOOT */ |
| bfa_isr_unhandled, /* BFI_MC_IPFC */ |
| bfa_isr_unhandled, /* BFI_MC_PORT */ |
| bfa_isr_unhandled, /* --------- */ |
| bfa_isr_unhandled, /* --------- */ |
| bfa_isr_unhandled, /* --------- */ |
| bfa_isr_unhandled, /* --------- */ |
| bfa_isr_unhandled, /* --------- */ |
| bfa_isr_unhandled, /* --------- */ |
| bfa_isr_unhandled, /* --------- */ |
| bfa_isr_unhandled, /* --------- */ |
| bfa_isr_unhandled, /* --------- */ |
| bfa_isr_unhandled, /* --------- */ |
| }; |
| |
| |
| /* |
| * Message handlers for mailbox command classes |
| */ |
| bfa_ioc_mbox_mcfunc_t bfa_mbox_isrs[BFI_MC_MAX] = { |
| NULL, |
| NULL, /* BFI_MC_IOC */ |
| NULL, /* BFI_MC_DIAG */ |
| NULL, /* BFI_MC_FLASH */ |
| NULL, /* BFI_MC_CEE */ |
| NULL, /* BFI_MC_PORT */ |
| bfa_iocfc_isr, /* BFI_MC_IOCFC */ |
| NULL, |
| }; |
| |
| |
| |
| void |
| bfa_com_port_attach(struct bfa_s *bfa, struct bfa_meminfo_s *mi) |
| { |
| struct bfa_port_s *port = &bfa->modules.port; |
| u32 dm_len; |
| u8 *dm_kva; |
| u64 dm_pa; |
| |
| dm_len = bfa_port_meminfo(); |
| dm_kva = bfa_meminfo_dma_virt(mi); |
| dm_pa = bfa_meminfo_dma_phys(mi); |
| |
| memset(port, 0, sizeof(struct bfa_port_s)); |
| bfa_port_attach(port, &bfa->ioc, bfa, bfa->trcmod); |
| bfa_port_mem_claim(port, dm_kva, dm_pa); |
| |
| bfa_meminfo_dma_virt(mi) = dm_kva + dm_len; |
| bfa_meminfo_dma_phys(mi) = dm_pa + dm_len; |
| } |