diff --git a/Makefile.sources b/Makefile.sources
index 566f7b5..8747ccd 100644
--- a/Makefile.sources
+++ b/Makefile.sources
@@ -5,7 +5,7 @@ LIBDRM_FILES := \
 	xf86drmSL.c \
 	xf86drmMode.c \
 	xf86atomic.h \
-	libdrm.h \
+	libdrm_macros.h \
 	libdrm_lists.h
 
 LIBDRM_H_FILES := \
diff --git a/exynos/exynos_drm.c b/exynos/exynos_drm.c
index c5dd948..5d07ea7 100644
--- a/exynos/exynos_drm.c
+++ b/exynos/exynos_drm.c
@@ -38,7 +38,7 @@
 
 #include <xf86drm.h>
 
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "exynos_drm.h"
 #include "exynos_drmif.h"
 
diff --git a/exynos/exynos_fimg2d.c b/exynos/exynos_fimg2d.c
index fc605ed..cb422e8 100644
--- a/exynos/exynos_fimg2d.c
+++ b/exynos/exynos_fimg2d.c
@@ -24,7 +24,7 @@
 
 #include <xf86drm.h>
 
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "exynos_drm.h"
 #include "fimg2d_reg.h"
 #include "exynos_fimg2d.h"
diff --git a/freedreno/freedreno_priv.h b/freedreno/freedreno_priv.h
index 2d0fa6d..3c194fb 100644
--- a/freedreno/freedreno_priv.h
+++ b/freedreno/freedreno_priv.h
@@ -44,7 +44,7 @@
 #include <stdio.h>
 #include <assert.h>
 
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "xf86drm.h"
 #include "xf86atomic.h"
 
diff --git a/intel/intel_bufmgr.c b/intel/intel_bufmgr.c
index 234cd13..a95771d 100644
--- a/intel/intel_bufmgr.c
+++ b/intel/intel_bufmgr.c
@@ -37,7 +37,7 @@
 #include <drm.h>
 #include <i915_drm.h>
 #include <pciaccess.h>
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "intel_bufmgr.h"
 #include "intel_bufmgr_priv.h"
 #include "xf86drm.h"
diff --git a/intel/intel_bufmgr_fake.c b/intel/intel_bufmgr_fake.c
index c4828fa..d0c2d74 100644
--- a/intel/intel_bufmgr_fake.c
+++ b/intel/intel_bufmgr_fake.c
@@ -49,7 +49,7 @@
 #include "drm.h"
 #include "i915_drm.h"
 #include "mm.h"
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "libdrm_lists.h"
 
 /* Support gcc's __FUNCTION__ for people using other compilers */
diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
index 5a67f53..201da08 100644
--- a/intel/intel_bufmgr_gem.c
+++ b/intel/intel_bufmgr_gem.c
@@ -56,7 +56,7 @@
 #ifndef ETIME
 #define ETIME ETIMEDOUT
 #endif
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "libdrm_lists.h"
 #include "intel_bufmgr.h"
 #include "intel_bufmgr_priv.h"
diff --git a/intel/intel_decode.c b/intel/intel_decode.c
index 7d5cbe5..8759760 100644
--- a/intel/intel_decode.c
+++ b/intel/intel_decode.c
@@ -33,7 +33,7 @@
 #include <stdarg.h>
 #include <string.h>
 
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "xf86drm.h"
 #include "intel_chipset.h"
 #include "intel_bufmgr.h"
diff --git a/intel/mm.c b/intel/mm.c
index 9c67660..954e9dc 100644
--- a/intel/mm.c
+++ b/intel/mm.c
@@ -30,7 +30,7 @@
 #include <assert.h>
 
 #include "xf86drm.h"
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "mm.h"
 
 drm_private void mmDumpMemInfo(const struct mem_block *heap)
diff --git a/intel/mm.h b/intel/mm.h
index 01813a5..8d83743 100644
--- a/intel/mm.h
+++ b/intel/mm.h
@@ -33,7 +33,7 @@
 #include "config.h"
 #endif
 
