diff --git a/Makefile.am b/Makefile.am
index 649160d..305c8e2 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -22,129 +22,4 @@
 
 ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
 
-AM_MAKEFLAGS = -s
-AM_DISTCHECK_CONFIGURE_FLAGS = \
-	--enable-udev \
-	--enable-libkms \
-	--enable-intel \
-	--enable-radeon \
-	--enable-amdgpu \
-	--enable-nouveau \
-	--enable-vc4 \
-	--enable-vmwgfx \
-	--enable-omap-experimental-api \
-	--enable-exynos-experimental-api \
-	--enable-freedreno \
-	--enable-freedreno-kgsl\
-	--enable-tegra-experimental-api \
-	--enable-etnaviv-experimental-api \
-	--enable-vivante-experimental-api \
-	--enable-install-test-programs \
-	--enable-cairo-tests \
-	--enable-manpages \
-	--enable-valgrind
-
-pkgconfigdir = @pkgconfigdir@
-pkgconfig_DATA = libdrm.pc
-
-if HAVE_LIBKMS
-LIBKMS_SUBDIR = libkms
-endif
-
-if HAVE_INTEL
-INTEL_SUBDIR = intel
-endif
-
-if HAVE_NOUVEAU
-NOUVEAU_SUBDIR = nouveau
-endif
-
-if HAVE_RADEON
-RADEON_SUBDIR = radeon
-endif
-
-if HAVE_AMDGPU
-AMDGPU_SUBDIR = amdgpu
-endif
-
-if HAVE_OMAP
-OMAP_SUBDIR = omap
-endif
-
-if HAVE_EXYNOS
-EXYNOS_SUBDIR = exynos
-endif
-
-if HAVE_FREEDRENO
-FREEDRENO_SUBDIR = freedreno
-endif
-
-if HAVE_TEGRA
-TEGRA_SUBDIR = tegra
-endif
-
-if HAVE_VC4
-VC4_SUBDIR = vc4
-endif
-
-if HAVE_ETNAVIV
-ETNAVIV_SUBDIR = etnaviv
-endif
-if HAVE_VIVANTE
-VIVANTE_SUBDIR = vivante
-endif
-
-if BUILD_MANPAGES
-if HAVE_MANPAGES_STYLESHEET
-MAN_SUBDIR = man
-endif
-endif
-
-SUBDIRS = \
-	. \
-	$(LIBKMS_SUBDIR) \
-	$(INTEL_SUBDIR) \
-	$(NOUVEAU_SUBDIR) \
-	$(RADEON_SUBDIR) \
-	$(AMDGPU_SUBDIR) \
-	$(OMAP_SUBDIR) \
-	$(EXYNOS_SUBDIR) \
-	$(FREEDRENO_SUBDIR) \
-	$(TEGRA_SUBDIR) \
-	$(VC4_SUBDIR) \
-	$(VIVANTE_SUBDIR) \
-	$(ETNAVIV_SUBDIR) \
-	data \
-	tests \
-	$(MAN_SUBDIR)
-
-libdrm_la_LTLIBRARIES = libdrm.la
-libdrm_ladir = $(libdir)
-libdrm_la_LDFLAGS = -version-number 2:4:0 -no-undefined
-libdrm_la_LIBADD = @CLOCK_LIB@ -lm
-
-libdrm_la_CPPFLAGS = -I$(top_srcdir)/include/drm
-AM_CFLAGS = \
-	$(WARN_CFLAGS) \
-	$(VALGRIND_CFLAGS)
-
-libdrm_la_SOURCES = $(LIBDRM_FILES)
-
-libdrmincludedir = ${includedir}
-libdrminclude_HEADERS = $(LIBDRM_H_FILES)
-
-klibdrmincludedir = ${includedir}/libdrm
-klibdrminclude_HEADERS = $(LIBDRM_INCLUDE_H_FILES)
-
-if HAVE_VMWGFX
-klibdrminclude_HEADERS += $(LIBDRM_INCLUDE_VMWGFX_H_FILES)
-endif
-
-EXTRA_DIST = include/drm/README
-
-copy-headers :
-	cp -r $(kernel_source)/include/uapi/drm/*.h $(top_srcdir)/include/drm/
-
-commit-headers : copy-headers
-	git add include/drm/*.h
-	git commit -am "Copy headers from kernel $$(GIT_DIR=$(kernel_source)/.git git describe)"
+SUBDIRS = libkms vivante
diff --git a/configure.ac b/configure.ac
index 1259a8f..bd28fa2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -19,10 +19,7 @@
 #  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 AC_PREREQ([2.63])
-AC_INIT([libdrm],
-        [2.4.84],
-        [https://bugs.freedesktop.org/enter_bug.cgi?product=DRI],
-        [libdrm])
+AC_INIT([libdrm-imx], [2.4.84])
 
 AC_CONFIG_HEADERS([config.h])
 AC_CONFIG_SRCDIR([Makefile.am])
@@ -30,34 +27,14 @@
 AC_CONFIG_AUX_DIR([build-aux])
 PKG_PROG_PKG_CONFIG
 
-# Require xorg-macros minimum of 1.12 for XORG_WITH_XSLTPROC
-m4_ifndef([XORG_MACROS_VERSION],
-          [m4_fatal([must install xorg-macros 1.12 or later before running autoconf/autogen])])
-XORG_MACROS_VERSION(1.12)
-XORG_WITH_XSLTPROC
-XORG_MANPAGE_SECTIONS
-
 AM_INIT_AUTOMAKE([1.10 foreign dist-bzip2])
 
-# Enable quiet compiles on automake 1.11.
-m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+PKG_CHECK_MODULES(LIBDRM, libdrm)
+AC_SUBST(LIBDRM_LIBS)
+AC_SUBST(LIBDRM_CFLAGS)
 
-# Check for programs
-AC_PROG_CC
-AC_PROG_CC_C99
-
-if test "x$ac_cv_prog_cc_c99" = xno; then
-	AC_MSG_ERROR([Building libdrm requires C99 enabled compiler])
-fi
-
-AC_USE_SYSTEM_EXTENSIONS
-AC_SYS_LARGEFILE
-AC_FUNC_ALLOCA
-
-save_CFLAGS="$CFLAGS"
-export CFLAGS="$CFLAGS -Werror"
-AC_HEADER_MAJOR
-CFLAGS="$save_CFLAGS"
+AC_SUBST(PTHREADSTUBS_CFLAGS)
+AC_SUBST(PTHREADSTUBS_LIBS)
 
 AC_CHECK_HEADERS([sys/sysctl.h sys/select.h])
 
@@ -65,107 +42,8 @@
 LT_PREREQ([2.2])
 LT_INIT([disable-static])
 
-dnl pthread-stubs is mandatory on BSD platforms, due to the nature of the
-dnl project. Even then there's a notable issue as described in the project README
-case "$host_os" in
-linux* | cygwin* | darwin* | solaris* | *-gnu* | gnu*)
-    pthread_stubs_possible="no"
-    ;;
-* )
-    pthread_stubs_possible="yes"
-    ;;
-esac
-
-if test "x$pthread_stubs_possible" = xyes; then
-    PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs >= 0.4)
-    AC_SUBST(PTHREADSTUBS_CFLAGS)
-    AC_SUBST(PTHREADSTUBS_LIBS)
-fi
-
 pkgconfigdir=${libdir}/pkgconfig
 AC_SUBST(pkgconfigdir)
-libdrmdatadir=${datadir}/libdrm
-AC_SUBST(libdrmdatadir)
-
-AC_ARG_ENABLE([udev],
-              [AS_HELP_STRING([--enable-udev],
-                              [Enable support for using udev instead of mknod (default: disabled)])],
-              [UDEV=$enableval], [UDEV=no])
-
-AC_ARG_ENABLE(libkms,
-	      AS_HELP_STRING([--disable-libkms],
-	      [Disable KMS mm abstraction library (default: auto, enabled on supported platforms)]),
-	      [LIBKMS=$enableval], [LIBKMS=auto])
-
-AC_ARG_ENABLE(intel,
-	      AS_HELP_STRING([--disable-intel],
-	      [Enable support for intel's KMS API (default: auto, enabled on x86)]),
-	      [INTEL=$enableval], [INTEL=auto])
-
-AC_ARG_ENABLE(radeon,
-	      AS_HELP_STRING([--disable-radeon],
-	      [Enable support for radeon's KMS API (default: auto)]),
-	      [RADEON=$enableval], [RADEON=auto])
-
-AC_ARG_ENABLE(amdgpu,
-	      AS_HELP_STRING([--disable-amdgpu],
-	      [Enable support for amdgpu's KMS API (default: auto)]),
-	      [AMDGPU=$enableval], [AMDGPU=auto])
-
-AC_ARG_ENABLE(nouveau,
-	      AS_HELP_STRING([--disable-nouveau],
-	      [Enable support for nouveau's KMS API (default: auto)]),
-	      [NOUVEAU=$enableval], [NOUVEAU=auto])
-
-AC_ARG_ENABLE(vmwgfx,
-	      AS_HELP_STRING([--disable-vmwgfx],
-	      [Enable support for vmwgfx's KMS API (default: yes)]),
-	      [VMWGFX=$enableval], [VMWGFX=yes])
-
-AC_ARG_ENABLE(omap-experimental-api,
-	      AS_HELP_STRING([--enable-omap-experimental-api],
-	      [Enable support for OMAP's experimental API (default: disabled)]),
-	      [OMAP=$enableval], [OMAP=no])
-
-AC_ARG_ENABLE(exynos-experimental-api,
-	      AS_HELP_STRING([--enable-exynos-experimental-api],
-	      [Enable support for EXYNOS's experimental API (default: disabled)]),
-	      [EXYNOS=$enableval], [EXYNOS=no])
-
-AC_ARG_ENABLE(freedreno,
-	      AS_HELP_STRING([--disable-freedreno],
-	      [Enable support for freedreno's KMS API (default: auto, enabled on arm)]),
-	      [FREEDRENO=$enableval], [FREEDRENO=auto])
-
-AC_ARG_ENABLE(freedreno-kgsl,
-	      AS_HELP_STRING([--enable-freedreno-kgsl],
-	      [Enable support for freedreno's to use downstream android kernel API (default: disabled)]),
-	      [FREEDRENO_KGSL=$enableval], [FREEDRENO_KGSL=no])
-
-AC_ARG_ENABLE(tegra-experimental-api,
-	      AS_HELP_STRING([--enable-tegra-experimental-api],
-	      [Enable support for Tegra's experimental API (default: disabled)]),
-	      [TEGRA=$enableval], [TEGRA=no])
-
-AC_ARG_ENABLE(vivante-experimental-api,
-	      AS_HELP_STRING([--enable-vivante-experimental-api],
-	      [Enable support for vivante's experimental API (default: disabled)]),
-	      [VIVANTE=$enableval], [VIVANTE=no])
-
-AC_ARG_ENABLE(vc4,
-	      AS_HELP_STRING([--disable-vc4],
-	      [Enable support for vc4's API (default: auto, enabled on arm)]),
-	      [VC4=$enableval], [VC4=auto])
-
-AC_ARG_ENABLE(etnaviv-experimental-api,
-	      AS_HELP_STRING([--enable-etnaviv-experimental-api],
-	      [Enable support for etnaviv's experimental API (default: disabled)]),
-	      [ETNAVIV=$enableval], [ETNAVIV=no])
-
-AC_ARG_ENABLE(install-test-programs,
-		  AS_HELP_STRING([--enable-install-test-programs],
-		  [Install test programs (default: no)]),
-		  [INSTALL_TESTS=$enableval], [INSTALL_TESTS=no])
 
 dnl ===========================================================================
 dnl check compiler flags
@@ -242,362 +120,11 @@
 	AC_MSG_CHECKING([which warning flags were supported])])
 WARN_CFLAGS="$libdrm_cv_warn_cflags"
 
-# Check for atomic intrinsics
-AC_CACHE_CHECK([for native atomic primitives], drm_cv_atomic_primitives, [
-	drm_cv_atomic_primitives="none"
-
-	AC_LINK_IFELSE([AC_LANG_PROGRAM([[
-	int atomic_add(int *i) { return __sync_add_and_fetch (i, 1); }
-	int atomic_cmpxchg(int *i, int j, int k) { return __sync_val_compare_and_swap (i, j, k); }
-					  ]],[[]])], [drm_cv_atomic_primitives="Intel"],[])
-
-	if test "x$drm_cv_atomic_primitives" = "xnone"; then
-		AC_CHECK_HEADER([atomic_ops.h], drm_cv_atomic_primitives="libatomic-ops")
-	fi
-
-	# atomic functions defined in <atomic.h> & libc on Solaris
-	if test "x$drm_cv_atomic_primitives" = "xnone"; then
-		AC_CHECK_FUNC([atomic_cas_uint], drm_cv_atomic_primitives="Solaris")
-	fi
-])
-
-if test "x$drm_cv_atomic_primitives" = xIntel; then
-	AC_DEFINE(HAVE_LIBDRM_ATOMIC_PRIMITIVES, 1,
-		[Enable if your compiler supports the Intel __sync_* atomic primitives])
-fi
-if test "x$drm_cv_atomic_primitives" = "xlibatomic-ops"; then
-	AC_DEFINE(HAVE_LIB_ATOMIC_OPS, 1, [Enable if you have libatomic-ops-dev installed])
-fi
-
-dnl Print out the approapriate message considering the value set be the
-dnl respective in $1.
-dnl $1 - value to be evaluated. Eg. $INTEL, $NOUVEAU, ...
-dnl $2 - libdrm shortname. Eg. intel, freedreno, ...
-dnl $3 - GPU name/brand. Eg. Intel, NVIDIA Tegra, ...
-dnl $4 - Configure switch. Eg. intel, omap-experimental-api, ...
-AC_DEFUN([LIBDRM_ATOMICS_NOT_FOUND_MSG], [
-	case "x$1" in
-		xyes)	AC_MSG_ERROR([libdrm_$2 depends upon atomic operations, which were not found for your compiler/cpu. Try compiling with -march=native, or install the libatomics-op-dev package, or, failing both of those, disable support for $3 GPUs by passing --disable-$4 to ./configure]) ;;
-		xauto)	AC_MSG_WARN([Disabling $2. It depends on atomic operations, which were not found for your compiler/cpu. Try compiling with -march=native, or install the libatomics-op-dev package.]) ;;
-		*)	;;
-	esac
-])
-
-if test "x$drm_cv_atomic_primitives" = "xnone"; then
-	LIBDRM_ATOMICS_NOT_FOUND_MSG($INTEL, intel, Intel, intel)
-	INTEL=no
-
-	LIBDRM_ATOMICS_NOT_FOUND_MSG($RADEON, radeon, Radeon, radeon)
-	RADEON=no
-
-	LIBDRM_ATOMICS_NOT_FOUND_MSG($AMDGPU, amdgpu, AMD, amdgpu)
-	AMDGPU=no
-
-	LIBDRM_ATOMICS_NOT_FOUND_MSG($NOUVEAU, nouveau, NVIDIA, nouveau)
-	NOUVEAU=no
-
-	LIBDRM_ATOMICS_NOT_FOUND_MSG($OMAP, omap, OMAP, omap-experimental-api)
-	OMAP=no
-
-	LIBDRM_ATOMICS_NOT_FOUND_MSG($FREEDRENO, freedreno, Qualcomm Adreno, freedreno)
-	FREEDRENO=no
-
-	LIBDRM_ATOMICS_NOT_FOUND_MSG($TEGRA, tegra, NVIDIA Tegra, tegra-experimental-api)
-	TEGRA=no
-
-	LIBDRM_ATOMICS_NOT_FOUND_MSG($ETNAVIV, etnaviv, Vivante, etnaviv-experimental-api)
-	ETNAVIV=no
-else
-	if test "x$INTEL" = xauto; then
-		case $host_cpu in
-			i?86|x86_64)	INTEL=yes ;;
-			*)		INTEL=no ;;
-		esac
-	fi
-	if test "x$RADEON" = xauto; then
-		RADEON=yes
-	fi
-	if test "x$AMDGPU" = xauto; then
-		AMDGPU=yes
-	fi
-	if test "x$NOUVEAU" = xauto; then
-		NOUVEAU=yes
-	fi
-	if test "x$FREEDRENO" = xauto; then
-		case $host_cpu in
-			arm*|aarch64)	FREEDRENO=yes ;;
-			*)		FREEDRENO=no ;;
-		esac
-	fi
-	if test "x$VC4" = xauto; then
-		case $host_cpu in
-			arm*|aarch64)	VC4=yes ;;
-			*)		VC4=no ;;
-		esac
-	fi
-fi
-
-if test "x$INTEL" != "xno"; then
-	PKG_CHECK_MODULES(PCIACCESS, [pciaccess >= 0.10])
-fi
-AC_SUBST(PCIACCESS_CFLAGS)
-AC_SUBST(PCIACCESS_LIBS)
-
-if test "x$UDEV" = xyes; then
-	AC_DEFINE(UDEV, 1, [Have UDEV support])
-fi
-
-AC_CANONICAL_HOST
-if test "x$LIBKMS" = xauto ; then
-	case $host_os in
-		linux*)		LIBKMS="yes" ;;
-		freebsd* | kfreebsd*-gnu)
-				LIBKMS="yes" ;;
-		dragonfly*)	LIBKMS="yes" ;;
-		*)		LIBKMS="no" ;;
-	esac
-fi
-
-AM_CONDITIONAL(HAVE_LIBKMS, [test "x$LIBKMS" = xyes])
-
-AM_CONDITIONAL(HAVE_INTEL, [test "x$INTEL" = xyes])
-if test "x$INTEL" = xyes; then
-	AC_DEFINE(HAVE_INTEL, 1, [Have intel support])
-fi
-
-AM_CONDITIONAL(HAVE_VMWGFX, [test "x$VMWGFX" = xyes])
-if test "x$VMWGFX" = xyes; then
-	AC_DEFINE(HAVE_VMWGFX, 1, [Have vmwgfx kernel headers])
-fi
-
-AM_CONDITIONAL(HAVE_NOUVEAU, [test "x$NOUVEAU" = xyes])
-if test "x$NOUVEAU" = xyes; then
-	AC_DEFINE(HAVE_NOUVEAU, 1, [Have nouveau (nvidia) support])
-fi
-
-AM_CONDITIONAL(HAVE_OMAP, [test "x$OMAP" = xyes])
-if test "x$OMAP" = xyes; then
-	AC_DEFINE(HAVE_OMAP, 1, [Have OMAP support])
-fi
-
-AM_CONDITIONAL(HAVE_EXYNOS, [test "x$EXYNOS" = xyes])
-if test "x$EXYNOS" = xyes; then
-	AC_DEFINE(HAVE_EXYNOS, 1, [Have EXYNOS support])
-fi
-
-AM_CONDITIONAL(HAVE_FREEDRENO, [test "x$FREEDRENO" = xyes])
-if test "x$FREEDRENO" = xyes; then
-	AC_DEFINE(HAVE_FREEDRENO, 1, [Have freedreno support])
-fi
-
-if test "x$FREEDRENO_KGSL" = xyes; then
-	if test "x$FREEDRENO" != xyes; then
-		AC_MSG_ERROR([Cannot enable freedreno KGSL interface if freedreno is disabled])
-	fi
-fi
-AM_CONDITIONAL(HAVE_FREEDRENO_KGSL, [test "x$FREEDRENO_KGSL" = xyes])
-if test "x$FREEDRENO_KGSL" = xyes; then
-	AC_DEFINE(HAVE_FREEDRENO_KGSL, 1, [Have freedreno support for KGSL kernel interface])
-fi
-
-AM_CONDITIONAL(HAVE_RADEON, [test "x$RADEON" = xyes])
-if test "x$RADEON" = xyes; then
-	AC_DEFINE(HAVE_RADEON, 1, [Have radeon support])
-fi
-
-if test "x$AMDGPU" != xno; then
-	# Detect cunit library
-	PKG_CHECK_MODULES([CUNIT], [cunit >= 2.1], [have_cunit=yes], [have_cunit=no])
-	# If pkg-config does not find cunit, check it using AC_CHECK_LIB.  We
-	# do this because Debian (Ubuntu) lacks pkg-config file for cunit.
-	# fixed in 2.1-2.dfsg-3: http://anonscm.debian.org/cgit/collab-maint/cunit.git/commit/?h=debian
-	if test "x${have_cunit}" = "xno"; then
-		AC_CHECK_LIB([cunit], [CU_initialize_registry], [have_cunit=yes], [have_cunit=no])
-		if test "x${have_cunit}" = "xyes"; then
-			CUNIT_LIBS="-lcunit"
-			CUNIT_CFLAGS=""
-			AC_SUBST([CUNIT_LIBS])
-			AC_SUBST([CUNIT_CFLAGS])
-		fi
-	fi
-else
-	have_cunit=no
-fi
-AM_CONDITIONAL(HAVE_CUNIT, [test "x$have_cunit" != "xno"])
-
-AM_CONDITIONAL(HAVE_AMDGPU, [test "x$AMDGPU" = xyes])
-if test "x$AMDGPU" = xyes; then
-	AC_DEFINE(HAVE_AMDGPU, 1, [Have amdgpu support])
-
-	AC_DEFINE(HAVE_CUNIT, [test "x$have_cunit" != "xno"], [Enable CUNIT Have amdgpu support])
-
-	if test "x$have_cunit" = "xno"; then
-		AC_MSG_WARN([Could not find cunit library. Disabling amdgpu tests])
-	fi
-fi
-
-AM_CONDITIONAL(HAVE_TEGRA, [test "x$TEGRA" = xyes])
-if test "x$TEGRA" = xyes; then
-	AC_DEFINE(HAVE_TEGRA, 1, [Have Tegra support])
-fi
-
-AM_CONDITIONAL(HAVE_VIVANTE, [test "x$VIVANTE" = xyes])
-if test "x$VIVANTE" = xyes; then
-	AC_DEFINE(HAVE_VIVANTE, 1, [Have vivante support])
-fi
-
-AM_CONDITIONAL(HAVE_VC4, [test "x$VC4" = xyes])
-if test "x$VC4" = xyes; then
-	AC_DEFINE(HAVE_VC4, 1, [Have VC4 support])
-fi
-
-AM_CONDITIONAL(HAVE_ETNAVIV, [test "x$ETNAVIV" = xyes])
-if test "x$ETNAVIV" = xyes; then
-	AC_DEFINE(HAVE_ETNAVIV, 1, [Have etnaviv support])
-fi
-
-AM_CONDITIONAL(HAVE_INSTALL_TESTS, [test "x$INSTALL_TESTS" = xyes])
-if test "x$INSTALL_TESTS" = xyes; then
-	AC_DEFINE(HAVE_INSTALL_TESTS, 1, [Install test programs])
-fi
-
-AC_ARG_ENABLE([cairo-tests],
-              [AS_HELP_STRING([--enable-cairo-tests],
-                              [Enable support for Cairo rendering in tests (default: auto)])],
-              [CAIRO=$enableval], [CAIRO=auto])
-if test "x$CAIRO" != xno; then
-	PKG_CHECK_MODULES(CAIRO, cairo, [HAVE_CAIRO=yes], [HAVE_CAIRO=no])
-fi
-AC_MSG_CHECKING([whether to enable Cairo tests])
-if test "x$CAIRO" = xauto; then
-	CAIRO="$HAVE_CAIRO"
-fi
-if test "x$CAIRO" = xyes; then
-	if ! test "x$HAVE_CAIRO" = xyes; then
-		AC_MSG_ERROR([Cairo support required but not present])
-	fi
-	AC_DEFINE(HAVE_CAIRO, 1, [Have Cairo support])
-fi
-AC_MSG_RESULT([$CAIRO])
-AM_CONDITIONAL(HAVE_CAIRO, [test "x$CAIRO" = xyes])
-
-# xsltproc for docbook manpages
-AC_ARG_ENABLE([manpages],
-              AS_HELP_STRING([--enable-manpages], [enable manpages @<:@default=auto@:>@]),
-              [MANS=$enableval], [MANS=auto])
-AM_CONDITIONAL([BUILD_MANPAGES], [test "x$XSLTPROC" != "x" -a "x$MANS" != "xno"])
-
-# check for offline man-pages stylesheet
-AC_MSG_CHECKING([for docbook manpages stylesheet])
-MANPAGES_STYLESHEET="http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"
-AC_PATH_PROGS_FEATURE_CHECK([XSLTPROC_TMP], [xsltproc],
-                            AS_IF([`"$ac_path_XSLTPROC_TMP" --nonet "$MANPAGES_STYLESHEET" > /dev/null 2>&1`],
-                                  [HAVE_MANPAGES_STYLESHEET=yes]))
-if test "x$HAVE_MANPAGES_STYLESHEET" = "xyes"; then
-        AC_SUBST(MANPAGES_STYLESHEET)
-        AC_MSG_RESULT([yes])
-else
-        AC_MSG_RESULT([no])
-fi
-AM_CONDITIONAL([HAVE_MANPAGES_STYLESHEET], [test "x$HAVE_MANPAGES_STYLESHEET" = "xyes"])
-
-AC_ARG_ENABLE(valgrind,
-              [AS_HELP_STRING([--enable-valgrind],
-                             [Build libdrm with  valgrind support (default: auto)])],
-                             [VALGRIND=$enableval], [VALGRIND=auto])
-if test "x$VALGRIND" != xno; then
-	PKG_CHECK_MODULES(VALGRIND, [valgrind], [have_valgrind=yes], [have_valgrind=no])
-fi
-AC_MSG_CHECKING([whether to enable Valgrind support])
-if test "x$VALGRIND" = xauto; then
-	VALGRIND="$have_valgrind"
-fi
-
-if test "x$VALGRIND" = "xyes"; then
-	if ! test "x$have_valgrind" = xyes; then
-		AC_MSG_ERROR([Valgrind support required but not present])
-	fi
-	AC_DEFINE([HAVE_VALGRIND], 1, [Use valgrind intrinsics to suppress false warnings])
-fi
-
-AC_MSG_RESULT([$VALGRIND])
-
-AC_ARG_WITH([kernel-source],
-            [AS_HELP_STRING([--with-kernel-source],
-              [specify path to linux kernel source])],
-	    [kernel_source="$with_kernel_source"])
-AC_SUBST(kernel_source)
-
-AC_MSG_CHECKING([whether $CC supports __attribute__(("hidden"))])
-AC_LINK_IFELSE([AC_LANG_PROGRAM([
-    int foo_hidden( void ) __attribute__((visibility("hidden")));
-])], HAVE_ATTRIBUTE_VISIBILITY="yes"; AC_MSG_RESULT([yes]), AC_MSG_RESULT([no]));
-
-if test "x$HAVE_ATTRIBUTE_VISIBILITY" = xyes; then
-    AC_DEFINE(HAVE_VISIBILITY, 1, [Compiler supports __attribute__(("hidden"))])
-fi
-
 AC_SUBST(WARN_CFLAGS)
 AC_CONFIG_FILES([
 	Makefile
-	data/Makefile
 	libkms/Makefile
 	libkms/libkms.pc
-	intel/Makefile
-	intel/libdrm_intel.pc
-	radeon/Makefile
-	radeon/libdrm_radeon.pc
-	amdgpu/Makefile
-	amdgpu/libdrm_amdgpu.pc
-	nouveau/Makefile
-	nouveau/libdrm_nouveau.pc
-	omap/Makefile
-	omap/libdrm_omap.pc
-	exynos/Makefile
-	exynos/libdrm_exynos.pc
-	freedreno/Makefile
-	freedreno/libdrm_freedreno.pc
-	tegra/Makefile
-	tegra/libdrm_tegra.pc
 	vivante/Makefile
-	vivante/libdrm_vivante.pc
-	vc4/Makefile
-	vc4/libdrm_vc4.pc
-	etnaviv/Makefile
-	etnaviv/libdrm_etnaviv.pc
-	tests/Makefile
-	tests/modeprint/Makefile
-	tests/modetest/Makefile
-	tests/kms/Makefile
-	tests/kmstest/Makefile
-	tests/proptest/Makefile
-	tests/radeon/Makefile
-	tests/amdgpu/Makefile
-	tests/vbltest/Makefile
-	tests/exynos/Makefile
-	tests/tegra/Makefile
-	tests/vivante/Makefile
-	tests/nouveau/Makefile
-	tests/etnaviv/Makefile
-	tests/util/Makefile
-	man/Makefile
-	libdrm.pc])
+	vivante/libdrm_vivante.pc])
 AC_OUTPUT
-
-echo ""
-echo "$PACKAGE_STRING will be compiled with:"
-echo ""
-echo "  libkms         $LIBKMS"
-echo "  Intel API      $INTEL"
-echo "  vmwgfx API     $VMWGFX"
-echo "  Radeon API     $RADEON"
-echo "  AMDGPU API     $AMDGPU"
-echo "  Nouveau API    $NOUVEAU"
-echo "  OMAP API       $OMAP"
-echo "  EXYNOS API     $EXYNOS"
-echo "  Freedreno API  $FREEDRENO (kgsl: $FREEDRENO_KGSL)"
-echo "  Tegra API      $TEGRA"
-echo "  Vivante API    $VIVANTE"
-echo "  VC4 API        $VC4"
-echo "  Etnaviv API    $ETNAVIV"
-echo ""
diff --git a/include/drm/drm_fourcc_imx.h b/include/drm/drm_fourcc_imx.h
new file mode 100644
index 0000000..1969c4b
--- /dev/null
+++ b/include/drm/drm_fourcc_imx.h
@@ -0,0 +1,129 @@
+/*
+ * Copyright 2011 Intel 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 (including the next
+ * paragraph) 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
+ * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS 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 DRM_FOURCC_IMX_H
+#define DRM_FOURCC_IMX_H
+
+#include "drm.h"
+#include "drm_fourcc.h"
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+#define DRM_FORMAT_P010		fourcc_code('P', '0', '1', '0') /* 2x2 subsampled Cr:Cb plane, 10-bit per channel */
+
+#define DRM_FORMAT_MOD_VENDOR_AMPHION  0x08
+#define DRM_FORMAT_MOD_VENDOR_VSI      0x09
+
+/* Vivante framebuffer modifiers */
+
+/*
+ * Vivante 4x4 tiling layout
+ *
+ * This is a simple tiled layout using tiles of 4x4 pixels in a row-major
+ * layout.
+ */
+#define DRM_FORMAT_MOD_VIVANTE_TILED		fourcc_mod_code(VIVANTE, 1)
+
+/*
+ * Vivante 64x64 super-tiling layout
+ *
+ * This is a tiled layout using 64x64 pixel super-tiles, where each super-tile
+ * contains 8x4 groups of 2x4 tiles of 4x4 pixels (like above) each, all in row-
+ * major layout.
+ *
+ * For more information: see
+ * https://github.com/etnaviv/etna_viv/blob/master/doc/hardware.md#texture-tiling
+ */
+#define DRM_FORMAT_MOD_VIVANTE_SUPER_TILED	fourcc_mod_code(VIVANTE, 2)
+
+/*
+ * Vivante 4x4 tiling layout for dual-pipe
+ *
+ * Same as the 4x4 tiling layout, except every second 4x4 pixel tile starts at a
+ * different base address. Offsets from the base addresses are therefore halved
+ * compared to the non-split tiled layout.
+ */
+#define DRM_FORMAT_MOD_VIVANTE_SPLIT_TILED	fourcc_mod_code(VIVANTE, 3)
+
+/*
+ * Vivante 64x64 super-tiling layout for dual-pipe
+ *
+ * Same as the 64x64 super-tiling layout, except every second 4x4 pixel tile
+ * starts at a different base address. Offsets from the base addresses are
+ * therefore halved compared to the non-split super-tiled layout.
+ */
+#define DRM_FORMAT_MOD_VIVANTE_SPLIT_SUPER_TILED fourcc_mod_code(VIVANTE, 4)
+
+/*
+ * Vivante 64x64 super-tiling with compression layout
+ *
+ * This is a tiled layout using 64x64 pixel super-tiles, where each super-tile
+ * contains 8x4 groups of 2x4 tiles of 4x4 pixels each, all in row-major layout
+ * with compression.
+ */
+#define DRM_FORMAT_MOD_VIVANTE_SUPER_TILED_FC  fourcc_mod_code(VIVANTE, 5)
+
+
+/* Amphion tiled layout */
+
+/*
+ * Amphion 8x128 tiling layout
+ *
+ * This is a tiled layout using 8x128 pixel vertical strips, where each strip
+ * contains 1x16 groups of 8x8 pixels in a row-major layout.
+ */
+#define DRM_FORMAT_MOD_AMPHION_TILED fourcc_mod_code(AMPHION, 1)
+
+/* Verisilicon framebuffer modifiers */
+
+/*
+ * Verisilicon 8x4 tiling layout
+ *
+ * This is G1 VPU tiled layout using tiles of 8x4 pixels in a row-major
+ * layout.
+ */
+#define DRM_FORMAT_MOD_VSI_G1_TILED fourcc_mod_code(VSI, 1)
+
+/*
+ * Verisilicon 4x4 tiling layout
+ *
+ * This is G2 VPU tiled layout using tiles of 4x4 pixels in a row-major
+ * layout.
+ */
+#define DRM_FORMAT_MOD_VSI_G2_TILED fourcc_mod_code(VSI, 2)
+
+/*
+ * Verisilicon 4x4 tiling with compression layout
+ *
+ * This is G2 VPU tiled layout using tiles of 4x4 pixels in a row-major
+ * layout with compression.
+ */
+#define DRM_FORMAT_MOD_VSI_G2_TILED_COMPRESSED fourcc_mod_code(VSI, 3)
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* DRM_FOURCC_H */
diff --git a/include/drm/drm_mode_imx.h b/include/drm/drm_mode_imx.h
new file mode 100644
index 0000000..c88b4a7
--- /dev/null
+++ b/include/drm/drm_mode_imx.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2007 Dave Airlie <airlied@linux.ie>
+ * Copyright (c) 2007 Jakob Bornecrantz <wallbraker@gmail.com>
+ * Copyright (c) 2008 Red Hat Inc.
+ * Copyright (c) 2007-2008 Tungsten Graphics, Inc., Cedar Park, TX., USA
+ * Copyright (c) 2007-2008 Intel 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
+ * AUTHORS OR COPYRIGHT HOLDERS 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 _DRM_MODE_IMX_H
+#define _DRM_MODE_IMX_H
+
+#include "drm.h"
+#include "drm_mode.h"
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+enum supported_eotf_type {
+	TRADITIONAL_GAMMA_SDR = 0,
+	TRADITIONA_GAMMA_HDR,
+	SMPTE_ST2084,
+	FUTURE_EOTF
+};
+
+/* HDR Metadata */
+struct hdr_static_metadata {
+	__u8 eotf;
+	__u8 type;
+	__u16 display_primaries_x[3];
+	__u16 display_primaries_y[3];
+	__u16 white_point_x;
+	__u16 white_point_y;
+	__u16 max_mastering_display_luminance;
+	__u16 min_mastering_display_luminance;
+	__u16 max_fall;
+	__u16 max_cll;
+};
+
+#if defined(__cplusplus)
+}
+#endif
+
+#endif
diff --git a/libkms/Makefile.am b/libkms/Makefile.am
index 461fc35..5f2db76 100644
--- a/libkms/Makefile.am
+++ b/libkms/Makefile.am
@@ -1,43 +1,15 @@
 include Makefile.sources
 
