/**
 * Copyright (c) 2025 Huawei Technologies Co., Ltd.
 * This program is free software, you can redistribute it and/or modify it under the terms and conditions of
 * CANN Open Software License Agreement Version 2.0 (the "License").
 * Please refer to the License for details. You may not use this file except in compliance with the License.
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
 * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
 * See LICENSE in the root of the software repository for the full text of the License.
 */
#ifndef DEV_MON_CMD_DEF_H
#define DEV_MON_CMD_DEF_H

/*
 *  DEV_MON_SMB_FUN_CODE_COMMON(0x0) is defined by the BMC. When adding a new command word,
 *   it needs to be verified with the BMC.
 */
#define DEV_MON_SMB_FUN_CODE_COMMON 0X0
#define DEV_MON_CMD_GET_DEVICE_CAPABILITY 0X00
#define DEV_MON_CMD_GET_HEALTH_STATE 0X01
#define DEV_MON_CMD_GET_ERROR_CODE 0X02
#define DEV_MON_CMD_GET_CHIP_TEMP 0X03
#define DEV_MON_CMD_GET_POWER 0X04
#define DEV_MON_CMD_GET_FW_VERSION 0X05
#define DEV_MON_CMD_GET_VID 0X06
#define DEV_MON_CMD_GET_DID 0X07
#define DEV_MON_CMD_GET_SN 0X08
#define DEV_MON_CMD_GET_SUBVID 0X09
#define DEV_MON_CMD_GET_SUBDID 0X0A
#define DEV_MON_CMD_GET_CHIP_VOLT 0X0B
#define DEV_MON_CMD_GET_DEAD_LOG 0X0C
#define DEV_MON_CMD_GET_RUN_DATA 0X0D

#define DEV_MON_CMD_GET_BOARD_ID 0X0F
#define DEV_MON_CMD_GET_PCB_VERSION 0X10
#define DEV_MON_CMD_GET_RESET_TIME 0X11
#define DEV_MON_CMD_GET_FORMWARE_NAME 0X12
#define DEV_MON_CMD_GET_FORMWARE_VER 0X13

#define DEV_MON_CMD_WRITE_CLEAR_LABEL_DATA 0X14
#define DEV_MON_CMD_READ_LABEL_DATA 0X15
#define DEV_MON_CMD_DFT_CONTROL 0X16
#define DEV_MON_CMD_GET_DFT_STATE 0X17
#define DEV_MON_CMD_GET_UPGRADE 0X18
#define DEV_MON_CMD_GET_UPGRADE_CONTROL 0X19
#define DEV_MON_CMD_GET_UPGRADE_STATUS 0X1A
#define DEV_MON_CMD_GET_BOARD_INFO 0X1B
#define DEV_MON_CMD_GET_FAN_INFO 0X1E
#define DEV_MON_CMD_QUERY_ECC_STAT 0X1F
#define DEV_MON_CMD_GET_SYSTEM_TIME 0X20
#define DEV_MON_CMD_SET_SYSTEM_TIME 0X21
#define DEV_MON_CMD_SET_AGING_FLAG_TIME 0X22
#define DEV_MON_CMD_GET_AGING_FLAG_TIME 0X23
#define DEV_MON_CMD_GET_AGING_RESULT 0X24
#define DEV_MON_CMD_GET_ALL_TEMP_INFO 0X27
#define DEV_MON_CMD_DMS_FAULT_INJECT 0X28

#define DEV_MON_GET_BOARD_INFO_BOM_ID 1
#define DEV_MON_GET_BOARD_INFO_SLOT_ID 2

#define DEV_MON_CMD_GET_PERI_DEV_VOLT 0X1C
#define DEV_MON_CMD_GET_PERI_DEV_TEMP 0X1D

/*
 *  DEV_MON_SMB_FUN_CODE_DAVINCI(0x6) is defined by Ascend. The command word and product have predefined rules:
 *  Command words after 0x80 are maintained by the product.
 */
