X-Git-Url: https://rtime.felk.cvut.cz/gitweb/l4.git/blobdiff_plain/3077745110b3fea73dd6d270c9777ab6df409cba..fba40cf7f1ec0cd4cfaa7ed6a530785cc666e2ec:/kernel/fiasco/src/kern/irq_controller.cpp diff --git a/kernel/fiasco/src/kern/irq_controller.cpp b/kernel/fiasco/src/kern/irq_controller.cpp index c2eeb6507..741c72e22 100644 --- a/kernel/fiasco/src/kern/irq_controller.cpp +++ b/kernel/fiasco/src/kern/irq_controller.cpp @@ -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