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+
407406static 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