108 lines
2.9 KiB
C
108 lines
2.9 KiB
C
/*
|
|
* 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;
|
|
}
|