diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 19 | 
1 files changed, 15 insertions, 4 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c index 1a984c934b1f..03f0c3bae516 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c @@ -49,6 +49,7 @@  #define FIRMWARE_TONGA		"amdgpu/tonga_vce.bin"  #define FIRMWARE_CARRIZO	"amdgpu/carrizo_vce.bin"  #define FIRMWARE_FIJI		"amdgpu/fiji_vce.bin" +#define FIRMWARE_STONEY		"amdgpu/stoney_vce.bin"  #ifdef CONFIG_DRM_AMDGPU_CIK  MODULE_FIRMWARE(FIRMWARE_BONAIRE); @@ -60,6 +61,7 @@ MODULE_FIRMWARE(FIRMWARE_MULLINS);  MODULE_FIRMWARE(FIRMWARE_TONGA);  MODULE_FIRMWARE(FIRMWARE_CARRIZO);  MODULE_FIRMWARE(FIRMWARE_FIJI); +MODULE_FIRMWARE(FIRMWARE_STONEY);  static void amdgpu_vce_idle_work_handler(struct work_struct *work); @@ -106,6 +108,9 @@ int amdgpu_vce_sw_init(struct amdgpu_device *adev, unsigned long size)  	case CHIP_FIJI:  		fw_name = FIRMWARE_FIJI;  		break; +	case CHIP_STONEY: +		fw_name = FIRMWARE_STONEY; +		break;  	default:  		return -EINVAL; @@ -141,7 +146,9 @@ int amdgpu_vce_sw_init(struct amdgpu_device *adev, unsigned long size)  	/* allocate firmware, stack and heap BO */  	r = amdgpu_bo_create(adev, size, PAGE_SIZE, true, -			     AMDGPU_GEM_DOMAIN_VRAM, 0, NULL, &adev->vce.vcpu_bo); +			     AMDGPU_GEM_DOMAIN_VRAM, +			     AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED, +			     NULL, NULL, &adev->vce.vcpu_bo);  	if (r) {  		dev_err(adev->dev, "(%d) failed to allocate VCE bo\n", r);  		return r; @@ -340,10 +347,10 @@ void amdgpu_vce_free_handles(struct amdgpu_device *adev, struct drm_file *filp)  }  static int amdgpu_vce_free_job( -	struct amdgpu_job *sched_job) +	struct amdgpu_job *job)  { -	amdgpu_ib_free(sched_job->adev, sched_job->ibs); -	kfree(sched_job->ibs); +	amdgpu_ib_free(job->adev, job->ibs); +	kfree(job->ibs);  	return 0;  } @@ -836,6 +843,10 @@ int amdgpu_vce_ring_test_ib(struct amdgpu_ring *ring)  	struct fence *fence = NULL;  	int r; +	/* skip vce ring1 ib test for now, since it's not reliable */ +	if (ring == &ring->adev->vce.ring[1]) +		return 0; +  	r = amdgpu_vce_get_create_msg(ring, 1, NULL);  	if (r) {  		DRM_ERROR("amdgpu: failed to get create msg (%d).\n", r); | 
