162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2021 Broadcom. All Rights Reserved. The term
462306a36Sopenharmony_ci * “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
562306a36Sopenharmony_ci */
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci/*
862306a36Sopenharmony_ci * Node state machine functions for remote device node sm
962306a36Sopenharmony_ci */
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#ifndef __EFCT_DEVICE_H__
1262306a36Sopenharmony_ci#define __EFCT_DEVICE_H__
1362306a36Sopenharmony_civoid
1462306a36Sopenharmony_ciefc_node_init_device(struct efc_node *node, bool send_plogi);
1562306a36Sopenharmony_civoid
1662306a36Sopenharmony_ciefc_process_prli_payload(struct efc_node *node,
1762306a36Sopenharmony_ci			 void *prli);
1862306a36Sopenharmony_civoid
1962306a36Sopenharmony_ciefc_d_send_prli_rsp(struct efc_node *node, uint16_t ox_id);
2062306a36Sopenharmony_civoid
2162306a36Sopenharmony_ciefc_send_ls_acc_after_attach(struct efc_node *node,
2262306a36Sopenharmony_ci			     struct fc_frame_header *hdr,
2362306a36Sopenharmony_ci			     enum efc_node_send_ls_acc ls);
2462306a36Sopenharmony_civoid
2562306a36Sopenharmony_ci__efc_d_wait_loop(struct efc_sm_ctx *ctx,
2662306a36Sopenharmony_ci		  enum efc_sm_event evt, void *arg);
2762306a36Sopenharmony_civoid
2862306a36Sopenharmony_ci__efc_d_wait_plogi_acc_cmpl(struct efc_sm_ctx *ctx,
2962306a36Sopenharmony_ci			    enum efc_sm_event evt, void *arg);
3062306a36Sopenharmony_civoid
3162306a36Sopenharmony_ci__efc_d_init(struct efc_sm_ctx *ctx, enum efc_sm_event evt, void *arg);
3262306a36Sopenharmony_civoid
3362306a36Sopenharmony_ci__efc_d_wait_plogi_rsp(struct efc_sm_ctx *ctx,
3462306a36Sopenharmony_ci		       enum efc_sm_event evt, void *arg);
3562306a36Sopenharmony_civoid
3662306a36Sopenharmony_ci__efc_d_wait_plogi_rsp_recvd_prli(struct efc_sm_ctx *ctx,
3762306a36Sopenharmony_ci				  enum efc_sm_event evt, void *arg);
3862306a36Sopenharmony_civoid
3962306a36Sopenharmony_ci__efc_d_wait_domain_attach(struct efc_sm_ctx *ctx,
4062306a36Sopenharmony_ci			   enum efc_sm_event evt, void *arg);
4162306a36Sopenharmony_civoid
4262306a36Sopenharmony_ci__efc_d_wait_topology_notify(struct efc_sm_ctx *ctx,
4362306a36Sopenharmony_ci			     enum efc_sm_event evt, void *arg);
4462306a36Sopenharmony_civoid
4562306a36Sopenharmony_ci__efc_d_wait_node_attach(struct efc_sm_ctx *ctx,
4662306a36Sopenharmony_ci			 enum efc_sm_event evt, void *arg);
4762306a36Sopenharmony_civoid
4862306a36Sopenharmony_ci__efc_d_wait_attach_evt_shutdown(struct efc_sm_ctx *ctx,
4962306a36Sopenharmony_ci				 enum efc_sm_event evt, void *arg);
5062306a36Sopenharmony_civoid
5162306a36Sopenharmony_ci__efc_d_initiate_shutdown(struct efc_sm_ctx *ctx,
5262306a36Sopenharmony_ci			  enum efc_sm_event evt, void *arg);
5362306a36Sopenharmony_civoid
5462306a36Sopenharmony_ci__efc_d_port_logged_in(struct efc_sm_ctx *ctx,
5562306a36Sopenharmony_ci		       enum efc_sm_event evt, void *arg);
5662306a36Sopenharmony_civoid
5762306a36Sopenharmony_ci__efc_d_wait_logo_acc_cmpl(struct efc_sm_ctx *ctx,
5862306a36Sopenharmony_ci			   enum efc_sm_event evt, void *arg);
5962306a36Sopenharmony_civoid
6062306a36Sopenharmony_ci__efc_d_device_ready(struct efc_sm_ctx *ctx,
6162306a36Sopenharmony_ci		     enum efc_sm_event evt, void *arg);
6262306a36Sopenharmony_civoid
6362306a36Sopenharmony_ci__efc_d_device_gone(struct efc_sm_ctx *ctx,
6462306a36Sopenharmony_ci		    enum efc_sm_event evt, void *arg);
6562306a36Sopenharmony_civoid
6662306a36Sopenharmony_ci__efc_d_wait_adisc_rsp(struct efc_sm_ctx *ctx,
6762306a36Sopenharmony_ci		       enum efc_sm_event evt, void *arg);
6862306a36Sopenharmony_civoid
6962306a36Sopenharmony_ci__efc_d_wait_logo_rsp(struct efc_sm_ctx *ctx,
7062306a36Sopenharmony_ci		      enum efc_sm_event evt, void *arg);
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci#endif /* __EFCT_DEVICE_H__ */
73