[rtems commit] bsp/tqm8xx: Use IRQ extensions API

Sebastian Huber sebh at rtems.org
Mon Sep 17 06:59:19 UTC 2018


Module:    rtems
Branch:    master
Commit:    7b93d8570eb1bcc2480e106653d6c92788da8544
Changeset: http://git.rtems.org/rtems/commit/?id=7b93d8570eb1bcc2480e106653d6c92788da8544

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Wed Sep 12 10:08:50 2018 +0200

bsp/tqm8xx: Use IRQ extensions API

Update #3513.

---

 bsps/powerpc/tqm8xx/console/console.c | 38 +++++++++++------------------------
 1 file changed, 12 insertions(+), 26 deletions(-)

diff --git a/bsps/powerpc/tqm8xx/console/console.c b/bsps/powerpc/tqm8xx/console/console.c
index 5a681b1..ee246ff 100644
--- a/bsps/powerpc/tqm8xx/console/console.c
+++ b/bsps/powerpc/tqm8xx/console/console.c
@@ -57,7 +57,6 @@
 #include <rtems/termiostypes.h>
 #include <rtems/bspIo.h>
 #include <rtems/error.h>
-#include <rtems/irq.h>
 
 #include <bsp.h>
 #include <mpc8xx.h>
@@ -120,7 +119,7 @@ typedef struct m8xx_console_chan_desc_s {
     volatile m8xxSCCRegisters_t *sccr;
     volatile m8xxSMCRegisters_t *smcr;
   } regs;
-  int ivec_src;
+  rtems_vector_number ivec_src;
   int cr_chan_code;
   int brg_used;
 } m8xx_console_chan_desc_t;
@@ -497,23 +496,9 @@ sccInterruptHandler (void *arg)
 }
 
 static void
-mpc8xx_console_irq_on(const rtems_irq_connect_data *irq)
+mpc8xx_console_irq_on(int chan)
 {
-    CHN_MASK_SET(irq->name - BSP_CPM_IRQ_LOWEST_OFFSET,
-		 3);	/* Enable TX and RX interrupts */
-}
-
-static void
-mpc8xx_console_irq_off(const rtems_irq_connect_data *irq)
-{
-    CHN_MASK_SET(irq->name - BSP_CPM_IRQ_LOWEST_OFFSET,
-		 0);	/* Disable TX and RX interrupts */
-}
-
-static int
-mpc8xx_console_irq_isOn(const rtems_irq_connect_data *irq)
-{
-  return (0 != CHN_MASK_GET(irq->name - BSP_CPM_IRQ_LOWEST_OFFSET)); /* Check TX and RX interrupts */
+    CHN_MASK_SET(chan, 3);	/* Enable TX and RX interrupts */
 }
 
 static void
@@ -709,18 +694,19 @@ sccInitialize (int chan)
   }
 
   if (m8xx_scc_mode[chan] != TERMIOS_POLLED) {
+    rtems_status_code sc;
 
-    rtems_irq_connect_data irq_conn_data = {
+    sc = rtems_interrupt_handler_install(
       m8xx_console_chan_desc[chan].ivec_src,
-      sccInterruptHandler,         /* rtems_irq_hdl           */
-      (rtems_irq_hdl_param)chan,   /* (rtems_irq_hdl_param)   */
-      mpc8xx_console_irq_on,       /* (rtems_irq_enable)      */
-      mpc8xx_console_irq_off,      /* (rtems_irq_disable)     */
-      mpc8xx_console_irq_isOn      /* (rtems_irq_is_enabled)  */
-    };
-    if (!BSP_install_rtems_irq_handler (&irq_conn_data)) {
+      "SCC",
+      RTEMS_INTERRUPT_UNIQUE,
+      sccInterruptHandler,
+      (void *)chan
+    );
+    if (sc != RTEMS_SUCCESSFUL) {
       rtems_panic("console: cannot install IRQ handler");
     }
+    mpc8xx_console_irq_on(chan);
   }
 }
 




More information about the vc mailing list