1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Copyright (C) 2021 Broadcom. All Rights Reserved. The term
4  * “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
5  */
6 
7 /**
8  * EFC FC port (NPORT) exported declarations
9  *
10  */
11 
12 #ifndef __EFC_NPORT_H__
13 #define __EFC_NPORT_H__
14 
15 struct efc_nport *
16 efc_nport_find(struct efc_domain *domain, u32 d_id);
17 struct efc_nport *
18 efc_nport_alloc(struct efc_domain *domain, uint64_t wwpn, uint64_t wwnn,
19 		u32 fc_id, bool enable_ini, bool enable_tgt);
20 void
21 efc_nport_free(struct efc_nport *nport);
22 int
23 efc_nport_attach(struct efc_nport *nport, u32 fc_id);
24 
25 void
26 __efc_nport_allocated(struct efc_sm_ctx *ctx,
27 		      enum efc_sm_event evt, void *arg);
28 void
29 __efc_nport_wait_shutdown(struct efc_sm_ctx *ctx,
30 			  enum efc_sm_event evt, void *arg);
31 void
32 __efc_nport_wait_port_free(struct efc_sm_ctx *ctx,
33 			   enum efc_sm_event evt, void *arg);
34 void
35 __efc_nport_vport_init(struct efc_sm_ctx *ctx,
36 		       enum efc_sm_event evt, void *arg);
37 void
38 __efc_nport_vport_wait_alloc(struct efc_sm_ctx *ctx,
39 			     enum efc_sm_event evt, void *arg);
40 void
41 __efc_nport_vport_allocated(struct efc_sm_ctx *ctx,
42 			    enum efc_sm_event evt, void *arg);
43 void
44 __efc_nport_attached(struct efc_sm_ctx *ctx,
45 		     enum efc_sm_event evt, void *arg);
46 
47 int
48 efc_vport_start(struct efc_domain *domain);
49 
50 #endif /* __EFC_NPORT_H__ */
51