xref: /OK3568_Linux_fs/kernel/drivers/scsi/bfa/bfa_modules.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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