| Leo Liu | 95d0906 | 2016-12-21 13:21:52 -0500 | [diff] [blame] | 1 | /* | 
|  | 2 | * Copyright 2016 Advanced Micro Devices, Inc. | 
|  | 3 | * | 
|  | 4 | * Permission is hereby granted, free of charge, to any person obtaining a | 
|  | 5 | * copy of this software and associated documentation files (the "Software"), | 
|  | 6 | * to deal in the Software without restriction, including without limitation | 
|  | 7 | * the rights to use, copy, modify, merge, publish, distribute, sublicense, | 
|  | 8 | * and/or sell copies of the Software, and to permit persons to whom the | 
|  | 9 | * Software is furnished to do so, subject to the following conditions: | 
|  | 10 | * | 
|  | 11 | * The above copyright notice and this permission notice shall be included in | 
|  | 12 | * all copies or substantial portions of the Software. | 
|  | 13 | * | 
|  | 14 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | 
|  | 15 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | 
|  | 16 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL | 
|  | 17 | * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR | 
|  | 18 | * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | 
|  | 19 | * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | 
|  | 20 | * OTHER DEALINGS IN THE SOFTWARE. | 
|  | 21 | * | 
|  | 22 | */ | 
|  | 23 |  | 
|  | 24 | #ifndef __AMDGPU_VCN_H__ | 
|  | 25 | #define __AMDGPU_VCN_H__ | 
|  | 26 |  | 
| Leo Liu | 95aa13f | 2017-05-11 16:27:33 -0400 | [diff] [blame^] | 27 | #define AMDGPU_VCN_STACK_SIZE		(200*1024) | 
|  | 28 | #define AMDGPU_VCN_HEAP_SIZE		(256*1024) | 
|  | 29 | #define AMDGPU_VCN_SESSION_SIZE		(50*1024) | 
|  | 30 | #define AMDGPU_VCN_FIRMWARE_OFFSET	256 | 
|  | 31 | #define AMDGPU_VCN_MAX_ENC_RINGS	3 | 
|  | 32 |  | 
|  | 33 | struct amdgpu_vcn { | 
|  | 34 | struct amdgpu_bo	*vcpu_bo; | 
|  | 35 | void			*cpu_addr; | 
|  | 36 | uint64_t		gpu_addr; | 
|  | 37 | unsigned		fw_version; | 
|  | 38 | void			*saved_bo; | 
|  | 39 | struct delayed_work	idle_work; | 
|  | 40 | const struct firmware	*fw;	/* VCN firmware */ | 
|  | 41 | struct amdgpu_ring	ring_dec; | 
|  | 42 | struct amdgpu_ring	ring_enc[AMDGPU_VCN_MAX_ENC_RINGS]; | 
|  | 43 | struct amdgpu_irq_src	irq; | 
|  | 44 | struct amd_sched_entity entity_dec; | 
|  | 45 | struct amd_sched_entity entity_enc; | 
|  | 46 | uint32_t                srbm_soft_reset; | 
|  | 47 | }; | 
|  | 48 |  | 
| Leo Liu | 95d0906 | 2016-12-21 13:21:52 -0500 | [diff] [blame] | 49 | int amdgpu_vcn_sw_init(struct amdgpu_device *adev); | 
|  | 50 | int amdgpu_vcn_sw_fini(struct amdgpu_device *adev); | 
|  | 51 | int amdgpu_vcn_suspend(struct amdgpu_device *adev); | 
|  | 52 | int amdgpu_vcn_resume(struct amdgpu_device *adev); | 
|  | 53 | void amdgpu_vcn_ring_begin_use(struct amdgpu_ring *ring); | 
|  | 54 | void amdgpu_vcn_ring_end_use(struct amdgpu_ring *ring); | 
|  | 55 | int amdgpu_vcn_dec_ring_test_ib(struct amdgpu_ring *ring, long timeout); | 
|  | 56 |  | 
| Leo Liu | 2d531d8 | 2016-12-21 13:56:44 -0500 | [diff] [blame] | 57 | int amdgpu_vcn_enc_ring_test_ring(struct amdgpu_ring *ring); | 
|  | 58 | int amdgpu_vcn_enc_ring_test_ib(struct amdgpu_ring *ring, long timeout); | 
|  | 59 |  | 
| Leo Liu | 95d0906 | 2016-12-21 13:21:52 -0500 | [diff] [blame] | 60 | #endif |