Skip to content

Commit 017fbb6

Browse files
Flora Cuialexdeucher
authored andcommitted
drm/amdgpu/discovery: check ip_discovery fw file available
Signed-off-by: Flora Cui <[email protected]> Reviewed-by: Alex Deucher <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent 62c1ed0 commit 017fbb6

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,7 @@
113113
#include "amdgpu_isp.h"
114114
#endif
115115

116-
#define FIRMWARE_IP_DISCOVERY "amdgpu/ip_discovery.bin"
117-
MODULE_FIRMWARE(FIRMWARE_IP_DISCOVERY);
116+
MODULE_FIRMWARE("amdgpu/ip_discovery.bin");
118117

119118
#define mmIP_DISCOVERY_VERSION 0x16A00
120119
#define mmRCC_CONFIG_MEMSIZE 0xde3
@@ -297,21 +296,13 @@ static int amdgpu_discovery_read_binary_from_mem(struct amdgpu_device *adev,
297296
return ret;
298297
}
299298

300-
static int amdgpu_discovery_read_binary_from_file(struct amdgpu_device *adev, uint8_t *binary)
299+
static int amdgpu_discovery_read_binary_from_file(struct amdgpu_device *adev,
300+
uint8_t *binary,
301+
const char *fw_name)
301302
{
302303
const struct firmware *fw;
303-
const char *fw_name;
304304
int r;
305305

306-
switch (amdgpu_discovery) {
307-
case 2:
308-
fw_name = FIRMWARE_IP_DISCOVERY;
309-
break;
310-
default:
311-
dev_warn(adev->dev, "amdgpu_discovery is not set properly\n");
312-
return -EINVAL;
313-
}
314-
315306
r = request_firmware(&fw, fw_name, adev->dev);
316307
if (r) {
317308
dev_err(adev->dev, "can't load firmware \"%s\"\n",
@@ -404,10 +395,19 @@ static int amdgpu_discovery_verify_npsinfo(struct amdgpu_device *adev,
404395
return 0;
405396
}
406397

398+
static const char *amdgpu_discovery_get_fw_name(struct amdgpu_device *adev)
399+
{
400+
if (amdgpu_discovery == 2)
401+
return "amdgpu/ip_discovery.bin";
402+
403+
return NULL;
404+
}
405+
407406
static int amdgpu_discovery_init(struct amdgpu_device *adev)
408407
{
409408
struct table_info *info;
410409
struct binary_header *bhdr;
410+
const char *fw_name;
411411
uint16_t offset;
412412
uint16_t size;
413413
uint16_t checksum;
@@ -419,9 +419,10 @@ static int amdgpu_discovery_init(struct amdgpu_device *adev)
419419
return -ENOMEM;
420420

421421
/* Read from file if it is the preferred option */
422-
if (amdgpu_discovery == 2) {
422+
fw_name = amdgpu_discovery_get_fw_name(adev);
423+
if (fw_name != NULL) {
423424
dev_info(adev->dev, "use ip discovery information from file");
424-
r = amdgpu_discovery_read_binary_from_file(adev, adev->mman.discovery_bin);
425+
r = amdgpu_discovery_read_binary_from_file(adev, adev->mman.discovery_bin, fw_name);
425426

426427
if (r) {
427428
dev_err(adev->dev, "failed to read ip discovery binary from file\n");

0 commit comments

Comments
 (0)