diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2010-08-18 12:06:48 +1000 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2010-08-18 12:06:48 +1000 |
commit | b61e81a191d3a5c269c5f7c40199aebc9ebc034c (patch) | |
tree | 12452dcfff649665294affd66d6fc8b5c278ac9c | |
parent | b04515c5d6c95f573457a94267b855cceb639105 (diff) |
nouveau: accept both 0.0.16 and 1.x.x
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r-- | nouveau/nouveau_device.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/nouveau/nouveau_device.c b/nouveau/nouveau_device.c index c5253914..f450e303 100644 --- a/nouveau/nouveau_device.c +++ b/nouveau/nouveau_device.c @@ -26,10 +26,6 @@ #include "nouveau_private.h" -#if NOUVEAU_DRM_HEADER_PATCHLEVEL != 16 -#error nouveau_drm.h does not match expected patchlevel, update libdrm. -#endif - int nouveau_device_open_existing(struct nouveau_device **dev, int close, int fd, drm_context_t ctx) @@ -42,11 +38,6 @@ nouveau_device_open_existing(struct nouveau_device **dev, int close, if (!dev || *dev) return -EINVAL; - ver = drmGetVersion(fd); - if (!ver || ver->version_patchlevel != NOUVEAU_DRM_HEADER_PATCHLEVEL) - return -EINVAL; - drmFreeVersion(ver); - nvdev = calloc(1, sizeof(*nvdev)); if (!nvdev) return -ENOMEM; @@ -54,6 +45,18 @@ nouveau_device_open_existing(struct nouveau_device **dev, int close, nvdev->ctx = ctx; nvdev->needs_close = close; + ver = drmGetVersion(fd); + if (!ver) + return -EINVAL; + + if ((ver->version_major == 0 && ver->version_patchlevel != 16) && + ver->version_major != 1) { + nouveau_device_close((void *)&nvdev); + return -EINVAL; + } + + drmFreeVersion(ver); + ret = nouveau_device_get_param(&nvdev->base, NOUVEAU_GETPARAM_VM_VRAM_BASE, &value); if (ret) { |