diff options
Diffstat (limited to 'amdgpu/amdgpu_device.c')
-rw-r--r-- | amdgpu/amdgpu_device.c | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/amdgpu/amdgpu_device.c b/amdgpu/amdgpu_device.c index f473d2da..9a238d97 100644 --- a/amdgpu/amdgpu_device.c +++ b/amdgpu/amdgpu_device.c | |||
@@ -44,7 +44,6 @@ | |||
44 | #include "amdgpu_internal.h" | 44 | #include "amdgpu_internal.h" |
45 | #include "util_hash_table.h" | 45 | #include "util_hash_table.h" |
46 | #include "util_math.h" | 46 | #include "util_math.h" |
47 | #include "amdgpu_asic_id.h" | ||
48 | 47 | ||
49 | #define PTR_TO_UINT(x) ((unsigned)((intptr_t)(x))) | 48 | #define PTR_TO_UINT(x) ((unsigned)((intptr_t)(x))) |
50 | #define UINT_TO_PTR(x) ((void *)((intptr_t)(x))) | 49 | #define UINT_TO_PTR(x) ((void *)((intptr_t)(x))) |
@@ -131,6 +130,7 @@ static int amdgpu_get_auth(int fd, int *auth) | |||
131 | 130 | ||
132 | static void amdgpu_device_free_internal(amdgpu_device_handle dev) | 131 | static void amdgpu_device_free_internal(amdgpu_device_handle dev) |
133 | { | 132 | { |
133 | const struct amdgpu_asic_id *id; | ||
134 | amdgpu_vamgr_deinit(&dev->vamgr_32); | 134 | amdgpu_vamgr_deinit(&dev->vamgr_32); |
135 | amdgpu_vamgr_deinit(&dev->vamgr); | 135 | amdgpu_vamgr_deinit(&dev->vamgr); |
136 | util_hash_table_destroy(dev->bo_flink_names); | 136 | util_hash_table_destroy(dev->bo_flink_names); |
@@ -140,6 +140,12 @@ static void amdgpu_device_free_internal(amdgpu_device_handle dev) | |||
140 | close(dev->fd); | 140 | close(dev->fd); |
141 | if ((dev->flink_fd >= 0) && (dev->fd != dev->flink_fd)) | 141 | if ((dev->flink_fd >= 0) && (dev->fd != dev->flink_fd)) |
142 | close(dev->flink_fd); | 142 | close(dev->flink_fd); |
143 | if (dev->asic_ids) { | ||
144 | for (id = dev->asic_ids; id->did; id++) | ||
145 | free(id->marketing_name); | ||
146 | |||
147 | free(dev->asic_ids); | ||
148 | } | ||
143 | free(dev); | 149 | free(dev); |
144 | } | 150 | } |
145 | 151 | ||
@@ -267,6 +273,12 @@ int amdgpu_device_initialize(int fd, | |||
267 | amdgpu_vamgr_init(&dev->vamgr_32, start, max, | 273 | amdgpu_vamgr_init(&dev->vamgr_32, start, max, |
268 | dev->dev_info.virtual_address_alignment); | 274 | dev->dev_info.virtual_address_alignment); |
269 | 275 | ||
276 | r = amdgpu_parse_asic_ids(&dev->asic_ids); | ||
277 | if (r) { | ||
278 | fprintf(stderr, "%s: Cannot parse ASIC IDs, 0x%x.", | ||
279 | __func__, r); | ||
280 | } | ||
281 | |||
270 | *major_version = dev->major_version; | 282 | *major_version = dev->major_version; |
271 | *minor_version = dev->minor_version; | 283 | *minor_version = dev->minor_version; |
272 | *device_handle = dev; | 284 | *device_handle = dev; |
@@ -297,13 +309,15 @@ int amdgpu_device_deinitialize(amdgpu_device_handle dev) | |||
297 | 309 | ||
298 | const char *amdgpu_get_marketing_name(amdgpu_device_handle dev) | 310 | const char *amdgpu_get_marketing_name(amdgpu_device_handle dev) |
299 | { | 311 | { |
300 | const struct amdgpu_asic_id_table_t *t = amdgpu_asic_id_table; | 312 | const struct amdgpu_asic_id *id; |
313 | |||
314 | if (!dev->asic_ids) | ||
315 | return NULL; | ||
301 | 316 | ||
302 | while (t->did) { | 317 | for (id = dev->asic_ids; id->did; id++) { |
303 | if ((t->did == dev->info.asic_id) && | 318 | if ((id->did == dev->info.asic_id) && |
304 | (t->rid == dev->info.pci_rev_id)) | 319 | (id->rid == dev->info.pci_rev_id)) |
305 | return t->marketing_name; | 320 | return id->marketing_name; |
306 | t++; | ||
307 | } | 321 | } |
308 | 322 | ||
309 | return NULL; | 323 | return NULL; |