|
@@ -44,8 +44,37 @@ MODULE_FIRMWARE("radeon/bonaire_mc.bin");
|
|
|
MODULE_FIRMWARE("radeon/hawaii_mc.bin");
|
|
|
MODULE_FIRMWARE("amdgpu/topaz_mc.bin");
|
|
|
|
|
|
+static const u32 golden_settings_iceland_a11[] =
|
|
|
+{
|
|
|
+ mmVM_PRT_APERTURE0_LOW_ADDR, 0x0fffffff, 0x0fffffff,
|
|
|
+ mmVM_PRT_APERTURE1_LOW_ADDR, 0x0fffffff, 0x0fffffff,
|
|
|
+ mmVM_PRT_APERTURE2_LOW_ADDR, 0x0fffffff, 0x0fffffff,
|
|
|
+ mmVM_PRT_APERTURE3_LOW_ADDR, 0x0fffffff, 0x0fffffff
|
|
|
+};
|
|
|
+
|
|
|
+static const u32 iceland_mgcg_cgcg_init[] =
|
|
|
+{
|
|
|
+ mmMC_MEM_POWER_LS, 0xffffffff, 0x00000104
|
|
|
+};
|
|
|
+
|
|
|
+static void gmc_v7_0_init_golden_registers(struct amdgpu_device *adev)
|
|
|
+{
|
|
|
+ switch (adev->asic_type) {
|
|
|
+ case CHIP_TOPAZ:
|
|
|
+ amdgpu_program_register_sequence(adev,
|
|
|
+ iceland_mgcg_cgcg_init,
|
|
|
+ (const u32)ARRAY_SIZE(iceland_mgcg_cgcg_init));
|
|
|
+ amdgpu_program_register_sequence(adev,
|
|
|
+ golden_settings_iceland_a11,
|
|
|
+ (const u32)ARRAY_SIZE(golden_settings_iceland_a11));
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
- * gmc8_mc_wait_for_idle - wait for MC idle callback.
|
|
|
+ * gmc7_mc_wait_for_idle - wait for MC idle callback.
|
|
|
*
|
|
|
* @adev: amdgpu_device pointer
|
|
|
*
|
|
@@ -142,7 +171,7 @@ static int gmc_v7_0_init_microcode(struct amdgpu_device *adev)
|
|
|
default: BUG();
|
|
|
}
|
|
|
|
|
|
- if(adev->asic_type == CHIP_TOPAZ)
|
|
|
+ if (adev->asic_type == CHIP_TOPAZ)
|
|
|
snprintf(fw_name, sizeof(fw_name), "amdgpu/%s_mc.bin", chip_name);
|
|
|
else
|
|
|
snprintf(fw_name, sizeof(fw_name), "radeon/%s_mc.bin", chip_name);
|
|
@@ -992,6 +1021,8 @@ static int gmc_v7_0_hw_init(void *handle)
|
|
|
int r;
|
|
|
struct amdgpu_device *adev = (struct amdgpu_device *)handle;
|
|
|
|
|
|
+ gmc_v7_0_init_golden_registers(adev);
|
|
|
+
|
|
|
gmc_v7_0_mc_program(adev);
|
|
|
|
|
|
if (!(adev->flags & AMD_IS_APU)) {
|