diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h | 48 | 
1 files changed, 33 insertions, 15 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h index dcb3c7871c73..53526ffb2ce1 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h @@ -30,6 +30,7 @@  #include "clearstate_defs.h"  #include "amdgpu_ring.h"  #include "amdgpu_rlc.h" +#include "amdgpu_imu.h"  #include "soc15.h"  #include "amdgpu_ras.h" @@ -56,6 +57,9 @@ struct amdgpu_mec {  	u64			hpd_eop_gpu_addr;  	struct amdgpu_bo	*mec_fw_obj;  	u64			mec_fw_gpu_addr; +	struct amdgpu_bo	*mec_fw_data_obj; +	u64			mec_fw_data_gpu_addr; +  	u32 num_mec;  	u32 num_pipe_per_mec;  	u32 num_queue_per_pipe; @@ -107,15 +111,6 @@ struct amdgpu_kiq {  };  /* - * GPU scratch registers structures, functions & helpers - */ -struct amdgpu_scratch { -	unsigned		num_reg; -	uint32_t                reg_base; -	uint32_t		free_mask; -}; - -/*   * GFX configurations   */  #define AMDGPU_GFX_MAX_SE 4 @@ -183,6 +178,17 @@ struct amdgpu_gfx_config {  	uint32_t num_packer_per_sc;  	uint32_t pa_sc_tile_steering_override;  	uint64_t tcc_disabled_mask; +	uint32_t gc_num_tcp_per_sa; +	uint32_t gc_num_sdp_interface; +	uint32_t gc_num_tcps; +	uint32_t gc_num_tcp_per_wpg; +	uint32_t gc_tcp_l1_size; +	uint32_t gc_num_sqc_per_wgp; +	uint32_t gc_l1_instruction_cache_size_per_sqc; +	uint32_t gc_l1_data_cache_size_per_sqc; +	uint32_t gc_gl1c_per_sa; +	uint32_t gc_gl1c_size_per_instance; +	uint32_t gc_gl2c_per_gpu;  };  struct amdgpu_cu_info { @@ -202,6 +208,7 @@ struct amdgpu_cu_info {  struct amdgpu_gfx_ras {  	struct amdgpu_ras_block_object  ras_block;  	void (*enable_watchdog_timer)(struct amdgpu_device *adev); +	bool (*query_utcl2_poison_status)(struct amdgpu_device *adev);  };  struct amdgpu_gfx_funcs { @@ -232,6 +239,10 @@ struct amdgpu_pfp {  	struct amdgpu_bo		*pfp_fw_obj;  	uint64_t			pfp_fw_gpu_addr;  	uint32_t			*pfp_fw_ptr; + +	struct amdgpu_bo		*pfp_fw_data_obj; +	uint64_t			pfp_fw_data_gpu_addr; +	uint32_t			*pfp_fw_data_ptr;  };  struct amdgpu_ce { @@ -244,6 +255,11 @@ struct amdgpu_me {  	struct amdgpu_bo		*me_fw_obj;  	uint64_t			me_fw_gpu_addr;  	uint32_t			*me_fw_ptr; + +	struct amdgpu_bo		*me_fw_data_obj; +	uint64_t			me_fw_data_gpu_addr; +	uint32_t			*me_fw_data_ptr; +  	uint32_t			num_me;  	uint32_t			num_pipe_per_me;  	uint32_t			num_queue_per_pipe; @@ -262,7 +278,8 @@ struct amdgpu_gfx {  	struct amdgpu_me		me;  	struct amdgpu_mec		mec;  	struct amdgpu_kiq		kiq; -	struct amdgpu_scratch		scratch; +	struct amdgpu_imu		imu; +	bool				rs64_enable; /* firmware format */  	const struct firmware		*me_fw;	/* ME firmware */  	uint32_t			me_fw_version;  	const struct firmware		*pfp_fw; /* PFP firmware */ @@ -275,6 +292,8 @@ struct amdgpu_gfx {  	uint32_t			mec_fw_version;  	const struct firmware		*mec2_fw; /* MEC2 firmware */  	uint32_t			mec2_fw_version; +	const struct firmware		*imu_fw; /* IMU firmware */ +	uint32_t			imu_fw_version;  	uint32_t			me_feature_version;  	uint32_t			ce_feature_version;  	uint32_t			pfp_feature_version; @@ -323,8 +342,10 @@ struct amdgpu_gfx {  	DECLARE_BITMAP			(pipe_reserve_bitmap, AMDGPU_MAX_COMPUTE_QUEUES);  	/*ras */ -	struct ras_common_if			*ras_if; -	struct amdgpu_gfx_ras	*ras; +	struct ras_common_if		*ras_if; +	struct amdgpu_gfx_ras		*ras; + +	bool				is_poweron;  };  #define amdgpu_gfx_get_gpu_clock_counter(adev) (adev)->gfx.funcs->get_gpu_clock_counter((adev)) @@ -345,9 +366,6 @@ static inline u32 amdgpu_gfx_create_bitmask(u32 bit_width)  	return (u32)((1ULL << bit_width) - 1);  } -int amdgpu_gfx_scratch_get(struct amdgpu_device *adev, uint32_t *reg); -void amdgpu_gfx_scratch_free(struct amdgpu_device *adev, uint32_t reg); -  void amdgpu_gfx_parse_disable_cu(unsigned *mask, unsigned max_se,  				 unsigned max_sh);  |