|
@@ -218,6 +218,28 @@ static void soc15_gc_cac_wreg(struct amdgpu_device *adev, u32 reg, u32 v)
|
|
spin_unlock_irqrestore(&adev->gc_cac_idx_lock, flags);
|
|
spin_unlock_irqrestore(&adev->gc_cac_idx_lock, flags);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static u32 soc15_se_cac_rreg(struct amdgpu_device *adev, u32 reg)
|
|
|
|
+{
|
|
|
|
+ unsigned long flags;
|
|
|
|
+ u32 r;
|
|
|
|
+
|
|
|
|
+ spin_lock_irqsave(&adev->se_cac_idx_lock, flags);
|
|
|
|
+ WREG32_SOC15(GC, 0, mmSE_CAC_IND_INDEX, (reg));
|
|
|
|
+ r = RREG32_SOC15(GC, 0, mmSE_CAC_IND_DATA);
|
|
|
|
+ spin_unlock_irqrestore(&adev->se_cac_idx_lock, flags);
|
|
|
|
+ return r;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static void soc15_se_cac_wreg(struct amdgpu_device *adev, u32 reg, u32 v)
|
|
|
|
+{
|
|
|
|
+ unsigned long flags;
|
|
|
|
+
|
|
|
|
+ spin_lock_irqsave(&adev->se_cac_idx_lock, flags);
|
|
|
|
+ WREG32_SOC15(GC, 0, mmSE_CAC_IND_INDEX, (reg));
|
|
|
|
+ WREG32_SOC15(GC, 0, mmSE_CAC_IND_DATA, (v));
|
|
|
|
+ spin_unlock_irqrestore(&adev->se_cac_idx_lock, flags);
|
|
|
|
+}
|
|
|
|
+
|
|
static u32 soc15_get_config_memsize(struct amdgpu_device *adev)
|
|
static u32 soc15_get_config_memsize(struct amdgpu_device *adev)
|
|
{
|
|
{
|
|
if (adev->flags & AMD_IS_APU)
|
|
if (adev->flags & AMD_IS_APU)
|
|
@@ -579,6 +601,8 @@ static int soc15_common_early_init(void *handle)
|
|
adev->didt_wreg = &soc15_didt_wreg;
|
|
adev->didt_wreg = &soc15_didt_wreg;
|
|
adev->gc_cac_rreg = &soc15_gc_cac_rreg;
|
|
adev->gc_cac_rreg = &soc15_gc_cac_rreg;
|
|
adev->gc_cac_wreg = &soc15_gc_cac_wreg;
|
|
adev->gc_cac_wreg = &soc15_gc_cac_wreg;
|
|
|
|
+ adev->se_cac_rreg = &soc15_se_cac_rreg;
|
|
|
|
+ adev->se_cac_wreg = &soc15_se_cac_wreg;
|
|
|
|
|
|
adev->asic_funcs = &soc15_asic_funcs;
|
|
adev->asic_funcs = &soc15_asic_funcs;
|
|
|
|
|