113
113
#include "amdgpu_isp.h"
114
114
#endif
115
115
116
- #define FIRMWARE_IP_DISCOVERY "amdgpu/ip_discovery.bin"
117
- MODULE_FIRMWARE (FIRMWARE_IP_DISCOVERY );
116
+ MODULE_FIRMWARE ("amdgpu/ip_discovery.bin" );
118
117
119
118
#define mmIP_DISCOVERY_VERSION 0x16A00
120
119
#define mmRCC_CONFIG_MEMSIZE 0xde3
@@ -297,21 +296,13 @@ static int amdgpu_discovery_read_binary_from_mem(struct amdgpu_device *adev,
297
296
return ret ;
298
297
}
299
298
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 )
301
302
{
302
303
const struct firmware * fw ;
303
- const char * fw_name ;
304
304
int r ;
305
305
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
-
315
306
r = request_firmware (& fw , fw_name , adev -> dev );
316
307
if (r ) {
317
308
dev_err (adev -> dev , "can't load firmware \"%s\"\n" ,
@@ -404,10 +395,19 @@ static int amdgpu_discovery_verify_npsinfo(struct amdgpu_device *adev,
404
395
return 0 ;
405
396
}
406
397
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
+
407
406
static int amdgpu_discovery_init (struct amdgpu_device * adev )
408
407
{
409
408
struct table_info * info ;
410
409
struct binary_header * bhdr ;
410
+ const char * fw_name ;
411
411
uint16_t offset ;
412
412
uint16_t size ;
413
413
uint16_t checksum ;
@@ -419,9 +419,10 @@ static int amdgpu_discovery_init(struct amdgpu_device *adev)
419
419
return - ENOMEM ;
420
420
421
421
/* 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 ) {
423
424
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 );
425
426
426
427
if (r ) {
427
428
dev_err (adev -> dev , "failed to read ip discovery binary from file\n" );
0 commit comments