hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/gpu/drm/amd/amdgpu/soc15.h
....@@ -26,9 +26,10 @@
2626
2727 #include "nbio_v6_1.h"
2828 #include "nbio_v7_0.h"
29
+#include "nbio_v7_4.h"
2930
30
-#define SOC15_FLUSH_GPU_TLB_NUM_WREG 4
31
-#define SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT 1
31
+#define SOC15_FLUSH_GPU_TLB_NUM_WREG 6
32
+#define SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT 3
3233
3334 extern const struct amd_ip_funcs soc15_common_ip_funcs;
3435
....@@ -41,13 +42,55 @@
4142 u32 or_mask;
4243 };
4344
45
+struct soc15_reg_rlcg {
46
+ u32 hwip;
47
+ u32 instance;
48
+ u32 segment;
49
+ u32 reg;
50
+};
51
+
52
+struct soc15_reg_entry {
53
+ uint32_t hwip;
54
+ uint32_t inst;
55
+ uint32_t seg;
56
+ uint32_t reg_offset;
57
+ uint32_t reg_value;
58
+ uint32_t se_num;
59
+ uint32_t instance;
60
+};
61
+
62
+struct soc15_allowed_register_entry {
63
+ uint32_t hwip;
64
+ uint32_t inst;
65
+ uint32_t seg;
66
+ uint32_t reg_offset;
67
+ bool grbm_indexed;
68
+};
69
+
70
+struct soc15_ras_field_entry {
71
+ const char *name;
72
+ uint32_t hwip;
73
+ uint32_t inst;
74
+ uint32_t seg;
75
+ uint32_t reg_offset;
76
+ uint32_t sec_count_mask;
77
+ uint32_t sec_count_shift;
78
+ uint32_t ded_count_mask;
79
+ uint32_t ded_count_shift;
80
+};
81
+
4482 #define SOC15_REG_ENTRY(ip, inst, reg) ip##_HWIP, inst, reg##_BASE_IDX, reg
83
+
84
+#define SOC15_REG_ENTRY_OFFSET(entry) (adev->reg_offset[entry.hwip][entry.inst][entry.seg] + entry.reg_offset)
4585
4686 #define SOC15_REG_GOLDEN_VALUE(ip, inst, reg, and_mask, or_mask) \
4787 { ip##_HWIP, inst, reg##_BASE_IDX, reg, and_mask, or_mask }
4888
89
+#define SOC15_REG_FIELD(reg, field) reg##__##field##_MASK, reg##__##field##__SHIFT
90
+
4991 void soc15_grbm_select(struct amdgpu_device *adev,
5092 u32 me, u32 pipe, u32 queue, u32 vmid);
93
+void soc15_set_virt_ops(struct amdgpu_device *adev);
5194 int soc15_set_ip_blocks(struct amdgpu_device *adev);
5295
5396 void soc15_program_register_sequence(struct amdgpu_device *adev,
....@@ -56,5 +99,8 @@
5699
57100 int vega10_reg_base_init(struct amdgpu_device *adev);
58101 int vega20_reg_base_init(struct amdgpu_device *adev);
102
+int arct_reg_base_init(struct amdgpu_device *adev);
59103
104
+void vega10_doorbell_index_init(struct amdgpu_device *adev);
105
+void vega20_doorbell_index_init(struct amdgpu_device *adev);
60106 #endif