From: Flora Cui <flora....@amd.com>

[ Upstream commit 017fbb6690c2245b1b4ef39b66c79d2990fe63dd ]

Signed-off-by: Flora Cui <flora....@amd.com>
Reviewed-by: Alex Deucher <alexander.deuc...@amd.com>
Signed-off-by: Alex Deucher <alexander.deuc...@amd.com>
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 31 ++++++++++---------
 1 file changed, 16 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
index ca8091fd3a24f..018240a2ab96a 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c
@@ -111,8 +111,7 @@
 #include "amdgpu_isp.h"
 #endif
 
-#define FIRMWARE_IP_DISCOVERY "amdgpu/ip_discovery.bin"
-MODULE_FIRMWARE(FIRMWARE_IP_DISCOVERY);
+MODULE_FIRMWARE("amdgpu/ip_discovery.bin");
 
 #define mmIP_DISCOVERY_VERSION  0x16A00
 #define mmRCC_CONFIG_MEMSIZE   0xde3
@@ -295,21 +294,13 @@ static int amdgpu_discovery_read_binary_from_mem(struct 
amdgpu_device *adev,
        return ret;
 }
 
-static int amdgpu_discovery_read_binary_from_file(struct amdgpu_device *adev, 
uint8_t *binary)
+static int amdgpu_discovery_read_binary_from_file(struct amdgpu_device *adev,
+                                                       uint8_t *binary,
+                                                       const char *fw_name)
 {
        const struct firmware *fw;
-       const char *fw_name;
        int r;
 
-       switch (amdgpu_discovery) {
-       case 2:
-               fw_name = FIRMWARE_IP_DISCOVERY;
-               break;
-       default:
-               dev_warn(adev->dev, "amdgpu_discovery is not set properly\n");
-               return -EINVAL;
-       }
-
        r = request_firmware(&fw, fw_name, adev->dev);
        if (r) {
                dev_err(adev->dev, "can't load firmware \"%s\"\n",
@@ -402,10 +393,19 @@ static int amdgpu_discovery_verify_npsinfo(struct 
amdgpu_device *adev,
        return 0;
 }
 
+static const char *amdgpu_discovery_get_fw_name(struct amdgpu_device *adev)
+{
+       if (amdgpu_discovery == 2)
+               return "amdgpu/ip_discovery.bin";
+
+       return NULL;
+}
+
 static int amdgpu_discovery_init(struct amdgpu_device *adev)
 {
        struct table_info *info;
        struct binary_header *bhdr;
+       const char *fw_name;
        uint16_t offset;
        uint16_t size;
        uint16_t checksum;
@@ -417,9 +417,10 @@ static int amdgpu_discovery_init(struct amdgpu_device 
*adev)
                return -ENOMEM;
 
        /* Read from file if it is the preferred option */
-       if (amdgpu_discovery == 2) {
+       fw_name = amdgpu_discovery_get_fw_name(adev);
+       if (fw_name != NULL) {
                dev_info(adev->dev, "use ip discovery information from file");
-               r = amdgpu_discovery_read_binary_from_file(adev, 
adev->mman.discovery_bin);
+               r = amdgpu_discovery_read_binary_from_file(adev, 
adev->mman.discovery_bin, fw_name);
 
                if (r) {
                        dev_err(adev->dev, "failed to read ip discovery binary 
from file\n");
-- 
2.39.5

Reply via email to