diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 92 | 
1 files changed, 90 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index b21bcdc97460..63a089992645 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -1525,6 +1525,87 @@ static const u16 amdgpu_unsupported_pciidlist[] = {  	0x99A0,  	0x99A2,  	0x99A4, +	/* radeon secondary ids */ +	0x3171, +	0x3e70, +	0x4164, +	0x4165, +	0x4166, +	0x4168, +	0x4170, +	0x4171, +	0x4172, +	0x4173, +	0x496e, +	0x4a69, +	0x4a6a, +	0x4a6b, +	0x4a70, +	0x4a74, +	0x4b69, +	0x4b6b, +	0x4b6c, +	0x4c6e, +	0x4e64, +	0x4e65, +	0x4e66, +	0x4e67, +	0x4e68, +	0x4e69, +	0x4e6a, +	0x4e71, +	0x4f73, +	0x5569, +	0x556b, +	0x556d, +	0x556f, +	0x5571, +	0x5854, +	0x5874, +	0x5940, +	0x5941, +	0x5b72, +	0x5b73, +	0x5b74, +	0x5b75, +	0x5d44, +	0x5d45, +	0x5d6d, +	0x5d6f, +	0x5d72, +	0x5d77, +	0x5e6b, +	0x5e6d, +	0x7120, +	0x7124, +	0x7129, +	0x712e, +	0x712f, +	0x7162, +	0x7163, +	0x7166, +	0x7167, +	0x7172, +	0x7173, +	0x71a0, +	0x71a1, +	0x71a3, +	0x71a7, +	0x71bb, +	0x71e0, +	0x71e1, +	0x71e2, +	0x71e6, +	0x71e7, +	0x71f2, +	0x7269, +	0x726b, +	0x726e, +	0x72a0, +	0x72a8, +	0x72b1, +	0x72b3, +	0x793f,  };  static const struct pci_device_id pciidlist[] = { @@ -2165,13 +2246,20 @@ static void amdgpu_drv_delayed_reset_work_handler(struct work_struct *work)  static int amdgpu_pmops_prepare(struct device *dev)  {  	struct drm_device *drm_dev = dev_get_drvdata(dev); +	struct amdgpu_device *adev = drm_to_adev(drm_dev);  	/* Return a positive number here so  	 * DPM_FLAG_SMART_SUSPEND works properly  	 */  	if (amdgpu_device_supports_boco(drm_dev)) -		return pm_runtime_suspended(dev) && -			pm_suspend_via_firmware(); +		return pm_runtime_suspended(dev); + +	/* if we will not support s3 or s2i for the device +	 *  then skip suspend +	 */ +	if (!amdgpu_acpi_is_s0ix_active(adev) && +	    !amdgpu_acpi_is_s3_active(adev)) +		return 1;  	return 0;  }  | 
