diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu.h')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu.h | 55 | 
1 files changed, 25 insertions, 30 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index 0c229a92a24b..b1bb10625cd9 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -69,6 +69,7 @@  #include "amdgpu_uvd.h"  #include "amdgpu_vce.h"  #include "amdgpu_vcn.h" +#include "amdgpu_jpeg.h"  #include "amdgpu_mn.h"  #include "amdgpu_gmc.h"  #include "amdgpu_gfx.h" @@ -89,6 +90,7 @@  #include "amdgpu_mes.h"  #include "amdgpu_umc.h"  #include "amdgpu_mmhub.h" +#include "amdgpu_df.h"  #define MAX_GPU_INSTANCE		16 @@ -588,6 +590,8 @@ struct amdgpu_asic_funcs {  	bool (*need_reset_on_init)(struct amdgpu_device *adev);  	/* PCIe replay counter */  	uint64_t (*get_pcie_replay_count)(struct amdgpu_device *adev); +	/* device supports BACO */ +	bool (*supports_baco)(struct amdgpu_device *adev);  };  /* @@ -633,9 +637,8 @@ struct amdgpu_fw_vram_usage {  	struct amdgpu_bo *reserved_bo;  	void *va; -	/* Offset on the top of VRAM, used as c2p write buffer. +	/* GDDR6 training support flag.  	*/ -	u64 mem_train_fb_loc;  	bool mem_train_support;  }; @@ -662,29 +665,6 @@ struct amdgpu_mmio_remap {  	resource_size_t bus_addr;  }; -struct amdgpu_df_funcs { -	void (*sw_init)(struct amdgpu_device *adev); -	void (*sw_fini)(struct amdgpu_device *adev); -	void (*enable_broadcast_mode)(struct amdgpu_device *adev, -				      bool enable); -	u32 (*get_fb_channel_number)(struct amdgpu_device *adev); -	u32 (*get_hbm_channel_number)(struct amdgpu_device *adev); -	void (*update_medium_grain_clock_gating)(struct amdgpu_device *adev, -						 bool enable); -	void (*get_clockgating_state)(struct amdgpu_device *adev, -				      u32 *flags); -	void (*enable_ecc_force_par_wr_rmw)(struct amdgpu_device *adev, -					    bool enable); -	int (*pmc_start)(struct amdgpu_device *adev, uint64_t config, -					 int is_enable); -	int (*pmc_stop)(struct amdgpu_device *adev, uint64_t config, -					 int is_disable); -	void (*pmc_get_count)(struct amdgpu_device *adev, uint64_t config, -					 uint64_t *count); -	uint64_t (*get_fica)(struct amdgpu_device *adev, uint32_t ficaa_val); -	void (*set_fica)(struct amdgpu_device *adev, uint32_t ficaa_val, -			 uint32_t ficadl_val, uint32_t ficadh_val); -};  /* Define the HW IP blocks will be used in driver , add more if necessary */  enum amd_hw_ip_block_type {  	GC_HWIP = 1, @@ -704,6 +684,7 @@ enum amd_hw_ip_block_type {  	MP1_HWIP,  	UVD_HWIP,  	VCN_HWIP = UVD_HWIP, +	JPEG_HWIP = VCN_HWIP,  	VCE_HWIP,  	DF_HWIP,  	DCE_HWIP, @@ -899,6 +880,9 @@ struct amdgpu_device {  	/* vcn */  	struct amdgpu_vcn		vcn; +	/* jpeg */ +	struct amdgpu_jpeg		jpeg; +  	/* firmwares */  	struct amdgpu_firmware		firmware; @@ -924,6 +908,9 @@ struct amdgpu_device {  	bool                            enable_mes;  	struct amdgpu_mes               mes; +	/* df */ +	struct amdgpu_df                df; +  	struct amdgpu_ip_block          ip_blocks[AMDGPU_MAX_IP_NUM];  	int				num_ip_blocks;  	struct mutex	mn_lock; @@ -937,8 +924,6 @@ struct amdgpu_device {  	/* soc15 register offset based on ip, instance and  segment */  	uint32_t 		*reg_offset[MAX_HWIP][HWIP_MAX_INSTANCE]; -	const struct amdgpu_df_funcs	*df_funcs; -  	/* delayed work_func for deferring clockgating during resume */  	struct delayed_work     delayed_init_work; @@ -982,6 +967,11 @@ struct amdgpu_device {  	/* device pstate */  	int				pstate; +	/* enable runtime pm on the device */ +	bool                            runpm; + +	bool                            pm_sysfs_en; +	bool                            ucode_sysfs_en;  };  static inline struct amdgpu_device *amdgpu_ttm_adev(struct ttm_bo_device *bdev) @@ -1117,6 +1107,8 @@ int emu_soc_asic_init(struct amdgpu_device *adev);  #define amdgpu_asic_get_pcie_usage(adev, cnt0, cnt1) ((adev)->asic_funcs->get_pcie_usage((adev), (cnt0), (cnt1)))  #define amdgpu_asic_need_reset_on_init(adev) (adev)->asic_funcs->need_reset_on_init((adev))  #define amdgpu_asic_get_pcie_replay_count(adev) ((adev)->asic_funcs->get_pcie_replay_count((adev))) +#define amdgpu_asic_supports_baco(adev) (adev)->asic_funcs->supports_baco((adev)) +  #define amdgpu_inc_vram_lost(adev) atomic_inc(&((adev)->vram_lost_counter));  /* Common functions */ @@ -1133,9 +1125,12 @@ void amdgpu_device_program_register_sequence(struct amdgpu_device *adev,  					     const u32 *registers,  					     const u32 array_size); -bool amdgpu_device_is_px(struct drm_device *dev); +bool amdgpu_device_supports_boco(struct drm_device *dev); +bool amdgpu_device_supports_baco(struct drm_device *dev);  bool amdgpu_device_is_peer_accessible(struct amdgpu_device *adev,  				      struct amdgpu_device *peer_adev); +int amdgpu_device_baco_enter(struct drm_device *dev); +int amdgpu_device_baco_exit(struct drm_device *dev);  /* atpx handler */  #if defined(CONFIG_VGA_SWITCHEROO) @@ -1173,8 +1168,8 @@ int amdgpu_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv);  void amdgpu_driver_postclose_kms(struct drm_device *dev,  				 struct drm_file *file_priv);  int amdgpu_device_ip_suspend(struct amdgpu_device *adev); -int amdgpu_device_suspend(struct drm_device *dev, bool suspend, bool fbcon); -int amdgpu_device_resume(struct drm_device *dev, bool resume, bool fbcon); +int amdgpu_device_suspend(struct drm_device *dev, bool fbcon); +int amdgpu_device_resume(struct drm_device *dev, bool fbcon);  u32 amdgpu_get_vblank_counter_kms(struct drm_device *dev, unsigned int pipe);  int amdgpu_enable_vblank_kms(struct drm_device *dev, unsigned int pipe);  void amdgpu_disable_vblank_kms(struct drm_device *dev, unsigned int pipe); |