#define DEV_MON_SMB_FUN_CODE_DAVINCI 0X6
#define DEV_MON_CMD_D_NO_OP_REQ 0X00
#define DEV_MON_CMD_D_LOAD_DFT_TEST_LIB 0X01
#define DEV_MON_CMD_D_GET_DIE_ID 0X02
#define DMP_LSB_OP_CODE_UPGRADE_CTRL 0x03
#define DMP_LSB_OP_CODE_UPGRADE_STATE 0x04
#define DMP_LSB_OP_CODE_UPGRADE_VERSION 0x07
#define DEV_MON_CMD_D_GET_D_INFO 0X05
#define DEV_MON_CMD_D_GET_FLASH_D_INFO 0X06
#define DEV_MON_CMD_D_GET_FW_VERSION 0X07
#define DEV_MON_CMD_D_CONFIG_ENABLE 0X08
#define DEV_MON_CMD_D_SET_MAC_ADDR 0X09
#define DEV_MON_CMD_D_GET_MAC_ADDR 0X0A

#define DEV_MON_CMD_D_SENDMSG 0X0B
#define DEV_MON_CMD_D_GET_ENABLE 0X0C

#define DEV_MON_CMD_GET_D_ERRORCODE 0X0D
#define DEV_MON_CMD_GET_CHIP_INFO 0X0E
#define DEV_MON_CMD_SET_EFUSE_INFO 0X0F
#define DEV_MON_CMD_CHECK_EFUSE_INFO 0X10
#define DEV_MON_CMD_GET_MINI_SENSOR_INFO 0X11

#define DEV_MON_CMD_DFT_FW_LOAD 0X12

#define DMP_LSB_OP_CODE_DFT_STRESS_TEST 0x013

#define DMP_MON_CMD_MINI2MCU_HEARTBEAT 0x14
#define DMP_MON_CMD_GET_MINI2MCU_STATUS 0x15
#define DMP_MON_CMD_SWITCH_MCU_I2C_CONN 0x16
#define DEV_MON_CMD_D_SET_IP_ADDR 0X17
#define DEV_MON_CMD_D_GET_IP_ADDR 0X18
#define DEV_MON_CMD_D_GET_NET_DEV_INFO 0X19
#define DEV_MON_CMD_D_SET_GTW_ADDR 0X1A
#define DEV_MON_CMD_D_GET_GTW_ADDR 0X1B

#define DEV_EQUIP_CMD_D_SET_DEVICE_INFO 0X1C

#define DMP_MON_CMD_GET_USER_CONFIG 0x1d
#define DMP_MON_CMD_SET_USER_CONFIG 0x1e
#define DMP_MON_CMD_CLEAR_USER_CONFIG 0x1f
#define DEV_MON_CMD_DEBUG_SEND_DATA 0x20
#define DEV_MON_CMD_D_GET_PMU_VOLTAGE 0X21
#define DEV_MON_CMD_D_GET_DFX_LOG 0x22 /* imu out of band used */
#define DEV_EQUIP_CMD_D_GET_DEVICE_INFO 0X23
#define DEV_MON_CMD_GET_CNTPCT 0x24
#define DEV_MON_CMD_GET_ERRSTR 0x25
#define DEV_MON_CMD_SET_PWR_LIMIT 0x26 /* imu out of band used */
#define DEV_MON_CMD_GET_PWR_LIMIT 0x27 /* imu out of band used */
#define DEV_MON_CMD_GET_LLC_PERF_PARA 0x28
#define DEV_MON_CMD_D_GET_AICPU_INFO 0x2A
#define DEV_MON_CMD_D_SET_REVOCATION 0x2B
#define DEV_MON_CMD_D_SET_POWER_STATE 0x2D
#define DEV_MON_CMD_D_GET_SOCHWFAULT 0x2E
#define DEV_MON_CMD_D_GET_HISSSTATUS  0x2F

