162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright 2000-2020 Broadcom Inc. All rights reserved.
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci *          Name:  mpi2_tool.h
762306a36Sopenharmony_ci *         Title:  MPI diagnostic tool structures and definitions
862306a36Sopenharmony_ci * Creation Date:  March 26, 2007
962306a36Sopenharmony_ci *
1062306a36Sopenharmony_ci *   mpi2_tool.h Version:  02.00.16
1162306a36Sopenharmony_ci *
1262306a36Sopenharmony_ci * Version History
1362306a36Sopenharmony_ci * ---------------
1462306a36Sopenharmony_ci *
1562306a36Sopenharmony_ci * Date      Version   Description
1662306a36Sopenharmony_ci * --------  --------  ------------------------------------------------------
1762306a36Sopenharmony_ci * 04-30-07  02.00.00  Corresponds to Fusion-MPT MPI Specification Rev A.
1862306a36Sopenharmony_ci * 12-18-07  02.00.01  Added Diagnostic Buffer Post and Diagnostic Release
1962306a36Sopenharmony_ci *                     structures and defines.
2062306a36Sopenharmony_ci * 02-29-08  02.00.02  Modified various names to make them 32-character unique.
2162306a36Sopenharmony_ci * 05-06-09  02.00.03  Added ISTWI Read Write Tool and Diagnostic CLI Tool.
2262306a36Sopenharmony_ci * 07-30-09  02.00.04  Added ExtendedType field to DiagnosticBufferPost request
2362306a36Sopenharmony_ci *                     and reply messages.
2462306a36Sopenharmony_ci *                     Added MPI2_DIAG_BUF_TYPE_EXTENDED.
2562306a36Sopenharmony_ci *                     Incremented MPI2_DIAG_BUF_TYPE_COUNT.
2662306a36Sopenharmony_ci * 05-12-10  02.00.05  Added Diagnostic Data Upload tool.
2762306a36Sopenharmony_ci * 08-11-10  02.00.06  Added defines that were missing for Diagnostic Buffer
2862306a36Sopenharmony_ci *                     Post Request.
2962306a36Sopenharmony_ci * 05-25-11  02.00.07  Added Flags field and related defines to
3062306a36Sopenharmony_ci *                     MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST.
3162306a36Sopenharmony_ci * 11-18-11  02.00.08  Incorporating additions for MPI v2.5.
3262306a36Sopenharmony_ci * 07-10-12  02.00.09  Add MPI v2.5 Toolbox Diagnostic CLI Tool Request
3362306a36Sopenharmony_ci *                     message.
3462306a36Sopenharmony_ci * 07-26-12  02.00.10  Modified MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST so that
3562306a36Sopenharmony_ci *                     it uses MPI Chain SGE as well as MPI Simple SGE.
3662306a36Sopenharmony_ci * 08-19-13  02.00.11  Added MPI2_TOOLBOX_TEXT_DISPLAY_TOOL and related info.
3762306a36Sopenharmony_ci * 01-08-14  02.00.12  Added MPI2_TOOLBOX_CLEAN_BIT26_PRODUCT_SPECIFIC.
3862306a36Sopenharmony_ci * 11-18-14  02.00.13  Updated copyright information.
3962306a36Sopenharmony_ci * 08-25-16  02.00.14  Added new values for the Flags field of Toolbox Clean
4062306a36Sopenharmony_ci *                     Tool Request Message.
4162306a36Sopenharmony_ci * 07-22-18  02.00.15  Added defines for new TOOLBOX_PCIE_LANE_MARGINING tool.
4262306a36Sopenharmony_ci *                     Added option for DeviceInfo field in ISTWI tool.
4362306a36Sopenharmony_ci * 12-17-18  02.00.16  Shorten some defines to be compatible with DOS.
4462306a36Sopenharmony_ci * --------------------------------------------------------------------------
4562306a36Sopenharmony_ci */
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci#ifndef MPI2_TOOL_H
4862306a36Sopenharmony_ci#define MPI2_TOOL_H
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci/*****************************************************************************
5162306a36Sopenharmony_ci*
5262306a36Sopenharmony_ci*              Toolbox Messages
5362306a36Sopenharmony_ci*
5462306a36Sopenharmony_ci*****************************************************************************/
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci/*defines for the Tools */
5762306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_TOOL                     (0x00)
5862306a36Sopenharmony_ci#define MPI2_TOOLBOX_MEMORY_MOVE_TOOL               (0x01)
5962306a36Sopenharmony_ci#define MPI2_TOOLBOX_DIAG_DATA_UPLOAD_TOOL          (0x02)
6062306a36Sopenharmony_ci#define MPI2_TOOLBOX_ISTWI_READ_WRITE_TOOL          (0x03)
6162306a36Sopenharmony_ci#define MPI2_TOOLBOX_BEACON_TOOL                    (0x05)
6262306a36Sopenharmony_ci#define MPI2_TOOLBOX_DIAGNOSTIC_CLI_TOOL            (0x06)
6362306a36Sopenharmony_ci#define MPI2_TOOLBOX_TEXT_DISPLAY_TOOL              (0x07)
6462306a36Sopenharmony_ci#define MPI26_TOOLBOX_BACKEND_PCIE_LANE_MARGIN      (0x08)
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci/****************************************************************************
6762306a36Sopenharmony_ci* Toolbox reply
6862306a36Sopenharmony_ci****************************************************************************/
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_citypedef struct _MPI2_TOOLBOX_REPLY {
7162306a36Sopenharmony_ci	U8 Tool;		/*0x00 */
7262306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
7362306a36Sopenharmony_ci	U8 MsgLength;		/*0x02 */
7462306a36Sopenharmony_ci	U8 Function;		/*0x03 */
7562306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
7662306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
7762306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
7862306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
7962306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
8062306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
8162306a36Sopenharmony_ci	U16 Reserved5;		/*0x0C */
8262306a36Sopenharmony_ci	U16 IOCStatus;		/*0x0E */
8362306a36Sopenharmony_ci	U32 IOCLogInfo;		/*0x10 */
8462306a36Sopenharmony_ci} MPI2_TOOLBOX_REPLY, *PTR_MPI2_TOOLBOX_REPLY,
8562306a36Sopenharmony_ci	Mpi2ToolboxReply_t, *pMpi2ToolboxReply_t;
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci/****************************************************************************
8862306a36Sopenharmony_ci* Toolbox Clean Tool request
8962306a36Sopenharmony_ci****************************************************************************/
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_citypedef struct _MPI2_TOOLBOX_CLEAN_REQUEST {
9262306a36Sopenharmony_ci	U8 Tool;		/*0x00 */
9362306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
9462306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
9562306a36Sopenharmony_ci	U8 Function;		/*0x03 */
9662306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
9762306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
9862306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
9962306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
10062306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
10162306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
10262306a36Sopenharmony_ci	U32 Flags;		/*0x0C */
10362306a36Sopenharmony_ci} MPI2_TOOLBOX_CLEAN_REQUEST, *PTR_MPI2_TOOLBOX_CLEAN_REQUEST,
10462306a36Sopenharmony_ci	Mpi2ToolboxCleanRequest_t, *pMpi2ToolboxCleanRequest_t;
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci/*values for the Flags field */
10762306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_BOOT_SERVICES            (0x80000000)
10862306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_PERSIST_MANUFACT_PAGES   (0x40000000)
10962306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_OTHER_PERSIST_PAGES      (0x20000000)
11062306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_FW_CURRENT               (0x10000000)
11162306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_FW_BACKUP                (0x08000000)
11262306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_BIT26_PRODUCT_SPECIFIC   (0x04000000)
11362306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_MEGARAID                 (0x02000000)
11462306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_INITIALIZATION           (0x01000000)
11562306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_SBR                      (0x00800000)
11662306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_SBR_BACKUP               (0x00400000)
11762306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_HIIM                     (0x00200000)
11862306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_HIIA                     (0x00100000)
11962306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_CTLR                     (0x00080000)
12062306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_IMR_FIRMWARE             (0x00040000)
12162306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_MR_NVDATA                (0x00020000)
12262306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_RESERVED_5_16            (0x0001FFE0)
12362306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_ALL_BUT_MPB              (0x00000010)
12462306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_ENTIRE_FLASH             (0x00000008)
12562306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_FLASH                    (0x00000004)
12662306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_SEEPROM                  (0x00000002)
12762306a36Sopenharmony_ci#define MPI2_TOOLBOX_CLEAN_NVSRAM                   (0x00000001)
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci/****************************************************************************
13062306a36Sopenharmony_ci* Toolbox Memory Move request
13162306a36Sopenharmony_ci****************************************************************************/
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_citypedef struct _MPI2_TOOLBOX_MEM_MOVE_REQUEST {
13462306a36Sopenharmony_ci	U8 Tool;		/*0x00 */
13562306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
13662306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
13762306a36Sopenharmony_ci	U8 Function;		/*0x03 */
13862306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
13962306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
14062306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
14162306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
14262306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
14362306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
14462306a36Sopenharmony_ci	MPI2_SGE_SIMPLE_UNION SGL;	/*0x0C */
14562306a36Sopenharmony_ci} MPI2_TOOLBOX_MEM_MOVE_REQUEST, *PTR_MPI2_TOOLBOX_MEM_MOVE_REQUEST,
14662306a36Sopenharmony_ci	Mpi2ToolboxMemMoveRequest_t, *pMpi2ToolboxMemMoveRequest_t;
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_ci/****************************************************************************
14962306a36Sopenharmony_ci* Toolbox Diagnostic Data Upload request
15062306a36Sopenharmony_ci****************************************************************************/
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_citypedef struct _MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST {
15362306a36Sopenharmony_ci	U8 Tool;		/*0x00 */
15462306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
15562306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
15662306a36Sopenharmony_ci	U8 Function;		/*0x03 */
15762306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
15862306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
15962306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
16062306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
16162306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
16262306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
16362306a36Sopenharmony_ci	U8 SGLFlags;		/*0x0C */
16462306a36Sopenharmony_ci	U8 Reserved5;		/*0x0D */
16562306a36Sopenharmony_ci	U16 Reserved6;		/*0x0E */
16662306a36Sopenharmony_ci	U32 Flags;		/*0x10 */
16762306a36Sopenharmony_ci	U32 DataLength;		/*0x14 */
16862306a36Sopenharmony_ci	MPI2_SGE_SIMPLE_UNION SGL;	/*0x18 */
16962306a36Sopenharmony_ci} MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST,
17062306a36Sopenharmony_ci	*PTR_MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST,
17162306a36Sopenharmony_ci	Mpi2ToolboxDiagDataUploadRequest_t,
17262306a36Sopenharmony_ci	*pMpi2ToolboxDiagDataUploadRequest_t;
17362306a36Sopenharmony_ci
17462306a36Sopenharmony_ci/*use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_citypedef struct _MPI2_DIAG_DATA_UPLOAD_HEADER {
17762306a36Sopenharmony_ci	U32 DiagDataLength;	/*00h */
17862306a36Sopenharmony_ci	U8 FormatCode;		/*04h */
17962306a36Sopenharmony_ci	U8 Reserved1;		/*05h */
18062306a36Sopenharmony_ci	U16 Reserved2;		/*06h */
18162306a36Sopenharmony_ci} MPI2_DIAG_DATA_UPLOAD_HEADER, *PTR_MPI2_DIAG_DATA_UPLOAD_HEADER,
18262306a36Sopenharmony_ci	Mpi2DiagDataUploadHeader_t, *pMpi2DiagDataUploadHeader_t;
18362306a36Sopenharmony_ci
18462306a36Sopenharmony_ci/****************************************************************************
18562306a36Sopenharmony_ci* Toolbox ISTWI Read Write Tool
18662306a36Sopenharmony_ci****************************************************************************/
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ci/*Toolbox ISTWI Read Write Tool request message */
18962306a36Sopenharmony_citypedef struct _MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST {
19062306a36Sopenharmony_ci	U8 Tool;		/*0x00 */
19162306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
19262306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
19362306a36Sopenharmony_ci	U8 Function;		/*0x03 */
19462306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
19562306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
19662306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
19762306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
19862306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
19962306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
20062306a36Sopenharmony_ci	U32 Reserved5;		/*0x0C */
20162306a36Sopenharmony_ci	U32 Reserved6;		/*0x10 */
20262306a36Sopenharmony_ci	U8 DevIndex;		/*0x14 */
20362306a36Sopenharmony_ci	U8 Action;		/*0x15 */
20462306a36Sopenharmony_ci	U8 SGLFlags;		/*0x16 */
20562306a36Sopenharmony_ci	U8 Flags;		/*0x17 */
20662306a36Sopenharmony_ci	U16 TxDataLength;	/*0x18 */
20762306a36Sopenharmony_ci	U16 RxDataLength;	/*0x1A */
20862306a36Sopenharmony_ci	U32 Reserved8;		/*0x1C */
20962306a36Sopenharmony_ci	U32 Reserved9;		/*0x20 */
21062306a36Sopenharmony_ci	U32 Reserved10;		/*0x24 */
21162306a36Sopenharmony_ci	U32 Reserved11;		/*0x28 */
21262306a36Sopenharmony_ci	U32 Reserved12;		/*0x2C */
21362306a36Sopenharmony_ci	MPI2_SGE_SIMPLE_UNION SGL;	/*0x30 */
21462306a36Sopenharmony_ci} MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST,
21562306a36Sopenharmony_ci	*PTR_MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST,
21662306a36Sopenharmony_ci	Mpi2ToolboxIstwiReadWriteRequest_t,
21762306a36Sopenharmony_ci	*pMpi2ToolboxIstwiReadWriteRequest_t;
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_ci/*values for the Action field */
22062306a36Sopenharmony_ci#define MPI2_TOOL_ISTWI_ACTION_READ_DATA            (0x01)
22162306a36Sopenharmony_ci#define MPI2_TOOL_ISTWI_ACTION_WRITE_DATA           (0x02)
22262306a36Sopenharmony_ci#define MPI2_TOOL_ISTWI_ACTION_SEQUENCE             (0x03)
22362306a36Sopenharmony_ci#define MPI2_TOOL_ISTWI_ACTION_RESERVE_BUS          (0x10)
22462306a36Sopenharmony_ci#define MPI2_TOOL_ISTWI_ACTION_RELEASE_BUS          (0x11)
22562306a36Sopenharmony_ci#define MPI2_TOOL_ISTWI_ACTION_RESET                (0x12)
22662306a36Sopenharmony_ci
22762306a36Sopenharmony_ci/*use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ci/*values for the Flags field */
23062306a36Sopenharmony_ci#define MPI2_TOOL_ISTWI_FLAG_AUTO_RESERVE_RELEASE   (0x80)
23162306a36Sopenharmony_ci#define MPI2_TOOL_ISTWI_FLAG_PAGE_ADDR_MASK         (0x07)
23262306a36Sopenharmony_ci
23362306a36Sopenharmony_ci/*MPI26 TOOLBOX Request MsgFlags defines */
23462306a36Sopenharmony_ci#define MPI26_TOOL_ISTWI_MSGFLG_ADDR_MASK           (0x01)
23562306a36Sopenharmony_ci/*Request uses Man Page 43 device index addressing */
23662306a36Sopenharmony_ci#define MPI26_TOOL_ISTWI_MSGFLG_ADDR_INDEX          (0x00)
23762306a36Sopenharmony_ci/*Request uses Man Page 43 device info struct addressing */
23862306a36Sopenharmony_ci#define MPI26_TOOL_ISTWI_MSGFLG_ADDR_INFO           (0x01)
23962306a36Sopenharmony_ci
24062306a36Sopenharmony_ci/*Toolbox ISTWI Read Write Tool reply message */
24162306a36Sopenharmony_citypedef struct _MPI2_TOOLBOX_ISTWI_REPLY {
24262306a36Sopenharmony_ci	U8 Tool;		/*0x00 */
24362306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
24462306a36Sopenharmony_ci	U8 MsgLength;		/*0x02 */
24562306a36Sopenharmony_ci	U8 Function;		/*0x03 */
24662306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
24762306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
24862306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
24962306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
25062306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
25162306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
25262306a36Sopenharmony_ci	U16 Reserved5;		/*0x0C */
25362306a36Sopenharmony_ci	U16 IOCStatus;		/*0x0E */
25462306a36Sopenharmony_ci	U32 IOCLogInfo;		/*0x10 */
25562306a36Sopenharmony_ci	U8 DevIndex;		/*0x14 */
25662306a36Sopenharmony_ci	U8 Action;		/*0x15 */
25762306a36Sopenharmony_ci	U8 IstwiStatus;		/*0x16 */
25862306a36Sopenharmony_ci	U8 Reserved6;		/*0x17 */
25962306a36Sopenharmony_ci	U16 TxDataCount;	/*0x18 */
26062306a36Sopenharmony_ci	U16 RxDataCount;	/*0x1A */
26162306a36Sopenharmony_ci} MPI2_TOOLBOX_ISTWI_REPLY, *PTR_MPI2_TOOLBOX_ISTWI_REPLY,
26262306a36Sopenharmony_ci	Mpi2ToolboxIstwiReply_t, *pMpi2ToolboxIstwiReply_t;
26362306a36Sopenharmony_ci
26462306a36Sopenharmony_ci/****************************************************************************
26562306a36Sopenharmony_ci* Toolbox Beacon Tool request
26662306a36Sopenharmony_ci****************************************************************************/
26762306a36Sopenharmony_ci
26862306a36Sopenharmony_citypedef struct _MPI2_TOOLBOX_BEACON_REQUEST {
26962306a36Sopenharmony_ci	U8 Tool;		/*0x00 */
27062306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
27162306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
27262306a36Sopenharmony_ci	U8 Function;		/*0x03 */
27362306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
27462306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
27562306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
27662306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
27762306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
27862306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
27962306a36Sopenharmony_ci	U8 Reserved5;		/*0x0C */
28062306a36Sopenharmony_ci	U8 PhysicalPort;	/*0x0D */
28162306a36Sopenharmony_ci	U8 Reserved6;		/*0x0E */
28262306a36Sopenharmony_ci	U8 Flags;		/*0x0F */
28362306a36Sopenharmony_ci} MPI2_TOOLBOX_BEACON_REQUEST, *PTR_MPI2_TOOLBOX_BEACON_REQUEST,
28462306a36Sopenharmony_ci	Mpi2ToolboxBeaconRequest_t, *pMpi2ToolboxBeaconRequest_t;
28562306a36Sopenharmony_ci
28662306a36Sopenharmony_ci/*values for the Flags field */
28762306a36Sopenharmony_ci#define MPI2_TOOLBOX_FLAGS_BEACONMODE_OFF       (0x00)
28862306a36Sopenharmony_ci#define MPI2_TOOLBOX_FLAGS_BEACONMODE_ON        (0x01)
28962306a36Sopenharmony_ci
29062306a36Sopenharmony_ci/****************************************************************************
29162306a36Sopenharmony_ci* Toolbox Diagnostic CLI Tool
29262306a36Sopenharmony_ci****************************************************************************/
29362306a36Sopenharmony_ci
29462306a36Sopenharmony_ci#define MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH    (0x5C)
29562306a36Sopenharmony_ci
29662306a36Sopenharmony_ci/*MPI v2.0 Toolbox Diagnostic CLI Tool request message */
29762306a36Sopenharmony_citypedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST {
29862306a36Sopenharmony_ci	U8 Tool;		/*0x00 */
29962306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
30062306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
30162306a36Sopenharmony_ci	U8 Function;		/*0x03 */
30262306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
30362306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
30462306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
30562306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
30662306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
30762306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
30862306a36Sopenharmony_ci	U8 SGLFlags;		/*0x0C */
30962306a36Sopenharmony_ci	U8 Reserved5;		/*0x0D */
31062306a36Sopenharmony_ci	U16 Reserved6;		/*0x0E */
31162306a36Sopenharmony_ci	U32 DataLength;		/*0x10 */
31262306a36Sopenharmony_ci	U8 DiagnosticCliCommand[MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH];/*0x14 */
31362306a36Sopenharmony_ci	MPI2_MPI_SGE_IO_UNION SGL;	/*0x70 */
31462306a36Sopenharmony_ci} MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
31562306a36Sopenharmony_ci	*PTR_MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
31662306a36Sopenharmony_ci	Mpi2ToolboxDiagnosticCliRequest_t,
31762306a36Sopenharmony_ci	*pMpi2ToolboxDiagnosticCliRequest_t;
31862306a36Sopenharmony_ci
31962306a36Sopenharmony_ci/*use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */
32062306a36Sopenharmony_ci
32162306a36Sopenharmony_ci/*MPI v2.5 Toolbox Diagnostic CLI Tool request message */
32262306a36Sopenharmony_citypedef struct _MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST {
32362306a36Sopenharmony_ci	U8 Tool;		/*0x00 */
32462306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
32562306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
32662306a36Sopenharmony_ci	U8 Function;		/*0x03 */
32762306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
32862306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
32962306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
33062306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
33162306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
33262306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
33362306a36Sopenharmony_ci	U32 Reserved5;		/*0x0C */
33462306a36Sopenharmony_ci	U32 DataLength;		/*0x10 */
33562306a36Sopenharmony_ci	U8 DiagnosticCliCommand[MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH];/*0x14 */
33662306a36Sopenharmony_ci	MPI25_SGE_IO_UNION      SGL;                        /* 0x70 */
33762306a36Sopenharmony_ci} MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
33862306a36Sopenharmony_ci	*PTR_MPI25_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,
33962306a36Sopenharmony_ci	Mpi25ToolboxDiagnosticCliRequest_t,
34062306a36Sopenharmony_ci	*pMpi25ToolboxDiagnosticCliRequest_t;
34162306a36Sopenharmony_ci
34262306a36Sopenharmony_ci/*Toolbox Diagnostic CLI Tool reply message */
34362306a36Sopenharmony_citypedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY {
34462306a36Sopenharmony_ci	U8 Tool;		/*0x00 */
34562306a36Sopenharmony_ci	U8 Reserved1;		/*0x01 */
34662306a36Sopenharmony_ci	U8 MsgLength;		/*0x02 */
34762306a36Sopenharmony_ci	U8 Function;		/*0x03 */
34862306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
34962306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
35062306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
35162306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
35262306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
35362306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
35462306a36Sopenharmony_ci	U16 Reserved5;		/*0x0C */
35562306a36Sopenharmony_ci	U16 IOCStatus;		/*0x0E */
35662306a36Sopenharmony_ci	U32 IOCLogInfo;		/*0x10 */
35762306a36Sopenharmony_ci	U32 ReturnedDataLength;	/*0x14 */
35862306a36Sopenharmony_ci} MPI2_TOOLBOX_DIAGNOSTIC_CLI_REPLY,
35962306a36Sopenharmony_ci	*PTR_MPI2_TOOLBOX_DIAG_CLI_REPLY,
36062306a36Sopenharmony_ci	Mpi2ToolboxDiagnosticCliReply_t,
36162306a36Sopenharmony_ci	*pMpi2ToolboxDiagnosticCliReply_t;
36262306a36Sopenharmony_ci
36362306a36Sopenharmony_ci
36462306a36Sopenharmony_ci/****************************************************************************
36562306a36Sopenharmony_ci*  Toolbox Console Text Display Tool
36662306a36Sopenharmony_ci****************************************************************************/
36762306a36Sopenharmony_ci
36862306a36Sopenharmony_ci/* Toolbox Console Text Display Tool request message */
36962306a36Sopenharmony_citypedef struct _MPI2_TOOLBOX_TEXT_DISPLAY_REQUEST {
37062306a36Sopenharmony_ci	U8			Tool;			/* 0x00 */
37162306a36Sopenharmony_ci	U8			Reserved1;		/* 0x01 */
37262306a36Sopenharmony_ci	U8			ChainOffset;		/* 0x02 */
37362306a36Sopenharmony_ci	U8			Function;		/* 0x03 */
37462306a36Sopenharmony_ci	U16			Reserved2;		/* 0x04 */
37562306a36Sopenharmony_ci	U8			Reserved3;		/* 0x06 */
37662306a36Sopenharmony_ci	U8			MsgFlags;		/* 0x07 */
37762306a36Sopenharmony_ci	U8			VP_ID;			/* 0x08 */
37862306a36Sopenharmony_ci	U8			VF_ID;			/* 0x09 */
37962306a36Sopenharmony_ci	U16			Reserved4;		/* 0x0A */
38062306a36Sopenharmony_ci	U8			Console;		/* 0x0C */
38162306a36Sopenharmony_ci	U8			Flags;			/* 0x0D */
38262306a36Sopenharmony_ci	U16			Reserved6;		/* 0x0E */
38362306a36Sopenharmony_ci	U8			TextToDisplay[4];	/* 0x10 */
38462306a36Sopenharmony_ci} MPI2_TOOLBOX_TEXT_DISPLAY_REQUEST,
38562306a36Sopenharmony_ci*PTR_MPI2_TOOLBOX_TEXT_DISPLAY_REQUEST,
38662306a36Sopenharmony_ciMpi2ToolboxTextDisplayRequest_t,
38762306a36Sopenharmony_ci*pMpi2ToolboxTextDisplayRequest_t;
38862306a36Sopenharmony_ci
38962306a36Sopenharmony_ci/* defines for the Console field */
39062306a36Sopenharmony_ci#define MPI2_TOOLBOX_CONSOLE_TYPE_MASK          (0xF0)
39162306a36Sopenharmony_ci#define MPI2_TOOLBOX_CONSOLE_TYPE_DEFAULT       (0x00)
39262306a36Sopenharmony_ci#define MPI2_TOOLBOX_CONSOLE_TYPE_UART          (0x10)
39362306a36Sopenharmony_ci#define MPI2_TOOLBOX_CONSOLE_TYPE_ETHERNET      (0x20)
39462306a36Sopenharmony_ci
39562306a36Sopenharmony_ci#define MPI2_TOOLBOX_CONSOLE_NUMBER_MASK        (0x0F)
39662306a36Sopenharmony_ci
39762306a36Sopenharmony_ci/* defines for the Flags field */
39862306a36Sopenharmony_ci#define MPI2_TOOLBOX_CONSOLE_FLAG_TIMESTAMP     (0x01)
39962306a36Sopenharmony_ci
40062306a36Sopenharmony_ci
40162306a36Sopenharmony_ci/***************************************************************************
40262306a36Sopenharmony_ci *  Toolbox Backend Lane Margining Tool
40362306a36Sopenharmony_ci ***************************************************************************
40462306a36Sopenharmony_ci */
40562306a36Sopenharmony_ci
40662306a36Sopenharmony_ci/*Toolbox Backend Lane Margining Tool request message */
40762306a36Sopenharmony_citypedef struct _MPI26_TOOLBOX_LANE_MARGIN_REQUEST {
40862306a36Sopenharmony_ci	U8 Tool;			/*0x00 */
40962306a36Sopenharmony_ci	U8 Reserved1;			/*0x01 */
41062306a36Sopenharmony_ci	U8 ChainOffset;			/*0x02 */
41162306a36Sopenharmony_ci	U8 Function;			/*0x03 */
41262306a36Sopenharmony_ci	U16 Reserved2;			/*0x04 */
41362306a36Sopenharmony_ci	U8 Reserved3;			/*0x06 */
41462306a36Sopenharmony_ci	U8 MsgFlags;			/*0x07 */
41562306a36Sopenharmony_ci	U8 VP_ID;			/*0x08 */
41662306a36Sopenharmony_ci	U8 VF_ID;			/*0x09 */
41762306a36Sopenharmony_ci	U16 Reserved4;			/*0x0A */
41862306a36Sopenharmony_ci	U8 Command;			/*0x0C */
41962306a36Sopenharmony_ci	U8 SwitchPort;			/*0x0D */
42062306a36Sopenharmony_ci	U16 DevHandle;			/*0x0E */
42162306a36Sopenharmony_ci	U8 RegisterOffset;		/*0x10 */
42262306a36Sopenharmony_ci	U8 Reserved5;			/*0x11 */
42362306a36Sopenharmony_ci	U16 DataLength;			/*0x12 */
42462306a36Sopenharmony_ci	MPI25_SGE_IO_UNION SGL;		/*0x14 */
42562306a36Sopenharmony_ci} MPI26_TOOLBOX_LANE_MARGINING_REQUEST,
42662306a36Sopenharmony_ci	*PTR_MPI2_TOOLBOX_LANE_MARGINING_REQUEST,
42762306a36Sopenharmony_ci	Mpi26ToolboxLaneMarginingRequest_t,
42862306a36Sopenharmony_ci	*pMpi2ToolboxLaneMarginingRequest_t;
42962306a36Sopenharmony_ci
43062306a36Sopenharmony_ci/* defines for the Command field */
43162306a36Sopenharmony_ci#define MPI26_TOOL_MARGIN_COMMAND_ENTER_MARGIN_MODE        (0x01)
43262306a36Sopenharmony_ci#define MPI26_TOOL_MARGIN_COMMAND_READ_REGISTER_DATA       (0x02)
43362306a36Sopenharmony_ci#define MPI26_TOOL_MARGIN_COMMAND_WRITE_REGISTER_DATA      (0x03)
43462306a36Sopenharmony_ci#define MPI26_TOOL_MARGIN_COMMAND_EXIT_MARGIN_MODE         (0x04)
43562306a36Sopenharmony_ci
43662306a36Sopenharmony_ci
43762306a36Sopenharmony_ci/*Toolbox Backend Lane Margining Tool reply message */
43862306a36Sopenharmony_citypedef struct _MPI26_TOOLBOX_LANE_MARGIN_REPLY {
43962306a36Sopenharmony_ci	U8 Tool;			/*0x00 */
44062306a36Sopenharmony_ci	U8 Reserved1;			/*0x01 */
44162306a36Sopenharmony_ci	U8 MsgLength;			/*0x02 */
44262306a36Sopenharmony_ci	U8 Function;			/*0x03 */
44362306a36Sopenharmony_ci	U16 Reserved2;			/*0x04 */
44462306a36Sopenharmony_ci	U8 Reserved3;			/*0x06 */
44562306a36Sopenharmony_ci	U8 MsgFlags;			/*0x07 */
44662306a36Sopenharmony_ci	U8 VP_ID;			/*0x08 */
44762306a36Sopenharmony_ci	U8 VF_ID;			/*0x09 */
44862306a36Sopenharmony_ci	U16 Reserved4;			/*0x0A */
44962306a36Sopenharmony_ci	U16 Reserved5;			/*0x0C */
45062306a36Sopenharmony_ci	U16 IOCStatus;			/*0x0E */
45162306a36Sopenharmony_ci	U32 IOCLogInfo;			/*0x10 */
45262306a36Sopenharmony_ci	U16 ReturnedDataLength;		/*0x14 */
45362306a36Sopenharmony_ci	U16 Reserved6;			/*0x16 */
45462306a36Sopenharmony_ci} MPI26_TOOLBOX_LANE_MARGINING_REPLY,
45562306a36Sopenharmony_ci	*PTR_MPI26_TOOLBOX_LANE_MARGINING_REPLY,
45662306a36Sopenharmony_ci	Mpi26ToolboxLaneMarginingReply_t,
45762306a36Sopenharmony_ci	*pMpi26ToolboxLaneMarginingReply_t;
45862306a36Sopenharmony_ci
45962306a36Sopenharmony_ci
46062306a36Sopenharmony_ci/*****************************************************************************
46162306a36Sopenharmony_ci*
46262306a36Sopenharmony_ci*      Diagnostic Buffer Messages
46362306a36Sopenharmony_ci*
46462306a36Sopenharmony_ci*****************************************************************************/
46562306a36Sopenharmony_ci
46662306a36Sopenharmony_ci/****************************************************************************
46762306a36Sopenharmony_ci* Diagnostic Buffer Post request
46862306a36Sopenharmony_ci****************************************************************************/
46962306a36Sopenharmony_ci
47062306a36Sopenharmony_citypedef struct _MPI2_DIAG_BUFFER_POST_REQUEST {
47162306a36Sopenharmony_ci	U8 ExtendedType;	/*0x00 */
47262306a36Sopenharmony_ci	U8 BufferType;		/*0x01 */
47362306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
47462306a36Sopenharmony_ci	U8 Function;		/*0x03 */
47562306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
47662306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
47762306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
47862306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
47962306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
48062306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
48162306a36Sopenharmony_ci	U64 BufferAddress;	/*0x0C */
48262306a36Sopenharmony_ci	U32 BufferLength;	/*0x14 */
48362306a36Sopenharmony_ci	U32 Reserved5;		/*0x18 */
48462306a36Sopenharmony_ci	U32 Reserved6;		/*0x1C */
48562306a36Sopenharmony_ci	U32 Flags;		/*0x20 */
48662306a36Sopenharmony_ci	U32 ProductSpecific[23];	/*0x24 */
48762306a36Sopenharmony_ci} MPI2_DIAG_BUFFER_POST_REQUEST, *PTR_MPI2_DIAG_BUFFER_POST_REQUEST,
48862306a36Sopenharmony_ci	Mpi2DiagBufferPostRequest_t, *pMpi2DiagBufferPostRequest_t;
48962306a36Sopenharmony_ci
49062306a36Sopenharmony_ci/*values for the ExtendedType field */
49162306a36Sopenharmony_ci#define MPI2_DIAG_EXTENDED_TYPE_UTILIZATION         (0x02)
49262306a36Sopenharmony_ci
49362306a36Sopenharmony_ci/*values for the BufferType field */
49462306a36Sopenharmony_ci#define MPI2_DIAG_BUF_TYPE_TRACE                    (0x00)
49562306a36Sopenharmony_ci#define MPI2_DIAG_BUF_TYPE_SNAPSHOT                 (0x01)
49662306a36Sopenharmony_ci#define MPI2_DIAG_BUF_TYPE_EXTENDED                 (0x02)
49762306a36Sopenharmony_ci/*count of the number of buffer types */
49862306a36Sopenharmony_ci#define MPI2_DIAG_BUF_TYPE_COUNT                    (0x03)
49962306a36Sopenharmony_ci
50062306a36Sopenharmony_ci/*values for the Flags field */
50162306a36Sopenharmony_ci#define MPI2_DIAG_BUF_FLAG_RELEASE_ON_FULL          (0x00000002)
50262306a36Sopenharmony_ci#define MPI2_DIAG_BUF_FLAG_IMMEDIATE_RELEASE        (0x00000001)
50362306a36Sopenharmony_ci
50462306a36Sopenharmony_ci/****************************************************************************
50562306a36Sopenharmony_ci* Diagnostic Buffer Post reply
50662306a36Sopenharmony_ci****************************************************************************/
50762306a36Sopenharmony_ci
50862306a36Sopenharmony_citypedef struct _MPI2_DIAG_BUFFER_POST_REPLY {
50962306a36Sopenharmony_ci	U8 ExtendedType;	/*0x00 */
51062306a36Sopenharmony_ci	U8 BufferType;		/*0x01 */
51162306a36Sopenharmony_ci	U8 MsgLength;		/*0x02 */
51262306a36Sopenharmony_ci	U8 Function;		/*0x03 */
51362306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
51462306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
51562306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
51662306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
51762306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
51862306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
51962306a36Sopenharmony_ci	U16 Reserved5;		/*0x0C */
52062306a36Sopenharmony_ci	U16 IOCStatus;		/*0x0E */
52162306a36Sopenharmony_ci	U32 IOCLogInfo;		/*0x10 */
52262306a36Sopenharmony_ci	U32 TransferLength;	/*0x14 */
52362306a36Sopenharmony_ci} MPI2_DIAG_BUFFER_POST_REPLY, *PTR_MPI2_DIAG_BUFFER_POST_REPLY,
52462306a36Sopenharmony_ci	Mpi2DiagBufferPostReply_t, *pMpi2DiagBufferPostReply_t;
52562306a36Sopenharmony_ci
52662306a36Sopenharmony_ci/****************************************************************************
52762306a36Sopenharmony_ci* Diagnostic Release request
52862306a36Sopenharmony_ci****************************************************************************/
52962306a36Sopenharmony_ci
53062306a36Sopenharmony_citypedef struct _MPI2_DIAG_RELEASE_REQUEST {
53162306a36Sopenharmony_ci	U8 Reserved1;		/*0x00 */
53262306a36Sopenharmony_ci	U8 BufferType;		/*0x01 */
53362306a36Sopenharmony_ci	U8 ChainOffset;		/*0x02 */
53462306a36Sopenharmony_ci	U8 Function;		/*0x03 */
53562306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
53662306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
53762306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
53862306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
53962306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
54062306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
54162306a36Sopenharmony_ci} MPI2_DIAG_RELEASE_REQUEST, *PTR_MPI2_DIAG_RELEASE_REQUEST,
54262306a36Sopenharmony_ci	Mpi2DiagReleaseRequest_t, *pMpi2DiagReleaseRequest_t;
54362306a36Sopenharmony_ci
54462306a36Sopenharmony_ci/****************************************************************************
54562306a36Sopenharmony_ci* Diagnostic Buffer Post reply
54662306a36Sopenharmony_ci****************************************************************************/
54762306a36Sopenharmony_ci
54862306a36Sopenharmony_citypedef struct _MPI2_DIAG_RELEASE_REPLY {
54962306a36Sopenharmony_ci	U8 Reserved1;		/*0x00 */
55062306a36Sopenharmony_ci	U8 BufferType;		/*0x01 */
55162306a36Sopenharmony_ci	U8 MsgLength;		/*0x02 */
55262306a36Sopenharmony_ci	U8 Function;		/*0x03 */
55362306a36Sopenharmony_ci	U16 Reserved2;		/*0x04 */
55462306a36Sopenharmony_ci	U8 Reserved3;		/*0x06 */
55562306a36Sopenharmony_ci	U8 MsgFlags;		/*0x07 */
55662306a36Sopenharmony_ci	U8 VP_ID;		/*0x08 */
55762306a36Sopenharmony_ci	U8 VF_ID;		/*0x09 */
55862306a36Sopenharmony_ci	U16 Reserved4;		/*0x0A */
55962306a36Sopenharmony_ci	U16 Reserved5;		/*0x0C */
56062306a36Sopenharmony_ci	U16 IOCStatus;		/*0x0E */
56162306a36Sopenharmony_ci	U32 IOCLogInfo;		/*0x10 */
56262306a36Sopenharmony_ci} MPI2_DIAG_RELEASE_REPLY, *PTR_MPI2_DIAG_RELEASE_REPLY,
56362306a36Sopenharmony_ci	Mpi2DiagReleaseReply_t, *pMpi2DiagReleaseReply_t;
56462306a36Sopenharmony_ci
56562306a36Sopenharmony_ci#endif
566