-#include "libdrm.h"
+#include "libdrm_macros.h"
 
 struct mem_block {
 	struct mem_block *next, *prev;
diff --git a/intel/test_decode.c b/intel/test_decode.c
index 93f47ef..bef86bb 100644
--- a/intel/test_decode.c
+++ b/intel/test_decode.c
@@ -34,7 +34,7 @@
 #include <sys/stat.h>
 #include <err.h>
 
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "intel_bufmgr.h"
 #include "intel_chipset.h"
 
diff --git a/libdrm.h b/libdrm.h
deleted file mode 100644
index 6c3cd59..0000000
--- a/libdrm.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright © 2014 NVIDIA Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
- * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
- * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- * OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#ifndef LIBDRM_LIBDRM_H
-#define LIBDRM_LIBDRM_H
-
-#if defined(HAVE_VISIBILITY)
-#  define drm_private __attribute__((visibility("hidden")))
-#  define drm_public __attribute__((visibility("default")))
-#else
-#  define drm_private
-#  define drm_public
-#endif
-
-
-/**
- * Static (compile-time) assertion.
- * Basically, use COND to dimension an array.  If COND is false/zero the
- * array size will be -1 and we'll get a compilation error.
- */
-#define STATIC_ASSERT(COND) \
-   do { \
-      (void) sizeof(char [1 - 2*!(COND)]); \
-   } while (0)
-
-
-#include <sys/mman.h>
-
-#if defined(ANDROID) && !defined(__LP64__)
-#include <errno.h> /* for EINVAL */
-
-extern void *__mmap2(void *, size_t, int, int, int, size_t);
-
-static inline void *drm_mmap(void *addr, size_t length, int prot, int flags,
-                             int fd, loff_t offset)
-{
-   /* offset must be aligned to 4096 (not necessarily the page size) */
-   if (offset & 4095) {
-      errno = EINVAL;
-      return MAP_FAILED;
-   }
-
-   return __mmap2(addr, length, prot, flags, fd, (size_t) (offset >> 12));
-}
-
-#  define drm_munmap(addr, length) \
-              munmap(addr, length)
-
-
-#else
-
-/* assume large file support exists */
-#  define drm_mmap(addr, length, prot, flags, fd, offset) \
-              mmap(addr, length, prot, flags, fd, offset)
-
-
-static inline int drm_munmap(void *addr, size_t length)
-{
-   /* Copied from configure code generated by AC_SYS_LARGEFILE */
-#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + \
-                     (((off_t) 1 << 31) << 31))
-   STATIC_ASSERT(LARGE_OFF_T % 2147483629 == 721 &&
-                 LARGE_OFF_T % 2147483647 == 1);
-#undef LARGE_OFF_T
-
-   return munmap(addr, length);
-}
-#endif
-
-#endif
diff --git a/libdrm_macros.h b/libdrm_macros.h
new file mode 100644
index 0000000..6c3cd59
--- /dev/null
+++ b/libdrm_macros.h
@@ -0,0 +1,89 @@
+/*
+ * Copyright © 2014 NVIDIA Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#ifndef LIBDRM_LIBDRM_H
+#define LIBDRM_LIBDRM_H
+
+#if defined(HAVE_VISIBILITY)
+#  define drm_private __attribute__((visibility("hidden")))
+#  define drm_public __attribute__((visibility("default")))
+#else
+#  define drm_private
+#  define drm_public
+#endif
+
+
+/**
+ * Static (compile-time) assertion.
+ * Basically, use COND to dimension an array.  If COND is false/zero the
+ * array size will be -1 and we'll get a compilation error.
+ */
+#define STATIC_ASSERT(COND) \
+   do { \
+      (void) sizeof(char [1 - 2*!(COND)]); \
+   } while (0)
+
+
+#include <sys/mman.h>
+
+#if defined(ANDROID) && !defined(__LP64__)
+#include <errno.h> /* for EINVAL */
+
+extern void *__mmap2(void *, size_t, int, int, int, size_t);
+
+static inline void *drm_mmap(void *addr, size_t length, int prot, int flags,
+                             int fd, loff_t offset)
+{
+   /* offset must be aligned to 4096 (not necessarily the page size) */
+   if (offset & 4095) {
+      errno = EINVAL;
+      return MAP_FAILED;
+   }
+
+   return __mmap2(addr, length, prot, flags, fd, (size_t) (offset >> 12));
+}
+
+#  define drm_munmap(addr, length) \
+              munmap(addr, length)
+
+
+#else
+
+/* assume large file support exists */
+#  define drm_mmap(addr, length, prot, flags, fd, offset) \
+              mmap(addr, length, prot, flags, fd, offset)
+
+
+static inline int drm_munmap(void *addr, size_t length)
+{
+   /* Copied from configure code generated by AC_SYS_LARGEFILE */
+#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + \
+                     (((off_t) 1 << 31) << 31))
+   STATIC_ASSERT(LARGE_OFF_T % 2147483629 == 721 &&
+                 LARGE_OFF_T % 2147483647 == 1);
+#undef LARGE_OFF_T
+
+   return munmap(addr, length);
+}
+#endif
+
+#endif
diff --git a/libkms/api.c b/libkms/api.c
index a07a242..354d8a2 100644
--- a/libkms/api.c
+++ b/libkms/api.c
@@ -34,7 +34,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "internal.h"
 
 int kms_create(int fd, struct kms_driver **out)
