]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - processor-sdk/libmetal.git/commitdiff
generic: interrupt controller api
authorSam Sortais <sam.sortais@xilinx.com>
Fri, 5 Aug 2016 02:27:34 +0000 (19:27 -0700)
committerSam Sortais <sam.sortais@xilinx.com>
Fri, 5 Aug 2016 21:19:57 +0000 (14:19 -0700)
Signed-off-by: Sam Sortais <sam.sortais@xilinx.com>
lib/irq.h
lib/system/generic/irq.c
lib/system/generic/zynq7/sys.h
lib/system/generic/zynqmp_r5/sys.h

index a37222de0a957b346d1d3ac3e868e46f9f9c0409..a493ef3a208bb216fe814627322ebf29a45ae07f 100644 (file)
--- a/lib/irq.h
+++ b/lib/irq.h
@@ -93,6 +93,24 @@ unsigned int metal_irq_save_disable();
  */
 void metal_irq_restore_enable(unsigned flags);
 
+/**
+ * @brief      metal_irq_enable
+ *
+ * Enables the given interrupt
+ *
+ * @param vector   - interrupt vector number
+ */
+void metal_irq_enable(unsigned int vector);
+
+/**
+ * @brief      metal_irq_disable
+ *
+ * Disables the given interrupt
+ *
+ * @param vector   - interrupt vector number
+ */
+void metal_irq_disable(unsigned int vector);
+
 /** @} */
 
 #ifdef __cplusplus
index 545ab27c389839b3637bff281e96e0ff0119a79e..e08ca2874358b0ff444ae8d414e44a669bdec253 100644 (file)
@@ -160,6 +160,16 @@ void metal_irq_restore_enable(unsigned int flags)
        }
 }
 
+void metal_irq_enable(unsigned int vector)
+{
+        sys_irq_enable(vector);
+}
+
+void metal_irq_disable(unsigned int vector)
+{
+        sys_irq_disable(vector);
+}
+
 /**
  * @brief default handler
  */
index e40b2901eb8e325ea3489d30034ad363ec8248b8..1eebdab91fc4fc30d79b61a78f2628ff248fc4b4 100644 (file)
@@ -51,6 +51,16 @@ extern "C" {
 #define MAX_IRQS       ((int)XSCUGIC_MAX_NUM_INTR_INPUTS)          /**< maximum number of irqs */
 #endif
 
+static inline void sys_irq_enable(unsigned int vector)
+{
+        XScuGic_EnableIntr(XPAR_SCUGIC_0_DIST_BASEADDR, vector);
+}
+
+static inline void sys_irq_disable(unsigned int vector)
+{
+        XScuGic_DisableIntr(XPAR_SCUGIC_0_DIST_BASEADDR, vector);
+}
+
 
 #ifdef __cplusplus
 }
index 2014acdfb17896f386a113c37159ba240cc027ea..082d45ac911bb268ce11942c9c0d5adc9e0eee41 100644 (file)
@@ -51,6 +51,16 @@ extern "C" {
 #define MAX_IRQS       ((int)XSCUGIC_MAX_NUM_INTR_INPUTS)          /**< maximum number of irqs */
 #endif
 
+static inline void sys_irq_enable(unsigned int vector)
+{
+        XScuGic_EnableIntr(XPAR_SCUGIC_0_DIST_BASEADDR, vector);
+}
+
+static inline void sys_irq_disable(unsigned int vector)
+{
+        XScuGic_DisableIntr(XPAR_SCUGIC_0_DIST_BASEADDR, vector);
+}
+
 
 #ifdef __cplusplus
 }