1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (c) 2005-2014 Brocade Communications Systems, Inc. 4*4882a593Smuzhiyun * Copyright (c) 2014- QLogic Corporation. 5*4882a593Smuzhiyun * All rights reserved 6*4882a593Smuzhiyun * www.qlogic.com 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * Linux driver for QLogic BR-series Fibre Channel Host Bus Adapter. 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun /* 12*4882a593Smuzhiyun * bfa_modules.h BFA modules 13*4882a593Smuzhiyun */ 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun #ifndef __BFA_MODULES_H__ 16*4882a593Smuzhiyun #define __BFA_MODULES_H__ 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun #include "bfa_cs.h" 19*4882a593Smuzhiyun #include "bfa.h" 20*4882a593Smuzhiyun #include "bfa_svc.h" 21*4882a593Smuzhiyun #include "bfa_fcpim.h" 22*4882a593Smuzhiyun #include "bfa_port.h" 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun struct bfa_modules_s { 25*4882a593Smuzhiyun struct bfa_fcdiag_s fcdiag; /* fcdiag module */ 26*4882a593Smuzhiyun struct bfa_fcport_s fcport; /* fc port module */ 27*4882a593Smuzhiyun struct bfa_fcxp_mod_s fcxp_mod; /* fcxp module */ 28*4882a593Smuzhiyun struct bfa_lps_mod_s lps_mod; /* fcxp module */ 29*4882a593Smuzhiyun struct bfa_uf_mod_s uf_mod; /* unsolicited frame module */ 30*4882a593Smuzhiyun struct bfa_rport_mod_s rport_mod; /* remote port module */ 31*4882a593Smuzhiyun struct bfa_fcp_mod_s fcp_mod; /* FCP initiator module */ 32*4882a593Smuzhiyun struct bfa_sgpg_mod_s sgpg_mod; /* SG page module */ 33*4882a593Smuzhiyun struct bfa_port_s port; /* Physical port module */ 34*4882a593Smuzhiyun struct bfa_ablk_s ablk; /* ASIC block config module */ 35*4882a593Smuzhiyun struct bfa_cee_s cee; /* CEE Module */ 36*4882a593Smuzhiyun struct bfa_sfp_s sfp; /* SFP module */ 37*4882a593Smuzhiyun struct bfa_flash_s flash; /* flash module */ 38*4882a593Smuzhiyun struct bfa_diag_s diag_mod; /* diagnostics module */ 39*4882a593Smuzhiyun struct bfa_phy_s phy; /* phy module */ 40*4882a593Smuzhiyun struct bfa_dconf_mod_s dconf_mod; /* DCONF common module */ 41*4882a593Smuzhiyun struct bfa_fru_s fru; /* fru module */ 42*4882a593Smuzhiyun }; 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun /* 45*4882a593Smuzhiyun * !!! Only append to the enums defined here to avoid any versioning 46*4882a593Smuzhiyun * !!! needed between trace utility and driver version 47*4882a593Smuzhiyun */ 48*4882a593Smuzhiyun enum { 49*4882a593Smuzhiyun BFA_TRC_HAL_CORE = 1, 50*4882a593Smuzhiyun BFA_TRC_HAL_FCXP = 2, 51*4882a593Smuzhiyun BFA_TRC_HAL_FCPIM = 3, 52*4882a593Smuzhiyun BFA_TRC_HAL_IOCFC_CT = 4, 53*4882a593Smuzhiyun BFA_TRC_HAL_IOCFC_CB = 5, 54*4882a593Smuzhiyun }; 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun #define BFA_CACHELINE_SZ (256) 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun struct bfa_s { 59*4882a593Smuzhiyun void *bfad; /* BFA driver instance */ 60*4882a593Smuzhiyun struct bfa_plog_s *plog; /* portlog buffer */ 61*4882a593Smuzhiyun struct bfa_trc_mod_s *trcmod; /* driver tracing */ 62*4882a593Smuzhiyun struct bfa_ioc_s ioc; /* IOC module */ 63*4882a593Smuzhiyun struct bfa_iocfc_s iocfc; /* IOCFC module */ 64*4882a593Smuzhiyun struct bfa_timer_mod_s timer_mod; /* timer module */ 65*4882a593Smuzhiyun struct bfa_modules_s modules; /* BFA modules */ 66*4882a593Smuzhiyun struct list_head comp_q; /* pending completions */ 67*4882a593Smuzhiyun bfa_boolean_t queue_process; /* queue processing enabled */ 68*4882a593Smuzhiyun struct list_head reqq_waitq[BFI_IOC_MAX_CQS]; 69*4882a593Smuzhiyun bfa_boolean_t fcs; /* FCS is attached to BFA */ 70*4882a593Smuzhiyun struct bfa_msix_s msix; 71*4882a593Smuzhiyun int bfa_aen_seq; 72*4882a593Smuzhiyun bfa_boolean_t intr_enabled; /* Status of interrupts */ 73*4882a593Smuzhiyun }; 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun extern bfa_boolean_t bfa_auto_recover; 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun void bfa_dconf_attach(struct bfa_s *, void *, struct bfa_iocfc_cfg_s *); 78*4882a593Smuzhiyun void bfa_dconf_meminfo(struct bfa_iocfc_cfg_s *, struct bfa_meminfo_s *, 79*4882a593Smuzhiyun struct bfa_s *); 80*4882a593Smuzhiyun void bfa_dconf_iocdisable(struct bfa_s *); 81*4882a593Smuzhiyun void bfa_fcp_attach(struct bfa_s *, void *, struct bfa_iocfc_cfg_s *, 82*4882a593Smuzhiyun struct bfa_pcidev_s *); 83*4882a593Smuzhiyun void bfa_fcp_iocdisable(struct bfa_s *bfa); 84*4882a593Smuzhiyun void bfa_fcp_meminfo(struct bfa_iocfc_cfg_s *, struct bfa_meminfo_s *, 85*4882a593Smuzhiyun struct bfa_s *); 86*4882a593Smuzhiyun void bfa_fcpim_iocdisable(struct bfa_fcp_mod_s *); 87*4882a593Smuzhiyun void bfa_fcport_start(struct bfa_s *); 88*4882a593Smuzhiyun void bfa_fcport_iocdisable(struct bfa_s *); 89*4882a593Smuzhiyun void bfa_fcport_meminfo(struct bfa_iocfc_cfg_s *, struct bfa_meminfo_s *, 90*4882a593Smuzhiyun struct bfa_s *); 91*4882a593Smuzhiyun void bfa_fcport_attach(struct bfa_s *, void *, struct bfa_iocfc_cfg_s *, 92*4882a593Smuzhiyun struct bfa_pcidev_s *); 93*4882a593Smuzhiyun void bfa_fcxp_iocdisable(struct bfa_s *); 94*4882a593Smuzhiyun void bfa_fcxp_meminfo(struct bfa_iocfc_cfg_s *, struct bfa_meminfo_s *, 95*4882a593Smuzhiyun struct bfa_s *); 96*4882a593Smuzhiyun void bfa_fcxp_attach(struct bfa_s *, void *, struct bfa_iocfc_cfg_s *, 97*4882a593Smuzhiyun struct bfa_pcidev_s *); 98*4882a593Smuzhiyun void bfa_fcdiag_iocdisable(struct bfa_s *); 99*4882a593Smuzhiyun void bfa_fcdiag_attach(struct bfa_s *bfa, void *, struct bfa_iocfc_cfg_s *, 100*4882a593Smuzhiyun struct bfa_pcidev_s *); 101*4882a593Smuzhiyun void bfa_ioim_lm_init(struct bfa_s *); 102*4882a593Smuzhiyun void bfa_lps_iocdisable(struct bfa_s *bfa); 103*4882a593Smuzhiyun void bfa_lps_meminfo(struct bfa_iocfc_cfg_s *, struct bfa_meminfo_s *, 104*4882a593Smuzhiyun struct bfa_s *); 105*4882a593Smuzhiyun void bfa_lps_attach(struct bfa_s *, void *, struct bfa_iocfc_cfg_s *, 106*4882a593Smuzhiyun struct bfa_pcidev_s *); 107*4882a593Smuzhiyun void bfa_rport_iocdisable(struct bfa_s *bfa); 108*4882a593Smuzhiyun void bfa_rport_meminfo(struct bfa_iocfc_cfg_s *, struct bfa_meminfo_s *, 109*4882a593Smuzhiyun struct bfa_s *); 110*4882a593Smuzhiyun void bfa_rport_attach(struct bfa_s *, void *, struct bfa_iocfc_cfg_s *, 111*4882a593Smuzhiyun struct bfa_pcidev_s *); 112*4882a593Smuzhiyun void bfa_sgpg_meminfo(struct bfa_iocfc_cfg_s *, struct bfa_meminfo_s *, 113*4882a593Smuzhiyun struct bfa_s *); 114*4882a593Smuzhiyun void bfa_sgpg_attach(struct bfa_s *, void *bfad, struct bfa_iocfc_cfg_s *, 115*4882a593Smuzhiyun struct bfa_pcidev_s *); 116*4882a593Smuzhiyun void bfa_uf_iocdisable(struct bfa_s *); 117*4882a593Smuzhiyun void bfa_uf_meminfo(struct bfa_iocfc_cfg_s *, struct bfa_meminfo_s *, 118*4882a593Smuzhiyun struct bfa_s *); 119*4882a593Smuzhiyun void bfa_uf_attach(struct bfa_s *, void *, struct bfa_iocfc_cfg_s *, 120*4882a593Smuzhiyun struct bfa_pcidev_s *); 121*4882a593Smuzhiyun void bfa_uf_start(struct bfa_s *); 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun #endif /* __BFA_MODULES_H__ */ 124