#define DEV_MON_CMD_D_GET_LPSTATUS   0x31
#define DEV_MON_CMD_D_GET_UARTSTATUS  0x32
#define DEV_MON_CMD_D_SET_UARTCONFIG  0x33

#define DEV_MON_CMD_D_GET_CAN_STATUS   0x34
#define DEV_MON_CMD_D_GET_UFS_STATUS     0x35
#define DEV_MON_CMD_D_GET_SENSORHUB_STATUS   0x36
#define DEV_MON_CMD_D_GET_CAN_CONFIG     0x37

#define DEV_MON_CMD_D_GET_SENSORHUB_CONFIG   0x3A
#define DEV_MON_CMD_D_GET_GPIO_STATUS   0x3B
#define DEV_MON_CMD_D_GET_SOC_HW_FAULT   0x3C
#define DEV_MON_CMD_D_GET_SAFETYISLAND_STATUS   0x3D
#define DEV_MON_CMD_D_GET_CGROUP_INFO   0x3E
#define DEV_MON_CMD_D_GET_DEVICE_INFO         0x3F
#define DEV_MON_CMD_D_CREATE_CAPABILITY_GROUP 0x40
#define DEV_MON_CMD_D_DELETE_CAPABILITY_GROUP 0x41
#define DEV_MON_CMD_D_GET_CAPABILITY_GROUP_INFO 0x42
#define DEV_MON_CMD_D_SET_DEVICE_INFO         0x43
#define DEV_MON_CMD_D_GET_REBOOT_REASON       0x44
#define DEV_MON_CMD_D_SET_DEVICE_INFO_EX         0x45

#define DEV_MON_CMD_D_GET_BIST_INFO           0x4A
#define DEV_MON_CMD_D_SET_BIST_INFO           0x4B
#define DEV_MON_CMD_D_GET_LAST_BOOTSTATE      0x4C

#define DEV_MON_CMD_FAULT_INJECT              0x4F
#define DEV_MON_CMD_D_GET_DEVICE_INFO_CRITICAL           0x52
#define DEV_MON_CMD_D_CTRL_DEVICE_NODE        0x53
#define DEV_MON_CMD_D_GET_ALL_DEVICE_NODE     0x54
#define DEV_MON_CMD_D_GET_FLASH_CONTENT       0x55
#define DEV_MON_CMD_D_SET_FLASH_CONTENT       0x56
#define DEV_MON_CMD_D_SET_DEVICE_INFO_CRITICAL            0x57
#define DEV_MON_CMD_D_GET_DEVICE_STATE        0x58
#define DEV_MON_CMD_HOT_PATCH_OPERATION         0x59

#define DEV_MON_CMD_D_SET_DETECT_INFO         0x60
#define DEV_MON_CMD_D_GET_DETECT_INFO         0x61
#define DEV_MON_CMD_GET_NETWORK_HEALTH        0x62
#define DEV_MON_CMD_GET_CUST_BOARD_INFO       0x63
#define DEV_MON_CMD_ABL_MAMI_PATCH_OPERATION  0x64
#define DEV_MON_CMD_D_GET_DIE_ID_V2  0x65
#define DEV_MON_CMD_HOTRESET_INFORM_AO        0x66
/*
 * Commands with values greater than or equal to 0x80 are maintained by the product.
 */
#define DEV_MON_CMD_GET_ISOLATED_PAGES_INFO     0x81
#define DEV_MON_CMD_CLEAR_ISOLATED_INFO         0x82
#define DEV_MON_CMD_GET_MULTI_ECC_TIME_INFO     0x8A
#define DEV_MON_CMD_GET_ECC_RECORD_INFO         0x8B

#define DEV_MON_CMD_GET_CHIP_EXPAND_VERSION    0x9E

#define DEV_MON_CMD_D_SET_NPU_STATUS    0xA4

/* 0xD6 and 0xD7 are occupied by driver. */
#define DEV_MON_CMD_GET_UB_LINK_STATUS  0xD6
#define DEV_MON_CMD_GET_UB_PORT_STATUS  0xD7

#endif