13
13
#include <linux/uacce.h>
14
14
#include "hpre.h"
15
15
16
- #define HPRE_QM_ABNML_INT_MASK 0x100004
17
16
#define HPRE_CTRL_CNT_CLR_CE_BIT BIT(0)
18
- #define HPRE_COMM_CNT_CLR_CE 0x0
19
17
#define HPRE_CTRL_CNT_CLR_CE 0x301000
20
18
#define HPRE_FSM_MAX_CNT 0x301008
21
19
#define HPRE_VFG_AXQOS 0x30100c
42
40
#define HPRE_HAC_INT_SET 0x301500
43
41
#define HPRE_RNG_TIMEOUT_NUM 0x301A34
44
42
#define HPRE_CORE_INT_ENABLE 0
45
- #define HPRE_CORE_INT_DISABLE GENMASK(21, 0)
46
43
#define HPRE_RDCHN_INI_ST 0x301a00
47
44
#define HPRE_CLSTR_BASE 0x302000
48
45
#define HPRE_CORE_EN_OFFSET 0x04
66
63
#define HPRE_CLSTR_ADDR_INTRVL 0x1000
67
64
#define HPRE_CLUSTER_INQURY 0x100
68
65
#define HPRE_CLSTR_ADDR_INQRY_RSLT 0x104
69
- #define HPRE_TIMEOUT_ABNML_BIT 6
70
66
#define HPRE_PASID_EN_BIT 9
71
67
#define HPRE_REG_RD_INTVRL_US 10
72
68
#define HPRE_REG_RD_TMOUT_US 1000
@@ -203,9 +199,9 @@ static const struct hisi_qm_cap_info hpre_basic_info[] = {
203
199
{HPRE_QM_RESET_MASK_CAP , 0x3128 , 0 , GENMASK (31 , 0 ), 0x0 , 0xC37 , 0x6C37 },
204
200
{HPRE_QM_OOO_SHUTDOWN_MASK_CAP , 0x3128 , 0 , GENMASK (31 , 0 ), 0x0 , 0x4 , 0x6C37 },
205
201
{HPRE_QM_CE_MASK_CAP , 0x312C , 0 , GENMASK (31 , 0 ), 0x0 , 0x8 , 0x8 },
206
- {HPRE_NFE_MASK_CAP , 0x3130 , 0 , GENMASK (31 , 0 ), 0x0 , 0x3FFFFE , 0x1FFFFFE },
207
- {HPRE_RESET_MASK_CAP , 0x3134 , 0 , GENMASK (31 , 0 ), 0x0 , 0x3FFFFE , 0xBFFFFE },
208
- {HPRE_OOO_SHUTDOWN_MASK_CAP , 0x3134 , 0 , GENMASK (31 , 0 ), 0x0 , 0x22 , 0xBFFFFE },
202
+ {HPRE_NFE_MASK_CAP , 0x3130 , 0 , GENMASK (31 , 0 ), 0x0 , 0x3FFFFE , 0x1FFFC3E },
203
+ {HPRE_RESET_MASK_CAP , 0x3134 , 0 , GENMASK (31 , 0 ), 0x0 , 0x3FFFFE , 0xBFFC3E },
204
+ {HPRE_OOO_SHUTDOWN_MASK_CAP , 0x3134 , 0 , GENMASK (31 , 0 ), 0x0 , 0x22 , 0xBFFC3E },
209
205
{HPRE_CE_MASK_CAP , 0x3138 , 0 , GENMASK (31 , 0 ), 0x0 , 0x1 , 0x1 },
210
206
{HPRE_CLUSTER_NUM_CAP , 0x313c , 20 , GENMASK (3 , 0 ), 0x0 , 0x4 , 0x1 },
211
207
{HPRE_CORE_TYPE_NUM_CAP , 0x313c , 16 , GENMASK (3 , 0 ), 0x0 , 0x2 , 0x2 },
@@ -656,11 +652,6 @@ static int hpre_set_user_domain_and_cache(struct hisi_qm *qm)
656
652
writel (HPRE_QM_USR_CFG_MASK , qm -> io_base + QM_AWUSER_M_CFG_ENABLE );
657
653
writel_relaxed (HPRE_QM_AXI_CFG_MASK , qm -> io_base + QM_AXI_M_CFG );
658
654
659
- /* HPRE need more time, we close this interrupt */
660
- val = readl_relaxed (qm -> io_base + HPRE_QM_ABNML_INT_MASK );
661
- val |= BIT (HPRE_TIMEOUT_ABNML_BIT );
662
- writel_relaxed (val , qm -> io_base + HPRE_QM_ABNML_INT_MASK );
663
-
664
655
if (qm -> ver >= QM_HW_V3 )
665
656
writel (HPRE_RSA_ENB | HPRE_ECC_ENB ,
666
657
qm -> io_base + HPRE_TYPES_ENB );
@@ -669,9 +660,7 @@ static int hpre_set_user_domain_and_cache(struct hisi_qm *qm)
669
660
670
661
writel (HPRE_QM_VFG_AX_MASK , qm -> io_base + HPRE_VFG_AXCACHE );
671
662
writel (0x0 , qm -> io_base + HPRE_BD_ENDIAN );
672
- writel (0x0 , qm -> io_base + HPRE_INT_MASK );
673
663
writel (0x0 , qm -> io_base + HPRE_POISON_BYPASS );
674
- writel (0x0 , qm -> io_base + HPRE_COMM_CNT_CLR_CE );
675
664
writel (0x0 , qm -> io_base + HPRE_ECC_BYPASS );
676
665
677
666
writel (HPRE_BD_USR_MASK , qm -> io_base + HPRE_BD_ARUSR_CFG );
@@ -761,7 +750,7 @@ static void hpre_hw_error_disable(struct hisi_qm *qm)
761
750
762
751
static void hpre_hw_error_enable (struct hisi_qm * qm )
763
752
{
764
- u32 ce , nfe ;
753
+ u32 ce , nfe , err_en ;
765
754
766
755
ce = hisi_qm_get_hw_info (qm , hpre_basic_info , HPRE_CE_MASK_CAP , qm -> cap_ver );
767
756
nfe = hisi_qm_get_hw_info (qm , hpre_basic_info , HPRE_NFE_MASK_CAP , qm -> cap_ver );
@@ -778,7 +767,8 @@ static void hpre_hw_error_enable(struct hisi_qm *qm)
778
767
hpre_master_ooo_ctrl (qm , true);
779
768
780
769
/* enable hpre hw error interrupts */
781
- writel (HPRE_CORE_INT_ENABLE , qm -> io_base + HPRE_INT_MASK );
770
+ err_en = ce | nfe | HPRE_HAC_RAS_FE_ENABLE ;
771
+ writel (~err_en , qm -> io_base + HPRE_INT_MASK );
782
772
}
783
773
784
774
static inline struct hisi_qm * hpre_file_to_qm (struct hpre_debugfs_file * file )
0 commit comments