]> Git Repo - linux.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
Merge tag 'for-5.14-rc3-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave...
[linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_device.c
index 130a9adf09ef9cea548bb01d674afe2f7177dd9c..f3fd5ec710b63cd9d5d9fc80d0a8af0f646a4581 100644 (file)
@@ -1369,6 +1369,38 @@ def_value:
        adev->pm.smu_prv_buffer_size = 0;
 }
 
+static int amdgpu_device_init_apu_flags(struct amdgpu_device *adev)
+{
+       if (!(adev->flags & AMD_IS_APU) ||
+           adev->asic_type < CHIP_RAVEN)
+               return 0;
+
+       switch (adev->asic_type) {
+       case CHIP_RAVEN:
+               if (adev->pdev->device == 0x15dd)
+                       adev->apu_flags |= AMD_APU_IS_RAVEN;
+               if (adev->pdev->device == 0x15d8)
+                       adev->apu_flags |= AMD_APU_IS_PICASSO;
+               break;
+       case CHIP_RENOIR:
+               if ((adev->pdev->device == 0x1636) ||
+                   (adev->pdev->device == 0x164c))
+                       adev->apu_flags |= AMD_APU_IS_RENOIR;
+               else
+                       adev->apu_flags |= AMD_APU_IS_GREEN_SARDINE;
+               break;
+       case CHIP_VANGOGH:
+               adev->apu_flags |= AMD_APU_IS_VANGOGH;
+               break;
+       case CHIP_YELLOW_CARP:
+               break;
+       default:
+               return -EINVAL;
+       }
+
+       return 0;
+}
+
 /**
  * amdgpu_device_check_arguments - validate module params
  *
@@ -3386,6 +3418,10 @@ int amdgpu_device_init(struct amdgpu_device *adev,
        mutex_init(&adev->psp.mutex);
        mutex_init(&adev->notifier_lock);
 
+       r = amdgpu_device_init_apu_flags(adev);
+       if (r)
+               return r;
+
        r = amdgpu_device_check_arguments(adev);
        if (r)
                return r;
@@ -3468,13 +3504,13 @@ int amdgpu_device_init(struct amdgpu_device *adev,
        r = amdgpu_device_get_job_timeout_settings(adev);
        if (r) {
                dev_err(adev->dev, "invalid lockup_timeout parameter syntax\n");
-               goto failed_unmap;
+               return r;
        }
 
        /* early init functions */
        r = amdgpu_device_ip_early_init(adev);
        if (r)
-               goto failed_unmap;
+               return r;
 
        /* doorbell bar mapping and doorbell index init*/
        amdgpu_device_doorbell_init(adev);
@@ -3700,10 +3736,6 @@ release_ras_con:
 failed:
        amdgpu_vf_error_trans_all(adev);
 
-failed_unmap:
-       iounmap(adev->rmmio);
-       adev->rmmio = NULL;
-
        return r;
 }
 
@@ -4304,6 +4336,7 @@ bool amdgpu_device_should_recover_gpu(struct amdgpu_device *adev)
                case CHIP_SIENNA_CICHLID:
                case CHIP_NAVY_FLOUNDER:
                case CHIP_DIMGREY_CAVEFISH:
+               case CHIP_BEIGE_GOBY:
                case CHIP_VANGOGH:
                case CHIP_ALDEBARAN:
                        break;
This page took 0.034993 seconds and 4 git commands to generate.