diff options
| author | Maarten Lankhorst <maarten.lankhorst@linux.intel.com> | 2024-11-04 14:44:16 +0100 | 
|---|---|---|
| committer | Maarten Lankhorst <maarten.lankhorst@linux.intel.com> | 2024-11-04 14:45:21 +0100 | 
| commit | d78f0ee0406803cda8801fd5201746ccf89e5e4a (patch) | |
| tree | d0d145319344a07cb6f4b47578f01236b71ad473 /drivers/gpu/drm/amd/amdgpu/amdgpu.h | |
| parent | a88f9ed63b3cec761b04cba8104b2d0b2b66b25d (diff) | |
| parent | 30169bb64580bd7bce9290c1952bf0aa6cc37fe5 (diff) | |
Merge remote-tracking branch 'drm/drm-next' into drm-misc-next
Didn't notice drm/drm-next had the build fix for drm_bridge, so ended up
committing the same patch. Sync with drm and pretend it didn't happen?
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu.h')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu.h | 43 | 
1 files changed, 30 insertions, 13 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index 9b1e0ede05a4..3af5acff8518 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -131,10 +131,6 @@ struct amdgpu_mgpu_info {  	uint32_t			num_gpu;  	uint32_t			num_dgpu;  	uint32_t			num_apu; - -	/* delayed reset_func for XGMI configuration if necessary */ -	struct delayed_work		delayed_reset_work; -	bool				pending_reset;  };  enum amdgpu_ss { @@ -365,8 +361,11 @@ void amdgpu_device_ip_get_clockgating_state(struct amdgpu_device *adev,  					    u64 *flags);  int amdgpu_device_ip_wait_for_idle(struct amdgpu_device *adev,  				   enum amd_ip_block_type block_type); -bool amdgpu_device_ip_is_idle(struct amdgpu_device *adev, +bool amdgpu_device_ip_is_valid(struct amdgpu_device *adev,  			      enum amd_ip_block_type block_type); +int amdgpu_ip_block_suspend(struct amdgpu_ip_block *ip_block); + +int amdgpu_ip_block_resume(struct amdgpu_ip_block *ip_block);  #define AMDGPU_MAX_IP_NUM 16 @@ -389,6 +388,7 @@ struct amdgpu_ip_block_version {  struct amdgpu_ip_block {  	struct amdgpu_ip_block_status status;  	const struct amdgpu_ip_block_version *version; +	struct amdgpu_device *adev;  };  int amdgpu_device_ip_block_version_cmp(struct amdgpu_device *adev, @@ -563,6 +563,7 @@ enum amd_reset_method {  	AMD_RESET_METHOD_MODE2,  	AMD_RESET_METHOD_BACO,  	AMD_RESET_METHOD_PCI, +	AMD_RESET_METHOD_ON_INIT,  };  struct amdgpu_video_codec_info { @@ -821,6 +822,24 @@ struct amdgpu_mqd {  			struct amdgpu_mqd_prop *p);  }; +/* + * Custom Init levels could be defined for different situations where a full + * initialization of all hardware blocks are not expected. Sample cases are + * custom init sequences after resume after S0i3/S3, reset on initialization, + * partial reset of blocks etc. Presently, this defines only two levels. Levels + * are described in corresponding struct definitions - amdgpu_init_default, + * amdgpu_init_minimal_xgmi. + */ +enum amdgpu_init_lvl_id { +	AMDGPU_INIT_LEVEL_DEFAULT, +	AMDGPU_INIT_LEVEL_MINIMAL_XGMI, +}; + +struct amdgpu_init_level { +	enum amdgpu_init_lvl_id level; +	uint32_t hwini_ip_block_mask; +}; +  #define AMDGPU_RESET_MAGIC_NUM 64  #define AMDGPU_MAX_DF_PERFMONS 4  struct amdgpu_reset_domain; @@ -1166,6 +1185,8 @@ struct amdgpu_device {  	bool				enforce_isolation[MAX_XCP];  	/* Added this mutex for cleaner shader isolation between GFX and compute processes */  	struct mutex                    enforce_isolation_mutex; + +	struct amdgpu_init_level *init_lvl;  };  static inline uint32_t amdgpu_ip_version(const struct amdgpu_device *adev, @@ -1261,6 +1282,8 @@ int amdgpu_device_pre_asic_reset(struct amdgpu_device *adev,  int amdgpu_do_asic_reset(struct list_head *device_list_handle,  			 struct amdgpu_reset_context *reset_context); +int amdgpu_device_reinit_after_reset(struct amdgpu_reset_context *reset_context); +  int emu_soc_asic_init(struct amdgpu_device *adev);  /* @@ -1450,23 +1473,15 @@ void amdgpu_register_atpx_handler(void);  void amdgpu_unregister_atpx_handler(void);  bool amdgpu_has_atpx_dgpu_power_cntl(void);  bool amdgpu_is_atpx_hybrid(void); -bool amdgpu_atpx_dgpu_req_power_for_displays(void);  bool amdgpu_has_atpx(void);  #else  static inline void amdgpu_register_atpx_handler(void) {}  static inline void amdgpu_unregister_atpx_handler(void) {}  static inline bool amdgpu_has_atpx_dgpu_power_cntl(void) { return false; }  static inline bool amdgpu_is_atpx_hybrid(void) { return false; } -static inline bool amdgpu_atpx_dgpu_req_power_for_displays(void) { return false; }  static inline bool amdgpu_has_atpx(void) { return false; }  #endif -#if defined(CONFIG_VGA_SWITCHEROO) && defined(CONFIG_ACPI) -void *amdgpu_atpx_get_dhandle(void); -#else -static inline void *amdgpu_atpx_get_dhandle(void) { return NULL; } -#endif -  /*   * KMS   */ @@ -1619,4 +1634,6 @@ extern const struct attribute_group amdgpu_vram_mgr_attr_group;  extern const struct attribute_group amdgpu_gtt_mgr_attr_group;  extern const struct attribute_group amdgpu_flash_attr_group; +void amdgpu_set_init_level(struct amdgpu_device *adev, +			   enum amdgpu_init_lvl_id lvl);  #endif  | 
