diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c | 24 | 
1 files changed, 21 insertions, 3 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c index 518eb0e40d32..6f81ed4fb0d9 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_jpeg.c @@ -150,14 +150,15 @@ static int amdgpu_jpeg_dec_set_reg(struct amdgpu_ring *ring, uint32_t handle,  	const unsigned ib_size_dw = 16;  	int i, r; -	r = amdgpu_job_alloc_with_ib(ring->adev, ib_size_dw * 4, -					AMDGPU_IB_POOL_DIRECT, &job); +	r = amdgpu_job_alloc_with_ib(ring->adev, NULL, NULL, ib_size_dw * 4, +				     AMDGPU_IB_POOL_DIRECT, &job);  	if (r)  		return r;  	ib = &job->ibs[0]; -	ib->ptr[0] = PACKETJ(adev->jpeg.internal.jpeg_pitch, 0, 0, PACKETJ_TYPE0); +	ib->ptr[0] = PACKETJ(adev->jpeg.internal.jpeg_pitch, 0, 0, +			     PACKETJ_TYPE0);  	ib->ptr[1] = 0xDEADBEEF;  	for (i = 2; i < 16; i += 2) {  		ib->ptr[i] = PACKETJ(0, 0, 0, PACKETJ_TYPE6); @@ -234,3 +235,20 @@ int amdgpu_jpeg_process_poison_irq(struct amdgpu_device *adev,  	return 0;  } + +void jpeg_set_ras_funcs(struct amdgpu_device *adev) +{ +	if (!adev->jpeg.ras) +		return; + +	amdgpu_ras_register_ras_block(adev, &adev->jpeg.ras->ras_block); + +	strcpy(adev->jpeg.ras->ras_block.ras_comm.name, "jpeg"); +	adev->jpeg.ras->ras_block.ras_comm.block = AMDGPU_RAS_BLOCK__JPEG; +	adev->jpeg.ras->ras_block.ras_comm.type = AMDGPU_RAS_ERROR__POISON; +	adev->jpeg.ras_if = &adev->jpeg.ras->ras_block.ras_comm; + +	/* If don't define special ras_late_init function, use default ras_late_init */ +	if (!adev->jpeg.ras->ras_block.ras_late_init) +		adev->jpeg.ras->ras_block.ras_late_init = amdgpu_ras_block_late_init; +} |