diff --git a/README b/README
index ac9f8ad..6235655 100644
--- a/README
+++ b/README
@@ -102,17 +102,6 @@ tools/
 	These tools generally must be run as root, safe for the ones that just
 	decode dumps.
 
-tools/quick_dump
-	Quick dumper is a python tool built with SWIG bindings to
-	important libraries exported by the rest of the tool suite. The tool
-	itself is quite straight forward, and should also be a useful example
-	for others wishing to write python based i915 tools.
-
-	Note to package maintainers: It is not recommended to package
-	this directory, as the tool is not yet designed for wide usage. If the
-	package is installed via "make install" the users will have to set
-	their python library path appropriately. Use --disable-dumper
-
 debugger/
 	This tool is to be used to do shader debugging. It acts like a
 	debug server accepting connections from debug clients such as
@@ -148,9 +137,7 @@ everything (package names may vary):
 	libcairo2-dev
 	libdrm-dev
 	libpciaccess-dev
-	libpython3.3-dev
 	libunwind-dev
 	python-docutils
-	swig2.0
 	x11proto-dri2-dev
 	xutils-dev
diff --git a/configure.ac b/configure.ac
index 19f6fa4..e4515f3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -131,26 +131,6 @@ if test "x$NOUVEAU" = xyes; then
 fi
 AM_CONDITIONAL(HAVE_NOUVEAU, [test "x$NOUVEAU" = xyes])
 
