1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /* Copyright (c) 2016-2017 Hisilicon Limited. */
7 #include "hclge_main.h"
9 #define HCLGE_RAS_PF_OTHER_INT_STS_REG 0x20B00
10 #define HCLGE_RAS_REG_FE_MASK 0xFF
11 #define HCLGE_RAS_REG_NFE_MASK 0xFF00
12 #define HCLGE_RAS_REG_NFE_SHIFT 8
14 #define HCLGE_IMP_TCM_ECC_ERR_INT_EN 0xFFFF0000
15 #define HCLGE_IMP_TCM_ECC_ERR_INT_EN_MASK 0xFFFF0000
16 #define HCLGE_IMP_ITCM4_ECC_ERR_INT_EN 0x300
17 #define HCLGE_IMP_ITCM4_ECC_ERR_INT_EN_MASK 0x300
18 #define HCLGE_CMDQ_NIC_ECC_ERR_INT_EN 0xFFFF
19 #define HCLGE_CMDQ_NIC_ECC_ERR_INT_EN_MASK 0xFFFF
20 #define HCLGE_CMDQ_ROCEE_ECC_ERR_INT_EN 0xFFFF0000
21 #define HCLGE_CMDQ_ROCEE_ECC_ERR_INT_EN_MASK 0xFFFF0000
22 #define HCLGE_IMP_RD_POISON_ERR_INT_EN 0x0100
23 #define HCLGE_IMP_RD_POISON_ERR_INT_EN_MASK 0x0100
24 #define HCLGE_TQP_ECC_ERR_INT_EN 0x0FFF
25 #define HCLGE_TQP_ECC_ERR_INT_EN_MASK 0x0FFF
26 #define HCLGE_IGU_ERR_INT_EN 0x0000066F
27 #define HCLGE_IGU_ERR_INT_EN_MASK 0x000F
28 #define HCLGE_IGU_TNL_ERR_INT_EN 0x0002AABF
29 #define HCLGE_IGU_TNL_ERR_INT_EN_MASK 0x003F
30 #define HCLGE_NCSI_ERR_INT_EN 0x3
31 #define HCLGE_NCSI_ERR_INT_TYPE 0x9
33 #define HCLGE_IMP_TCM_ECC_INT_MASK 0xFFFF
34 #define HCLGE_IMP_ITCM4_ECC_INT_MASK 0x3
35 #define HCLGE_CMDQ_ECC_INT_MASK 0xFFFF
36 #define HCLGE_CMDQ_ROC_ECC_INT_SHIFT 16
37 #define HCLGE_TQP_ECC_INT_MASK 0xFFF
38 #define HCLGE_TQP_ECC_INT_SHIFT 16
39 #define HCLGE_IMP_TCM_ECC_CLR_MASK 0xFFFF
40 #define HCLGE_IMP_ITCM4_ECC_CLR_MASK 0x3
41 #define HCLGE_CMDQ_NIC_ECC_CLR_MASK 0xFFFF
42 #define HCLGE_CMDQ_ROCEE_ECC_CLR_MASK 0xFFFF0000
43 #define HCLGE_TQP_IMP_ERR_CLR_MASK 0x0FFF0001
44 #define HCLGE_IGU_COM_INT_MASK 0xF
45 #define HCLGE_IGU_EGU_TNL_INT_MASK 0x3F
47 enum hclge_err_int_type {
48 HCLGE_ERR_INT_MSIX = 0,
49 HCLGE_ERR_INT_RAS_CE = 1,
50 HCLGE_ERR_INT_RAS_NFE = 2,
51 HCLGE_ERR_INT_RAS_FE = 3,
57 int (*enable_error)(struct hclge_dev *hdev, bool en);
58 void (*process_error)(struct hclge_dev *hdev,
59 enum hclge_err_int_type type);
62 struct hclge_hw_error {
67 int hclge_hw_error_set_state(struct hclge_dev *hdev, bool state);
68 pci_ers_result_t hclge_process_ras_hw_error(struct hnae3_ae_dev *ae_dev);