aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu.h')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu.h42
1 files changed, 25 insertions, 17 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index e6f86b83652b..1800ea139c98 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -195,21 +195,38 @@ int amdgpu_wait_for_idle(struct amdgpu_device *adev,
195bool amdgpu_is_idle(struct amdgpu_device *adev, 195bool amdgpu_is_idle(struct amdgpu_device *adev,
196 enum amd_ip_block_type block_type); 196 enum amd_ip_block_type block_type);
197 197
198#define AMDGPU_MAX_IP_NUM 16
199
200struct amdgpu_ip_block_status {
201 bool valid;
202 bool sw;
203 bool hw;
204 bool late_initialized;
205 bool hang;
206};
207
198struct amdgpu_ip_block_version { 208struct amdgpu_ip_block_version {
199 enum amd_ip_block_type type; 209 const enum amd_ip_block_type type;
200 u32 major; 210 const u32 major;
201 u32 minor; 211 const u32 minor;
202 u32 rev; 212 const u32 rev;
203 const struct amd_ip_funcs *funcs; 213 const struct amd_ip_funcs *funcs;
204}; 214};
205 215
216struct amdgpu_ip_block {
217 struct amdgpu_ip_block_status status;
218 const struct amdgpu_ip_block_version *version;
219};
220
206int amdgpu_ip_block_version_cmp(struct amdgpu_device *adev, 221int amdgpu_ip_block_version_cmp(struct amdgpu_device *adev,
207 enum amd_ip_block_type type, 222 enum amd_ip_block_type type,
208 u32 major, u32 minor); 223 u32 major, u32 minor);
209 224
210const struct amdgpu_ip_block_version * amdgpu_get_ip_block( 225struct amdgpu_ip_block * amdgpu_get_ip_block(struct amdgpu_device *adev,
211 struct amdgpu_device *adev, 226 enum amd_ip_block_type type);
212 enum amd_ip_block_type type); 227
228int amdgpu_ip_block_add(struct amdgpu_device *adev,
229 const struct amdgpu_ip_block_version *ip_block_version);
213 230
214/* provided by hw blocks that can move/clear data. e.g., gfx or sdma */ 231/* provided by hw blocks that can move/clear data. e.g., gfx or sdma */
215struct amdgpu_buffer_funcs { 232struct amdgpu_buffer_funcs {
@@ -1271,14 +1288,6 @@ typedef void (*amdgpu_wreg_t)(struct amdgpu_device*, uint32_t, uint32_t);
1271typedef uint32_t (*amdgpu_block_rreg_t)(struct amdgpu_device*, uint32_t, uint32_t); 1288typedef uint32_t (*amdgpu_block_rreg_t)(struct amdgpu_device*, uint32_t, uint32_t);
1272typedef void (*amdgpu_block_wreg_t)(struct amdgpu_device*, uint32_t, uint32_t, uint32_t); 1289typedef void (*amdgpu_block_wreg_t)(struct amdgpu_device*, uint32_t, uint32_t, uint32_t);
1273 1290
1274struct amdgpu_ip_block_status {
1275 bool valid;
1276 bool sw;
1277 bool hw;
1278 bool late_initialized;
1279 bool hang;
1280};
1281
1282struct amdgpu_device { 1291struct amdgpu_device {
1283 struct device *dev; 1292 struct device *dev;
1284 struct drm_device *ddev; 1293 struct drm_device *ddev;
@@ -1434,9 +1443,8 @@ struct amdgpu_device {
1434 /* GDS */ 1443 /* GDS */
1435 struct amdgpu_gds gds; 1444 struct amdgpu_gds gds;
1436 1445
1437 const struct amdgpu_ip_block_version *ip_blocks; 1446 struct amdgpu_ip_block ip_blocks[AMDGPU_MAX_IP_NUM];
1438 int num_ip_blocks; 1447 int num_ip_blocks;
1439 struct amdgpu_ip_block_status *ip_block_status;
1440 struct mutex mn_lock; 1448 struct mutex mn_lock;
1441 DECLARE_HASHTABLE(mn_hash, 7); 1449 DECLARE_HASHTABLE(mn_hash, 7);
1442 1450