]> rtime.felk.cvut.cz Git - l4.git/blobdiff - kernel/fiasco/src/kern/irq_controller.cpp
update
[l4.git] / kernel / fiasco / src / kern / irq_controller.cpp
index c2eeb65071952a7f16defddf52d2fe411e61cd4d..741c72e220318afa3733cd7f30ed7ae70a054b1a 100644 (file)
@@ -53,6 +53,24 @@ Icu::icu_bind_irq(Irq *irq, unsigned irqnum)
   return commit_result(0);
 }
 
+PUBLIC inline NEEDS["irq_mgr.h"]
+L4_msg_tag
+Icu::icu_set_mode(Mword pin, Irq_chip::Mode mode)
+{
+  Irq_mgr::Irq i = Irq_mgr::mgr->chip(pin);
+
+  if (!i.chip)
+    return commit_result(-L4_err::ENodev);
+
+  int r = i.chip->set_mode(i.pin, mode);
+
+  Irq_base *irq = i.chip->irq(i.pin);
+  if (irq)
+    irq->switch_mode(i.chip->is_edge_triggered(i.pin));
+
+  return commit_result(r);
+}
+
 
 PUBLIC inline NEEDS["irq_mgr.h"]
 void