-#Configure options for the python quick-dumper
-AC_ARG_ENABLE(dumper,
-	      AS_HELP_STRING([--disable-dumper],
-			     [Disable the python based register dumper (default: enabled)]),
-			     [DUMPER=$enableval], [DUMPER=auto])
-if test "x$DUMPER" = xauto; then
-	# AX_PYTHON_DEVEL/AX_SWIG_PYTHON are not super friendly and don't
-	# easily allow us to introspect the result of their checks. So if we
-	# find SWING on the system, that's enough to try compiling the dumper.
-	AX_PKG_SWIG(2.0.0, [DUMPER=yes], [DUMPER=no])
-fi
-if test "x$DUMPER" = xyes; then
-	AC_DEFINE(HAVE_DUMPER, 1, [Have dumper support])
-	# SWIG configuration
-	AX_PKG_SWIG(2.0.0, [], [ AC_MSG_ERROR([SWIG 2.0.0 or higher is required to build..]) ])
-	AX_PYTHON_DEVEL([>= '3.0'])
-	AX_SWIG_PYTHON
-fi
-AM_CONDITIONAL(HAVE_DUMPER, [test "x$DUMPER" = xyes])
-
 # Define a configure option for the shader debugger
 AC_ARG_ENABLE(shader-debugger, AS_HELP_STRING([--enable-shader-debugger],
 	      [Enable shader debugging support [autodetected]]),
@@ -237,9 +217,9 @@ AC_DEFINE_UNQUOTED(TARGET_CPU_PLATFORM, ["$host_cpu"], [Target platform])
 
 files="broadwell cherryview haswell ivybridge sandybridge valleyview skylake"
 for file in $files; do
-	QUICK_DUMP_EXTRA_DIST="$QUICK_DUMP_EXTRA_DIST $file `tr '\n' ' ' < $srcdir/tools/quick_dump/$file`"
+	REGISTERS_EXTRA_DIST="$REGISTERS_EXTRA_DIST $file `tr '\n' ' ' < $srcdir/tools/registers/$file`"
 done
-AC_SUBST(QUICK_DUMP_EXTRA_DIST)
+AC_SUBST(REGISTERS_EXTRA_DIST)
 
 AC_CONFIG_FILES([
 		 Makefile
@@ -255,8 +235,8 @@ AC_CONFIG_FILES([
 		 scripts/Makefile
 		 tests/Makefile
 		 tools/Makefile
-		 tools/quick_dump/Makefile
 		 tools/null_state_gen/Makefile
+		 tools/registers/Makefile
 		 debugger/Makefile
 		 debugger/system_routine/Makefile
 		 assembler/Makefile
@@ -284,7 +264,6 @@ echo ""
 echo " • Tools:"
 echo "       Assembler          : ${enable_assembler}"
 echo "       Debugger           : ${enable_debugger}"
-echo "       Python dumper      : ${DUMPER}"
 echo "       Overlay            : X: ${enable_overlay_xlib}, Xv: ${enable_overlay_xvlib}"
 echo ""
 echo " • API-Documentation      : ${enable_gtk_doc}"
diff --git a/man/intel_reg.rst b/man/intel_reg.rst
index c6e2fea..d90c307 100644
--- a/man/intel_reg.rst
+++ b/man/intel_reg.rst
@@ -197,8 +197,7 @@ variable, the directory is scanned for a spec file in this order:
 Register Spec File Format
 -------------------------
 
-The register spec format is compatible with the quick_dump.py format, briefly
-described below:
+The register spec format is briefly described below:
 
 * Empty lines and lines beginning with "#", ";", or "//" are ignored.
 
diff --git a/tools/Makefile.am b/tools/Makefile.am
index 0aeb173..95ede58 100644
--- a/tools/Makefile.am
+++ b/tools/Makefile.am
@@ -1,10 +1,6 @@
 include Makefile.sources
 
-SUBDIRS = null_state_gen
-
-if HAVE_DUMPER
-SUBDIRS += quick_dump
-endif
+SUBDIRS = null_state_gen registers
 
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/lib
 AM_CFLAGS = $(DEBUG_CFLAGS) $(DRM_CFLAGS) $(PCIACCESS_CFLAGS) $(CWARNFLAGS) $(CAIRO_CFLAGS) $(LIBUNWIND_CFLAGS)
diff --git a/tools/quick_dump/.gitignore b/tools/quick_dump/.gitignore
deleted file mode 100644
index 918a66b..0000000
--- a/tools/quick_dump/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-chipset_wrap_python.c
-chipset.py
diff --git a/tools/quick_dump/Makefile.am b/tools/quick_dump/Makefile.am
deleted file mode 100644
index 0643a81..0000000
--- a/tools/quick_dump/Makefile.am
+++ /dev/null
@@ -1,34 +0,0 @@
-AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_builddir)/lib $(PYTHON_CPPFLAGS) $(DRM_CFLAGS) $(CAIRO_CFLAGS) -I$(top_srcdir)
-
-dist_bin_SCRIPTS = quick_dump.py reg_access.py
-bin_SCRIPTS = chipset.py
-
-lib_LTLIBRARIES = I915ChipsetPython.la
-I915ChipsetPython_la_LDFLAGS = -module -avoid-version $(PYTHON_LDFLAGS) \
-	-Wl,--no-undefined
-I915ChipsetPython_la_SOURCES = chipset_macro_wrap.c
-nodist_I915ChipsetPython_la_SOURCES = chipset_wrap_python.c
-I915ChipsetPython_la_LIBADD =			\
-	$(top_builddir)/lib/libintel_tools.la	\
-	$(PCIACCESS_LIBS)			\
-	$(DRM_LIBS)				\
-	$(CAIRO_LIBS)				\
-	$(LIBUNWIND_LIBS)			\
-	-lrt					\
-	-lm					\
-	$(NULL)
-
-chipset.py: chipset_wrap_python.c
-
-chipset_wrap_python.c: chipset.i
-	$(AM_V_GEN)$(SWIG) $(AX_SWIG_PYTHON_OPT) -I/usr/include -I$(top_srcdir)/lib -o $@ $<
-
-all-local: I915ChipsetPython.la
-	$(LN_S) -f .libs/I915ChipsetPython.so _chipset.so
-
-CLEANFILES = chipset_wrap_python.c chipset.py _chipset.so
-EXTRA_DIST = $(QUICK_DUMP_EXTRA_DIST) \
-	      base_interrupt.txt base_other.txt base_power.txt base_rings.txt \
-	      quick_dump.py \
-	      reg_access.py \
-	      chipset.i
diff --git a/tools/quick_dump/chipset.i b/tools/quick_dump/chipset.i
deleted file mode 100644
index 90db40e..0000000
--- a/tools/quick_dump/chipset.i
+++ /dev/null
@@ -1,41 +0,0 @@
-%module chipset
-%include "stdint.i"
-%{
-#include <pciaccess.h>
-#include <stdint.h>
-#include "intel_chipset.h"
-#include "intel_io.h"
-extern int is_sandybridge(unsigned short pciid);
-extern int is_ivybridge(unsigned short pciid);
-extern int is_valleyview(unsigned short pciid);
-extern int is_cherryview(unsigned short pciid);
-extern int is_haswell(unsigned short pciid);
-extern int is_broadwell(unsigned short pciid);
-extern int is_skylake(unsigned short pciid);
-extern struct pci_device *intel_get_pci_device();
-extern int intel_register_access_init(struct pci_device *pci_dev, int safe);
-extern uint32_t intel_register_read(uint32_t reg);
-extern void intel_register_write(uint32_t reg, uint32_t val);
-extern void intel_register_access_fini();
-extern int intel_register_access_needs_fakewake();
-extern unsigned short pcidev_to_devid(struct pci_device *pci_dev);
-extern uint32_t intel_dpio_reg_read(uint32_t reg, int phy);
-extern uint32_t intel_flisdsi_reg_read(uint32_t reg);
-%}
-
-extern int is_sandybridge(unsigned short pciid);
-extern int is_ivybridge(unsigned short pciid);
-extern int is_valleyview(unsigned short pciid);
-extern int is_cherryview(unsigned short pciid);
-extern int is_haswell(unsigned short pciid);
-extern int is_broadwell(unsigned short pciid);
-extern int is_skylake(unsigned short pciid);
-extern struct pci_device *intel_get_pci_device();
-extern int intel_register_access_init(struct pci_device *pci_dev, int safe);
-extern uint32_t intel_register_read(uint32_t reg);
-extern void intel_register_write(uint32_t reg, uint32_t val);
-extern void intel_register_access_fini();
-extern int intel_register_access_needs_fakewake();
-extern unsigned short pcidev_to_devid(struct pci_device *pci_dev);
-extern uint32_t intel_dpio_reg_read(uint32_t reg, int phy);
-extern uint32_t intel_flisdsi_reg_read(uint32_t reg);
diff --git a/tools/quick_dump/chipset_macro_wrap.c b/tools/quick_dump/chipset_macro_wrap.c
deleted file mode 100644
index fa568d6..0000000
--- a/tools/quick_dump/chipset_macro_wrap.c
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright © 2014 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
- * 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.
- */
-
-#include <stdbool.h>
-#include <stdlib.h>
-#include <pciaccess.h>
-#include "intel_chipset.h"
-
-int is_sandybridge(unsigned short pciid)
-{
-	return IS_GEN6(pciid);
-}
-
-int is_ivybridge(unsigned short pciid)
-{
-	return IS_IVYBRIDGE(pciid);
-}
-
-int is_valleyview(unsigned short pciid)
-{
-	return IS_VALLEYVIEW(pciid);
-}
-
-int is_cherryview(unsigned short pciid)
-{
-	return IS_CHERRYVIEW(pciid);
-}
-
-int is_haswell(unsigned short pciid)
-{
-	return IS_HASWELL(pciid);
-}
-
-int is_broadwell(unsigned short pciid)
-{
-	return IS_BROADWELL(pciid);
-}
-
-int is_skylake(unsigned short pciid)
-{
-	return IS_SKYLAKE(pciid);
-}
-
-/* Simple helper because I couldn't make this work in the script */
-unsigned short pcidev_to_devid(struct pci_device *pdev)
-{
-	return pdev->device_id;
-}
diff --git a/tools/quick_dump/quick_dump.py b/tools/quick_dump/quick_dump.py
deleted file mode 100755
index 702a9d5..0000000
--- a/tools/quick_dump/quick_dump.py
+++ /dev/null
@@ -1,117 +0,0 @@
-#!/usr/bin/env python3
-
-# register definition format:
-# ('register name', 'register offset', 'register type')
-#
-# register types:
-#  '' - normal register
-#  'DPIO' - DPIO register
-#
-# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
-
-import argparse
-import os
-import sys
-import ast
-import subprocess
-import chipset
-import reg_access as reg
-
-# Ignore lines which are considered comments
-def ignore_line(line):
-    if not line.strip():
-        return True
-    if len(line) > 1:
-        if line[1] == '/' and line[0] == '/':
-            return True
-    if len(line) > 0:
-        if line[0] == '#' or line[0] == ';':
-            return True
-    return False
-
-def parse_file(file):
-    print('{0:^10s} | {1:^33s} | {2:^10s}'. format('offset', file.name, 'value'))
-    print('-' * 59)
-    for line in file:
-        if ignore_line(line):
-            continue
-        register = ast.literal_eval(line)
-        intreg = int(register[1], 16)
-        if register[2] == 'FLISDSI':
-            val = reg.flisdsi_read(intreg)
-        elif register[2] == 'DPIO':
-            val = reg.dpio_read(intreg, 0)
-        elif register[2] == 'DPIO2':
-            val = reg.dpio_read(intreg, 1)
-        else:
-            if register[2] != '':
-                intreg = intreg + int(register[2], 16)
-            val = reg.read(intreg)
-        print('{0:#010x} | {1:<33} | {2:#010x}'.format(intreg, register[0], val))
-    print('')
-
-def walk_base_files():
-    for root, dirs, files in os.walk('.'):
-        for name in files:
-            if name.startswith(("base_")):
-                file = open(name.rstrip(), 'r')
-                parse_file(file)
-
-def autodetect_chipset():
-    pci_dev = chipset.intel_get_pci_device()
-    devid = chipset.pcidev_to_devid(pci_dev)
-    if chipset.is_sandybridge(devid):
-        return open('sandybridge', 'r')
-    elif chipset.is_ivybridge(devid):
-        return open('ivybridge', 'r')
-    elif chipset.is_cherryview(devid):
-        return open('cherryview', 'r')
-    elif chipset.is_valleyview(devid):
-        return open('valleyview', 'r')
-    elif chipset.is_haswell(devid):
-        return open('haswell', 'r')
-    elif chipset.is_broadwell(devid):
-        return open('broadwell', 'r')
-    elif chipset.is_skylake(devid):
-        return open('skylake', 'r')
-    else:
-        print("Autodetect of devid " + hex(devid) + " failed")
-        return None
-
-if __name__ == "__main__":
-    parser = argparse.ArgumentParser(description='Dumb register dumper.')
-    parser.add_argument('-b', '--baseless',
-            action='store_true', default=False,
-            help='baseless mode, ignore files starting with base_')
-    parser.add_argument('-f', '--file',
-            type=argparse.FileType('r'), default=None)
-    parser.add_argument('profile', nargs='?',
-            type=argparse.FileType('r'), default=None)
-
-    args = parser.parse_args()
-
-    if reg.init() == False:
-        print("Register initialization failed")
-        sys.exit()
-
-    # Put us where the script is
-    os.chdir(os.path.dirname(sys.argv[0]))
-
-    # specifying a file trumps all other things
-    if args.file != None:
-        parse_file(args.file)
-        sys.exit()
-
-    #parse anything named base_ these are assumed to apply for all gens.
-    if args.baseless == False:
-        walk_base_files()
-
-    if args.profile == None:
-        args.profile = autodetect_chipset()
-
-    if args.profile == None:
-        sys.exit()
-
-    for extra in args.profile:
-        extra_file = open(extra.rstrip(), 'r')
-        parse_file(extra_file)
diff --git a/tools/quick_dump/reg_access.py b/tools/quick_dump/reg_access.py
deleted file mode 100755
index 6a93f63..0000000
--- a/tools/quick_dump/reg_access.py
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/usr/bin/env python3
-# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
-import chipset
-
-def read(reg):
-    val = chipset.intel_register_read(reg)
-    return val
-
-def write(reg, val):
-    chipset.intel_register_write(reg, val)
-
-def gen6_forcewake_get():
-    write(0xa18c, 0x1)
-    read(0xa180)
-
-def mt_forcewake_get():
-    write(0xa188, 0x10001)
-    read(0xa180)
-
-def vlv_forcewake_get():
-    write(0x1300b0, 0x10001)
-    read(0x1300b4)
-
-# don't be clever, just try all possibilities
-def get_wake():
-    gen6_forcewake_get()
-    mt_forcewake_get()
-    vlv_forcewake_get()
-
-def dpio_read(reg, phy):
-    phy = int(phy)
-
-    val = chipset.intel_dpio_reg_read(reg, phy)
-    return val
-
-def flisdsi_read(reg):
-    val = chipset.intel_flisdsi_reg_read(reg)
-    return val
-
-
-def init():
-    pci_dev = chipset.intel_get_pci_device()
-    ret = chipset.intel_register_access_init(pci_dev, 0)
-    if ret != 0:
-        print("Register access init failed");
-        return False
-
-    if chipset.intel_register_access_needs_fakewake():
-        print("Forcing forcewake. Don't expect your system to work after this.")
-        get_wake()
-
-    return True
-
-if __name__ == "__main__":
-    import sys
-
-    if init() == False:
-        sys.exit()
-
-    reg = sys.argv[1]
-    print(hex(read(int(reg,16))))
-    chipset.intel_register_access_fini()
diff --git a/tools/registers/Makefile.am b/tools/registers/Makefile.am
new file mode 100644
index 0000000..4e1e3c2
--- /dev/null
+++ b/tools/registers/Makefile.am
@@ -0,0 +1 @@
+EXTRA_DIST = ${REGISTERS_EXTRA_DIST}
