diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu.h')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu.h | 42 |
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, | |||
| 195 | bool amdgpu_is_idle(struct amdgpu_device *adev, | 195 | bool 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 | |||
| 200 | struct amdgpu_ip_block_status { | ||
| 201 | bool valid; | ||
| 202 | bool sw; | ||
| 203 | bool hw; | ||
| 204 | bool late_initialized; | ||
| 205 | bool hang; | ||
| 206 | }; | ||
| 207 | |||
| 198 | struct amdgpu_ip_block_version { | 208 | struct 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 | ||
| 216 | struct amdgpu_ip_block { | ||
| 217 | struct amdgpu_ip_block_status status; | ||
| 218 | const struct amdgpu_ip_block_version *version; | ||
| 219 | }; | ||
| 220 | |||
| 206 | int amdgpu_ip_block_version_cmp(struct amdgpu_device *adev, | 221 | int 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 | ||
| 210 | const struct amdgpu_ip_block_version * amdgpu_get_ip_block( | 225 | struct 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 | |
| 228 | int 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 */ |
| 215 | struct amdgpu_buffer_funcs { | 232 | struct amdgpu_buffer_funcs { |
| @@ -1271,14 +1288,6 @@ typedef void (*amdgpu_wreg_t)(struct amdgpu_device*, uint32_t, uint32_t); | |||
| 1271 | typedef uint32_t (*amdgpu_block_rreg_t)(struct amdgpu_device*, uint32_t, uint32_t); | 1288 | typedef uint32_t (*amdgpu_block_rreg_t)(struct amdgpu_device*, uint32_t, uint32_t); |
| 1272 | typedef void (*amdgpu_block_wreg_t)(struct amdgpu_device*, uint32_t, uint32_t, uint32_t); | 1289 | typedef void (*amdgpu_block_wreg_t)(struct amdgpu_device*, uint32_t, uint32_t, uint32_t); |
| 1273 | 1290 | ||
| 1274 | struct amdgpu_ip_block_status { | ||
| 1275 | bool valid; | ||
| 1276 | bool sw; | ||
| 1277 | bool hw; | ||
| 1278 | bool late_initialized; | ||
| 1279 | bool hang; | ||
| 1280 | }; | ||
| 1281 | |||
| 1282 | struct amdgpu_device { | 1291 | struct 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 | ||