-AM_CFLAGS = \
-	$(WARN_CFLAGS) \
-	-I$(top_srcdir)/include/drm \
-	-I$(top_srcdir)
-
 libkms_la_LTLIBRARIES = libkms.la
 libkms_ladir = $(libdir)
 libkms_la_LDFLAGS = -version-number 1:0:0 -no-undefined
-libkms_la_LIBADD = ../libdrm.la
+libkms_la_LIBADD = $(LIBDRM_LIBS)
+libkms_la_CFLAGS = $(LIBDRM_CFLAGS) $(WARN_CFLAGS) -I$(top_srcdir)
 
 libkms_la_SOURCES = $(LIBKMS_FILES)
 
-if HAVE_VMWGFX
-libkms_la_SOURCES += $(LIBKMS_VMWGFX_FILES)
-endif
-
-if HAVE_INTEL
-libkms_la_SOURCES += $(LIBKMS_INTEL_FILES)
-endif
-
-if HAVE_NOUVEAU
-libkms_la_SOURCES += $(LIBKMS_NOUVEAU_FILES)
-endif
-
-if HAVE_RADEON
-libkms_la_SOURCES += $(LIBKMS_RADEON_FILES)
-endif
-
-if HAVE_EXYNOS
-libkms_la_SOURCES += $(LIBKMS_EXYNOS_FILES)
-AM_CFLAGS += -I$(top_srcdir)/exynos
-endif
-
 libkmsincludedir = ${includedir}/libkms
 libkmsinclude_HEADERS = $(LIBKMS_H_FILES)
 
 pkgconfigdir = @pkgconfigdir@
 pkgconfig_DATA = libkms.pc
