Reorganize and extend Kinetis hardware access macros

This adds support for the K22 MCUs on fet12v2. It also adds support for
some additional pieces of hardware the code will use. It also makes the
new (hermetic) compiler happy with all of it.

Change-Id: I4b9b26d71fd57d11e16737ef7a6480643dbd0ca5
diff --git a/motors/usb/usb.h b/motors/usb/usb.h
index 299df59..3b67a44 100644
--- a/motors/usb/usb.h
+++ b/motors/usb/usb.h
@@ -10,6 +10,7 @@
 #include "aos/common/macros.h"
 #include "motors/core/kinetis.h"
 #include "motors/usb/constants.h"
+#include "motors/util.h"
 
 namespace frc971 {
 namespace teensy {
@@ -17,9 +18,7 @@
 // A sufficient memory barrier between writing some data and telling the USB
 // hardware to read it or having the USB hardware say some data is readable and
 // actually reading it.
-static inline void dma_memory_barrier() {
-  __asm__ __volatile__("" :: : "memory");
-}
+static inline void dma_memory_barrier() { DmaMemoryBarrier(); }
 
 // Aligned for faster access via memcpy etc.
 //