commit 7838b62

Michael Forney  ·  2014-01-31 21:04:40 +0000 UTC
parent 5eb5146
nouveau: Keep track of chipset architecture
1 files changed,  +33, -0
+33, -0
 1@@ -36,11 +36,19 @@
 2 #include <nouveau.h>
 3 #include <sys/mman.h>
 4 
 5+enum nv_architecture
 6+{
 7+    NV_ARCH_50 = 0x50,
 8+    NV_ARCH_C0 = 0xc0,
 9+    NV_ARCH_E0 = 0xe0
10+};
11+
12 struct nouveau_context
13 {
14     struct wld_context base;
15     struct nouveau_device * device;
16     struct nouveau_client * client;
17+    enum nv_architecture architecture;
18 };
19 
20 struct nouveau_renderer
21@@ -88,6 +96,31 @@ struct wld_context * driver_create_context(int drm_fd)
22     if (nouveau_device_wrap(drm_fd, 0, &context->device) != 0)
23         goto error1;
24 
25+    switch (context->device->chipset & ~0xf)
26+    {
27+        /* TODO: Support NV50
28+        case 0x50:
29+        case 0x80:
30+        case 0x90:
31+        case 0xa0:
32+            context->architecture = NV_ARCH_50;
33+            break;
34+        */
35+        case 0xc0:
36+        case 0xd0:
37+            context->architecture = NV_ARCH_C0;
38+            break;
39+        /* TODO: Support NVE0
40+        case 0xe0:
41+        case 0xf0:
42+        case 0x100:
43+            context->architecture = NV_ARCH_E0;
44+            break;
45+        */
46+        default:
47+            return NULL;
48+    }
49+
50     if (nouveau_client_new(context->device, &context->client) != 0)
51         goto error2;
52