-
-TESTS = kms-symbol-check
-EXTRA_DIST = $(TESTS)
diff --git a/vivante/Makefile.am b/vivante/Makefile.am
index cd4c73e..c147a5f 100644
--- a/vivante/Makefile.am
+++ b/vivante/Makefile.am
@@ -26,27 +26,17 @@
 ##############################################################################
 
 
-AM_CPPFLAGS = \
-	-I$(top_srcdir) \
-	-I$(top_srcdir)/include/drm
-
-AM_CFLAGS = \
-	@PTHREADSTUBS_CFLAGS@ \
-	$(WARN_CFLAGS)
-
 libdrm_vivante_ladir = $(libdir)
 libdrm_vivante_la_LTLIBRARIES = libdrm_vivante.la
 libdrm_vivante_la_LDFLAGS = -version-number 1:0:0 -no-undefined
-libdrm_vivante_la_LIBADD = ../libdrm.la @PTHREADSTUBS_LIBS@
+libdrm_vivante_la_LIBADD = $(LIBDRM_LIBS)
+libdrm_vivante_la_CFLAGS = $(LIBDRM_CFLAGS) $(WARN_CFLAGS) -I$(top_srcdir)
 
 libdrm_vivante_la_SOURCES = \
 	vivante_bo.c
 
 libdrm_vivanteincludedir = ${includedir}/libdrm
-libdrm_vivanteinclude_HEADERS = vivante_bo.h
+libdrm_vivanteinclude_HEADERS = vivante_bo.h vivante_drm.h
 
 pkgconfigdir = @pkgconfigdir@
 pkgconfig_DATA = libdrm_vivante.pc
-
-TESTS = vivante-symbol-check
-EXTRA_DIST = $(TESTS)
diff --git a/vivante/vivante_drm.h b/vivante/vivante_drm.h
new file mode 120000
index 0000000..84fba4d
--- /dev/null
+++ b/vivante/vivante_drm.h
@@ -0,0 +1 @@
+../include/drm/vivante_drm.h
\ No newline at end of file
