sel4platsupport: TK1: Support Mux and GPIO dependency changes on TK1
diff --git a/libsel4platsupport/src/io.c b/libsel4platsupport/src/io.c
index 03115f4..2a0c9ae 100644
--- a/libsel4platsupport/src/io.c
+++ b/libsel4platsupport/src/io.c
@@ -275,6 +275,24 @@
     return 0;
 }
 
+#ifdef CONFIG_PLAT_TK1
+#include <platsupport/gpio.h>
+
+gpio_sys_t gpio_sys;
+#endif
+
+void *
+get_mux_dependencies(void)
+{
+#ifdef CONFIG_PLAT_TK1
+    /* The TK1's mux depends on an instance of the GPIO driver. */
+    return &gpio_sys;
+#else
+    /* The other platforms don't have any such dependency issues. */
+    return NULL;
+#endif
+}
+
 int
 sel4platsupport_new_io_ops(vspace_t vspace, vka_t vka, ps_io_ops_t *io_ops)
 {
@@ -285,6 +303,14 @@
         return err;
     }
 
+#ifdef ARCH_ARM
+    clock_sys_init(io_ops, &io_ops->clock_sys);
+#ifdef CONFIG_PLAT_TK1
+    gpio_sys_init(io_ops, &gpio_sys);
+#endif
+    mux_sys_init(io_ops, get_mux_dependencies(), &io_ops->mux_sys);
+#endif
+
     sel4platsupport_new_malloc_ops(&io_ops->malloc_ops);
     return err;
 }