drm/amd/display: Don't load DMCU for Raven 1
authorHarry Wentland <harry.wentland@amd.com>
Mon, 29 Apr 2019 13:39:15 +0000 (09:39 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 20 May 2019 17:42:40 +0000 (12:42 -0500)
[WHY]
Some early Raven boards had a bad SBIOS that doesn't play nicely with
the DMCU FW. We thought the issues were fixed by ignoring errors on DMCU
load but that doesn't seem to be the case. We've still seen reports of
users unable to boot their systems at all.

[HOW]
Disable DMCU load on Raven 1. Only load it for Raven 2 and Picasso.

Signed-off-by: Harry Wentland <harry.wentland@amd.com>
Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

index 995f9df66142ef92e11f465aae065541d91a3873..0680c740f6fe2d0234c30697b22bef0f3d3d728d 100644 (file)
@@ -29,6 +29,7 @@
 #include "dm_services_types.h"
 #include "dc.h"
 #include "dc/inc/core_types.h"
+#include "dal_asic_id.h"
 
 #include "vid.h"
 #include "amdgpu.h"
@@ -640,7 +641,7 @@ static void amdgpu_dm_fini(struct amdgpu_device *adev)
 
 static int load_dmcu_fw(struct amdgpu_device *adev)
 {
-       const char *fw_name_dmcu;
+       const char *fw_name_dmcu = NULL;
        int r;
        const struct dmcu_firmware_header_v1_0 *hdr;
 
@@ -663,7 +664,14 @@ static int load_dmcu_fw(struct amdgpu_device *adev)
        case CHIP_VEGA20:
                return 0;
        case CHIP_RAVEN:
-               fw_name_dmcu = FIRMWARE_RAVEN_DMCU;
+               if (ASICREV_IS_PICASSO(adev->external_rev_id))
+                       fw_name_dmcu = FIRMWARE_RAVEN_DMCU;
+#if defined(CONFIG_DRM_AMD_DC_DCN1_01)
+               else if (ASICREV_IS_RAVEN2(adev->external_rev_id))
+                       fw_name_dmcu = FIRMWARE_RAVEN_DMCU;
+#endif
+               else
+                       return 0;
                break;
        default:
                DRM_ERROR("Unsupported ASIC type: 0x%X\n", adev->asic_type);