diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h | 29 | 
1 files changed, 18 insertions, 11 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h index 09c5474ebcc3..611021514c52 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_psp.h @@ -32,7 +32,6 @@  #define PSP_FENCE_BUFFER_SIZE	0x1000  #define PSP_CMD_BUFFER_SIZE	0x1000 -#define PSP_ASD_SHARED_MEM_SIZE 0x4000  #define PSP_XGMI_SHARED_MEM_SIZE 0x4000  #define PSP_RAS_SHARED_MEM_SIZE 0x4000  #define PSP_1_MEG		0x100000 @@ -94,9 +93,6 @@ struct psp_funcs  			    enum psp_ring_type ring_type);  	int (*ring_destroy)(struct psp_context *psp,  			    enum psp_ring_type ring_type); -	int (*cmd_submit)(struct psp_context *psp, -			  uint64_t cmd_buf_mc_addr, uint64_t fence_mc_addr, -			  int index);  	bool (*compare_sram_data)(struct psp_context *psp,  				  struct amdgpu_firmware_info *ucode,  				  enum AMDGPU_UCODE_ID ucode_type); @@ -116,6 +112,8 @@ struct psp_funcs  	int (*mem_training_init)(struct psp_context *psp);  	void (*mem_training_fini)(struct psp_context *psp);  	int (*mem_training)(struct psp_context *psp, uint32_t ops); +	uint32_t (*ring_get_wptr)(struct psp_context *psp); +	void (*ring_set_wptr)(struct psp_context *psp, uint32_t value);  };  #define AMDGPU_XGMI_MAX_CONNECTED_NODES		64 @@ -131,6 +129,11 @@ struct psp_xgmi_topology_info {  	struct psp_xgmi_node_info	nodes[AMDGPU_XGMI_MAX_CONNECTED_NODES];  }; +struct psp_asd_context { +	bool			asd_initialized; +	uint32_t		session_id; +}; +  struct psp_xgmi_context {  	uint8_t				initialized;  	uint32_t			session_id; @@ -169,6 +172,8 @@ struct psp_dtm_context {  #define MEM_TRAIN_SYSTEM_SIGNATURE		0x54534942  #define GDDR6_MEM_TRAINING_DATA_SIZE_IN_BYTES	0x1000  #define GDDR6_MEM_TRAINING_OFFSET		0x8000 +/*Define the VRAM size that will be encroached by BIST training.*/ +#define GDDR6_MEM_TRAINING_ENCROACHED_SIZE	0x2000000  enum psp_memory_training_init_flag {  	PSP_MEM_TRAIN_NOT_SUPPORT	= 0x0, @@ -199,7 +204,6 @@ struct psp_memory_training_context {  	/*vram offset of the p2c training data*/  	u64 p2c_train_data_offset; -	struct amdgpu_bo *p2c_bo;  	/*vram offset of the c2p training data*/  	u64 c2p_train_data_offset; @@ -239,15 +243,12 @@ struct psp_context  	struct amdgpu_bo		*tmr_bo;  	uint64_t			tmr_mc_addr; -	/* asd firmware and buffer */ +	/* asd firmware */  	const struct firmware		*asd_fw;  	uint32_t			asd_fw_version;  	uint32_t			asd_feature_version;  	uint32_t			asd_ucode_size;  	uint8_t				*asd_start_addr; -	struct amdgpu_bo		*asd_shared_bo; -	uint64_t			asd_shared_mc_addr; -	void				*asd_shared_buf;  	/* fence buffer */  	struct amdgpu_bo		*fence_buf_bo; @@ -282,6 +283,7 @@ struct psp_context  	uint32_t			ta_dtm_ucode_size;  	uint8_t				*ta_dtm_start_addr; +	struct psp_asd_context		asd_context;  	struct psp_xgmi_context		xgmi_context;  	struct psp_ras_context		ras;  	struct psp_hdcp_context 	hdcp_context; @@ -300,8 +302,6 @@ struct amdgpu_psp_funcs {  #define psp_ring_create(psp, type) (psp)->funcs->ring_create((psp), (type))  #define psp_ring_stop(psp, type) (psp)->funcs->ring_stop((psp), (type))  #define psp_ring_destroy(psp, type) ((psp)->funcs->ring_destroy((psp), (type))) -#define psp_cmd_submit(psp, cmd_mc, fence_mc, index) \ -		(psp)->funcs->cmd_submit((psp), (cmd_mc), (fence_mc), (index))  #define psp_compare_sram_data(psp, ucode, type) \  		(psp)->funcs->compare_sram_data((psp), (ucode), (type))  #define psp_init_microcode(psp) \ @@ -346,6 +346,9 @@ struct amdgpu_psp_funcs {  	((psp)->funcs->ras_cure_posion ? \  	(psp)->funcs->ras_cure_posion(psp, (addr)) : -EINVAL) +#define psp_ring_get_wptr(psp) (psp)->funcs->ring_get_wptr((psp)) +#define psp_ring_set_wptr(psp, value) (psp)->funcs->ring_set_wptr((psp), (value)) +  extern const struct amd_ip_funcs psp_ip_funcs;  extern const struct amdgpu_ip_block_version psp_v3_1_ip_block; @@ -372,4 +375,8 @@ int psp_rlc_autoload_start(struct psp_context *psp);  extern const struct amdgpu_ip_block_version psp_v11_0_ip_block;  int psp_reg_program(struct psp_context *psp, enum psp_reg_prog_id reg,  		uint32_t value); +int psp_ring_cmd_submit(struct psp_context *psp, +			uint64_t cmd_buf_mc_addr, +			uint64_t fence_mc_addr, +			int index);  #endif |