diff --git a/libkms/dumb.c b/libkms/dumb.c
index e252d8c..b95a072 100644
--- a/libkms/dumb.c
+++ b/libkms/dumb.c
@@ -38,7 +38,7 @@
 
 #include <sys/ioctl.h>
 #include "xf86drm.h"
-#include "libdrm.h"
+#include "libdrm_macros.h"
 
 struct dumb_bo
 {
diff --git a/libkms/exynos.c b/libkms/exynos.c
index db65f81..5de2e5a 100644
--- a/libkms/exynos.c
+++ b/libkms/exynos.c
@@ -25,7 +25,7 @@
 #include <sys/ioctl.h>
 #include "xf86drm.h"
 
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "exynos_drm.h"
 
 struct exynos_bo
diff --git a/libkms/intel.c b/libkms/intel.c
index a539df2..3d8ca05 100644
--- a/libkms/intel.c
+++ b/libkms/intel.c
@@ -38,7 +38,7 @@
 
 #include <sys/ioctl.h>
 #include "xf86drm.h"
-#include "libdrm.h"
+#include "libdrm_macros.h"
 
 #include "i915_drm.h"
 
diff --git a/libkms/internal.h b/libkms/internal.h
index e7d5c46..905f5b1 100644
--- a/libkms/internal.h
+++ b/libkms/internal.h
@@ -33,7 +33,7 @@
 #include "config.h"
 #endif
 
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "libkms.h"
 
 struct kms_driver
diff --git a/libkms/linux.c b/libkms/linux.c
index 06dbc42..4d47148 100644
--- a/libkms/linux.c
+++ b/libkms/linux.c
@@ -41,7 +41,7 @@
 #include <unistd.h>
 #include <sys/stat.h>
 
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "internal.h"
 
 #define PATH_SIZE 512
diff --git a/libkms/nouveau.c b/libkms/nouveau.c
index 7f57f21..d10e0fd 100644
--- a/libkms/nouveau.c
+++ b/libkms/nouveau.c
@@ -38,7 +38,7 @@
 
 #include <sys/ioctl.h>
 #include "xf86drm.h"
-#include "libdrm.h"
+#include "libdrm_macros.h"
 
 #include "nouveau_drm.h"
 
diff --git a/libkms/radeon.c b/libkms/radeon.c
index f0d5db6..aaeeaf3 100644
--- a/libkms/radeon.c
+++ b/libkms/radeon.c
@@ -38,7 +38,7 @@
 
 #include <sys/ioctl.h>
 #include "xf86drm.h"
-#include "libdrm.h"
+#include "libdrm_macros.h"
 
 #include "radeon_drm.h"
 
diff --git a/libkms/vmwgfx.c b/libkms/vmwgfx.c
index 3c99ea3..6a24fd4 100644
--- a/libkms/vmwgfx.c
+++ b/libkms/vmwgfx.c
@@ -36,7 +36,7 @@
 #include "internal.h"
 
 #include "xf86drm.h"
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "vmwgfx_drm.h"
 
 struct vmwgfx_bo
diff --git a/nouveau/nouveau.c b/nouveau/nouveau.c
index 5c8a0ec..9d12091 100644
--- a/nouveau/nouveau.c
+++ b/nouveau/nouveau.c
@@ -37,7 +37,7 @@
 
 #include <xf86drm.h>
 #include <xf86atomic.h>
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "libdrm_lists.h"
 #include "nouveau_drm.h"
 
diff --git a/nouveau/private.h b/nouveau/private.h
index 74d604e..e9439f3 100644
--- a/nouveau/private.h
+++ b/nouveau/private.h
@@ -1,7 +1,7 @@
 #ifndef __NOUVEAU_LIBDRM_PRIVATE_H__
 #define __NOUVEAU_LIBDRM_PRIVATE_H__
 
-#include <libdrm.h>
+#include <libdrm_macros.h>
 #include <xf86drm.h>
 #include <xf86atomic.h>
 #include <pthread.h>
diff --git a/omap/omap_drm.c b/omap/omap_drm.c
index 8b4ec46..7bc8984 100644
--- a/omap/omap_drm.c
+++ b/omap/omap_drm.c
@@ -39,7 +39,7 @@
 #include <unistd.h>
 #include <pthread.h>
 
-#include <libdrm.h>
+#include <libdrm_macros.h>
 #include <xf86drm.h>
 #include <xf86atomic.h>
 
diff --git a/radeon/bof.h b/radeon/bof.h
index b7632b4..6f2474d 100644
--- a/radeon/bof.h
+++ b/radeon/bof.h
@@ -32,7 +32,7 @@
 
 #include <stdio.h>
 #include <stdint.h>
-#include "libdrm.h"
+#include "libdrm_macros.h"
 
 #define BOF_TYPE_STRING		0
 #define BOF_TYPE_NULL		1
diff --git a/radeon/radeon_bo.c b/radeon/radeon_bo.c
index 865e3f7..02a2d83 100644
--- a/radeon/radeon_bo.c
+++ b/radeon/radeon_bo.c
@@ -32,7 +32,7 @@
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
-#include <libdrm.h>
+#include <libdrm_macros.h>
 #include <radeon_bo.h>
 #include <radeon_bo_int.h>
 
diff --git a/radeon/radeon_bo_gem.c b/radeon/radeon_bo_gem.c
index e78303a..b48cf54 100644
--- a/radeon/radeon_bo_gem.c
+++ b/radeon/radeon_bo_gem.c
@@ -37,7 +37,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "xf86drm.h"
 #include "xf86atomic.h"
 #include "drm.h"
diff --git a/radeon/radeon_cs.c b/radeon/radeon_cs.c
index fe5bbce..142b71f 100644
--- a/radeon/radeon_cs.c
+++ b/radeon/radeon_cs.c
@@ -1,7 +1,7 @@
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include <stdio.h>
 #include "radeon_cs.h"
 #include "radeon_cs_int.h"
diff --git a/radeon/radeon_cs_gem.c b/radeon/radeon_cs_gem.c
index 705ee05..86e0855 100644
--- a/radeon/radeon_cs_gem.c
+++ b/radeon/radeon_cs_gem.c
@@ -44,7 +44,7 @@
 #include "radeon_cs_gem.h"
 #include "radeon_bo_gem.h"
 #include "drm.h"
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "xf86drm.h"
 #include "xf86atomic.h"
 #include "radeon_drm.h"
diff --git a/radeon/radeon_cs_space.c b/radeon/radeon_cs_space.c
index cca650b..1a6ea28 100644
--- a/radeon/radeon_cs_space.c
+++ b/radeon/radeon_cs_space.c
@@ -31,7 +31,7 @@
 #include <assert.h>
 #include <errno.h>
 #include <stdlib.h>
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "radeon_cs.h"
 #include "radeon_bo_int.h"
 #include "radeon_cs_int.h"
diff --git a/radeon/radeon_surface.c b/radeon/radeon_surface.c
index bd9ee6d..fd75b16 100644
--- a/radeon/radeon_surface.c
+++ b/radeon/radeon_surface.c
@@ -37,7 +37,7 @@
 #include <string.h>
 #include <sys/ioctl.h>
 #include "drm.h"
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "xf86drm.h"
 #include "radeon_drm.h"
 #include "radeon_surface.h"
@@ -785,7 +785,7 @@ static int eg_surface_init_1d_miptrees(struct radeon_surface_manager *surf_man,
 {
     unsigned zs_flags = RADEON_SURF_ZBUFFER | RADEON_SURF_SBUFFER;
     int r, is_depth_stencil = (surf->flags & zs_flags) == zs_flags;
-    /* Old libdrm headers didn't have stencil_level in it. This prevents crashes. */
+    /* Old libdrm_macros.headers didn't have stencil_level in it. This prevents crashes. */
     struct radeon_surface_level tmp[RADEON_SURF_MAX_LEVEL];
     struct radeon_surface_level *stencil_level =
         (surf->flags & RADEON_SURF_HAS_SBUFFER_MIPTREE) ? surf->stencil_level : tmp;
@@ -807,7 +807,7 @@ static int eg_surface_init_2d_miptrees(struct radeon_surface_manager *surf_man,
 {
     unsigned zs_flags = RADEON_SURF_ZBUFFER | RADEON_SURF_SBUFFER;
     int r, is_depth_stencil = (surf->flags & zs_flags) == zs_flags;
-    /* Old libdrm headers didn't have stencil_level in it. This prevents crashes. */
+    /* Old libdrm_macros.headers didn't have stencil_level in it. This prevents crashes. */
     struct radeon_surface_level tmp[RADEON_SURF_MAX_LEVEL];
     struct radeon_surface_level *stencil_level =
         (surf->flags & RADEON_SURF_HAS_SBUFFER_MIPTREE) ? surf->stencil_level : tmp;
diff --git a/tegra/private.h b/tegra/private.h
index 9b6bc93..bb6c1a5 100644
--- a/tegra/private.h
+++ b/tegra/private.h
@@ -28,7 +28,7 @@
 #include <stdbool.h>
 #include <stdint.h>
 
-#include <libdrm.h>
+#include <libdrm_macros.h>
 #include <xf86atomic.h>
 
 #include "tegra.h"
diff --git a/tests/modetest/buffers.c b/tests/modetest/buffers.c
index e4e8149..878b64e 100644
--- a/tests/modetest/buffers.c
+++ b/tests/modetest/buffers.c
@@ -39,7 +39,7 @@
 #include "drm.h"
 #include "drm_fourcc.h"
 
-#include "libdrm.h"
+#include "libdrm_macros.h"
 #include "xf86drm.h"
 
 #include "buffers.h"
diff --git a/xf86drm.c b/xf86drm.c
index e73cddd..9ae5071 100644
--- a/xf86drm.c
+++ b/xf86drm.c
@@ -62,7 +62,7 @@
 #endif
 
 #include "xf86drm.h"
-#include "libdrm.h"
+#include "libdrm_macros.h"
 
 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
 #define DRM_MAJOR 145
