Add ATA PIO IRQ handler, documentation

Still WIP, doesn't look like IRQ handler works yet.
diff --git a/doc/Makefile b/doc/Makefile
index 5afd552..6f05775 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -14,10 +14,15 @@
 
 .PHONY: help Makefile
 
+watch:
+	sphinx-autobuild "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
+
+dox: doxygen
+doxygen:
+	doxygen lisp.doxyfile
+	doxygen kernel.doxyfile
+
 # Catch-all target: route all unknown targets to Sphinx using the new
 # "make mode" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).
 %: Makefile
 	@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
-
-watch:
-	sphinx-autobuild "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
diff --git a/doc/architecture.rst b/doc/architecture.rst
index a515f34..b946a54 100644
--- a/doc/architecture.rst
+++ b/doc/architecture.rst
@@ -45,11 +45,8 @@
 interface with a certain device (or class of devices). The relevant fields of
 ``struct pci_device_driver`` are shown here:
 
-.. code-block::
-
-    bool (* supports)(struct pci_device *dev);
-    void (* init)(struct pci_device dev, uchar bus, uchar slot, uchar func);
-    char *generic_name;
+.. doxygenstruct:: pci_device_driver
+    :project: Kernel
 
 A PCI device driver must pass an instance of this structure to
 ``pci_register_device_driver`` (in ``include/kernel/dri/pci/pci.h``. If
diff --git a/doc/kernel.doxyfile b/doc/kernel.doxyfile
index d75e0a8..5d5f1e1 100644
--- a/doc/kernel.doxyfile
+++ b/doc/kernel.doxyfile
@@ -467,7 +467,7 @@
 # normally produced when WARNINGS is set to YES.
 # The default value is: NO.
 
-EXTRACT_ALL            = NO
+EXTRACT_ALL            = YES
 
 # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
 # be included in the documentation.
@@ -862,7 +862,7 @@
 # be searched for input files as well.
 # The default value is: NO.
 
-RECURSIVE              = NO
+RECURSIVE              = YES
 
 # The EXCLUDE tag can be used to specify files and/or directories that should be
 # excluded from the INPUT source files. This way you can easily exclude a
diff --git a/doc/lisp.doxyfile b/doc/lisp.doxyfile
index fad1c79..8b843a2 100644
--- a/doc/lisp.doxyfile
+++ b/doc/lisp.doxyfile
@@ -467,7 +467,7 @@
 # normally produced when WARNINGS is set to YES.
 # The default value is: NO.
 
-EXTRACT_ALL            = NO
+EXTRACT_ALL            = YES
 
 # If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
 # be included in the documentation.
@@ -862,7 +862,7 @@
 # be searched for input files as well.
 # The default value is: NO.
 
-RECURSIVE              = NO
+RECURSIVE              = YES
 
 # The EXCLUDE tag can be used to specify files and/or directories that should be
 # excluded from the INPUT source files. This way you can easily exclude a