/* detect hw virtualization here */
        amdgpu_detect_virtualization(adev);
 
-       if (amdgpu_discovery && adev->asic_type >= CHIP_NAVI10) {
-               r = amdgpu_discovery_init(adev);
-               if (r) {
-                       dev_err(adev->dev, "amdgpu_discovery_init failed\n");
-                       return r;
-               }
+       r = amdgpu_device_get_job_timeout_settings(adev);
+       if (r) {
+               dev_err(adev->dev, "invalid lockup_timeout parameter syntax\n");
+               return r;
        }
 
        /* early init functions */
        if (r)
                return r;
 
-       r = amdgpu_device_get_job_timeout_settings(adev);
-       if (r) {
-               dev_err(adev->dev, "invalid lockup_timeout parameter syntax\n");
-               return r;
-       }
-
        /* doorbell bar mapping and doorbell index init*/
        amdgpu_device_doorbell_init(adev);
 
 
        return !!(amdgpu_discovery_calculate_checksum(data, size) == expected);
 }
 
-int amdgpu_discovery_init(struct amdgpu_device *adev)
+static int amdgpu_discovery_init(struct amdgpu_device *adev)
 {
        struct table_info *info;
        struct binary_header *bhdr;
        uint8_t num_base_address;
        int hw_ip;
        int i, j, k;
+       int r;
 
-       if (!adev->discovery) {
-               DRM_ERROR("ip discovery uninitialized\n");
-               return -EINVAL;
+       r = amdgpu_discovery_init(adev);
+       if (r) {
+               DRM_ERROR("amdgpu_discovery_init failed\n");
+               return r;
        }
 
        bhdr = (struct binary_header *)adev->discovery;
 
 
 #define DISCOVERY_TMR_SIZE  (64 << 10)
 
-int amdgpu_discovery_init(struct amdgpu_device *adev);
 void amdgpu_discovery_fini(struct amdgpu_device *adev);
 int amdgpu_discovery_reg_base_init(struct amdgpu_device *adev);
 int amdgpu_discovery_get_ip_version(struct amdgpu_device *adev, int hw_id,